<?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>66994</bug_id>
          
          <creation_ts>2011-08-25 15:51:28 -0700</creation_ts>
          <short_desc>Implement Error.stack</short_desc>
          <delta_ts>2012-03-07 18:12:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67010</dependson>
    
    <dependson>68927</dependson>
    
    <dependson>79029</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Juan C. Montemayor">j.mont</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>arv</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>j.mont</cc>
    
    <cc>loki</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xk1t</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>457202</commentid>
    <comment_count>0</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-08-25 15:51:28 -0700</bug_when>
    <thetext>Continuation of Bug 66571 - Keep track of topCallFrame for Stack traces
https://bugs.webkit.org/show_bug.cgi?id=66571

This is the second patch of two to implement stack traces in jsc. This patch utilizes topCallFrame to create a stack trace when an error is thrown. Users will also be able to use the stack() command in jsc to get stack traces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457402</commentid>
    <comment_count>1</comment_count>
      <attachid>105313</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-08-25 22:38:12 -0700</bug_when>
    <thetext>Created attachment 105313
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457404</commentid>
    <comment_count>2</comment_count>
      <attachid>105314</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-08-25 22:39:27 -0700</bug_when>
    <thetext>Created attachment 105314
sunspider test results showing no measurable speed regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457411</commentid>
    <comment_count>3</comment_count>
      <attachid>105313</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 23:11:16 -0700</bug_when>
    <thetext>Comment on attachment 105313
proposed patch

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

New failing tests:
fast/js/stack-trace.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457436</commentid>
    <comment_count>4</comment_count>
      <attachid>105322</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-08-26 00:40:02 -0700</bug_when>
    <thetext>Created attachment 105322
patch

why don&apos;t I get the results of the chromium bot? Oh well.. This patch will attempt to pass all tests...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457452</commentid>
    <comment_count>5</comment_count>
      <attachid>105322</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 01:02:30 -0700</bug_when>
    <thetext>Comment on attachment 105322
patch

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

New failing tests:
fast/js/stack-trace.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457556</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-26 07:57:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=105322) [details]
&gt; patch
&gt; 
&gt; why don&apos;t I get the results of the chromium bot? Oh well.. This patch will attempt to pass all tests...

I would just add the test to the chrome skip list, it&apos;s probably the easiest way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457583</commentid>
    <comment_count>7</comment_count>
      <attachid>105364</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-08-26 09:39:40 -0700</bug_when>
    <thetext>Created attachment 105364
patch w win and chromium fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457627</commentid>
    <comment_count>8</comment_count>
      <attachid>105364</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-26 10:41:08 -0700</bug_when>
    <thetext>Comment on attachment 105364
patch w win and chromium fixes

Please return an array rather than a string.  There are plenty of places where having programatic knowledge of the stack trace would be useful (say the inspector), by creating a single string you&apos;re essentially requiring users to manually parse the string you just built up back into an array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457665</commentid>
    <comment_count>9</comment_count>
      <attachid>105364</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-26 11:13:51 -0700</bug_when>
    <thetext>Comment on attachment 105364
patch w win and chromium fixes

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

Have included a number of suggestions and questions

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:756
&gt; +const UString Interpreter::getStackTrace(JSGlobalData* globalData, int line)

void Interpreter::getStackTrace(JSGlobalData&amp; globalData, int line, Vector&lt;TraceInfo&gt;&amp; result)

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:768
&gt; +        while (callFrame &amp;&amp; callFrame != CallFrame::noCaller() &amp;&amp; !callFrame-&gt;codeBlock())
&gt; +            callFrame = callFrame-&gt;callerFrame()-&gt;removeHostCallFrameFlag();

This has the effect of removing native calls from the stack -- we may want to show these, but currently it&apos;s not necessary

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:775
&gt; +        trace += getTraceLine(callFrame, callFrame-&gt;codeBlock()-&gt;codeType(), sourceURL, line, i);

result.append(TraceInfo(globalData, callFrame-&gt;codeBlock()-&gt;ownerExecutable(), line));

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:777
&gt; +        getCallerLine(globalData, callFrame, line);

If you&apos;re called by a host function, this will not update line, so your next iteration may produce a bogus line number, what happens if I do:
&gt; var o = {}; o.toString = function() {  throw {}; }
function () {  throw {}; }
&gt; print(o)

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:802
&gt; +            UString stackTrace = getStackTrace(globalData, codeBlock-&gt;lineNumberForBytecodeOffset(bytecodeOffset));

Vector&lt;TraceInfo&gt; trace;
getStackTrace(*globalData, codeBlock-&gt;lineNumberForBytecodeOffset(bytecodeOffset), trace);
addErrorInfo(callFrame, exception, codeBlock-&gt;lineNumberForBytecodeOffset(bytecodeOffset), codeBlock-&gt;ownerExecutable()-&gt;source(), stackTrace);

&gt; Source/JavaScriptCore/interpreter/Interpreter.h:131
&gt; +        static const UString getStackTrace(JSGlobalData*, int);

I don&apos;t like this string return, i think you&apos;re better doing:

struct TraceInfo {
    Strong&lt;Executable&gt; code;
    int lineNumber;
}

static void getStackTrace(JSGlobalData&amp;, Vector&lt;TraceInfo&gt;&amp; result);

&gt; Source/JavaScriptCore/runtime/Error.cpp:119
&gt; +JSObject* addErrorInfo(JSGlobalData* globalData, JSObject* error, int line, const SourceCode&amp; source, const UString&amp; stackTrace)

JSObject* addErrorInfo(JSGlobalData* globalData, JSObject* error, int line, const SourceCode&amp; source, const Vector&lt;TraceInfo&gt;&amp; stackTrace)

&gt; Source/JavaScriptCore/runtime/Error.cpp:131
&gt; +        error-&gt;putWithAttributes(globalData, globalData-&gt;propertyNames-&gt;stack, jsString(globalData, stackTrace), ReadOnly | DontDelete);

JSArray* stackTrace = JSArray::createEmpty(*globalData, globalObject);
for (unsigned i = 0; i &lt; stackTrace.size(); i++) { JSString* string = jsString(globalData, formatTraceLine(stackTrace[i])); stackTrace-&gt;push(*globalData, string); }
error-&gt;putWithAttributes(globalData, globalData-&gt;propertyNames-&gt;stack, stackTrace, ReadOnly | DontDelete);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457824</commentid>
    <comment_count>10</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-08-26 15:50:30 -0700</bug_when>
    <thetext>
&gt; &gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:777
&gt; &gt; +        getCallerLine(globalData, callFrame, line);
&gt; 
&gt; If you&apos;re called by a host function, this will not update line, so your next iteration may produce a bogus line number

If a line number is not available for the callFrame, then a line number will not be printed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457826</commentid>
    <comment_count>11</comment_count>
      <attachid>105417</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-08-26 15:55:02 -0700</bug_when>
    <thetext>Created attachment 105417
patch with changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457853</commentid>
    <comment_count>12</comment_count>
      <attachid>105417</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-26 16:44:39 -0700</bug_when>
    <thetext>Comment on attachment 105417
patch with changes

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

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:742
&gt; +static void updateSourceURL(CallFrame* callFrame, UString&amp; sourceURL) 

Just return the sourceURL -- const UString&amp; is your friend.

Need to check callframe for host flag

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:767
&gt; +        while (callFrame &amp;&amp; callFrame != CallFrame::noCaller() &amp;&amp; !callFrame-&gt;codeBlock())
&gt; +            callFrame = callFrame-&gt;callerFrame()-&gt;removeHostCallFrameFlag();

Remove these lines

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:774
&gt; +        traceLevel = getTraceLine(callFrame, callFrame-&gt;codeBlock()-&gt;codeType(), sourceURL, line).impl();

remove this as it won&apos;t be necessary

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:776
&gt; +        StackTraceLevel s = {Strong&lt;ScriptExecutable&gt;(*globalData, callFrame-&gt;codeBlock()-&gt;ownerExecutable()), line, callFrame-&gt;codeBlock()-&gt;codeType(), sourceURL, traceLevel};

Strong&lt;ScriptExecutable&gt; -&gt; Strong&lt;Executable&gt;

Make a helper function to return the correct value for your &quot;code type&quot; enum from the callFrame, eg.
if (callFrame-&gt;hasHostCa...) return StackFrameTypeNative;
switch (callFrame-&gt;codeBlock()-&gt;codeType()) {
   case Blah: return StackFrameTypeBlah;
   ...
}

&gt; Source/JavaScriptCore/interpreter/Interpreter.h:66
&gt; +    struct StackTraceLevel {

rename this to StackFrame

&gt; Source/JavaScriptCore/interpreter/Interpreter.h:67
&gt; +        Strong&lt;ScriptExecutable&gt; executable;

Make this an ordinary Strong&lt;Executable&gt;
and add
Strong&lt;JSObject&gt; callee

&gt; Source/JavaScriptCore/interpreter/Interpreter.h:69
&gt; +        int codeType;

Make your own enum here

&gt; Source/JavaScriptCore/interpreter/Interpreter.h:71
&gt; +        UString stackLevelString;

I don&apos;t think this is necessary -- the Vector&lt;&gt; implies the level you&apos;re at

&gt; Source/JavaScriptCore/interpreter/Interpreter.h:140
&gt; +        static const UString getStackTrace(JSGlobalData*, int);

die!!!!!1111!!!!1111one!

Might be worth moving the prettyprint function to StackFrame

&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:64
&gt; +    macro(stack) \

change this to jscStack

&gt; Source/JavaScriptCore/runtime/Error.cpp:134
&gt; +            JSString* string = jsString(globalData, stackTrace[i].stackLevelString); 

stackTrace[i].toString() or whatever</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466035</commentid>
    <comment_count>13</comment_count>
      <attachid>107128</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-12 19:14:43 -0700</bug_when>
    <thetext>Created attachment 107128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466108</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-09-12 21:28:51 -0700</bug_when>
    <thetext>It seems like the current implementation will potentially leak function names cross origin.  This should probably be avoided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466262</commentid>
    <comment_count>15</comment_count>
      <attachid>107169</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-13 06:37:41 -0700</bug_when>
    <thetext>Created attachment 107169
proposed patch that will apply

Sam, I&apos;m going to try and find you on #webkit so we can talk about this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466266</commentid>
    <comment_count>16</comment_count>
      <attachid>107169</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-09-13 06:53:11 -0700</bug_when>
    <thetext>Comment on attachment 107169
proposed patch that will apply

Attachment 107169 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9661100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466280</commentid>
    <comment_count>17</comment_count>
      <attachid>107174</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-13 07:18:44 -0700</bug_when>
    <thetext>Created attachment 107174
patch

This will hopefully fix the build errors in qt et al.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466484</commentid>
    <comment_count>18</comment_count>
      <attachid>107215</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-13 13:00:01 -0700</bug_when>
    <thetext>Created attachment 107215
fixed patch for win-bot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467133</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-14 10:51:40 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; It seems like the current implementation will potentially leak function names cross origin.  This should probably be avoided.

How does this compare to the leak from walking the call stack with function.caller?  Afaict if you were able to call a function (directly or indirectly) you must have some origin permissions.  Should we maybe restrict .caller if the global objects don&apos;t match?  It seems sufficiently edge case to probably be safe?

That said I did just realize something more significant that the origin bypass -&gt; isolated worlds aren&apos;t sufficiently isolated: they share a global data, so a change that triggers synchronous JS by code in an isolated world (changing text or something with a world containing a change handler in an isolated world).  If such case should be created it may be possible to create a stack trace that leaked the presence of a particular extension, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467338</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-09-14 14:18:51 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #14)
&gt; &gt; It seems like the current implementation will potentially leak function names cross origin.  This should probably be avoided.
&gt; 
&gt; How does this compare to the leak from walking the call stack with function.caller?  Afaict if you were able to call a function (directly or indirectly) you must have some origin permissions.  Should we maybe restrict .caller if the global objects don&apos;t match?  It seems sufficiently edge case to probably be safe?

I think you are right, I retract my comment/objection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467386</commentid>
    <comment_count>21</comment_count>
      <attachid>107215</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-14 15:10:58 -0700</bug_when>
    <thetext>Comment on attachment 107215
fixed patch for win-bot

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

r- due to the problem with printStack, but that&apos;s it.

&gt; LayoutTests/fast/js/stack-trace-expected.txt:9
&gt; +    0   normalInner at file:///Users/jmont/webkit/OpenSource/LayoutTests/fast/js/script-tests/stack-trace.js:21
&gt; +    1   normalOuter at file:///Users/jmont/webkit/OpenSource/LayoutTests/fast/js/script-tests/stack-trace.js:20
&gt; +    2   at file:///Users/jmont/webkit/OpenSource/LayoutTests/fast/js/script-tests/stack-trace.js:26

These will lead to sadness

&gt; LayoutTests/fast/js/script-tests/stack-trace.js:9
&gt; +		debug(&quot;    &quot; + i + &quot;   &quot; + stackTrace[level]);

I think you want to do stackTrace[level].replace(location, &quot;&quot;) here to make these tests happier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467569</commentid>
    <comment_count>22</comment_count>
      <attachid>107446</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-14 20:31:26 -0700</bug_when>
    <thetext>Created attachment 107446
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467571</commentid>
    <comment_count>23</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-14 20:34:13 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; These will lead to sadness

good catch. I fixed these with the new patch.

Also, although I am fairly certain this patch will work with the win-bot, I never confirmed this since the win-bot has been backed up lately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472675</commentid>
    <comment_count>24</comment_count>
      <attachid>107446</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-23 18:14:13 -0700</bug_when>
    <thetext>Comment on attachment 107446
updated patch

r=me, sorry i missed the updated patch going up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472677</commentid>
    <comment_count>25</comment_count>
      <attachid>107446</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 18:17:50 -0700</bug_when>
    <thetext>Comment on attachment 107446
updated patch

Rejecting attachment 107446 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
file LayoutTests/fast/js/stack-trace.html
patching file LayoutTests/fast/js/script-tests/exception-properties.js
patching file LayoutTests/fast/js/script-tests/stack-trace.js
patching file LayoutTests/platform/chromium/test_expectations.txt
Hunk #1 FAILED at 477.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/platform/chromium/test_expectations.txt.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Oliver Hunt&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/9839128</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472760</commentid>
    <comment_count>26</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-24 06:55:51 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 107446 [details])
&gt; Rejecting attachment 107446 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2
&gt; 
&gt; Last 500 characters of output:
&gt; file LayoutTests/fast/js/stack-trace.html
&gt; patching file LayoutTests/fast/js/script-tests/exception-properties.js
&gt; patching file LayoutTests/fast/js/script-tests/stack-trace.js
&gt; patching file LayoutTests/platform/chromium/test_expectations.txt
&gt; Hunk #1 FAILED at 477.
&gt; 1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/platform/chromium/test_expectations.txt.rej
&gt; 
&gt; Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Oliver Hunt&apos;, u&apos;--force&apos;]&quot; exit_code: 1
&gt; 
&gt; Full output: http://queues.webkit.org/results/9839128

Seems like a lot of time passed since the patch upload till now, hehe. I&apos;ll upload an updated patch later tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473927</commentid>
    <comment_count>27</comment_count>
      <attachid>108847</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-27 07:42:10 -0700</bug_when>
    <thetext>Created attachment 108847
updated patch

updated so that patch will succeed. Oliver, I&apos;ll send you an email this time to remind you to r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473958</commentid>
    <comment_count>28</comment_count>
      <attachid>108854</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-27 08:59:47 -0700</bug_when>
    <thetext>Created attachment 108854
fixing win bot

please disregard this patch, i want to see what win-bot tells me it needs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473969</commentid>
    <comment_count>29</comment_count>
      <attachid>108854</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-27 09:11:27 -0700</bug_when>
    <thetext>Comment on attachment 108854
fixing win bot

Looks like your patch has lost the changes to JavaScriptCore.def</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473970</commentid>
    <comment_count>30</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-27 09:13:32 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 108854 [details])
&gt; Looks like your patch has lost the changes to JavaScriptCore.def

Yes, I don&apos;t have a windows machine to test on, so I want the bot to tell me what it wants in JavaScriptCore.def</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473975</commentid>
    <comment_count>31</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-27 09:17:17 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; (From update of attachment 108854 [details] [details])
&gt; &gt; Looks like your patch has lost the changes to JavaScriptCore.def
&gt; 
&gt; Yes, I don&apos;t have a windows machine to test on, so I want the bot to tell me what it wants in JavaScriptCore.def

Is there a better way to to this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473988</commentid>
    <comment_count>32</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-27 09:37:30 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; (In reply to comment #29)
&gt; &gt; &gt; (From update of attachment 108854 [details] [details] [details])
&gt; &gt; &gt; Looks like your patch has lost the changes to JavaScriptCore.def
&gt; &gt; 
&gt; &gt; Yes, I don&apos;t have a windows machine to test on, so I want the bot to tell me what it wants in JavaScriptCore.def
&gt; 
&gt; Is there a better way to to this?

Historically my &quot;better way&quot; has been to wish for a faster EWS bot :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474019</commentid>
    <comment_count>33</comment_count>
      <attachid>108861</attachid>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-27 09:58:25 -0700</bug_when>
    <thetext>Created attachment 108861
patch

this should be it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474077</commentid>
    <comment_count>34</comment_count>
      <attachid>108861</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-27 10:58:02 -0700</bug_when>
    <thetext>Comment on attachment 108861
patch

Clearing flags on attachment: 108861

Committed r96131: &lt;http://trac.webkit.org/changeset/96131&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474078</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-27 10:58:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474083</commentid>
    <comment_count>36</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-27 11:02:30 -0700</bug_when>
    <thetext>Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474176</commentid>
    <comment_count>37</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-27 13:12:17 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 108861 [details])
&gt; Clearing flags on attachment: 108861
&gt; 
&gt; Committed r96131: &lt;http://trac.webkit.org/changeset/96131&gt;

It made many tests crash on all platform:
GTK: http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/17784
Qt: http://build.webkit.org/builders/Qt%20Linux%20Release/builds/37937
Leopard: 
http://build.webkit.org/builders/Leopard%20Intel%20Debug%20%28Tests%29/builds/33790
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474180</commentid>
    <comment_count>38</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-27 13:17:25 -0700</bug_when>
    <thetext>Rolled out by http://trac.webkit.org/changeset/96146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474182</commentid>
    <comment_count>39</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-27 13:20:17 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Rolled out by http://trac.webkit.org/changeset/96146

It seems the problem occured only on 32 bit platoforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474183</commentid>
    <comment_count>40</comment_count>
    <who name="Juan C. Montemayor">j.mont</who>
    <bug_when>2011-09-27 13:21:27 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; Rolled out by http://trac.webkit.org/changeset/96146
&gt; 
&gt; It seems the problem occured only on 32 bit platoforms.

Will investigate and roll out a patch (hopefully later today).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546534</commentid>
    <comment_count>41</comment_count>
      <attachid>124830</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-01-31 15:02:17 -0800</bug_when>
    <thetext>Created attachment 124830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546558</commentid>
    <comment_count>42</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-01-31 15:25:48 -0800</bug_when>
    <thetext>Committed r106407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546865</commentid>
    <comment_count>43</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-01 00:41:01 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; Committed r106407

Reopen, because it made many test crash on 32 bit platforms again:
- Qt: http://build.webkit.org/results/Qt%20Linux%20Release/r106434%20%2842748%29/results.html
- GTK: http://build.webkit.org/results/GTK%20Linux%2032-bit%20Release/r106432%20%2821296%29/results.html

Could you fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546930</commentid>
    <comment_count>44</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-01 02:06:59 -0800</bug_when>
    <thetext>I tried to ping you on IRC and here, but it&apos;s night now.

I rolled it out again, because crash is always serious bug: http://trac.webkit.org/changeset/106454 (I had to solve conflicts with http://trac.webkit.org/changeset/106414 and http://trac.webkit.org/changeset/106433 manually.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558500</commentid>
    <comment_count>45</comment_count>
      <attachid>127437</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-02-16 13:57:01 -0800</bug_when>
    <thetext>Created attachment 127437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558533</commentid>
    <comment_count>46</comment_count>
      <attachid>127437</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-16 14:36:09 -0800</bug_when>
    <thetext>Comment on attachment 127437
Patch

Stack tracing should not really be in interpreter.cpp, but of course nor should the rest of the exception handling code.  Really should move this out some time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558536</commentid>
    <comment_count>47</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-02-16 14:39:01 -0800</bug_when>
    <thetext>Committed r107980: &lt;http://trac.webkit.org/changeset/107980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558545</commentid>
    <comment_count>48</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-16 14:44:40 -0800</bug_when>
    <thetext>Seems like a feature possibly worth blogging about. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558612</commentid>
    <comment_count>49</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-02-16 15:49:30 -0800</bug_when>
    <thetext>Sorry for being late to the party.

What other engine does this match?

I agree that having a structure is better than a formatted string but having an array of strings does not seem good to me. Either go all the way where the array contains objects with lineNumber, url etc or stick with what other browsers do, which is a single formatted string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558620</commentid>
    <comment_count>50</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-02-16 15:54:37 -0800</bug_when>
    <thetext>(In reply to comment #49)
&gt; Sorry for being late to the party.
&gt; 
&gt; What other engine does this match?
&gt; 
&gt; I agree that having a structure is better than a formatted string but having an array of strings does not seem good to me. Either go all the way where the array contains objects with lineNumber, url etc or stick with what other browsers do, which is a single formatted string.

The other engines don&apos;t agree on formatting of the string, so matching other browsers isn&apos;t something that is possible.  I&apos;m unaware of any compatibility concerns involving stack, and implicit toString on an array will produce something perfectly sensible, so i&apos;m not sure what there is to gain from changing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558639</commentid>
    <comment_count>51</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-02-16 16:08:53 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; (In reply to comment #49)
&gt; &gt; Sorry for being late to the party.
&gt; &gt; 
&gt; &gt; What other engine does this match?
&gt; &gt; 
&gt; &gt; I agree that having a structure is better than a formatted string but having an array of strings does not seem good to me. Either go all the way where the array contains objects with lineNumber, url etc or stick with what other browsers do, which is a single formatted string.
&gt; 
&gt; The other engines don&apos;t agree on formatting of the string, so matching other browsers isn&apos;t something that is possible.  I&apos;m unaware of any compatibility concerns involving stack, and implicit toString on an array will produce something perfectly sensible, so i&apos;m not sure what there is to gain from changing this.

What is the benefit of the Array if the individual items have to be parsed anyway?

Matching V8 would at least have simplified the tests and 4 different formats are better than 5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558646</commentid>
    <comment_count>52</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-02-16 16:13:01 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; (In reply to comment #50)
&gt; &gt; (In reply to comment #49)
&gt; &gt; &gt; Sorry for being late to the party.
&gt; &gt; &gt; 
&gt; &gt; &gt; What other engine does this match?
&gt; &gt; &gt; 
&gt; &gt; &gt; I agree that having a structure is better than a formatted string but having an array of strings does not seem good to me. Either go all the way where the array contains objects with lineNumber, url etc or stick with what other browsers do, which is a single formatted string.
&gt; &gt; 
&gt; &gt; The other engines don&apos;t agree on formatting of the string, so matching other browsers isn&apos;t something that is possible.  I&apos;m unaware of any compatibility concerns involving stack, and implicit toString on an array will produce something perfectly sensible, so i&apos;m not sure what there is to gain from changing this.
&gt; 
&gt; What is the benefit of the Array if the individual items have to be parsed anyway?
&gt; 
&gt; Matching V8 would at least have simplified the tests and 4 different formats are better than 5.

Step one in every use of single string stack traces that i&apos;ve seen is a split() to get an array of strings, given this is purely a debug feature doing this ahead of time seems sensible.  I would move to an array of custom descriptor objects first rather than a single string if it weren&apos;t for the need to then implement a bunch of toString methods on those objects.  I&apos;m kind of leaning in that way anyway (as it would make built-in vs. js functions vs. program code vs. eval code easier to distinguish)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558938</commentid>
    <comment_count>53</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-16 22:52:52 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; Committed r107980: &lt;http://trac.webkit.org/changeset/107980&gt;

It broke 32 bit platforms again and again. :(( And you left the tree broken of course ... It isn&apos;t a fairplay thing. Please don&apos;t break other platforms again and again and leave them broken deliberately.

I tried to ping you on IRC again when I noticed ... but you didn&apos;t answer, so I had to rollout the patch again - http://trac.webkit.org/changeset/108036
(Otherwise you should have watch the bots and do the rollout yourself.)

I can understand if you can&apos;t test on a 32 bit machine. But why don&apos;t you ask for a help to test your patch before landing? I willingly help you in testing if you ask me. Maybe Zoltán or Gábor can help you to debug this bug on 32 bit Qt platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559394</commentid>
    <comment_count>54</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-02-17 11:47:36 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; (In reply to comment #47)
&gt; &gt; Committed r107980: &lt;http://trac.webkit.org/changeset/107980&gt;
&gt; 
&gt; It broke 32 bit platforms again and again. :(( And you left the tree broken of course ... It isn&apos;t a fairplay thing. Please don&apos;t break other platforms again and again and leave them broken deliberately.
&gt; 
&gt; I tried to ping you on IRC again when I noticed ... but you didn&apos;t answer, so I had to rollout the patch again - http://trac.webkit.org/changeset/108036
&gt; (Otherwise you should have watch the bots and do the rollout yourself.)
&gt; 
&gt; I can understand if you can&apos;t test on a 32 bit machine. But why don&apos;t you ask for a help to test your patch before landing? I willingly help you in testing if you ask me. Maybe Zoltán or Gábor can help you to debug this bug on 32 bit Qt platform.

I tested on 32 bit, and I waited for the qt bots to go green.

If the qt bots going green != the qt bots working then there&apos;s a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559466</commentid>
    <comment_count>55</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-02-17 13:18:53 -0800</bug_when>
    <thetext>Committed r108112: &lt;http://trac.webkit.org/changeset/108112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573444</commentid>
    <comment_count>56</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-07 18:12:36 -0800</bug_when>
    <thetext>*** Bug 13646 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105313</attachid>
            <date>2011-08-25 22:38:12 -0700</date>
            <delta_ts>2011-08-26 00:39:56 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug-66994-20110825223811.patch</filename>
            <type>text/plain</type>
            <size>22073</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM4NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDgtMjUgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIHV0aWxpemVzIHRvcENhbGxGcmFt
ZSB0byBjcmVhdGUgYSBzdGFjayB0cmFjZSB3aGVuCisgICAgICAgIGFuIGVycm9yIGlzIHRocm93
bi4gVXNlcnMgd2lsbCBhbHNvIGJlIGFibGUgdG8gdXNlIHRoZSBzdGFjaygpCisgICAgICAgIGNv
bW1hbmQgaW4ganNjIHRvIGdldCBzdGFjayB0cmFjZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS5leHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpnZXRDYWxsZXJMaW5lKToKKyAgICAgICAgKEpTQzo6Z2V0VHJhY2VMaW5lKToKKyAg
ICAgICAgKEpTQzo6dXBkYXRlU291cmNlVVJMKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmdldFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRp
b24pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAg
KGZ1bmN0aW9uU3RhY2spOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjphZGRFcnJvcklu
Zm8pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNl
KToKKwogMjAxMS0wOC0yNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeGluZyBicm9rZW4gYnVpbGQgZHVlIHRvIHVudXNlZCB2YXJpYWJsZXMg
aW4gcmVsZWFzZSBtb2RlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDkzNzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBAIF9fWk4zSlNDMTBK
U0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNnNfaW5m
b0UKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19a
TjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEUKK19fWk4zSlND
MTFJbnRlcnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaQogX19aTjNK
U0MxMUpTQnl0ZUFycmF5MTNzX2RlZmF1bHRJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVj
cmVhdGVTdHJ1Y3R1cmVFUk5TXzEySlNHbG9iYWxEYXRhRU5TXzdKU1ZhbHVlRVBLTlNfOUNsYXNz
SW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTZjcmVhdGVFUE5TXzlFeGVjU3RhdGVFUE5TXzlT
dHJ1Y3R1cmVFUE4zV1RGOUJ5dGVBcnJheUUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZp
c2lvbiA5Mzc1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ3VycmVudFRpbWUuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgor
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTczLDYgKzc0LDcgQEAgc3Rh
dGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhY2soRXhlY1N0YXRl
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEV4ZWNT
dGF0ZSopOwogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoRXhlY1N0YXRlKik7CkBAIC0xNzAs
NiArMTcyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxF
eGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3Ry
dWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVu
KSk7CiAgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRp
ZmllcihnbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9uTG9hZCkpOwogICAgICAgICBwdXRE
aXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVj
KCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygp
LCAiY2hlY2tTeW50YXgiKSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOworICAgICAgICBwdXREaXJl
Y3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCks
IHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAi
c3RhY2siKSwgZnVuY3Rpb25TdGFjaykpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9u
U3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVu
Y3Rpb25SZWFkbGluZSkpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCks
IEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJl
KCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25Q
cmVjaXNlVGltZSkpOwogCkBAIC0yMTMsNiArMjE2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EZWIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhY2so
RXhlY1N0YXRlKiBleGVjKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIChJbnRlcnBy
ZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAtMSkpLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNp
b24gOTM3NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODcsNiArNjg3LDk5IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW0KICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqZ2xv
YmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xv
YmFsRGF0YSwgbWVzc2FnZSkpOwogfQogCitzdGF0aWMgdm9pZCBnZXRDYWxsZXJMaW5lKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGludCYgbGluZU51bWJl
cikKK3sKKyAgICAodm9pZClnbG9iYWxEYXRhOworICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
OworICAgIGxpbmVOdW1iZXIgPSAtMTsKKyAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPnJlbW92
ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisKKyAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgp
ID09IENhbGxGcmFtZTo6bm9DYWxsZXIoKSB8fCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPmhh
c0hvc3RDYWxsRnJhbWVGbGFnKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENvZGVCbG9jayog
Y2FsbGVyQ29kZUJsb2NrID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2Fs
bEZyYW1lRmxhZygpLT5jb2RlQmxvY2soKTsKKworI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKKyAg
ICBpZiAoIWdsb2JhbERhdGEtPmNhblVzZUpJVCgpKQorICAgICAgICBieXRlY29kZU9mZnNldCA9
IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7
CisjaWYgRU5BQkxFKEpJVCkKKyAgICBlbHNlCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2Fs
bGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworI2Vu
ZGlmCisjZWxzZQorICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworI2VuZGlmCisKKyAgICBsaW5lTnVtYmVy
ID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQgLSAxKTsKK30KKyAgICAKK3N0YXRpYyBTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFt
ZSAqY2FsbEZyYW1lLCBpbnQgY29kZVR5cGUsIFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmUs
IGludCB0cmFjZUxldmVsKQoreworICAgIGJvb2wgaGFzU291cmNlVVJMSW5mbyA9ICFzb3VyY2VV
UkwuaXNOdWxsKCkgJiYgIXNvdXJjZVVSTC5pc0VtcHR5KCk7CisgICAgYm9vbCBoYXNMaW5lSW5m
byA9IGxpbmUgPiAtMTsKKworICAgIHN3aXRjaCAoKENvZGVUeXBlKWNvZGVUeXBlKSB7CisgICAg
Y2FzZSBFdmFsQ29kZToKKyAgICAgICAgaWYgKGhhc1NvdXJjZVVSTEluZm8pIAorICAgICAgICAg
ICAgcmV0dXJuIGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoIiAgICAlaSAgIGV2YWwgYXQg
JXM6JWRcbiIsIHRyYWNlTGV2ZWwsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSwgbGluZSkgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAg
ZXZhbCBhdCAlc1xuIiwgdHJhY2VMZXZlbCwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIgICAgJWkgICBl
dmFsXG4iLCB0cmFjZUxldmVsKTsKKyAgICBjYXNlIEZ1bmN0aW9uQ29kZToKKyAgICAgICAgaWYg
KGNhbGxGcmFtZS0+Y2FsbGVlKCkgJiYgY2FsbEZyYW1lLT5jYWxsZWUoKS0+aW5oZXJpdHMoJkpT
RnVuY3Rpb246OnNfaW5mbykpIHsKKyAgICAgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJbmZvKSAK
KyAgICAgICAgICAgICAgICByZXR1cm4gaGFzTGluZUluZm8gPyBTdHJpbmc6OmZvcm1hdCgiICAg
ICVpICAgJXMgYXQgJXM6JWRcbiIsIHRyYWNlTGV2ZWwsIGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5j
YWxsZWUoKSktPm5hbWUoY2FsbEZyYW1lKS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lp
KCkuZGF0YSgpLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0
cmluZzo6Zm9ybWF0KCIgICAgJWkgICAlcyBhdCAlc1xuIiwgdHJhY2VMZXZlbCwgYXNGdW5jdGlv
bihjYWxsRnJhbWUtPmNhbGxlZSgpKS0+bmFtZShjYWxsRnJhbWUpLmFzY2lpKCkuZGF0YSgpLCBz
b3VyY2VVUkwuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgJXNcbiIsIHRyYWNlTGV2ZWwsIGFz
RnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSktPm5hbWUoY2FsbEZyYW1lKS5hc2NpaSgpLmRh
dGEoKSk7CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gaGFzTGluZUlu
Zm8gPyBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgYXQgJXM6JWRcbiIsIHRyYWNlTGV2ZWwsIHNv
dXJjZVVSTC5hc2NpaSgpLmRhdGEoKSwgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogU3RyaW5nOjpmb3JtYXQoIiAgICAlaSAgIGF0ICVzXG4iLCB0cmFjZUxldmVsLCBzb3VyY2VV
UkwuYXNjaWkoKS5kYXRhKCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgdXBkYXRlU291cmNl
VVJMKENhbGxGcmFtZSogY2FsbEZyYW1lLCBVU3RyaW5nJiBzb3VyY2VVUkwpIAoreworI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKKyAgICBpZiAoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVz
ZUpJVCgpKQorICAgICAgICBzb3VyY2VVUkwgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5zb3Vy
Y2UoKS0+dXJsKCk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBlbHNlCisgICAgICAgIHNvdXJjZVVS
TCA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwo
KTsKKyNlbmRpZgorI2Vsc2UKKyAgICBzb3VyY2VVUkwgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisjZW5kaWYKK30KKworY29uc3QgVVN0
cmluZyBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGludCBsaW5lKQoreworICAgIGludCBzdGFja0xpbWl0ID0gMTU7CisgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBnbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUtPnJlbW92ZUhvc3RDYWxsRnJhbWVG
bGFnKCk7CisgICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IENhbGxGcmFtZTo6bm9D
YWxsZXIoKSB8fCAhY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkgCisgICAgICAgIHJldHVybiAiSW50
ZXJuYWwgU3RhY2sgVHJhY2UgRXJyb3JcbiI7CisgICAgVVN0cmluZyBzb3VyY2VVUkw7CisKKyAg
ICBTdHJpbmcgdHJhY2UgPSAiLS0+IFN0YWNrIHRyYWNlOlxuIjsKKworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgc3RhY2tMaW1pdDsgKytpKSB7CisgICAgICAgIHdoaWxlIChjYWxsRnJhbWUgJiYg
Y2FsbEZyYW1lICE9IENhbGxGcmFtZTo6bm9DYWxsZXIoKSAmJiAhY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKSkKKyAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+
cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsKKworICAgICAgICBpZiAoIWNhbGxGcmFtZSB8fCBj
YWxsRnJhbWUgPT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgdXBkYXRlU291cmNlVVJMKGNhbGxGcmFtZSwgc291cmNlVVJMKTsKKworICAgICAg
ICB0cmFjZSArPSBnZXRUcmFjZUxpbmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5jb2RlVHlwZSgpLCBzb3VyY2VVUkwsIGxpbmUsIGkpOworCisgICAgICAgIGdldENhbGxlckxp
bmUoZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBsaW5lKTsKKyAgICAgICAgY2FsbEZyYW1lID0gY2Fs
bEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIH0K
KyAgICByZXR1cm4gdHJhY2UuaW1wbCgpOworfQorCiBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8q
IEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFs
dWUmIGV4Y2VwdGlvblZhbHVlLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC02OTUsNiArNzg4
LDcgQEAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogICAgIC8vIFNl
dCB1cCB0aGUgZXhjZXB0aW9uIG9iamVjdAogICAgIGlmIChleGNlcHRpb25WYWx1ZS5pc09iamVj
dCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBhc09iamVjdChleGNlcHRpb25W
YWx1ZSk7CisgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmds
b2JhbERhdGEoKTsKIAogICAgICAgICBpZiAoZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFuY2UoKSAm
JiBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+YXBwZW5kU291cmNlVG9N
ZXNzYWdlKCkpCiAgICAgICAgICAgICBhcHBlbmRTb3VyY2VUb0Vycm9yKGNhbGxGcmFtZSwgc3Rh
dGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiksIGJ5dGVjb2RlT2Zmc2V0KTsKQEAg
LTcwNSw3ICs3OTksOCBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0
CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgb25seSByZWFsbHkgYmUgYWRkaW5nIHRo
ZXNlIHByb3BlcnRpZXMgdG8gVk0gZ2VuZXJhdGVkIGV4Y2VwdGlvbnMsCiAgICAgICAgICAgICAv
LyBidXQgdGhlIGluc3BlY3RvciBjdXJyZW50bHkgcmVxdWlyZXMgdGhlc2UgZm9yIGFsbCB0aHJv
d24gb2JqZWN0cy4KLSAgICAgICAgICAgIGFkZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2VwdGlv
biwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSk7CisgICAgICAgICAgICBV
U3RyaW5nIHN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKGdsb2JhbERhdGEsIGNvZGVCbG9jay0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAg
ICBhZGRFcnJvckluZm8oY2FsbEZyYW1lLCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJl
ckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlKCksIHN0YWNrVHJhY2UpOwogICAgICAgICB9CiAKICAgICAgICAgQ29t
cGxUeXBlIGV4Y2VwdGlvblR5cGUgPSBleGNlcHRpb24tPmV4Y2VwdGlvblR5cGUoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShy
ZXZpc2lvbiA5Mzc1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE5FVkVSX0lOTElORSBKU1ZhbHVlIGNhbGxFdmFsKENhbGxGcmFtZSosIFJl
Z2lzdGVyRmlsZSosIFJlZ2lzdGVyKiBhcmd2LCBpbnQgYXJnYywgaW50IHJlZ2lzdGVyT2Zmc2V0
KTsKICAgICAgICAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxs
RnJhbWUqJiwgSlNWYWx1ZSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgTkVW
RVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSk7CisgICAgICAgIHN0YXRpYyBjb25zdCBVU3RyaW5nIGdldFN0YWNr
VHJhY2UoSlNHbG9iYWxEYXRhKiwgaW50KTsKIAogICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRh
KEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lvbiA5Mzc1OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
NCw3ICsxMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzRXZh
bE5vZGU8UGFyc2VkTm9kZT4oKSkKICAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRl
U3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIGVyck1zZyksIGVyckxpbmUsIHNvdXJjZSk7CisgICAgICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBj
cmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBz
b3VyY2UsIFVTdHJpbmcoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2FyZW5hLnJlc2V0KCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgJKHJldmlzaW9uIDkzNzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQAog
ICAgIG1hY3JvKHByb3RvdHlwZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNvdXJj
ZSkgXAorICAgIG1hY3JvKHN0YWNrKSBcCiAgICAgbWFjcm8odGVzdCkgXAogICAgIG1hY3JvKHRv
RXhwb25lbnRpYWwpIFwKICAgICBtYWNybyh0b0ZpeGVkKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCShyZXZpc2lvbiA5Mzc1OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzEx
Niw3IEBAIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUqIGV4ZWMKICAgICByZXR1
cm4gY3JlYXRlVVJJRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtZXNzYWdlKTsK
IH0KIAotSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpT
T2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK0pTT2Jq
ZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU09iamVjdCogZXJy
b3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IFVTdHJpbmcmIHN0
YWNrVHJhY2UpCiB7CiAgICAgaW50cHRyX3Qgc291cmNlSUQgPSBzb3VyY2UucHJvdmlkZXIoKS0+
YXNJRCgpOwogICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCA9IHNvdXJjZS5wcm92aWRlcigp
LT51cmwoKTsKQEAgLTEyNywxMyArMTI3LDE1IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNH
bG9iYWxEYXRhKiBnbG8KICAgICAgICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERh
dGEsIElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgc291cmNlSWRQcm9wZXJ0eU5hbWUpLCBqc051bWJl
cigoZG91YmxlKXNvdXJjZUlEKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAgICBpZiAoIXNv
dXJjZVVSTC5pc051bGwoKSkKICAgICAgICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2Jh
bERhdGEsIElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgc291cmNlVVJMUHJvcGVydHlOYW1lKSwganNT
dHJpbmcoZ2xvYmFsRGF0YSwgc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAg
ICBpZiAoIXN0YWNrVHJhY2UuaXNOdWxsKCkpCisgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmli
dXRlcyhnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5zdGFjaywganNTdHJp
bmcoZ2xvYmFsRGF0YSwgc3RhY2tUcmFjZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAKICAg
ICByZXR1cm4gZXJyb3I7CiB9CiAKLUpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Up
CitKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9y
LCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBVU3RyaW5nJiBzdGFj
a1RyYWNlKQogewotICAgIHJldHVybiBhZGRFcnJvckluZm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXJyb3IsIGxpbmUsIHNvdXJjZSk7CisgICAgcmV0dXJuIGFkZEVycm9ySW5mbygmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBlcnJvciwgbGluZSwgc291cmNlLCBzdGFja1RyYWNlKTsKIH0KIAogYm9vbCBo
YXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXJyb3IpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDkzNzU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSAr
NTUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIAogICAgIGJv
b2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvcik7Ci0gICAgSlNPYmpl
Y3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5l
LCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2Jh
bERhdGEqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgY29u
c3QgVVN0cmluZyYpOwogICAgIC8vIEV4ZWNTdGF0ZSB3cmFwcGVycy4KLSAgICBKU09iamVjdCog
YWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0
IFNvdXJjZUNvZGUmKTsKKyAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBVU3RyaW5n
Jik7CiAKICAgICAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KICAgICBKU1ZhbHVlIHRocm93
RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkocmV2aXNpb24gOTM3NTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsNyBAQCBFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFs
RGF0CiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBwdXREaXJlY3QoZ2xv
YmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygmZ2xv
YmFsRGF0YSwgbWVzc2FnZSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwg
Z2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5zdGFjaywganNTdHJpbmcoJmdsb2JhbERhdGEsICIi
KSwgRG9udEVudW0pOwogfQogCiBFcnJvckluc3RhbmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0
cmluZyYgbWVzc2FnZSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzODUxKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMjUgIEp1
YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
RXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IAorICAgICAgICBVbml0IHRlc3RzIHRoYXQgY29udGFpbiBib3RoIG5vcm1hbCBhbmQgc3BlY2lh
bCBjYXNlcyBmb3Igc3RhY2sgdHJhY2UKKyAgICAgICAgZ2VuZXJhdGlvbi4KKworICAgICAgICAq
IGZhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOiBBZGRlZC4KKyAgICAgICAgKGhv
c3RUaHJvd2VyKToKKyAgICAgICAgKGNhbGxiYWNrZXIpOgorICAgICAgICAob3V0ZXIpOgorICAg
ICAgICAoaW5uZXIpOgorICAgICAgICAoZXZhbGVyKToKKyAgICAgICAgKG5vcm1hbE91dGVyKToK
KyAgICAgICAgKG5vcm1hbElubmVyKToKKyAgICAgICAgKHNjcmlwdGVySW5uZXIpOgorICAgICAg
ICAoc2NyaXB0ZXJPdXRlcik6CisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbDogQWRkZWQu
CisKIDIwMTEtMDgtMjUgIEJlbiBXZWxscyAgPGJlbndlbGxzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVc2UgUEFUSF9CQVNFRF9CT1JERVJfUkFESVVTX0RSQVdJTkcgZm9yIHNraWEKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKK1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2Ug
Y29yZWN0bmVzcyBpbiBzcGVjaWFsIGNhc2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworLS0+IFN0YWNrIHRyYWNlOgorICAgIDAgICBub3JtYWxJbm5lciBhdCBmaWxlOi8vL1Zv
bHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoxMQorICAgIDEgICBub3JtYWxPdXRlciBhdCBm
aWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoxMAorICAgIDIgICBhdCBmaWxl
Oi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoxNgorCistLT4gU3RhY2sgdHJhY2U6
CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9P
cGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpz
OjgKKyAgICAxICAgZXZhbAorICAgIDIgICBldmFsZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIv
SnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvc3RhY2stdHJhY2UuanMKKyAgICAzICAgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNh
cmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3Rh
Y2stdHJhY2UuanM6MTkKKworLS0+IFN0YWNrIHRyYWNlOgorICAgIDAgICBpbm5lciBhdCBmaWxl
Oi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczo4CisgICAgMSAgIG91dGVyIGF0IGZp
bGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjcKKyAgICAyICAgZXZhbAorICAg
IDMgICBldmFsZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5T
b3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMKKyAg
ICA0ICAgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2Uv
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MjAKKworLS0+
IFN0YWNrIHRyYWNlOgorICAgIDAgICBpbm5lciBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFu
Q2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9z
dGFjay10cmFjZS5qczo4CisgICAgMSAgIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJs
b3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNr
LXRyYWNlLmpzOjIzCisKKy0tPiBTdGFjayB0cmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTov
Ly9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6OAorICAgIDEgICBvdXRlciBhdCBmaWxl
Oi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczo3CisgICAgMiAgIGF0IGZpbGU6Ly8v
Vm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjI0CisKKy0tPiBTdGFjayB0cmFjZToKKyAg
ICAwICAgaG9zdFRocm93ZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2Rl
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2Uu
anM6NQorICAgIDEgICBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3Bl
blNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoy
NworCistLT4gU3RhY2sgdHJhY2U6CisgICAgMCAgIGh0bWxJbm5lciBhdCBmaWxlOi8vL1ZvbHVt
ZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0
YWNrLXRyYWNlLmh0bWw6MTAKKyAgICAxICAgc2NyaXB0ZXJJbm5lciBhdCBmaWxlOi8vL1ZvbHVt
ZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Nj
cmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoxMgorICAgIDIgICBhdCBmaWxlOi8vL1ZvbHVtZXMv
VXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9zdGFjay10cmFjZS5qczoyOQorCistLT4gU3RhY2sgdHJhY2U6CisgICAgMCAgIGh0
bWxJbm5lciBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJj
ZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWw6MTAKKyAgICAxICAgaHRtbE91
dGVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xh
eW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbDoxMQorICAgIDIgICBzY3JpcHRlck91
dGVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjEzCisgICAgMyAg
IGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjMwCisKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKwk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+CisJPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwk8cCBp
ZD0iY29uc29sZSI+PC9wPgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbElubmVyKCkgeyB0aHJvdyBu
ZXcgRXJyb3IoIkVycm9yIGluIEhUTUwiKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQ+ZnVuY3Rpb24g
aHRtbE91dGVyKCkgeyBodG1sSW5uZXIoKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10
cmFjZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorZGVzY3JpcHRpb24oCisnVGhp
cyB0ZXN0IGNoZWNrcyBzdGFjayB0cmFjZSBjb3JlY3RuZXNzIGluIHNwZWNpYWwgY2FzZXMuJwor
KTsKKworZnVuY3Rpb24gaG9zdFRocm93ZXIoKSB7IEVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENo
aWxkLmNhbGwoeyB9LCBbeyB9XSk7ICB9CitmdW5jdGlvbiBjYWxsYmFja2VyKGYpIHsgWzBdLm1h
cChmKTsgfQorZnVuY3Rpb24gb3V0ZXIoZXJyb3JOYW1lKSB7IGlubmVyKGVycm9yTmFtZSk7IH0K
K2Z1bmN0aW9uIGlubmVyKGVycm9yTmFtZSkgeyB0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGluICIg
KyBlcnJvck5hbWUpOyB9CitmdW5jdGlvbiBldmFsZXIoY29kZSkgeyBldmFsKGNvZGUpOyB9Citm
dW5jdGlvbiBub3JtYWxPdXRlcigpIHsgbm9ybWFsSW5uZXIoKTsgfQorZnVuY3Rpb24gbm9ybWFs
SW5uZXIoKSB7IGlmKHRoaXNWYXJEb2VzbnRFeGlzdCkgZmFpbElmVHJ1ZSgic2hvdWxkRmFpbEJl
Zm9yZVRoaXMiKSB9OworZnVuY3Rpb24gc2NyaXB0ZXJJbm5lcigpIHsgaHRtbElubmVyKCk7IH0K
K2Z1bmN0aW9uIHNjcmlwdGVyT3V0ZXIoKSB7IGh0bWxPdXRlcigpOyB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEV4cGVjdGVkIGZ1bmN0aW9ucyBpbiBzdGFjayB0cmFjZQorLy8gTm9ybWFsIENhc2UKK3Ry
eSB7IG5vcm1hbE91dGVyKCkgfSBjYXRjaCAoZSkgeyBkZWJ1ZyhlLnN0YWNrKSB9ICAgICAgICAg
ICAgICAgICAgICAgLy8gbm9ybWFsT3V0ZXIgLT4gbm9ybWFsSW5uZXIKKworLy8gRXZhbCBDYXNl
Cit0cnkgeyBldmFsZXIoImlubmVyKCdpbm5lciBldmFsJyk7Iik7IH0gY2F0Y2ggKGUpIHsgZGVi
dWcoZS5zdGFjaykgfSAgIC8vIGV2YWxlciAtPiBldmFsIC0+IGlubmVyCit0cnkgeyBldmFsZXIo
Im91dGVyKCdvdXRlciBldmFsJyk7Iik7IH0gY2F0Y2ggKGUpIHsgZGVidWcoZS5zdGFjaykgfSAg
IC8vIGV2YWxlciAtPiBldmFsIC0+IG91dGVyIC0+IGlubmVyCisKKy8vIEZ1bmN0aW9uIENhbGxi
YWNrIENhc2UKK3RyeSB7IGNhbGxiYWNrZXIoaW5uZXIoJ2lubmVyIG1hcCcpKTsgfSBjYXRjaCAo
ZSkgeyBkZWJ1ZyhlLnN0YWNrKTsgfSAgIC8vIGNhbGxiYWNrZXIgLT4gbWFwIC0+IGlubmVyCit0
cnkgeyBjYWxsYmFja2VyKG91dGVyKCdvdXRlciBtYXAnKSk7IH0gY2F0Y2ggKGUpIHsgZGVidWco
ZS5zdGFjayk7IH0gICAvLyBjYWxsYmFja2VyIC0+IG1hcCAtPiBvdXRlciAtPiBpbm5lcgorCisv
LyBIb3N0IENvZGUgQ2FzZQordHJ5IHsgaG9zdFRocm93ZXIoKTsgfSBjYXRjaCAoZSkgeyBkZWJ1
ZyhlLnN0YWNrKTsgfSAgICAgICAgICAgICAgICAgICAgLy8gaG9zdFRocm93ZXIKKwordHJ5IHsg
c2NyaXB0ZXJJbm5lcigpOyB9IGNhdGNoIChlKSB7IGRlYnVnKGUuc3RhY2spIH0gICAgICAgICAg
ICAgICAgICAgLy8gc2NyaXB0ZXIgLT4gcHJvZ3JhbSAtPiBpbm5lcgordHJ5IHsgc2NyaXB0ZXJP
dXRlcigpOyB9IGNhdGNoIChlKSB7IGRlYnVnKGUuc3RhY2spIH0gICAgICAgICAgICAgICAgICAg
Ly8gc2NyaXB0ZXIgLT4gcHJvZ3JhbSAtPiBvdXRlciAtPiBpbm5lcgorCitzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>105314</attachid>
            <date>2011-08-25 22:39:27 -0700</date>
            <delta_ts>2011-08-25 22:39:27 -0700</delta_ts>
            <desc>sunspider test results showing no measurable speed regression</desc>
            <filename>sunspider-results.txt</filename>
            <type>text/plain</type>
            <size>3487</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">CgpURVNUICAgICAgICAgICAgICAgICAgIENPTVBBUklTT04gICAgICAgICAgICBGUk9NICAgICAg
ICAgICAgICAgICBUTyAgICAgICAgICAgICBERVRBSUxTCgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoK
KiogVE9UQUwgKio6ICAgICAgICAgICAqMS4wMDJ4IGFzIHNsb3cqICAxNTguOW1zICsvLSAwLjEl
ICAgMTU5LjJtcyArLy0gMC4xJSAgICAgc2lnbmlmaWNhbnQKCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CgogIDNkOiAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAyMy4ybXMgKy8tIDAu
MyUgICAgMjMuMW1zICsvLSAwLjIlIAogICAgY3ViZTogICAgICAgICAgICAgIC0gICAgICAgICAg
ICAgICAgICAgOS4ybXMgKy8tIDAuNiUgICAgIDkuMW1zICsvLSAwLjUlIAogICAgbW9ycGg6ICAg
ICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgNy4wbXMgKy8tIDAuMSUgICAgIDcuMG1zICsv
LSAwLjAlIAogICAgcmF5dHJhY2U6ICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgNy4wbXMg
Ky8tIDAuMiUgICAgIDcuMG1zICsvLSAwLjAlIAoKICBhY2Nlc3M6ICAgICAgICAgICAgICAtICAg
ICAgICAgICAgICAgICAgMTkuMG1zICsvLSAwLjIlICAgIDE5LjBtcyArLy0gMC4xJSAKICAgIGJp
bmFyeS10cmVlczogICAgICAtICAgICAgICAgICAgICAgICAgIDIuMG1zICsvLSAwLjglICAgICAy
LjBtcyArLy0gMC41JSAKICAgIGZhbm5rdWNoOiAgICAgICAgICAtICAgICAgICAgICAgICAgICAg
MTEuMG1zICsvLSAwLjElICAgIDExLjBtcyArLy0gMC4xJSAKICAgIG5ib2R5OiAgICAgICAgICAg
ICAtICAgICAgICAgICAgICAgICAgIDQuMG1zICsvLSAwLjAlICAgICA0LjBtcyArLy0gMC4wJSAK
ICAgIG5zaWV2ZTogICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIDIuMG1zICsvLSAwLjAl
ICAgICAyLjBtcyArLy0gMC4wJSAKCiAgYml0b3BzOiAgICAgICAgICAgICAgLSAgICAgICAgICAg
ICAgICAgIDEzLjBtcyArLy0gMC4wJSAgICAxMy4wbXMgKy8tIDAuMSUgCiAgICAzYml0LWJpdHMt
aW4tYnl0ZTogLSAgICAgICAgICAgICAgICAgICAxLjBtcyArLy0gMC4wJSAgICAgMS4wbXMgKy8t
IDAuMCUgCiAgICBiaXRzLWluLWJ5dGU6ICAgICAgLSAgICAgICAgICAgICAgICAgICA0LjBtcyAr
Ly0gMC4wJSAgICAgNC4wbXMgKy8tIDAuMCUgCiAgICBiaXR3aXNlLWFuZDogICAgICAgPz8gICAg
ICAgICAgICAgICAgICAzLjBtcyArLy0gMC4wJSAgICAgMy4wbXMgKy8tIDAuMyUgICAgIG5vdCBj
b25jbHVzaXZlOiBtaWdodCBiZSAqMS4wMDJ4IGFzIHNsb3cqCiAgICBuc2lldmUtYml0czogICAg
ICAgLSAgICAgICAgICAgICAgICAgICA1LjBtcyArLy0gMC4wJSAgICAgNS4wbXMgKy8tIDAuMCUg
CgogIGNvbnRyb2xmbG93OiAgICAgICAgID8/ICAgICAgICAgICAgICAgICAgMS4wbXMgKy8tIDEu
NCUgICAgIDEuMG1zICsvLSAxLjklICAgICBub3QgY29uY2x1c2l2ZTogbWlnaHQgYmUgKjEuMDEw
eCBhcyBzbG93KgogICAgcmVjdXJzaXZlOiAgICAgICAgID8/ICAgICAgICAgICAgICAgICAgMS4w
bXMgKy8tIDEuNCUgICAgIDEuMG1zICsvLSAxLjklICAgICBub3QgY29uY2x1c2l2ZTogbWlnaHQg
YmUgKjEuMDEweCBhcyBzbG93KgoKICBjcnlwdG86ICAgICAgICAgICAgICA/PyAgICAgICAgICAg
ICAgICAgMTAuMG1zICsvLSAwLjAlICAgIDEwLjBtcyArLy0gMC4yJSAgICAgbm90IGNvbmNsdXNp
dmU6IG1pZ2h0IGJlICoxLjAwMnggYXMgc2xvdyoKICAgIGFlczogICAgICAgICAgICAgICAtICAg
ICAgICAgICAgICAgICAgIDYuMG1zICsvLSAwLjAlICAgICA2LjBtcyArLy0gMC4wJSAKICAgIG1k
NTogICAgICAgICAgICAgICA/PyAgICAgICAgICAgICAgICAgIDIuMG1zICsvLSAwLjAlICAgICAy
LjBtcyArLy0gMC44JSAgICAgbm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAwOHggYXMgc2xv
dyoKICAgIHNoYTE6ICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIDIuMG1zICsvLSAw
LjAlICAgICAyLjBtcyArLy0gMC4wJSAKCiAgZGF0ZTogICAgICAgICAgICAgICAgKjEuMDA3eCBh
cyBzbG93KiAgIDE4LjRtcyArLy0gMC42JSAgICAxOC41bXMgKy8tIDAuNCUgICAgIHNpZ25pZmlj
YW50CiAgICBmb3JtYXQtdG9mdGU6ICAgICAgKjEuMDE0eCBhcyBzbG93KiAgIDEwLjRtcyArLy0g
MS4xJSAgICAxMC41bXMgKy8tIDAuNyUgICAgIHNpZ25pZmljYW50CiAgICBmb3JtYXQteHBhcmI6
ICAgICAgLSAgICAgICAgICAgICAgICAgICA4LjBtcyArLy0gMC4xJSAgICAgOC4wbXMgKy8tIDAu
MCUgCgogIG1hdGg6ICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAxNS4wbXMgKy8t
IDAuMSUgICAgMTUuMG1zICsvLSAwLjAlIAogICAgY29yZGljOiAgICAgICAgICAgIC0gICAgICAg
ICAgICAgICAgICAgNi4wbXMgKy8tIDAuMCUgICAgIDYuMG1zICsvLSAwLjAlIAogICAgcGFydGlh
bC1zdW1zOiAgICAgIC0gICAgICAgICAgICAgICAgICAgNy4wbXMgKy8tIDAuMiUgICAgIDcuMG1z
ICsvLSAwLjAlIAogICAgc3BlY3RyYWwtbm9ybTogICAgIC0gICAgICAgICAgICAgICAgICAgMi4w
bXMgKy8tIDAuMCUgICAgIDIuMG1zICsvLSAwLjAlIAoKICByZWdleHA6ICAgICAgICAgICAgICA/
PyAgICAgICAgICAgICAgICAgMTAuMG1zICsvLSAwLjElICAgIDEwLjBtcyArLy0gMC4yJSAgICAg
bm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAwMnggYXMgc2xvdyoKICAgIGRuYTogICAgICAg
ICAgICAgICA/PyAgICAgICAgICAgICAgICAgMTAuMG1zICsvLSAwLjElICAgIDEwLjBtcyArLy0g
MC4yJSAgICAgbm90IGNvbmNsdXNpdmU6IG1pZ2h0IGJlICoxLjAwMnggYXMgc2xvdyoKCiAgc3Ry
aW5nOiAgICAgICAgICAgICAgKjEuMDA0eCBhcyBzbG93KiAgIDQ5LjNtcyArLy0gMC4yJSAgICA0
OS41bXMgKy8tIDAuMiUgICAgIHNpZ25pZmljYW50CiAgICBiYXNlNjQ6ICAgICAgICAgICAgKjEu
MDExeCBhcyBzbG93KiAgICA1LjltcyArLy0gMC42JSAgICAgNi4wbXMgKy8tIDAuMiUgICAgIHNp
Z25pZmljYW50CiAgICBmYXN0YTogICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICA3LjBt
cyArLy0gMC4wJSAgICAgNy4wbXMgKy8tIDAuMCUgCiAgICB0YWdjbG91ZDogICAgICAgICAgMS4w
MTZ4IGFzIGZhc3QgICAgIDEyLjNtcyArLy0gMC41JSAgICAxMi4xbXMgKy8tIDAuNCUgICAgIHNp
Z25pZmljYW50CiAgICB1bnBhY2stY29kZTogICAgICAgKjEuMDE4eCBhcyBzbG93KiAgIDE4LjFt
cyArLy0gMC4zJSAgICAxOC40bXMgKy8tIDAuNCUgICAgIHNpZ25pZmljYW50CiAgICB2YWxpZGF0
ZS1pbnB1dDogICAgLSAgICAgICAgICAgICAgICAgICA2LjBtcyArLy0gMC4yJSAgICAgNi4wbXMg
Ky8tIDAuMCUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105322</attachid>
            <date>2011-08-26 00:40:02 -0700</date>
            <delta_ts>2011-08-26 09:39:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-66994-20110826004000.patch</filename>
            <type>text/plain</type>
            <size>23452</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM4NTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTEtMDgtMjYgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJhbWUgdG8gY3Jl
YXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJvd24uIFVzZXJz
IHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBjb21tYW5kIGlu
IGpzYyB0byBnZXQgc3RhY2sgdHJhY2VzLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2V0Q2FsbGVyTGluZSk6CisgICAgICAgIChKU0M6OmdldFRyYWNlTGluZSk6CisgICAgICAgIChK
U0M6OnVwZGF0ZVNvdXJjZVVSTCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRTdGFj
a1RyYWNlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChHbG9iYWxPYmplY3Q6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgIChmdW5jdGlv
blN0YWNrKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisKIDIwMTEtMDgtMjUgIE1hcmsgSGFobmVuYmVyZyAg
PG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhpbmcgYnJva2VuIGJ1aWxkIGR1
ZSB0byB1bnVzZWQgdmFyaWFibGVzIGluIHJlbGVhc2UgbW9kZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA5Mzg1NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2
ICsxMTQsNyBAQCBfX1pOM0pTQzEwSlNGdW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRlCiBfX1pO
M0pTQzEwSlNGdW5jdGlvbjZzX2luZm9FCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNT
dGF0ZUVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRVBO
U184SlNPYmplY3RFCitfX1pOM0pTQzExSW50ZXJwcmV0ZXIxM2dldFN0YWNrVHJhY2VFUE5TXzEy
SlNHbG9iYWxEYXRhRWkKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTEzc19kZWZhdWx0SW5mb0UKIF9f
Wk4zSlNDMTFKU0J5dGVBcnJheTE1Y3JlYXRlU3RydWN0dXJlRVJOU18xMkpTR2xvYmFsRGF0YUVO
U183SlNWYWx1ZUVQS05TXzlDbGFzc0luZm9FCiBfX1pOM0pTQzExSlNCeXRlQXJyYXk2Y3JlYXRl
RVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJlRVBOM1dURjlCeXRlQXJyYXlFCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gOTM4NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkN1
cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklu
aXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgi
CkBAIC03Myw2ICs3NCw3IEBAIHN0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RGVidWcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblN0YWNrKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqKTsKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5
KEV4ZWNTdGF0ZSopOwpAQCAtMTcwLDYgKzE3Miw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhl
YygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMo
KSwgInJ1biIpLCBmdW5jdGlvblJ1bikpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9u
U3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlv
bkxvYWQpKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJ
ZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50
YXgpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVu
dGlmaWVyKGdsb2JhbEV4ZWMoKSwgInN0YWNrIiksIGZ1bmN0aW9uU3RhY2spKTsKICAgICAgICAg
cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFs
RXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4
ZWMoKSwgInJlYWRsaW5lIiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKICAgICAgICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInBy
ZWNpc2VUaW1lIiksIGZ1bmN0aW9uUHJlY2lzZVRpbWUpKTsKIApAQCAtMjEzLDYgKzIxNiwxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGViCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblN0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIiVzXG4iLCAoSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoJmV4ZWMtPmdsb2JhbERh
dGEoKSwgLTEpKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R0MoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25z
T25seSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDkzODU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg3LDYgKzY4
Nyw5OSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtCiAgICAgZXhj
ZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMt
Pm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsKIH0KIAorc3RhdGljIHZv
aWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIpCit7CisgICAgKHZvaWQpZ2xvYmFsRGF0YTsKKyAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldDsKKyAgICBsaW5lTnVtYmVyID0gLTE7CisgICAgY2FsbEZy
YW1lID0gY2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworCisgICAgaWYgKGNh
bGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgfHwgY2FsbEZy
YW1lLT5jYWxsZXJGcmFtZSgpLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpKQorICAgICAgICByZXR1
cm47CisKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y2FsbGVy
RnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+Y29kZUJsb2NrKCk7CisKKyNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCisgICAgaWYgKCFnbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKKyAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuVlBDKCkpOworI2lmIEVOQUJMRShKSVQpCisgICAgZWxzZQorICAgICAg
ICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBieXRlY29kZU9mZnNldCA9IGNh
bGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyNl
bmRpZgorCisgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7Cit9CisgICAgCitzdGF0aWMgU3RyaW5n
IGdldFRyYWNlTGluZShDYWxsRnJhbWUgKmNhbGxGcmFtZSwgaW50IGNvZGVUeXBlLCBVU3RyaW5n
JiBzb3VyY2VVUkwsIGludCBsaW5lLCBpbnQgdHJhY2VMZXZlbCkKK3sKKyAgICBib29sIGhhc1Nv
dXJjZVVSTEluZm8gPSAhc291cmNlVVJMLmlzTnVsbCgpICYmICFzb3VyY2VVUkwuaXNFbXB0eSgp
OworICAgIGJvb2wgaGFzTGluZUluZm8gPSBsaW5lID4gLTE7CisKKyAgICBzd2l0Y2ggKChDb2Rl
VHlwZSljb2RlVHlwZSkgeworICAgIGNhc2UgRXZhbENvZGU6CisgICAgICAgIGlmIChoYXNTb3Vy
Y2VVUkxJbmZvKSAKKyAgICAgICAgICAgIHJldHVybiBoYXNMaW5lSW5mbyA/IFN0cmluZzo6Zm9y
bWF0KCIgICAgJWkgICBldmFsIGF0ICVzOiVkXG4iLCB0cmFjZUxldmVsLCBzb3VyY2VVUkwuYXNj
aWkoKS5kYXRhKCksIGxpbmUpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU3Ry
aW5nOjpmb3JtYXQoIiAgICAlaSAgIGV2YWwgYXQgJXNcbiIsIHRyYWNlTGV2ZWwsIHNvdXJjZVVS
TC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdCgiICAgICVpICAgZXZhbFxuIiwgdHJhY2VMZXZlbCk7CisgICAgY2FzZSBGdW5j
dGlvbkNvZGU6CisgICAgICAgIGlmIChjYWxsRnJhbWUtPmNhbGxlZSgpICYmIGNhbGxGcmFtZS0+
Y2FsbGVlKCktPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKSB7CisgICAgICAgICAgICBp
ZiAoaGFzU291cmNlVVJMSW5mbykgCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0xpbmVJbmZv
ID8gU3RyaW5nOjpmb3JtYXQoIiAgICAlaSAgICVzIGF0ICVzOiVkXG4iLCB0cmFjZUxldmVsLCBh
c0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpLT5uYW1lKGNhbGxGcmFtZSkuYXNjaWkoKS5k
YXRhKCksIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSwgbGluZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgJXMgYXQgJXNcbiIs
IHRyYWNlTGV2ZWwsIGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSktPm5hbWUoY2FsbEZy
YW1lKS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiAgICAlaSAg
ICVzXG4iLCB0cmFjZUxldmVsLCBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpLT5uYW1l
KGNhbGxGcmFtZSkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoIiAgICAlaSAgIGF0ICVz
OiVkXG4iLCB0cmFjZUxldmVsLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCksIGxpbmUpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0KCIgICAgJWkgICBhdCAlc1xu
IiwgdHJhY2VMZXZlbCwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHVwZGF0ZVNvdXJjZVVSTChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVVN0cmluZyYg
c291cmNlVVJMKSAKK3sKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgaWYgKCFjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKKyAgICAgICAgc291cmNlVVJMID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+c291cmNlKCktPnVybCgpOworI2lmIEVOQUJMRShKSVQpCisgICAg
ZWxzZQorICAgICAgICBzb3VyY2VVUkwgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4
ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisjZW5kaWYKKyNlbHNlCisgICAgc291cmNlVVJMID0g
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOwor
I2VuZGlmCit9CisKK2NvbnN0IFVTdHJpbmcgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZSkKK3sKKyAgICBpbnQgc3RhY2tMaW1pdCA9
IDE1OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1l
LT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGlmICghY2FsbEZyYW1lIHx8IGNhbGxG
cmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgfHwgIWNhbGxGcmFtZS0+Y29kZUJsb2NrKCkp
IAorICAgICAgICByZXR1cm4gIkludGVybmFsIFN0YWNrIFRyYWNlIEVycm9yXG4iOworICAgIFVT
dHJpbmcgc291cmNlVVJMOworCisgICAgU3RyaW5nIHRyYWNlID0gIi0tPiBTdGFjayB0cmFjZTpc
biI7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YWNrTGltaXQ7ICsraSkgeworICAgICAg
ICB3aGlsZSAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZSAhPSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkg
JiYgIWNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpCisgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxs
RnJhbWUtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisKKyAgICAg
ICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IENhbGxGcmFtZTo6bm9DYWxsZXIoKSkK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHVwZGF0ZVNvdXJjZVVSTChjYWxsRnJhbWUs
IHNvdXJjZVVSTCk7CisKKyAgICAgICAgdHJhY2UgKz0gZ2V0VHJhY2VMaW5lKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSwgc291cmNlVVJMLCBsaW5lLCBpKTsK
KworICAgICAgICBnZXRDYWxsZXJMaW5lKGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgbGluZSk7Cisg
ICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENh
bGxGcmFtZUZsYWcoKTsKKyAgICB9CisgICAgcmV0dXJuIHRyYWNlLmltcGwoKTsKK30KKwogTkVW
RVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24oQ2FsbEZy
YW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpCiB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpOwpAQCAtNjk1LDYgKzc4OCw3IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50
ZXJwcmV0ZXI6OnQKICAgICAvLyBTZXQgdXAgdGhlIGV4Y2VwdGlvbiBvYmplY3QKICAgICBpZiAo
ZXhjZXB0aW9uVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogZXhjZXB0aW9u
ID0gYXNPYmplY3QoZXhjZXB0aW9uVmFsdWUpOworICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CiAKICAgICAgICAgaWYgKGV4Y2VwdGlv
bi0+aXNFcnJvckluc3RhbmNlKCkgJiYgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2Vw
dGlvbiktPmFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpKQogICAgICAgICAgICAgYXBwZW5kU291cmNl
VG9FcnJvcihjYWxsRnJhbWUsIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24p
LCBieXRlY29kZU9mZnNldCk7CkBAIC03MDUsNyArNzk5LDggQEAgTkVWRVJfSU5MSU5FIEhhbmRs
ZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogCiAgICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxkIG9u
bHkgcmVhbGx5IGJlIGFkZGluZyB0aGVzZSBwcm9wZXJ0aWVzIHRvIFZNIGdlbmVyYXRlZCBleGNl
cHRpb25zLAogICAgICAgICAgICAgLy8gYnV0IHRoZSBpbnNwZWN0b3IgY3VycmVudGx5IHJlcXVp
cmVzIHRoZXNlIGZvciBhbGwgdGhyb3duIG9iamVjdHMuCi0gICAgICAgICAgICBhZGRFcnJvcklu
Zm8oY2FsbEZyYW1lLCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291
cmNlKCkpOworICAgICAgICAgICAgVVN0cmluZyBzdGFja1RyYWNlID0gZ2V0U3RhY2tUcmFjZShn
bG9iYWxEYXRhLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCkpOworICAgICAgICAgICAgYWRkRXJyb3JJbmZvKGNhbGxGcmFtZSwgZXhjZXB0aW9u
LCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZSgpLCBzdGFja1RyYWNlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIENvbXBsVHlwZSBleGNlcHRpb25UeXBlID0gZXhjZXB0aW9uLT5l
eGNlcHRpb25UeXBlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gOTM4NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYg
KzEyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBORVZFUl9JTkxJTkUgSlNWYWx1ZSBj
YWxsRXZhbChDYWxsRnJhbWUqLCBSZWdpc3RlckZpbGUqLCBSZWdpc3RlciogYXJndiwgaW50IGFy
Z2MsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5m
byogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERl
YnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBzdGF0aWMg
Y29uc3QgVVN0cmluZyBnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSosIGludCk7CiAKICAgICAg
ICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpOwogICAgICAgICB2b2lkIHN0
YXJ0U2FtcGxpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAko
cmV2aXNpb24gOTM4NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBlbHNlIGlmIChpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkpCiAgICAgICAgICAgICAg
ICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVy
ck1zZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFk
ZEVycm9ySW5mbygmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50
YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UpOwor
ICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRFcnJvckluZm8oJmxleGljYWxHbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKSwgY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNlLCBVU3RyaW5nKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgbV9hcmVuYS5yZXNldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lvbiA5Mzg1NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDYgKzYxLDcgQEAKICAgICBtYWNybyhwcm90b3R5cGUpIFwKICAgICBtYWNybyhz
ZXQpIFwKICAgICBtYWNybyhzb3VyY2UpIFwKKyAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3Jv
KHRlc3QpIFwKICAgICBtYWNybyh0b0V4cG9uZW50aWFsKSBcCiAgICAgbWFjcm8odG9GaXhlZCkg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2aXNpb24g
OTM4NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhl
Y1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVVSSUVycm9yKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpCitKU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBjb25zdCBVU3RyaW5nJiBzdGFja1RyYWNlKQogewogICAgIGludHB0cl90IHNvdXJjZUlE
ID0gc291cmNlLnByb3ZpZGVyKCktPmFzSUQoKTsKICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VV
UkwgPSBzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xMjcsMTMgKzEyNywxNSBAQCBKU09i
amVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvCiAgICAgICAgIGVycm9yLT5wdXRX
aXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZUlk
UHJvcGVydHlOYW1lKSwganNOdW1iZXIoKGRvdWJsZSlzb3VyY2VJRCksIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSk7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIGVycm9yLT5w
dXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJj
ZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHNvdXJjZVVSTCksIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSk7CisgICAgaWYgKCFzdGFja1RyYWNlLmlzTnVsbCgpKQorICAgICAg
ICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+c3RhY2ssIGpzU3RyaW5nKGdsb2JhbERhdGEsIHN0YWNrVHJhY2UpLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOwogCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogYWRk
RXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlKQorSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgY29uc3QgVVN0cmluZyYgc3RhY2tUcmFjZSkKIHsKLSAgICByZXR1cm4gYWRkRXJyb3JJbmZv
KCZleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yLCBsaW5lLCBzb3VyY2UpOworICAgIHJldHVybiBh
ZGRFcnJvckluZm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3IsIGxpbmUsIHNvdXJjZSwgc3Rh
Y2tUcmFjZSk7CiB9CiAKIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGVycm9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZp
c2lvbiA5Mzg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBN
ZXRob2RzIHRvIGFkZCAKICAgICBib29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVj
dCogZXJyb3IpOwotICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiwgSlNP
YmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpOworICAgIEpTT2JqZWN0
KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwg
Y29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3Jh
cHBlcnMuCi0gICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgSlNPYmplY3QqIGFkZEVy
cm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJv
cnMuCiAgICAgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTM4NTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0wOC0yNiAgSnVhbiBDLiBNb250ZW1heW9yICA8am1v
bnRAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFcnJvci5zdGFjaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5OTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbml0IHRlc3RzIHRoYXQgY29u
dGFpbiBib3RoIG5vcm1hbCBhbmQgc3BlY2lhbCBjYXNlcyBmb3Igc3RhY2sgdHJhY2UKKyAgICAg
ICAgZ2VuZXJhdGlvbi4KKworICAgICAgICAqIGZhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1w
cm9wZXJ0aWVzLmpzOgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNl
LmpzOiBBZGRlZC4KKyAgICAgICAgKGhvc3RUaHJvd2VyKToKKyAgICAgICAgKGNhbGxiYWNrZXIp
OgorICAgICAgICAob3V0ZXIpOgorICAgICAgICAoaW5uZXIpOgorICAgICAgICAoZXZhbGVyKToK
KyAgICAgICAgKG5vcm1hbE91dGVyKToKKyAgICAgICAgKG5vcm1hbElubmVyKToKKyAgICAgICAg
KHNjcmlwdGVySW5uZXIpOgorICAgICAgICAoc2NyaXB0ZXJPdXRlcik6CisgICAgICAgICogZmFz
dC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
c3RhY2stdHJhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTA4LTI1ICBCZW4g
V2VsbHMgIDxiZW53ZWxsc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGV4cGVjdGF0
aW9ucyB0byByZW1vdmUgY29uZmxpY3QKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0
aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mzg1NikK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBCiAKIAogUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhlcnJvcikgaXMg
W10KLVBBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpIGlzIFsibGluZSIsICJz
b3VyY2VJZCIsICJzb3VyY2VVUkwiXQorUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVF
cnJvcikgaXMgWyJsaW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCIsICJzdGFjayJdCiBQQVNT
IE9iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubmFtZSBpcyAiUmFuZ2VFcnJvciIK
IFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5tZXNzYWdlIGlzICIiCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ4IEBACitUaGlzIHRlc3QgY2hlY2tzIHN0YWNrIHRyYWNlIGNvcmVjdG5lc3MgaW4gc3BlY2lh
bCBjYXNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0tPiBTdGFjayB0cmFj
ZToKKyAgICAwICAgbm9ybWFsSW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxv
cy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2st
dHJhY2UuanM6MTEKKyAgICAxICAgbm9ybWFsT3V0ZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIv
SnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvc3RhY2stdHJhY2UuanM6MTAKKyAgICAyICAgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVh
bkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
c3RhY2stdHJhY2UuanM6MTYKKworLS0+IFN0YWNrIHRyYWNlOgorICAgIDAgICBpbm5lciBhdCBm
aWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczo4CisgICAgMSAgIGV2YWwKKyAg
ICAyICAgZXZhbGVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVu
U291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCisg
ICAgMyAgIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNl
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjE5CisKKy0t
PiBTdGFjayB0cmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVh
bkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
c3RhY2stdHJhY2UuanM6OAorICAgIDEgICBvdXRlciBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9K
dWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0
cy9zdGFjay10cmFjZS5qczo3CisgICAgMiAgIGV2YWwKKyAgICAzICAgZXZhbGVyIGF0IGZpbGU6
Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zh
c3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCisgICAgNCAgIGF0IGZpbGU6Ly8vVm9s
dW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMv
c2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjIwCisKKy0tPiBTdGFjayB0cmFjZToKKyAgICAw
ICAgaW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3Vy
Y2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6OAorICAg
IDEgICBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyMworCistLT4g
U3RhY2sgdHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5D
YXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0
YWNrLXRyYWNlLmpzOjgKKyAgICAxICAgb3V0ZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVh
bkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
c3RhY2stdHJhY2UuanM6NworICAgIDIgICBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2Fy
bG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFj
ay10cmFjZS5qczoyNAorCistLT4gU3RhY2sgdHJhY2U6CisgICAgMCAgIGhvc3RUaHJvd2VyIGF0
IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRl
c3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjUKKyAgICAxICAgYXQgZmls
ZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MjcKKworLS0+IFN0YWNrIHRyYWNl
OgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9j
b2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOjEwCisg
ICAgMSAgIHNjcmlwdGVySW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9j
b2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJh
Y2UuanM6MTIKKyAgICAyICAgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2Rl
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2Uu
anM6MjkKKworLS0+IFN0YWNrIHRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTovLy9W
b2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zdGFjay10cmFjZS5odG1sOjEwCisgICAgMSAgIGh0bWxPdXRlciBhdCBmaWxlOi8vL1ZvbHVt
ZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0
YWNrLXRyYWNlLmh0bWw6MTEKKyAgICAyICAgc2NyaXB0ZXJPdXRlciBhdCBmaWxlOi8vL1ZvbHVt
ZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Nj
cmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoxMworICAgIDMgICBhdCBmaWxlOi8vL1ZvbHVtZXMv
VXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9zdGFjay10cmFjZS5qczozMAorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
c3RhY2stdHJhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNr
LXRyYWNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRy
YWNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+CisJPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorCTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisJPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisJPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKwk8
c2NyaXB0PmZ1bmN0aW9uIGh0bWxJbm5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCJFcnJvciBpbiBI
VE1MIik7IH08L3NjcmlwdD4KKwk8c2NyaXB0PmZ1bmN0aW9uIGh0bWxPdXRlcigpIHsgaHRtbElu
bmVyKCk7IH08L3NjcmlwdD4KKwk8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNl
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCShy
ZXZpc2lvbiA5Mzg1NikKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2Vw
dGlvbi1wcm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw3IEBAIHRyeSB7
CiAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCJtZXNzYWdlIik7CiAKICAgICBzaG91bGRCZSgn
ZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpJywgJ1tdJyk7Ci0gICAgc2hvdWxkQmUoJ2VudW1l
cmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKScsICdbImxpbmUiLCAic291cmNlSWQiLCAic291
cmNlVVJMIl0nKTsKKyAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJy
b3IpJywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiLCAic3RhY2siXScpOwogCiAg
ICAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubmFtZScsICci
UmFuZ2VFcnJvciInKTsKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2
ZUVycm9yKS5tZXNzYWdlJywgJyIiJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9zdGFjay10cmFjZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMyIEBACitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3QgY2hlY2tzIHN0YWNrIHRyYWNlIGNv
cmVjdG5lc3MgaW4gc3BlY2lhbCBjYXNlcy4nCispOworCitmdW5jdGlvbiBob3N0VGhyb3dlcigp
IHsgRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuY2FsbCh7IH0sIFt7IH1dKTsgIH0KK2Z1
bmN0aW9uIGNhbGxiYWNrZXIoZikgeyBbMF0ubWFwKGYpOyB9CitmdW5jdGlvbiBvdXRlcihlcnJv
ck5hbWUpIHsgaW5uZXIoZXJyb3JOYW1lKTsgfQorZnVuY3Rpb24gaW5uZXIoZXJyb3JOYW1lKSB7
IHRocm93IG5ldyBFcnJvcigiRXJyb3IgaW4gIiArIGVycm9yTmFtZSk7IH0KK2Z1bmN0aW9uIGV2
YWxlcihjb2RlKSB7IGV2YWwoY29kZSk7IH0KK2Z1bmN0aW9uIG5vcm1hbE91dGVyKCkgeyBub3Jt
YWxJbm5lcigpOyB9CitmdW5jdGlvbiBub3JtYWxJbm5lcigpIHsgaWYodGhpc1ZhckRvZXNudEV4
aXN0KSBmYWlsSWZUcnVlKCJzaG91bGRGYWlsQmVmb3JlVGhpcyIpIH07CitmdW5jdGlvbiBzY3Jp
cHRlcklubmVyKCkgeyBodG1sSW5uZXIoKTsgfQorZnVuY3Rpb24gc2NyaXB0ZXJPdXRlcigpIHsg
aHRtbE91dGVyKCk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhwZWN0ZWQgZnVuY3Rpb25zIGluIHN0
YWNrIHRyYWNlCisvLyBOb3JtYWwgQ2FzZQordHJ5IHsgbm9ybWFsT3V0ZXIoKSB9IGNhdGNoIChl
KSB7IGRlYnVnKGUuc3RhY2spIH0gICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWxPdXRlciAt
PiBub3JtYWxJbm5lcgorCisvLyBFdmFsIENhc2UKK3RyeSB7IGV2YWxlcigiaW5uZXIoJ2lubmVy
IGV2YWwnKTsiKTsgfSBjYXRjaCAoZSkgeyBkZWJ1ZyhlLnN0YWNrKSB9ICAgLy8gZXZhbGVyIC0+
IGV2YWwgLT4gaW5uZXIKK3RyeSB7IGV2YWxlcigib3V0ZXIoJ291dGVyIGV2YWwnKTsiKTsgfSBj
YXRjaCAoZSkgeyBkZWJ1ZyhlLnN0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gb3V0ZXIg
LT4gaW5uZXIKKworLy8gRnVuY3Rpb24gQ2FsbGJhY2sgQ2FzZQordHJ5IHsgY2FsbGJhY2tlcihp
bm5lcignaW5uZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IGRlYnVnKGUuc3RhY2spOyB9ICAgLy8g
Y2FsbGJhY2tlciAtPiBtYXAgLT4gaW5uZXIKK3RyeSB7IGNhbGxiYWNrZXIob3V0ZXIoJ291dGVy
IG1hcCcpKTsgfSBjYXRjaCAoZSkgeyBkZWJ1ZyhlLnN0YWNrKTsgfSAgIC8vIGNhbGxiYWNrZXIg
LT4gbWFwIC0+IG91dGVyIC0+IGlubmVyCisKKy8vIEhvc3QgQ29kZSBDYXNlCit0cnkgeyBob3N0
VGhyb3dlcigpOyB9IGNhdGNoIChlKSB7IGRlYnVnKGUuc3RhY2spOyB9ICAgICAgICAgICAgICAg
ICAgICAvLyBob3N0VGhyb3dlcgorCit0cnkgeyBzY3JpcHRlcklubmVyKCk7IH0gY2F0Y2ggKGUp
IHsgZGVidWcoZS5zdGFjaykgfSAgICAgICAgICAgICAgICAgICAvLyBzY3JpcHRlciAtPiBwcm9n
cmFtIC0+IGlubmVyCit0cnkgeyBzY3JpcHRlck91dGVyKCk7IH0gY2F0Y2ggKGUpIHsgZGVidWco
ZS5zdGFjaykgfSAgICAgICAgICAgICAgICAgICAvLyBzY3JpcHRlciAtPiBwcm9ncmFtIC0+IG91
dGVyIC0+IGlubmVyCisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzL3N0YWNr
LXRyYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgY2hlY2tzIHN0YWNrIHRyYWNlIGNvcmVjdG5lc3Mg
aW4gc3BlY2lhbCBjYXNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3VuZGVm
aW5lZAordW5kZWZpbmVkCit1bmRlZmluZWQKK3VuZGVmaW5lZAordW5kZWZpbmVkCit1bmRlZmlu
ZWQKK3VuZGVmaW5lZAordW5kZWZpbmVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105364</attachid>
            <date>2011-08-26 09:39:40 -0700</date>
            <delta_ts>2011-08-26 15:54:57 -0700</delta_ts>
            <desc>patch w win and chromium fixes</desc>
            <filename>bug-66994-20110826093939.patch</filename>
            <type>text/plain</type>
            <size>24562</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM4ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTEtMDgtMjYgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJhbWUgdG8gY3Jl
YXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJvd24uIFVzZXJz
IHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBjb21tYW5kIGlu
IGpzYyB0byBnZXQgc3RhY2sgdHJhY2VzLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5kZWY6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpnZXRDYWxsZXJMaW5lKToKKyAgICAgICAgKEpTQzo6Z2V0VHJhY2VMaW5lKToK
KyAgICAgICAgKEpTQzo6dXBkYXRlU291cmNlVVJMKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmdldFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNl
cHRpb24pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICog
anNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAg
ICAgKGZ1bmN0aW9uU3RhY2spOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjphZGRFcnJv
ckluZm8pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKwogMjAxMS0wOC0yNSAgTWFyayBI
YWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGluZyBicm9r
ZW4gYnVpbGQgZHVlIHRvIHVudXNlZCB2YXJpYWJsZXMgaW4gcmVsZWFzZSBtb2RlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDkzODU2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDYgKzExNCw3IEBAIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVj
U3RhdGUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNnNfaW5mb0UKIF9fWk4zSlNDMTB0aHJvd0Vycm9y
RVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlF
eGVjU3RhdGVFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMTFJbnRlcnByZXRlcjEzZ2V0U3RhY2tU
cmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTNzX2RlZmF1
bHRJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVTdHJ1Y3R1cmVFUk5TXzEySlNH
bG9iYWxEYXRhRU5TXzdKU1ZhbHVlRVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVB
cnJheTZjcmVhdGVFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5dGVBcnJh
eUUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA5Mzg1NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiQ3VycmVudFRpbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAj
aW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0xvY2suaCIKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhD
b250ZW50c09mRmlsZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByaW50KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU3RhY2soRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSopOwogI2lmbmRlZiBOREVCVUcK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZUV4ZWN1
dGFibGVNZW1vcnkoRXhlY1N0YXRlKik7CkBAIC0xNzAsNiArMTcyLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0
ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7CiAgICAgICAgIHB1dERpcmVjdEZ1
bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhp
cywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJsb2Fk
IiksIGZ1bmN0aW9uTG9hZCkpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiY2hlY2tTeW50YXgiKSwgZnVuY3Rp
b25DaGVja1N5bnRheCkpOworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCks
IEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJl
KCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAic3RhY2siKSwgZnVuY3Rpb25TdGFjaykp
OwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOwogICAgICAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwogCkBAIC0yMTMs
NiArMjE2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWIKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAg
IGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIChJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCAtMSkpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA5Mzg1NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNiArMjAwLDcgQEAgRVhQT1JUUwogICAg
ID9nZXRQcm9wZXJ0eURlc2NyaXB0b3JASlNPYmplY3RASlNDQEBRQUVfTlBBVkV4ZWNTdGF0ZUAy
QEFCVklkZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9nZXRQcm9w
ZXJ0eU5hbWVzQEpTT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFt
ZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAgID9nZXRTbGljZUBBcmdMaXN0QEpT
Q0BAUUJFWEhBQVYxMkBAWgorICAgID9nZXRTdGFja1RyYWNlQEludGVycHJldGVyQEpTQ0BAU0E/
QlZVU3RyaW5nQDJAUEFWSlNHbG9iYWxEYXRhQDJASEBaCiAgICAgP2dldFN0cmluZ0BKU0NlbGxA
SlNDQEBRQkU/QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/Z2V0U3RyaW5nQEpT
Q2VsbEBKU0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUFWVVN0cmluZ0AyQEBaCiAgICAgP2dldFVJ
bnQzMkBKU0NlbGxASlNDQEBVQkVfTkFBSUBaCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDkzODU2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjg3LDYgKzY4Nyw5OSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vy
cm9yKENhbGxGcmFtCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3Nh
Z2UpKTsKIH0KIAorc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIpCit7CisgICAgKHZv
aWQpZ2xvYmFsRGF0YTsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKKyAgICBsaW5lTnVt
YmVyID0gLTE7CisgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1l
RmxhZygpOworCisgICAgaWYgKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSA9PSBDYWxsRnJhbWU6
Om5vQ2FsbGVyKCkgfHwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5oYXNIb3N0Q2FsbEZyYW1l
RmxhZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+
Y29kZUJsb2NrKCk7CisKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgaWYgKCFnbG9iYWxE
YXRhLT5jYW5Vc2VKSVQoKSkKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOworI2lmIEVOQUJMRShK
SVQpCisgICAgZWxzZQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorI2Vsc2UKKyAg
ICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorCisgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVC
bG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7Cit9
CisgICAgCitzdGF0aWMgU3RyaW5nIGdldFRyYWNlTGluZShDYWxsRnJhbWUgKmNhbGxGcmFtZSwg
aW50IGNvZGVUeXBlLCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lLCBpbnQgdHJhY2VMZXZl
bCkKK3sKKyAgICBib29sIGhhc1NvdXJjZVVSTEluZm8gPSAhc291cmNlVVJMLmlzTnVsbCgpICYm
ICFzb3VyY2VVUkwuaXNFbXB0eSgpOworICAgIGJvb2wgaGFzTGluZUluZm8gPSBsaW5lID4gLTE7
CisKKyAgICBzd2l0Y2ggKChDb2RlVHlwZSljb2RlVHlwZSkgeworICAgIGNhc2UgRXZhbENvZGU6
CisgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJbmZvKSAKKyAgICAgICAgICAgIHJldHVybiBoYXNM
aW5lSW5mbyA/IFN0cmluZzo6Zm9ybWF0KCIgICAgJWkgICBldmFsIGF0ICVzOiVkXG4iLCB0cmFj
ZUxldmVsLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCksIGxpbmUpIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogU3RyaW5nOjpmb3JtYXQoIiAgICAlaSAgIGV2YWwgYXQgJXNcbiIs
IHRyYWNlTGV2ZWwsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgZXZhbFxuIiwgdHJhY2VM
ZXZlbCk7CisgICAgY2FzZSBGdW5jdGlvbkNvZGU6CisgICAgICAgIGlmIChjYWxsRnJhbWUtPmNh
bGxlZSgpICYmIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2lu
Zm8pKSB7CisgICAgICAgICAgICBpZiAoaGFzU291cmNlVVJMSW5mbykgCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoIiAgICAlaSAgICVzIGF0ICVz
OiVkXG4iLCB0cmFjZUxldmVsLCBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpLT5uYW1l
KGNhbGxGcmFtZSkuYXNjaWkoKS5kYXRhKCksIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSwgbGlu
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgi
ICAgICVpICAgJXMgYXQgJXNcbiIsIHRyYWNlTGV2ZWwsIGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5j
YWxsZWUoKSktPm5hbWUoY2FsbEZyYW1lKS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIiAgICAlaSAgICVzXG4iLCB0cmFjZUxldmVsLCBhc0Z1bmN0aW9uKGNhbGxG
cmFtZS0+Y2FsbGVlKCkpLT5uYW1lKGNhbGxGcmFtZSkuYXNjaWkoKS5kYXRhKCkpOworICAgICAg
ICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGhhc0xpbmVJbmZvID8gU3RyaW5nOjpm
b3JtYXQoIiAgICAlaSAgIGF0ICVzOiVkXG4iLCB0cmFjZUxldmVsLCBzb3VyY2VVUkwuYXNjaWko
KS5kYXRhKCksIGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9y
bWF0KCIgICAgJWkgICBhdCAlc1xuIiwgdHJhY2VMZXZlbCwgc291cmNlVVJMLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZVNvdXJjZVVSTChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVVN0cmluZyYgc291cmNlVVJMKSAKK3sKKyNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCisgICAgaWYgKCFjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKKyAgICAg
ICAgc291cmNlVVJMID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+c291cmNlKCktPnVybCgpOwor
I2lmIEVOQUJMRShKSVQpCisgICAgZWxzZQorICAgICAgICBzb3VyY2VVUkwgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisjZW5kaWYKKyNl
bHNlCisgICAgc291cmNlVVJMID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRh
YmxlKCktPnNvdXJjZVVSTCgpOworI2VuZGlmCit9CisKK2NvbnN0IFVTdHJpbmcgSW50ZXJwcmV0
ZXI6OmdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZSkKK3sK
KyAgICBpbnQgc3RhY2tMaW1pdCA9IDE1OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZ2xv
YmFsRGF0YS0+dG9wQ2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGlm
ICghY2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgfHwgIWNh
bGxGcmFtZS0+Y29kZUJsb2NrKCkpIAorICAgICAgICByZXR1cm4gIkludGVybmFsIFN0YWNrIFRy
YWNlIEVycm9yXG4iOworICAgIFVTdHJpbmcgc291cmNlVVJMOworCisgICAgU3RyaW5nIHRyYWNl
ID0gIi0tPiBTdGFjayB0cmFjZTpcbiI7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YWNr
TGltaXQ7ICsraSkgeworICAgICAgICB3aGlsZSAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZSAhPSBD
YWxsRnJhbWU6Om5vQ2FsbGVyKCkgJiYgIWNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpCisgICAgICAg
ICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxs
RnJhbWVGbGFnKCk7CisKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IENh
bGxGcmFtZTo6bm9DYWxsZXIoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHVwZGF0
ZVNvdXJjZVVSTChjYWxsRnJhbWUsIHNvdXJjZVVSTCk7CisKKyAgICAgICAgdHJhY2UgKz0gZ2V0
VHJhY2VMaW5lKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSwg
c291cmNlVVJMLCBsaW5lLCBpKTsKKworICAgICAgICBnZXRDYWxsZXJMaW5lKGdsb2JhbERhdGEs
IGNhbGxGcmFtZSwgbGluZSk7CisgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVy
RnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsKKyAgICB9CisgICAgcmV0dXJuIHRy
YWNlLmltcGwoKTsKK30KKwogTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6
dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlJiBleGNlcHRpb25W
YWx1ZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtNjk1LDYgKzc4OCw3IEBAIE5FVkVSX0lO
TElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnQKICAgICAvLyBTZXQgdXAgdGhlIGV4Y2Vw
dGlvbiBvYmplY3QKICAgICBpZiAoZXhjZXB0aW9uVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAg
ICBKU09iamVjdCogZXhjZXB0aW9uID0gYXNPYmplY3QoZXhjZXB0aW9uVmFsdWUpOworICAgICAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7CiAK
ICAgICAgICAgaWYgKGV4Y2VwdGlvbi0+aXNFcnJvckluc3RhbmNlKCkgJiYgc3RhdGljX2Nhc3Q8
RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiktPmFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpKQogICAg
ICAgICAgICAgYXBwZW5kU291cmNlVG9FcnJvcihjYWxsRnJhbWUsIHN0YXRpY19jYXN0PEVycm9y
SW5zdGFuY2UqPihleGNlcHRpb24pLCBieXRlY29kZU9mZnNldCk7CkBAIC03MDUsNyArNzk5LDgg
QEAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogCiAgICAgICAgICAg
ICAvLyBGSVhNRTogc2hvdWxkIG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0aGVzZSBwcm9wZXJ0aWVz
IHRvIFZNIGdlbmVyYXRlZCBleGNlcHRpb25zLAogICAgICAgICAgICAgLy8gYnV0IHRoZSBpbnNw
ZWN0b3IgY3VycmVudGx5IHJlcXVpcmVzIHRoZXNlIGZvciBhbGwgdGhyb3duIG9iamVjdHMuCi0g
ICAgICAgICAgICBhZGRFcnJvckluZm8oY2FsbEZyYW1lLCBleGNlcHRpb24sIGNvZGVCbG9jay0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+c291cmNlKCkpOworICAgICAgICAgICAgVVN0cmluZyBzdGFja1Ry
YWNlID0gZ2V0U3RhY2tUcmFjZShnbG9iYWxEYXRhLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpOworICAgICAgICAgICAgYWRkRXJyb3JJbmZv
KGNhbGxGcmFtZSwgZXhjZXB0aW9uLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZSgpLCBzdGFja1RyYWNlKTsKICAgICAgICAgfQogCiAgICAgICAgIENvbXBsVHlwZSBleGNlcHRp
b25UeXBlID0gZXhjZXB0aW9uLT5leGNlcHRpb25UeXBlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gOTM4NTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBO
RVZFUl9JTkxJTkUgSlNWYWx1ZSBjYWxsRXZhbChDYWxsRnJhbWUqLCBSZWdpc3RlckZpbGUqLCBS
ZWdpc3RlciogYXJndiwgaW50IGFyZ2MsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIE5F
VkVSX0lOTElORSBIYW5kbGVySW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFs
dWUmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lk
IGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExp
bmUpOworICAgICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRTdGFja1RyYWNlKEpTR2xvYmFs
RGF0YSosIGludCk7CiAKICAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4
ZWMpOwogICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gOTM4NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbHNlIGlmIChpc0V2YWxOb2RlPFBhcnNlZE5v
ZGU+KCkpCiAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVN5bnRheEVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cp
LCBlcnJMaW5lLCBzb3VyY2UpOworICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRFcnJv
ckluZm8oJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY3JlYXRlU3ludGF4RXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNlLCBVU3RyaW5n
KCkpOwogICAgICAgICB9CiAKICAgICAgICAgbV9hcmVuYS5yZXNldCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZp
c2lvbiA5Mzg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAKICAgICBtYWNybyhwcm90
b3R5cGUpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzb3VyY2UpIFwKKyAgICBtYWNy
byhzdGFjaykgXAogICAgIG1hY3JvKHRlc3QpIFwKICAgICBtYWNybyh0b0V4cG9uZW50aWFsKSBc
CiAgICAgbWFjcm8odG9GaXhlZCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAkocmV2aXNpb24gOTM4NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBKU09iamVj
dCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVVSSUVy
cm9yKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0
KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU09iamVjdCogZXJyb3Is
IGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCitKU09iamVjdCogYWRkRXJyb3JJ
bmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBVU3RyaW5nJiBzdGFja1RyYWNlKQogewog
ICAgIGludHB0cl90IHNvdXJjZUlEID0gc291cmNlLnByb3ZpZGVyKCktPmFzSUQoKTsKICAgICBj
b25zdCBVU3RyaW5nJiBzb3VyY2VVUkwgPSBzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0x
MjcsMTMgKzEyNywxNSBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xv
CiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVy
KGdsb2JhbERhdGEsIHNvdXJjZUlkUHJvcGVydHlOYW1lKSwganNOdW1iZXIoKGRvdWJsZSlzb3Vy
Y2VJRCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxs
KCkpCiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlm
aWVyKGdsb2JhbERhdGEsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKGdsb2JhbERh
dGEsIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgaWYgKCFzdGFja1Ry
YWNlLmlzTnVsbCgpKQorICAgICAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0
YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+c3RhY2ssIGpzU3RyaW5nKGdsb2JhbERhdGEs
IHN0YWNrVHJhY2UpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogCiAgICAgcmV0dXJuIGVycm9y
OwogfQogCi1KU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorSlNPYmplY3QqIGFk
ZEVycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgVVN0cmluZyYgc3RhY2tUcmFjZSkKIHsKLSAg
ICByZXR1cm4gYWRkRXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yLCBsaW5lLCBz
b3VyY2UpOworICAgIHJldHVybiBhZGRFcnJvckluZm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJy
b3IsIGxpbmUsIHNvdXJjZSwgc3RhY2tUcmFjZSk7CiB9CiAKIGJvb2wgaGFzRXJyb3JJbmZvKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5oCShyZXZpc2lvbiA5Mzg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAvLyBNZXRob2RzIHRvIGFkZCAKICAgICBib29sIGhhc0Vycm9ySW5m
byhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IpOwotICAgIEpTT2JqZWN0KiBhZGRFcnJvcklu
Zm8oSlNHbG9iYWxEYXRhKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNl
Q29kZSYpOworICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiwgSlNPYmpl
Y3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFVTdHJpbmcmKTsK
ICAgICAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhF
eGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7
CisgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3Is
IGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8g
TWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCiAgICAgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0
ZSosIEpTVmFsdWUpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTM4ODEpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0wOC0yNiAgSnVh
biBDLiBNb250ZW1heW9yICA8am1vbnRAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBF
cnJvci5zdGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjY5OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVbml0IHRlc3RzIHRoYXQgY29udGFpbiBib3RoIG5vcm1hbCBhbmQgc3BlY2lhbCBjYXNlcyBm
b3Igc3RhY2sgdHJhY2UKKyAgICAgICAgZ2VuZXJhdGlvbi4KKworICAgICAgICAqIGZhc3QvanMv
ZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvc2Ny
aXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzOgorICAgICAgICAqIGZhc3QvanMvc2Ny
aXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOiBBZGRlZC4KKyAgICAgICAgKGhvc3RUaHJvd2VyKToK
KyAgICAgICAgKGNhbGxiYWNrZXIpOgorICAgICAgICAob3V0ZXIpOgorICAgICAgICAoaW5uZXIp
OgorICAgICAgICAoZXZhbGVyKToKKyAgICAgICAgKG5vcm1hbE91dGVyKToKKyAgICAgICAgKG5v
cm1hbElubmVyKToKKyAgICAgICAgKHNjcmlwdGVySW5uZXIpOgorICAgICAgICAoc2NyaXB0ZXJP
dXRlcik6CisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDExLTA4LTI2ICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI5Mzg3MC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZXhj
ZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mzg1
NikKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAogUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhlcnJvcikg
aXMgW10KLVBBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpIGlzIFsibGluZSIs
ICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiXQorUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRp
dmVFcnJvcikgaXMgWyJsaW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCIsICJzdGFjayJdCiBQ
QVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubmFtZSBpcyAiUmFuZ2VFcnJv
ciIKIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5tZXNzYWdlIGlzICIi
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ4IEBACitUaGlzIHRlc3QgY2hlY2tzIHN0YWNrIHRyYWNlIGNvcmVjdG5lc3MgaW4gc3Bl
Y2lhbCBjYXNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0tPiBTdGFjayB0
cmFjZToKKyAgICAwICAgbm9ybWFsSW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNh
cmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3Rh
Y2stdHJhY2UuanM6MTEKKyAgICAxICAgbm9ybWFsT3V0ZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1Vz
ZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQt
dGVzdHMvc3RhY2stdHJhY2UuanM6MTAKKyAgICAyICAgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIv
SnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvc3RhY2stdHJhY2UuanM6MTYKKworLS0+IFN0YWNrIHRyYWNlOgorICAgIDAgICBpbm5lciBh
dCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczo4CisgICAgMSAgIGV2YWwK
KyAgICAyICAgZXZhbGVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9P
cGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpz
CisgICAgMyAgIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291
cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjE5CisK
Ky0tPiBTdGFjayB0cmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIv
SnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvc3RhY2stdHJhY2UuanM6OAorICAgIDEgICBvdXRlciBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNl
ci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10
ZXN0cy9zdGFjay10cmFjZS5qczo3CisgICAgMiAgIGV2YWwKKyAgICAzICAgZXZhbGVyIGF0IGZp
bGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCisgICAgNCAgIGF0IGZpbGU6Ly8v
Vm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjIwCisKKy0tPiBTdGFjayB0cmFjZToKKyAg
ICAwICAgaW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5T
b3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6OAor
ICAgIDEgICBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJj
ZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyMworCist
LT4gU3RhY2sgdHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1
YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
L3N0YWNrLXRyYWNlLmpzOjgKKyAgICAxICAgb3V0ZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIv
SnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvc3RhY2stdHJhY2UuanM6NworICAgIDIgICBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFu
Q2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9z
dGFjay10cmFjZS5qczoyNAorCistLT4gU3RhY2sgdHJhY2U6CisgICAgMCAgIGhvc3RUaHJvd2Vy
IGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjUKKyAgICAxICAgYXQg
ZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVz
dHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MjcKKworLS0+IFN0YWNrIHRy
YWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxv
cy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOjEw
CisgICAgMSAgIHNjcmlwdGVySW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxv
cy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2st
dHJhY2UuanM6MTIKKyAgICAyICAgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9j
b2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJh
Y2UuanM6MjkKKworLS0+IFN0YWNrIHRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTov
Ly9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zdGFjay10cmFjZS5odG1sOjEwCisgICAgMSAgIGh0bWxPdXRlciBhdCBmaWxlOi8vL1Zv
bHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pz
L3N0YWNrLXRyYWNlLmh0bWw6MTEKKyAgICAyICAgc2NyaXB0ZXJPdXRlciBhdCBmaWxlOi8vL1Zv
bHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoxMworICAgIDMgICBhdCBmaWxlOi8vL1ZvbHVt
ZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Nj
cmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczozMAorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvc3RhY2stdHJhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0
YWNrLXRyYWNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNr
LXRyYWNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+CisJPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorCTxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisJPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisJPHAgaWQ9ImNvbnNvbGUiPjwvcD4K
Kwk8c2NyaXB0PmZ1bmN0aW9uIGh0bWxJbm5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCJFcnJvciBp
biBIVE1MIik7IH08L3NjcmlwdD4KKwk8c2NyaXB0PmZ1bmN0aW9uIGh0bWxPdXRlcigpIHsgaHRt
bElubmVyKCk7IH08L3NjcmlwdD4KKwk8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0YWNrLXRy
YWNlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpz
CShyZXZpc2lvbiA5Mzg1NikKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4
Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw3IEBAIHRy
eSB7CiAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCJtZXNzYWdlIik7CiAKICAgICBzaG91bGRC
ZSgnZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpJywgJ1tdJyk7Ci0gICAgc2hvdWxkQmUoJ2Vu
dW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKScsICdbImxpbmUiLCAic291cmNlSWQiLCAi
c291cmNlVVJMIl0nKTsKKyAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZl
RXJyb3IpJywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiLCAic3RhY2siXScpOwog
CiAgICAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubmFtZScs
ICciUmFuZ2VFcnJvciInKTsKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKG5h
dGl2ZUVycm9yKS5tZXNzYWdlJywgJyIiJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Nj
cmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMyIEBACitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3QgY2hlY2tzIHN0YWNrIHRyYWNl
IGNvcmVjdG5lc3MgaW4gc3BlY2lhbCBjYXNlcy4nCispOworCitmdW5jdGlvbiBob3N0VGhyb3dl
cigpIHsgRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuY2FsbCh7IH0sIFt7IH1dKTsgIH0K
K2Z1bmN0aW9uIGNhbGxiYWNrZXIoZikgeyBbMF0ubWFwKGYpOyB9CitmdW5jdGlvbiBvdXRlcihl
cnJvck5hbWUpIHsgaW5uZXIoZXJyb3JOYW1lKTsgfQorZnVuY3Rpb24gaW5uZXIoZXJyb3JOYW1l
KSB7IHRocm93IG5ldyBFcnJvcigiRXJyb3IgaW4gIiArIGVycm9yTmFtZSk7IH0KK2Z1bmN0aW9u
IGV2YWxlcihjb2RlKSB7IGV2YWwoY29kZSk7IH0KK2Z1bmN0aW9uIG5vcm1hbE91dGVyKCkgeyBu
b3JtYWxJbm5lcigpOyB9CitmdW5jdGlvbiBub3JtYWxJbm5lcigpIHsgaWYodGhpc1ZhckRvZXNu
dEV4aXN0KSBmYWlsSWZUcnVlKCJzaG91bGRGYWlsQmVmb3JlVGhpcyIpIH07CitmdW5jdGlvbiBz
Y3JpcHRlcklubmVyKCkgeyBodG1sSW5uZXIoKTsgfQorZnVuY3Rpb24gc2NyaXB0ZXJPdXRlcigp
IHsgaHRtbE91dGVyKCk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhwZWN0ZWQgZnVuY3Rpb25zIGlu
IHN0YWNrIHRyYWNlCisvLyBOb3JtYWwgQ2FzZQordHJ5IHsgbm9ybWFsT3V0ZXIoKSB9IGNhdGNo
IChlKSB7IGRlYnVnKGUuc3RhY2spIH0gICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWxPdXRl
ciAtPiBub3JtYWxJbm5lcgorCisvLyBFdmFsIENhc2UKK3RyeSB7IGV2YWxlcigiaW5uZXIoJ2lu
bmVyIGV2YWwnKTsiKTsgfSBjYXRjaCAoZSkgeyBkZWJ1ZyhlLnN0YWNrKSB9ICAgLy8gZXZhbGVy
IC0+IGV2YWwgLT4gaW5uZXIKK3RyeSB7IGV2YWxlcigib3V0ZXIoJ291dGVyIGV2YWwnKTsiKTsg
fSBjYXRjaCAoZSkgeyBkZWJ1ZyhlLnN0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gb3V0
ZXIgLT4gaW5uZXIKKworLy8gRnVuY3Rpb24gQ2FsbGJhY2sgQ2FzZQordHJ5IHsgY2FsbGJhY2tl
cihpbm5lcignaW5uZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IGRlYnVnKGUuc3RhY2spOyB9ICAg
Ly8gY2FsbGJhY2tlciAtPiBtYXAgLT4gaW5uZXIKK3RyeSB7IGNhbGxiYWNrZXIob3V0ZXIoJ291
dGVyIG1hcCcpKTsgfSBjYXRjaCAoZSkgeyBkZWJ1ZyhlLnN0YWNrKTsgfSAgIC8vIGNhbGxiYWNr
ZXIgLT4gbWFwIC0+IG91dGVyIC0+IGlubmVyCisKKy8vIEhvc3QgQ29kZSBDYXNlCit0cnkgeyBo
b3N0VGhyb3dlcigpOyB9IGNhdGNoIChlKSB7IGRlYnVnKGUuc3RhY2spOyB9ICAgICAgICAgICAg
ICAgICAgICAvLyBob3N0VGhyb3dlcgorCit0cnkgeyBzY3JpcHRlcklubmVyKCk7IH0gY2F0Y2gg
KGUpIHsgZGVidWcoZS5zdGFjaykgfSAgICAgICAgICAgICAgICAgICAvLyBzY3JpcHRlciAtPiBw
cm9ncmFtIC0+IGlubmVyCit0cnkgeyBzY3JpcHRlck91dGVyKCk7IH0gY2F0Y2ggKGUpIHsgZGVi
dWcoZS5zdGFjaykgfSAgICAgICAgICAgICAgICAgICAvLyBzY3JpcHRlciAtPiBwcm9ncmFtIC0+
IG91dGVyIC0+IGlubmVyCisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CShyZXZpc2lvbiA5Mzg1NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDYwLDYgKzQ2MCwxMCBAQCBXT05U
RklYIFNLSVAgOiBmYXN0L2ZyYW1lcy9jcm9zcy1zaXRlLXRoCiAvLyB0aHJvdy4gIFY4IGZvbGxv
d3MgdGhlIHNwZWMuCiBXT05URklYIFNLSVAgOiBmYXN0L2pzL3JlcGFyc2luZy1zZW1pY29sb24t
aW5zZXJ0aW9uLmh0bWwgPSBGQUlMCiAKKy8vIFRoaXMgdGVzdHMgc3RhY2stdHJhY2VzIHRoYXQg
YXJlIGdlbmVyYXRlZCBieSBKU0MuIFRoaXMgdGVzdCBzaG91bGQKKy8vIGZhaWwgc2luY2UgaXQg
aXMgc3BlY2lmaWMgdG8ganNjLgorV09OVEZJWCBTS0lQIDogZmFzdC9qcy9zdGFjay10cmFjZS5o
dG1sID0gRkFJTAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gTElHSFRUUEQKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105417</attachid>
            <date>2011-08-26 15:55:02 -0700</date>
            <delta_ts>2011-09-12 19:14:33 -0700</delta_ts>
            <desc>patch with changes</desc>
            <filename>bug-66994-20110826155500.patch</filename>
            <type>text/plain</type>
            <size>26918</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM5MjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTEtMDgtMjYgIEp1YW4gQy4gTW9udGVtYXlvciAgPGptb250QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggdXRpbGl6ZXMgdG9wQ2FsbEZyYW1l
IHRvIGNyZWF0ZSBhIHN0YWNrIHRyYWNlIHdoZW4KKyAgICAgICAgYW4gZXJyb3IgaXMgdGhyb3du
LiBVc2VycyB3aWxsIGFsc28gYmUgYWJsZSB0byB1c2UgdGhlIHN0YWNrKCkKKyAgICAgICAgY29t
bWFuZCBpbiBqc2MgdG8gZ2V0IHN0YWNrIHRyYWNlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbGVyTGluZSk6CisgICAgICAgIChKU0M6OmdldFRyYWNl
TGluZSk6CisgICAgICAgIChKU0M6OnVwZGF0ZVNvdXJjZVVSTCk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmNvbnN0cnVjdG9yQm9keSk6
CisgICAgICAgIChmdW5jdGlvblN0YWNrKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6
YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisKIDIwMTEtMDgtMjYg
IE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnpp
cCBpbml0aWFsaXphdGlvbiBsaXN0cyBhbmQgY29uc3RydWN0b3JzIGluIEpTQ2VsbCBoaWVyYXJj
aHkgKDIvNykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAko
cmV2aXNpb24gOTM4NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDggQEAgX19aTjNKU0MxMEpTRnVuY3Rp
b240bmFtZUVQTlNfOUV4ZWNTdGF0ZQogX19aTjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19a
TjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzEw
dGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RQorX19aTjNKU0MxMUludGVy
cHJldGVyMTNnZXRTdGFja1RyYWNlRVBOU18xMkpTR2xvYmFsRGF0YUVpCitfX1pOM0pTQzExSW50
ZXJwcmV0ZXIxM2dldFN0YWNrVHJhY2VFUE5TXzEySlNHbG9iYWxEYXRhRWlSTjNXVEY2VmVjdG9y
SU5TXzE1U3RhY2tUcmFjZUxldmVsRUxtMEVFRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTNzX2Rl
ZmF1bHRJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVTdHJ1Y3R1cmVFUk5TXzEy
SlNHbG9iYWxEYXRhRU5TXzdKU1ZhbHVlRVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0J5
dGVBcnJheTZjcmVhdGVFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5dGVB
cnJheUUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA5Mzg1NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiQ3VycmVudFRpbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldp
dGhDb250ZW50c09mRmlsZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblByaW50KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhY2soRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSopOwogI2lmbmRlZiBOREVC
VUcKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZUV4
ZWN1dGFibGVNZW1vcnkoRXhlY1N0YXRlKik7CkBAIC0xNzAsNiArMTcyLDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7CiAgICAgICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJs
b2FkIiksIGZ1bmN0aW9uTG9hZCkpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxF
eGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3Ry
dWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiY2hlY2tTeW50YXgiKSwgZnVu
Y3Rpb25DaGVja1N5bnRheCkpOworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAic3RhY2siKSwgZnVuY3Rpb25TdGFj
aykpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOwogICAg
ICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShn
bG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwogCkBAIC0y
MTMsNiArMjE2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWIK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU3RhY2soRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCAtMSkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDkzODU2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw2ICsyMDAsNyBAQCBFWFBPUlRTCiAgICAg
P2dldFByb3BlcnR5RGVzY3JpcHRvckBKU09iamVjdEBKU0NAQFFBRV9OUEFWRXhlY1N0YXRlQDJA
QUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQEBaCiAgICAgP2dldFByb3Bl
cnR5TmFtZXNASlNPYmplY3RASlNDQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUFWUHJvcGVydHlOYW1l
QXJyYXlAMkBXNEVudW1lcmF0aW9uTW9kZUAyQEBaCiAgICAgP2dldFNsaWNlQEFyZ0xpc3RASlND
QEBRQkVYSEFBVjEyQEBaCisgICAgP2dldFN0YWNrVHJhY2VASW50ZXJwcmV0ZXJASlNDQEBTQT9C
VlVTdHJpbmdAMkBQQVZKU0dsb2JhbERhdGFAMkBIQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBK
U0NAQFFCRT9BVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9nZXRTdHJpbmdASlND
ZWxsQEpTQ0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQVZVU3RyaW5nQDJAQFoKICAgICA/Z2V0VUlu
dDMyQEpTQ2VsbEBKU0NAQFVCRV9OQUFJQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gOTM4NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02ODcsNiArNjg3LDExNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vy
cm9yKENhbGxGcmFtCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3Nh
Z2UpKTsKIH0KIAorc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIpCit7CisgICAgKHZv
aWQpZ2xvYmFsRGF0YTsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKKyAgICBsaW5lTnVt
YmVyID0gLTE7CisgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1l
RmxhZygpOworCisgICAgaWYgKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSA9PSBDYWxsRnJhbWU6
Om5vQ2FsbGVyKCkgfHwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5oYXNIb3N0Q2FsbEZyYW1l
RmxhZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+
Y29kZUJsb2NrKCk7CisKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgaWYgKCFnbG9iYWxE
YXRhLT5jYW5Vc2VKSVQoKSkKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOworI2lmIEVOQUJMRShK
SVQpCisgICAgZWxzZQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorI2Vsc2UKKyAg
ICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorCisgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVC
bG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7Cit9
CisKK3N0YXRpYyBTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSAqY2FsbEZyYW1lLCBpbnQg
Y29kZVR5cGUsIFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmUpCit7CisgICAgYm9vbCBoYXNT
b3VyY2VVUkxJbmZvID0gIXNvdXJjZVVSTC5pc051bGwoKSAmJiAhc291cmNlVVJMLmlzRW1wdHko
KTsKKyAgICBib29sIGhhc0xpbmVJbmZvID0gbGluZSA+IC0xOworCisgICAgc3dpdGNoICgoQ29k
ZVR5cGUpY29kZVR5cGUpIHsKKyAgICBjYXNlIEV2YWxDb2RlOgorICAgICAgICBpZiAoaGFzU291
cmNlVVJMSW5mbykgCisgICAgICAgICAgICByZXR1cm4gaGFzTGluZUluZm8gPyBTdHJpbmc6OmZv
cm1hdCgiZXZhbCBhdCAlczolZCIsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSwgbGluZSkgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiZXZhbCBhdCAl
cyIsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiZXZhbCIpOworICAgIGNhc2UgRnVuY3Rpb25Db2RlOgor
ICAgICAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZWUoKSAmJiBjYWxsRnJhbWUtPmNhbGxlZSgpLT5p
bmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSkgeworICAgICAgICAgICAgaWYgKGhhc1NvdXJj
ZVVSTEluZm8pIAorICAgICAgICAgICAgICAgIHJldHVybiBoYXNMaW5lSW5mbyA/IFN0cmluZzo6
Zm9ybWF0KCIlcyBhdCAlczolZCIsIGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSktPm5h
bWUoY2FsbEZyYW1lKS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpLCBs
aW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0
KCIlcyBhdCAlcyIsIGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSktPm5hbWUoY2FsbEZy
YW1lKS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzXG4iLCBh
c0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpLT5uYW1lKGNhbGxGcmFtZSkuYXNjaWkoKS5k
YXRhKCkpOworICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGhhc0xpbmVJ
bmZvID8gU3RyaW5nOjpmb3JtYXQoImF0ICVzOiVkIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgp
LCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiYXQg
JXMiLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
dXBkYXRlU291cmNlVVJMKENhbGxGcmFtZSogY2FsbEZyYW1lLCBVU3RyaW5nJiBzb3VyY2VVUkwp
IAoreworI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKKyAgICBpZiAoIWNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLmNhblVzZUpJVCgpKQorICAgICAgICBzb3VyY2VVUkwgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5zb3VyY2UoKS0+dXJsKCk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBlbHNlCisgICAg
ICAgIHNvdXJjZVVSTCA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgp
LT5zb3VyY2VVUkwoKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBzb3VyY2VVUkwgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisjZW5kaWYKK30K
Kwordm9pZCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGludCBsaW5lLCBWZWN0b3I8U3RhY2tUcmFjZUxldmVsPiYgcmVzdWx0cykKK3sKKyAgICBp
bnQgc3RhY2tMaW1pdCA9IDE1OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZ2xvYmFsRGF0
YS0+dG9wQ2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGlmICghY2Fs
bEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgfHwgIWNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCkpIAorICAgICAgICByZXR1cm47CisgICAgVVN0cmluZyBzb3VyY2VVUkw7
CisgICAgVVN0cmluZyB0cmFjZUxldmVsOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGFj
a0xpbWl0OyArK2kpIHsKKyAgICAgICAgd2hpbGUgKGNhbGxGcmFtZSAmJiBjYWxsRnJhbWUgIT0g
Q2FsbEZyYW1lOjpub0NhbGxlcigpICYmICFjYWxsRnJhbWUtPmNvZGVCbG9jaygpKQorICAgICAg
ICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2Fs
bEZyYW1lRmxhZygpOworCisgICAgICAgIGlmICghY2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBD
YWxsRnJhbWU6Om5vQ2FsbGVyKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB1cGRh
dGVTb3VyY2VVUkwoY2FsbEZyYW1lLCBzb3VyY2VVUkwpOworCisgICAgICAgIHRyYWNlTGV2ZWwg
PSBnZXRUcmFjZUxpbmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb2RlVHlw
ZSgpLCBzb3VyY2VVUkwsIGxpbmUpLmltcGwoKTsKKworICAgICAgICBTdGFja1RyYWNlTGV2ZWwg
cyA9IHtTdHJvbmc8U2NyaXB0RXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSwgbGluZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+Y29kZVR5cGUoKSwgc291cmNlVVJMLCB0cmFjZUxldmVsfTsKKworICAgICAgICByZXN1bHRz
LmFwcGVuZChzKTsKKworICAgICAgICBnZXRDYWxsZXJMaW5lKGdsb2JhbERhdGEsIGNhbGxGcmFt
ZSwgbGluZSk7CisgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+
cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsKKyAgICB9Cit9CisKK2NvbnN0IFVTdHJpbmcgSW50
ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGlu
ZSkKK3sKKyAgICBTdHJpbmcgdHJhY2UgPSAiLS0+IFN0YWNrIHRyYWNlOlxuIjsKKyAgICBWZWN0
b3I8U3RhY2tUcmFjZUxldmVsPiBzdGFja1RyYWNlOworICAgIEludGVycHJldGVyOjpnZXRTdGFj
a1RyYWNlKGdsb2JhbERhdGEsIGxpbmUsIHN0YWNrVHJhY2UpOworICAgIGludCBpID0gMDsKKyAg
ICAKKyAgICBmb3IgKFZlY3RvcjxTdGFja1RyYWNlTGV2ZWw+OjppdGVyYXRvciBpdGVyID0gc3Rh
Y2tUcmFjZS5iZWdpbigpOyBpdGVyIDwgc3RhY2tUcmFjZS5lbmQoKTsgaXRlcisrKSB7CisgICAg
ICAgIFN0YWNrVHJhY2VMZXZlbCBsZXZlbCA9ICppdGVyOworICAgICAgICB0cmFjZSArPSBTdHJp
bmc6OmZvcm1hdCgiICAgICVpICAgJXNcbiIsIGksIGxldmVsLnN0YWNrTGV2ZWxTdHJpbmcudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICByZXR1cm4gdHJhY2UuaW1w
bCgpOworfQorCiBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4
Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC02OTUsNiArODA2LDcgQEAgTkVWRVJfSU5MSU5FIEhh
bmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogICAgIC8vIFNldCB1cCB0aGUgZXhjZXB0aW9uIG9i
amVjdAogICAgIGlmIChleGNlcHRpb25WYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2Jq
ZWN0KiBleGNlcHRpb24gPSBhc09iamVjdChleGNlcHRpb25WYWx1ZSk7CisgICAgICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKIAogICAgICAg
ICBpZiAoZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFuY2UoKSAmJiBzdGF0aWNfY2FzdDxFcnJvcklu
c3RhbmNlKj4oZXhjZXB0aW9uKS0+YXBwZW5kU291cmNlVG9NZXNzYWdlKCkpCiAgICAgICAgICAg
ICBhcHBlbmRTb3VyY2VUb0Vycm9yKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5j
ZSo+KGV4Y2VwdGlvbiksIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTcwNSw3ICs4MTcsOSBAQCBORVZF
Ul9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0CiAKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBzaG91bGQgb25seSByZWFsbHkgYmUgYWRkaW5nIHRoZXNlIHByb3BlcnRpZXMgdG8gVk0g
Z2VuZXJhdGVkIGV4Y2VwdGlvbnMsCiAgICAgICAgICAgICAvLyBidXQgdGhlIGluc3BlY3RvciBj
dXJyZW50bHkgcmVxdWlyZXMgdGhlc2UgZm9yIGFsbCB0aHJvd24gb2JqZWN0cy4KLSAgICAgICAg
ICAgIGFkZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2VwdGlvbiwgY29kZUJsb2NrLT5saW5lTnVt
YmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2UoKSk7CisgICAgICAgICAgICBWZWN0b3I8U3RhY2tUcmFjZUxldmVs
PiBzdGFja1RyYWNlOworICAgICAgICAgICAgZ2V0U3RhY2tUcmFjZShnbG9iYWxEYXRhLCBjb2Rl
QmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIHN0YWNr
VHJhY2UpOworICAgICAgICAgICAgYWRkRXJyb3JJbmZvKGNhbGxGcmFtZSwgZXhjZXB0aW9uLCBj
b2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZSgpLCBzdGFja1RyYWNlKTsKICAgICAg
ICAgfQogCiAgICAgICAgIENvbXBsVHlwZSBleGNlcHRpb25UeXBlID0gZXhjZXB0aW9uLT5leGNl
cHRpb25UeXBlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gOTM4NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBF
dmFsRXhlY3V0YWJsZTsKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogICAgIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwpAQCAtNjIsNiArNjMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdp
bGxFeGVjdXRlU3RhdGVtZW50CiAgICAgfTsKIAorICAgIHN0cnVjdCBTdGFja1RyYWNlTGV2ZWwg
eworICAgICAgICBTdHJvbmc8U2NyaXB0RXhlY3V0YWJsZT4gZXhlY3V0YWJsZTsKKyAgICAgICAg
aW50IGxpbmU7CisgICAgICAgIGludCBjb2RlVHlwZTsKKyAgICAgICAgVVN0cmluZyBzb3VyY2VV
Ukw7CisgICAgICAgIFVTdHJpbmcgc3RhY2tMZXZlbFN0cmluZzsKKyAgICB9OworCiAgICAgY2xh
c3MgVG9wQ2FsbEZyYW1lU2V0dGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRvcENhbGxGcmFt
ZVNldHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0x
MjgsNiArMTM3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE5FVkVSX0lOTElORSBKU1Zh
bHVlIGNhbGxFdmFsKENhbGxGcmFtZSosIFJlZ2lzdGVyRmlsZSosIFJlZ2lzdGVyKiBhcmd2LCBp
bnQgYXJnYywgaW50IHJlZ2lzdGVyT2Zmc2V0KTsKICAgICAgICAgTkVWRVJfSU5MSU5FIEhhbmRs
ZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiwgSlNWYWx1ZSYsIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1l
KiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CisgICAgICAgIHN0
YXRpYyBjb25zdCBVU3RyaW5nIGdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiwgaW50KTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBpbnQgbGluZSwg
VmVjdG9yPFN0YWNrVHJhY2VMZXZlbD4mIHJlc3VsdHMpOwogCiAgICAgICAgIHZvaWQgZHVtcFNh
bXBsZURhdGEoRXhlY1N0YXRlKiBleGVjKTsKICAgICAgICAgdm9pZCBzdGFydFNhbXBsaW5nKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9uIDkzODU2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDcgKzExNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZWxzZSBp
ZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpKQogICAgICAgICAgICAgICAgICpleGNlcHRpb24g
PSBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRFcnJvckluZm8oJmxl
eGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY3JlYXRlU3ludGF4RXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNlKTsKKyAgICAgICAgICAgICAg
ICAqZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVy
ckxpbmUsIHNvdXJjZSwgVmVjdG9yPFN0YWNrVHJhY2VMZXZlbD4oKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlzaW9uIDkzODU2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNiArNjEsNyBAQAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAogICAgIG1hY3Jv
KHNldCkgXAogICAgIG1hY3JvKHNvdXJjZSkgXAorICAgIG1hY3JvKHN0YWNrKSBcCiAgICAgbWFj
cm8odGVzdCkgXAogICAgIG1hY3JvKHRvRXhwb25lbnRpYWwpIFwKICAgICBtYWNybyh0b0ZpeGVk
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCShyZXZpc2lv
biA5Mzg1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5o
IgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKQEAgLTExNiw3ICsxMTcsNyBAQCBKU09iamVjdCogY3JlYXRlVVJJ
RXJyb3IoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVVSSUVycm9yKGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBhZGRFcnJvcklu
Zm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCitKU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBjb25zdCBWZWN0b3I8U3RhY2tUcmFjZUxldmVsPiYgc3RhY2tUcmFjZSkK
IHsKICAgICBpbnRwdHJfdCBzb3VyY2VJRCA9IHNvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7CiAg
ICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJMID0gc291cmNlLnByb3ZpZGVyKCktPnVybCgpOwpA
QCAtMTI3LDEzICsxMjgsMjEgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEq
IGdsbwogICAgICAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRp
ZmllcihnbG9iYWxEYXRhLCBzb3VyY2VJZFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKChkb3VibGUp
c291cmNlSUQpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlz
TnVsbCgpKQogICAgICAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRl
bnRpZmllcihnbG9iYWxEYXRhLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyhnbG9i
YWxEYXRhLCBzb3VyY2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgIGlmICghc3Rh
Y2tUcmFjZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgSlNBcnJheSogc3RhY2tUcmFjZUFycmF5ID0g
SlNBcnJheTo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHN0YWNrVHJhY2Uuc2l6ZSgpOyBpKyspIHsgCisgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5n
ID0ganNTdHJpbmcoZ2xvYmFsRGF0YSwgc3RhY2tUcmFjZVtpXS5zdGFja0xldmVsU3RyaW5nKTsg
CisgICAgICAgICAgICBzdGFja1RyYWNlQXJyYXktPnB1c2goZ2xvYmFsRGF0YS0+dG9wQ2FsbEZy
YW1lLCBzdHJpbmcpOyAKKyAgICAgICAgfQorICAgICAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0
ZXMoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+c3RhY2ssIHN0YWNrVHJh
Y2VBcnJheSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICB9CiAKICAgICByZXR1cm4gZXJy
b3I7CiB9CiAKLUpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCitKU09iamVjdCog
YWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBWZWN0b3I8U3RhY2tUcmFjZUxldmVsPiYg
c3RhY2tUcmFjZSkKIHsKLSAgICByZXR1cm4gYWRkRXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRh
KCksIGVycm9yLCBsaW5lLCBzb3VyY2UpOworICAgIHJldHVybiBhZGRFcnJvckluZm8oJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXJyb3IsIGxpbmUsIHNvdXJjZSwgc3RhY2tUcmFjZSk7CiB9CiAKIGJv
b2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZpc2lvbiA5Mzg1NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAKICNpZm5kZWYgRXJyb3JfaAogI2RlZmluZSBFcnJvcl9oCiAKKyNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8c3RkaW50
Lmg+CiAKQEAgLTU1LDkgKzU2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBNZXRob2Rz
IHRvIGFkZCAKICAgICBib29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJy
b3IpOwotICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiwgSlNPYmplY3Qq
IGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpOworICAgIEpTT2JqZWN0KiBhZGRF
cnJvckluZm8oSlNHbG9iYWxEYXRhKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3Qg
U291cmNlQ29kZSYsIGNvbnN0IFZlY3RvcjxTdGFja1RyYWNlTGV2ZWw+Jik7CiAgICAgLy8gRXhl
Y1N0YXRlIHdyYXBwZXJzLgotICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwg
SlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpOworICAgIEpTT2Jq
ZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwg
Y29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFZlY3RvcjxTdGFja1RyYWNlTGV2ZWw+Jik7CiAKICAg
ICAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KICAgICBKU1ZhbHVlIHRocm93RXJyb3IoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzkyMSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDExLTA4LTI2
ICBKdWFuIEMuIE1vbnRlbWF5b3IgIDxqbW9udEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEVycm9yLnN0YWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Njk5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVuaXQgdGVzdHMgdGhhdCBjb250YWluIGJvdGggbm9ybWFsIGFuZCBzcGVjaWFsIGNh
c2VzIGZvciBzdGFjayB0cmFjZQorICAgICAgICBnZW5lcmF0aW9uLgorCisgICAgICAgICogZmFz
dC9qcy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9q
cy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanM6CisgICAgICAgICogZmFzdC9q
cy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6IEFkZGVkLgorICAgICAgICAocHJpbnRTdGFj
ayk6CisgICAgICAgIChob3N0VGhyb3dlcik6CisgICAgICAgIChjYWxsYmFja2VyKToKKyAgICAg
ICAgKG91dGVyKToKKyAgICAgICAgKGlubmVyKToKKyAgICAgICAgKGV2YWxlcik6CisgICAgICAg
IChub3JtYWxPdXRlcik6CisgICAgICAgIChub3JtYWxJbm5lcik6CisgICAgICAgIChzY3JpcHRl
cklubmVyKToKKyAgICAgICAgKHNjcmlwdGVyT3V0ZXIpOgorICAgICAgICAqIGZhc3QvanMvc3Rh
Y2stdHJhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3N0YWNrLXRy
YWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDoKKwogMjAxMS0wOC0yNiAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIGNoYW5nZSB0aGUgZGVmYXVsdCBwcmVmZXJyZWQgd2lkdGggb2YgdGhlIGZs
ZXgoKSBmdW5jdGlvbiB0byAwcHggcGVyIHRoZSBuZXcgc3BlYwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDkzODU2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGll
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogCiBQQVNTIGVudW1lcmFibGVQcm9wZXJ0
aWVzKGVycm9yKSBpcyBbXQotUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVFcnJvcikg
aXMgWyJsaW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCJdCitQQVNTIGVudW1lcmFibGVQcm9w
ZXJ0aWVzKG5hdGl2ZUVycm9yKSBpcyBbImxpbmUiLCAic291cmNlSWQiLCAic291cmNlVVJMIiwg
InN0YWNrIl0KIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1lIGlz
ICJSYW5nZUVycm9yIgogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm1l
c3NhZ2UgaXMgIiIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDggQEAKK1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0
bmVzcyBpbiBzcGVjaWFsIGNhc2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
LS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBub3JtYWxJbm5lciBhdCBmaWxlOi8vL1ZvbHVtZXMv
VXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9zdGFjay10cmFjZS5qczoyMQorICAgIDEgICBub3JtYWxPdXRlciBhdCBmaWxlOi8v
L1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0
L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyMAorICAgIDIgICBhdCBmaWxlOi8vL1Zv
bHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyNgorCistLT4gU3RhY2sgVHJhY2U6CisgICAg
MCAgIGlubmVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291
cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjE4Cisg
ICAgMSAgIGV2YWwKKyAgICAyICAgZXZhbGVyIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5D
YXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0
YWNrLXRyYWNlLmpzCisgICAgMyAgIGF0IGZpbGU6Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3Mv
Y29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRy
YWNlLmpzOjI5CisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9W
b2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MTgKKyAgICAxICAgb3V0ZXIgYXQgZmlsZTov
Ly9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MTcKKyAgICAyICAgZXZhbAorICAgIDMg
ICBldmFsZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3Vy
Y2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMKKyAgICA0
ICAgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MzAKKworLS0+IFN0
YWNrIFRyYWNlOgorICAgIDAgICBpbm5lciBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2Fy
bG9zL2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFj
ay10cmFjZS5qczoxOAorICAgIDEgICBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9z
L2NvZGUvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10
cmFjZS5qczozMworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8v
Vm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjE4CisgICAgMSAgIG91dGVyIGF0IGZpbGU6
Ly8vVm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zh
c3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjE3CisgICAgMiAgIGF0IGZpbGU6Ly8v
Vm9sdW1lcy9Vc2VyL0p1YW5DYXJsb3MvY29kZS9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjM0CisKKy0tPiBTdGFjayBUcmFjZToKKyAg
ICAwICAgaG9zdFRocm93ZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2Rl
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2Uu
anM6MTUKKyAgICAxICAgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09w
ZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6
MzcKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTovLy9Wb2x1
bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
dGFjay10cmFjZS5odG1sOjEwCisgICAgMSAgIHNjcmlwdGVySW5uZXIgYXQgZmlsZTovLy9Wb2x1
bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MjIKKyAgICAyICAgYXQgZmlsZTovLy9Wb2x1bWVz
L1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MzkKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBo
dG1sSW5uZXIgYXQgZmlsZTovLy9Wb2x1bWVzL1VzZXIvSnVhbkNhcmxvcy9jb2RlL09wZW5Tb3Vy
Y2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOjEwCisgICAgMSAgIGh0bWxP
dXRlciBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWw6MTEKKyAgICAyICAgc2NyaXB0ZXJP
dXRlciBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyMworICAgIDMg
ICBhdCBmaWxlOi8vL1ZvbHVtZXMvVXNlci9KdWFuQ2FybG9zL2NvZGUvT3BlblNvdXJjZS9MYXlv
dXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczo0MAorCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+CisJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorCTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisJPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisJPHAg
aWQ9ImNvbnNvbGUiPjwvcD4KKwk8c2NyaXB0PmZ1bmN0aW9uIGh0bWxJbm5lcigpIHsgdGhyb3cg
bmV3IEVycm9yKCJFcnJvciBpbiBIVE1MIik7IH08L3NjcmlwdD4KKwk8c2NyaXB0PmZ1bmN0aW9u
IGh0bWxPdXRlcigpIHsgaHRtbElubmVyKCk7IH08L3NjcmlwdD4KKwk8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2Vw
dGlvbi1wcm9wZXJ0aWVzLmpzCShyZXZpc2lvbiA5Mzg1NikKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xNiw3ICsxNiw3IEBAIHRyeSB7CiAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCJtZXNzYWdl
Iik7CiAKICAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpJywgJ1tdJyk7
Ci0gICAgc2hvdWxkQmUoJ2VudW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKScsICdbImxp
bmUiLCAic291cmNlSWQiLCAic291cmNlVVJMIl0nKTsKKyAgICBzaG91bGRCZSgnZW51bWVyYWJs
ZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpJywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VV
UkwiLCAic3RhY2siXScpOwogCiAgICAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90b3R5cGVPZihu
YXRpdmVFcnJvcikubmFtZScsICciUmFuZ2VFcnJvciInKTsKICAgICBzaG91bGRCZSgnT2JqZWN0
LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5tZXNzYWdlJywgJyIiJyk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3Qg
Y2hlY2tzIHN0YWNrIHRyYWNlIGNvcmVjdG5lc3MgaW4gc3BlY2lhbCBjYXNlcy4nCispOworCitm
dW5jdGlvbiBwcmludFN0YWNrKHN0YWNrVHJhY2UpIHsKKwlkZWJ1ZygiLS0+IFN0YWNrIFRyYWNl
OiIpCisJdmFyIGkgPSAwOworCWZvciAodmFyIGxldmVsIGluIHN0YWNrVHJhY2UpIHsKKwkJZGVi
dWcoIiAgICAiICsgaSArICIgICAiICsgc3RhY2tUcmFjZVtsZXZlbF0pOworCWkrKzsKKwl9CisJ
ZGVidWcoJycpOworfQorCitmdW5jdGlvbiBob3N0VGhyb3dlcigpIHsgRWxlbWVudC5wcm90b3R5
cGUuYXBwZW5kQ2hpbGQuY2FsbCh7IH0sIFt7IH1dKTsgIH0KK2Z1bmN0aW9uIGNhbGxiYWNrZXIo
ZikgeyBbMF0ubWFwKGYpOyB9CitmdW5jdGlvbiBvdXRlcihlcnJvck5hbWUpIHsgaW5uZXIoZXJy
b3JOYW1lKTsgfQorZnVuY3Rpb24gaW5uZXIoZXJyb3JOYW1lKSB7IHRocm93IG5ldyBFcnJvcigi
RXJyb3IgaW4gIiArIGVycm9yTmFtZSk7IH0KK2Z1bmN0aW9uIGV2YWxlcihjb2RlKSB7IGV2YWwo
Y29kZSk7IH0KK2Z1bmN0aW9uIG5vcm1hbE91dGVyKCkgeyBub3JtYWxJbm5lcigpOyB9CitmdW5j
dGlvbiBub3JtYWxJbm5lcigpIHsgaWYodGhpc1ZhckRvZXNudEV4aXN0KSBmYWlsSWZUcnVlKCJz
aG91bGRGYWlsQmVmb3JlVGhpcyIpIH07CitmdW5jdGlvbiBzY3JpcHRlcklubmVyKCkgeyBodG1s
SW5uZXIoKTsgfQorZnVuY3Rpb24gc2NyaXB0ZXJPdXRlcigpIHsgaHRtbE91dGVyKCk7IH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRXhwZWN0ZWQgZnVuY3Rpb25zIGluIHN0YWNrIHRyYWNlCisvLyBOb3Jt
YWwgQ2FzZQordHJ5IHsgbm9ybWFsT3V0ZXIoKSB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5z
dGFjaykgfSAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbE91dGVyIC0+IG5vcm1hbElubmVy
CisKKy8vIEV2YWwgQ2FzZQordHJ5IHsgZXZhbGVyKCJpbm5lcignaW5uZXIgZXZhbCcpOyIpOyB9
IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjaykgfSAgIC8vIGV2YWxlciAtPiBldmFsIC0+
IGlubmVyCit0cnkgeyBldmFsZXIoIm91dGVyKCdvdXRlciBldmFsJyk7Iik7IH0gY2F0Y2ggKGUp
IHsgcHJpbnRTdGFjayhlLnN0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gb3V0ZXIgLT4g
aW5uZXIKKworLy8gRnVuY3Rpb24gQ2FsbGJhY2sgQ2FzZQordHJ5IHsgY2FsbGJhY2tlcihpbm5l
cignaW5uZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0gICAv
LyBjYWxsYmFja2VyIC0+IG1hcCAtPiBpbm5lcgordHJ5IHsgY2FsbGJhY2tlcihvdXRlcignb3V0
ZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0gICAvLyBjYWxs
YmFja2VyIC0+IG1hcCAtPiBvdXRlciAtPiBpbm5lcgorCisvLyBIb3N0IENvZGUgQ2FzZQordHJ5
IHsgaG9zdFRocm93ZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spOyB9ICAg
ICAgICAgICAgICAgICAgICAvLyBob3N0VGhyb3dlcgorCit0cnkgeyBzY3JpcHRlcklubmVyKCk7
IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8v
IHNjcmlwdGVyIC0+IHByb2dyYW0gLT4gaW5uZXIKK3RyeSB7IHNjcmlwdGVyT3V0ZXIoKTsgfSBj
YXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3RhY2spIH0gICAgICAgICAgICAgICAgICAgLy8gc2Ny
aXB0ZXIgLT4gcHJvZ3JhbSAtPiBvdXRlciAtPiBpbm5lcgorCitzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gOTM4NTYpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ2
MCw2ICs0NjAsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9mcmFtZXMvY3Jvc3Mtc2l0ZS10aAog
Ly8gdGhyb3cuICBWOCBmb2xsb3dzIHRoZSBzcGVjLgogV09OVEZJWCBTS0lQIDogZmFzdC9qcy9y
ZXBhcnNpbmctc2VtaWNvbG9uLWluc2VydGlvbi5odG1sID0gRkFJTAogCisvLyBUaGlzIHRlc3Rz
IHN0YWNrLXRyYWNlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkgSlNDLiBUaGlzIHRlc3Qgc2hvdWxk
CisvLyBmYWlsIHNpbmNlIGl0IGlzIHNwZWNpZmljIHRvIGpzYy4KK1dPTlRGSVggU0tJUCA6IGZh
c3QvanMvc3RhY2stdHJhY2UuaHRtbCA9IEZBSUwKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIExJR0hUVFBE
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107128</attachid>
            <date>2011-09-12 19:14:43 -0700</date>
            <delta_ts>2011-09-13 06:37:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66994-20110912221359.patch</filename>
            <type>text/plain</type>
            <size>27378</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ5NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMTIgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250QG1lLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJh
bWUgdG8gY3JlYXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJv
d24uIFVzZXJzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBj
b21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxlckxpbmUp
OgorICAgICAgICAoSlNDOjpnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24p
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OlN0
YWNrRnJhbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0Ojpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAoZnVuY3Rpb25KU0NTdGFjayk6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnBhcnNlKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGlt
ZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmFkZEVycm9ySW5mbyk6CisgICAgICAgICogcnVu
dGltZS9FcnJvci5oOgorCiAyMDExLTA5LTEyICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lA
bm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gQnVpbGQgZmFpbHMgYWZ0ZXIgcjk0OTIwIHdpdGgg
c3RyaWN0IGNvbXBpbGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDkzOTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw3IEBAIF9fWk4zSlNDMTBJ
ZGVudGlmaWVyNGZyb21FUE5TXzlFeGVjU3RhdGUKIF9fWk4zSlNDMTBJZGVudGlmaWVyNGZyb21F
UE5TXzlFeGVjU3RhdGVFagogX19aTjNKU0MxMElkZW50aWZpZXI1ZXF1YWxFUEtOM1dURjEwU3Ry
aW5nSW1wbEVQS2MKIF9fWk4zSlNDMTBJZGVudGlmaWVyOHRvVUludDMyRVJLTlNfN1VTdHJpbmdF
UmIKK19fWk4zSlNDMTFJbnRlcnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERh
dGFFaVJOM1dURjZWZWN0b3JJTlNfMTBTdGFja0ZyYW1lRUxtMEVFRQogX19aTjNKU0MxMEpTRnVu
Y3Rpb240bmFtZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNnNfaW5mb0UK
IF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDkzOTI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJD
dXJyZW50VGltZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJJ
bml0aWFsaXplVGhyZWFkaW5nLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTG9jay5o
IgpAQCAtNzMsNiArNzQsNyBAQCBzdGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZG
aWxlCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRlYnVnKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25KU0NTdGFjayhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uR0MoRXhlY1N0YXRlKik7CiAjaWZuZGVmIE5ERUJVRwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1l
bW9yeShFeGVjU3RhdGUqKTsKQEAgLTE3MCw2ICsxNzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2Jh
bEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxF
eGVjKCksICJydW4iKSwgZnVuY3Rpb25SdW4pKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5j
dGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImxvYWQiKSwgZnVu
Y3Rpb25Mb2FkKSk7CiAgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjaGVja1N5bnRheCIpLCBmdW5jdGlvbkNoZWNr
U3ludGF4KSk7CisgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwg
SWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJqc2NTdGFjayIpLCBmdW5jdGlvbkpTQ1N0YWNrKSk7
CiAgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmll
cihnbG9iYWxFeGVjKCksICJyZWFkbGluZSIpLCBmdW5jdGlvblJlYWRsaW5lKSk7CiAgICAgICAg
IHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2Jh
bEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxF
eGVjKCksICJwcmVjaXNlVGltZSIpLCBmdW5jdGlvblByZWNpc2VUaW1lKSk7CiAKQEAgLTIxMyw2
ICsyMTYsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlYgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NTdGFjayhFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgU3RyaW5nIHRyYWNlID0gIi0tPiBTdGFjayB0cmFjZTpcbiI7CisgICAgVmVjdG9yPFN0YWNr
RnJhbWU+IHN0YWNrVHJhY2U7CisgICAgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgLTEsIHN0YWNrVHJhY2UpOworICAgIGludCBpID0gMDsKKworICAgIGZv
ciAoVmVjdG9yPFN0YWNrRnJhbWU+OjppdGVyYXRvciBpdGVyID0gc3RhY2tUcmFjZS5iZWdpbigp
OyBpdGVyIDwgc3RhY2tUcmFjZS5lbmQoKTsgaXRlcisrKSB7CisgICAgICAgIFN0YWNrRnJhbWUg
bGV2ZWwgPSAqaXRlcjsKKyAgICAgICAgdHJhY2UgKz0gU3RyaW5nOjpmb3JtYXQoIiAgICAlaSAg
ICVzXG4iLCBpLCBsZXZlbC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpKys7
CisgICAgfQorICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCB0cmFjZS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0MoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gOTM5
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMjAwLDYgKzIw
MCw3IEBAIEVYUE9SVFMKICAgICA/Z2V0UHJvcGVydHlEZXNjcmlwdG9yQEpTT2JqZWN0QEpTQ0BA
UUFFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUFWUHJvcGVydHlEZXNjcmlwdG9y
QDJAQFoKICAgICA/Z2V0UHJvcGVydHlOYW1lc0BKU09iamVjdEBKU0NAQFVBRVhQQVZFeGVjU3Rh
dGVAMkBBQVZQcm9wZXJ0eU5hbWVBcnJheUAyQFc0RW51bWVyYXRpb25Nb2RlQDJAQFoKICAgICA/
Z2V0U2xpY2VAQXJnTGlzdEBKU0NAQFFCRVhIQUFWMTJAQFoKKyAgICA/Z2V0U3RhY2tUcmFjZUBJ
bnRlcnByZXRlckBKU0NAQFNBP0JWVVN0cmluZ0AyQFBBVkpTR2xvYmFsRGF0YUAyQEhAWgogICAg
ID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFP0FWVVN0cmluZ0AyQFBBVkV4ZWNTdGF0ZUAyQEBa
CiAgICAgP2dldFN0cmluZ0BKU0NlbGxASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFBVlVTdHJp
bmdAMkBAWgogICAgID9nZXRVSW50MzJASlNDZWxsQEpTQ0BAVUJFX05BQUlAWgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiA5MzkyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJy
YXkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5o
IgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMaXRlcmFs
UGFyc2VyLmgiCkBAIC02ODcsNiArNjg2LDg2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRv
RXJyb3IoQ2FsbEZyYW0KICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVz
c2FnZSkpOwogfQogCitzdGF0aWMgdm9pZCBnZXRDYWxsZXJMaW5lKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGludCYgbGluZU51bWJlcikKK3sKKyAgICAo
dm9pZClnbG9iYWxEYXRhOworICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OworICAgIGxpbmVO
dW1iZXIgPSAtMTsKKyAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPnJlbW92ZUhvc3RDYWxsRnJh
bWVGbGFnKCk7CisKKyAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpID09IENhbGxGcmFt
ZTo6bm9DYWxsZXIoKSB8fCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPmhhc0hvc3RDYWxsRnJh
bWVGbGFnKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygp
LT5jb2RlQmxvY2soKTsKKworI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKKyAgICBpZiAoIWdsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CisjaWYgRU5BQkxF
KEpJVCkKKyAgICBlbHNlCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworI2VuZGlmCisjZWxzZQor
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblBDKCkpOworI2VuZGlmCisKKyAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29k
ZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsK
K30KKworc3RhdGljIEFMV0FZU19JTkxJTkUgY29uc3QgVVN0cmluZyBnZXRTb3VyY2VVUkxGcm9t
Q2FsbEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKSAKK3sKKyAgICBpZiAoY2FsbEZyYW1lLT5o
YXNIb3N0Q2FsbEZyYW1lRmxhZygpKQorICAgICAgICByZXR1cm4gVVN0cmluZygpOworI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKKyAgICBpZiAoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVz
ZUpJVCgpKQorICAgICAgICByZXR1cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+c291cmNlKCkt
PnVybCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBy
ZXR1cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVS
TCgpOworI2VuZGlmCit9CisKK3N0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3RhY2tGcmFt
ZUNvZGVUeXBlKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChjYWxsRnJhbWUtPmhh
c0hvc3RDYWxsRnJhbWVGbGFnKCkpIAorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZU5hdGl2ZUNv
ZGU7CisKKyAgICBzd2l0Y2ggKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmNvZGVUeXBlKCkpIHsK
KyAgICBjYXNlIEdsb2JhbENvZGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lR2xvYmFsQ29k
ZTsKKyAgICBjYXNlIEV2YWxDb2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2Rl
OworICAgIGNhc2UgRnVuY3Rpb25Db2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUZ1bmN0
aW9uQ29kZTsKKyAgICB9Cit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZSwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1
bHRzKQoreworICAgIGludCBzdGFja0xpbWl0ID0gMTU7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBnbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUtPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7
CisgICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IENhbGxGcmFtZTo6bm9DYWxsZXIo
KSB8fCAhY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkgCisgICAgICAgIHJldHVybjsKKyAgICBVU3Ry
aW5nIHNvdXJjZVVSTDsKKyAgICBVU3RyaW5nIHRyYWNlTGV2ZWw7CisKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHN0YWNrTGltaXQ7ICsraSkgeworICAgICAgICBpZiAoIWNhbGxGcmFtZSB8fCBj
YWxsRnJhbWUgPT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpKSB7CisgICAgICAgICAgICBzb3VyY2VV
UkwgPSBnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKGNhbGxGcmFtZSk7CisKKyAgICAgICAgICAg
IFN0YWNrRnJhbWUgcyA9IHsgU3Ryb25nPEpTT2JqZWN0PigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1l
LT5jYWxsZWUoKSksIFN0cm9uZzxDYWxsRnJhbWU+KCpnbG9iYWxEYXRhLCBjYWxsRnJhbWUpLCBn
ZXRTdGFja0ZyYW1lQ29kZVR5cGUoY2FsbEZyYW1lKSwgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPigq
Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpLCBs
aW5lLCBzb3VyY2VVUkx9OworCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzKTsKKyAgICAg
ICAgfQorICAgICAgICBnZXRDYWxsZXJMaW5lKGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgbGluZSk7
CisgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9z
dENhbGxGcmFtZUZsYWcoKTsKKyAgICB9Cit9CisKIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyog
SW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1
ZSYgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTcwNSw3ICs3ODQs
OSBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0CiAKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBzaG91bGQgb25seSByZWFsbHkgYmUgYWRkaW5nIHRoZXNlIHByb3BlcnRp
ZXMgdG8gVk0gZ2VuZXJhdGVkIGV4Y2VwdGlvbnMsCiAgICAgICAgICAgICAvLyBidXQgdGhlIGlu
c3BlY3RvciBjdXJyZW50bHkgcmVxdWlyZXMgdGhlc2UgZm9yIGFsbCB0aHJvd24gb2JqZWN0cy4K
LSAgICAgICAgICAgIGFkZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2VwdGlvbiwgY29kZUJsb2Nr
LT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSk7CisgICAgICAgICAgICBWZWN0b3I8U3RhY2tG
cmFtZT4gc3RhY2tUcmFjZTsKKyAgICAgICAgICAgIGdldFN0YWNrVHJhY2UoJmNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCksIHN0YWNrVHJhY2UpOworICAgICAgICAgICAgYWRkRXJyb3JJbmZvKGNhbGxG
cmFtZSwgZXhjZXB0aW9uLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZSgpLCBz
dGFja1RyYWNlKTsKICAgICAgICAgfQogCiAgICAgICAgIENvbXBsVHlwZSBleGNlcHRpb25UeXBl
ID0gZXhjZXB0aW9uLT5leGNlcHRpb25UeXBlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gOTM5MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUg
IkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKQEAgLTQyLDggKzQz
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3Mg
RXZhbEV4ZWN1dGFibGU7CisgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlOwotICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0
ZXI7CkBAIC02Miw2ICs2Myw1NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQKICAgICB9OwogCisgICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgeworICAg
ICAgICBTdGFja0ZyYW1lR2xvYmFsQ29kZSwKKyAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAor
ICAgICAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlLAorICAgICAgICBTdGFja0ZyYW1lTmF0aXZl
Q29kZQorICAgIH07CisKKyAgICBzdHJ1Y3QgU3RhY2tGcmFtZSB7CisgICAgICAgIFN0cm9uZzxK
U09iamVjdD4gY2FsbGVlOworICAgICAgICBTdHJvbmc8Q2FsbEZyYW1lPiBjYWxsRnJhbWU7Cisg
ICAgICAgIFN0YWNrRnJhbWVDb2RlVHlwZSBjb2RlVHlwZTsKKyAgICAgICAgU3Ryb25nPEV4ZWN1
dGFibGVCYXNlPiBleGVjdXRhYmxlOworICAgICAgICBpbnQgbGluZTsKKyAgICAgICAgVVN0cmlu
ZyBzb3VyY2VVUkw7CisgICAgICAgIFVTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICBib29sIGhhc1NvdXJjZVVSTEluZm8gPSAhc291cmNlVVJMLmlzTnVsbCgp
ICYmICFzb3VyY2VVUkwuaXNFbXB0eSgpOworICAgICAgICAgICAgYm9vbCBoYXNMaW5lSW5mbyA9
IGxpbmUgPiAtMTsKKyAgICAgICAgICAgIFN0cmluZyB0cmFjZUxpbmU7CisgICAgICAgICAgICBK
U09iamVjdCogc3RhY2tGcmFtZUNhbGxlZSA9IGNhbGxlZS5nZXQoKTsKKworICAgICAgICAgICAg
c3dpdGNoIChjb2RlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lRXZhbENvZGU6
CisgICAgICAgICAgICAgICAgaWYgKGhhc1NvdXJjZVVSTEluZm8pIAorICAgICAgICAgICAgICAg
ICAgICB0cmFjZUxpbmUgPSBoYXNMaW5lSW5mbyA/IFN0cmluZzo6Zm9ybWF0KCJldmFsIGF0ICVz
OiVkIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpLCBsaW5lKSAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiZXZhbCBhdCAlcyIs
IHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICB0cmFjZUxpbmUgPSBTdHJpbmc6OmZvcm1hdCgiZXZhbCIpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lTmF0aXZlQ29kZToK
KyAgICAgICAgICAgICAgICB0cmFjZUxpbmUgPSAiTmF0aXZlIGNvZGUiOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlOgorICAg
ICAgICAgICAgICAgIGlmIChzdGFja0ZyYW1lQ2FsbGVlICYmIHN0YWNrRnJhbWVDYWxsZWUtPmlu
aGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKSB7CisgICAgICAgICAgICAgICAgICAgIFVTdHJp
bmcgZnVuY3Rpb25OYW1lID0gYXNGdW5jdGlvbihzdGFja0ZyYW1lQ2FsbGVlKS0+bmFtZShjYWxs
RnJhbWUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzU291cmNlVVJMSW5mbykg
CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZUxpbmUgPSBoYXNMaW5lSW5mbyA/IFN0cmlu
Zzo6Zm9ybWF0KCIlcyBhdCAlczolZCIsIGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEoKSwgc291
cmNlVVJMLmFzY2lpKCkuZGF0YSgpLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiJXMgYXQgJXMiLCBmdW5jdGlv
bk5hbWUuYXNjaWkoKS5kYXRhKCksIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IFN0
cmluZzo6Zm9ybWF0KCIlc1xuIiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBTdGFja0ZyYW1lR2xvYmFsQ29kZToKKyAgICAgICAgICAgICAgICB0cmFjZUxpbmUgPSBoYXNM
aW5lSW5mbyA/IFN0cmluZzo6Zm9ybWF0KCJhdCAlczolZCIsIHNvdXJjZVVSTC5hc2NpaSgpLmRh
dGEoKSwgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0
cmluZzo6Zm9ybWF0KCJhdCAlcyIsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJhY2VMaW5lLmltcGwoKTsKKyAgICAgICAgfQor
ICAgIH07CisKICAgICBjbGFzcyBUb3BDYWxsRnJhbWVTZXR0ZXIgewogICAgIHB1YmxpYzoKICAg
ICAgICAgVG9wQ2FsbEZyYW1lU2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKQEAgLTEyOCw2ICsxNzksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
TkVWRVJfSU5MSU5FIEpTVmFsdWUgY2FsbEV2YWwoQ2FsbEZyYW1lKiwgUmVnaXN0ZXJGaWxlKiwg
UmVnaXN0ZXIqIGFyZ3YsIGludCBhcmdjLCBpbnQgcmVnaXN0ZXJPZmZzZXQpOwogICAgICAgICBO
RVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomLCBKU1Zh
bHVlJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9p
ZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RM
aW5lKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFt
ZSosIFN0YWNrRnJhbWVDb2RlVHlwZSwgY29uc3QgVVN0cmluZyYsIGludCk7CisgICAgICAgIHN0
YXRpYyB2b2lkIGdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiwgaW50IGxpbmUsIFZlY3RvcjxT
dGFja0ZyYW1lPiYgcmVzdWx0cyk7CiAKICAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVj
U3RhdGUqIGV4ZWMpOwogICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gOTM5MjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyAr
MTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbHNlIGlmIChpc0V2YWxOb2Rl
PFBhcnNlZE5vZGU+KCkpCiAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVN5bnRh
eEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNhbEdsb2JhbE9i
amVjdC0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UpOworICAgICAgICAgICAgICAgICpleGNlcHRpb24g
PSBhZGRFcnJvckluZm8oJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY3JlYXRl
U3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNl
LCBWZWN0b3I8U3RhY2tGcmFtZT4oKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2FyZW5hLnJl
c2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgJKHJldmlzaW9uIDkzOTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEs
NyBAQAogICAgIG1hY3JvKGlucHV0KSBcCiAgICAgbWFjcm8oaXNBcnJheSkgXAogICAgIG1hY3Jv
KGlzUHJvdG90eXBlT2YpIFwKKyAgICBtYWNybyhqc2NTdGFjaykgXAogICAgIG1hY3JvKGxlbmd0
aCkgXAogICAgIG1hY3JvKG1lc3NhZ2UpIFwKICAgICBtYWNybyhtdWx0aWxpbmUpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDkzOTI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVk
ZSAiRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpAQCAtMTE2LDcgKzExNyw3IEBAIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVj
U3RhdGUqIGV4ZWMKICAgICByZXR1cm4gY3JlYXRlVVJJRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBtZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKK0pTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhY2tUcmFjZSkKIHsKICAgICBpbnRwdHJf
dCBzb3VyY2VJRCA9IHNvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7CiAgICAgY29uc3QgVVN0cmlu
ZyYgc291cmNlVVJMID0gc291cmNlLnByb3ZpZGVyKCktPnVybCgpOwpAQCAtMTI3LDEzICsxMjgs
MjEgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsbwogICAgICAgICBl
cnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRh
LCBzb3VyY2VJZFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKChkb3VibGUpc291cmNlSUQpLCBSZWFk
T25seSB8IERvbnREZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQogICAgICAg
ICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxE
YXRhLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBzb3VyY2VV
UkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgIGlmICghc3RhY2tUcmFjZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgSlNBcnJheSogc3RhY2tUcmFjZUFycmF5ID0gSlNBcnJheTo6Y3JlYXRl
KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YWNrVHJhY2Uuc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIFVTdHJpbmcgc3RhY2tMZXZlbCA9ICBzdGFja1RyYWNl
W2ldLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBzdGFja1RyYWNlQXJyYXktPnB1c2goZ2xvYmFs
RGF0YS0+dG9wQ2FsbEZyYW1lLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBzdGFja0xldmVsKSk7IAor
ICAgICAgICB9CisgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBn
bG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5qc2NTdGFjaywgc3RhY2tUcmFjZUFycmF5LCBSZWFk
T25seSB8IERvbnREZWxldGUpOworICAgIH0KIAogICAgIHJldHVybiBlcnJvcjsKIH0KIAotSlNP
YmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvciwgaW50
IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK0pTT2JqZWN0KiBhZGRFcnJvckluZm8o
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhY2tUcmFjZSkKIHsKLSAg
ICByZXR1cm4gYWRkRXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yLCBsaW5lLCBz
b3VyY2UpOworICAgIHJldHVybiBhZGRFcnJvckluZm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJy
b3IsIGxpbmUsIHNvdXJjZSwgc3RhY2tUcmFjZSk7CiB9CiAKIGJvb2wgaGFzRXJyb3JJbmZvKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5oCShyZXZpc2lvbiA5MzkyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5k
ZWYgRXJyb3JfaAogI2RlZmluZSBFcnJvcl9oCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKQEAgLTU1LDkgKzU2
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBNZXRob2RzIHRvIGFkZCAKICAgICBib29s
IGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IpOwotICAgIEpTT2JqZWN0
KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwg
Y29uc3QgU291cmNlQ29kZSYpOworICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxE
YXRhKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0
IFZlY3RvcjxTdGFja0ZyYW1lPiYpOwogICAgIC8vIEV4ZWNTdGF0ZSB3cmFwcGVycy4KLSAgICBK
U09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxp
bmUsIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25z
dCBWZWN0b3I8U3RhY2tGcmFtZT4mKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gdGhyb3cgRXJyb3Jz
LgogICAgIEpTVmFsdWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDk0OTczKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDktMTIgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxv
c3VhICA8ai5tb250QG1lLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0ZXN0cyB0
aGF0IGNvbnRhaW4gYm90aCBub3JtYWwgYW5kIHNwZWNpYWwgY2FzZXMgZm9yIHN0YWNrIHRyYWNl
CisgICAgICAgIGdlbmVyYXRpb24uCisKKyAgICAgICAgKiBmYXN0L2pzL2V4Y2VwdGlvbi1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9leGNl
cHRpb24tcHJvcGVydGllcy5qczoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFj
ay10cmFjZS5qczogQWRkZWQuCisgICAgICAgIChwcmludFN0YWNrKToKKyAgICAgICAgKGhvc3RU
aHJvd2VyKToKKyAgICAgICAgKGNhbGxiYWNrZXIpOgorICAgICAgICAob3V0ZXIpOgorICAgICAg
ICAoaW5uZXIpOgorICAgICAgICAoZXZhbGVyKToKKyAgICAgICAgKG5vcm1hbE91dGVyKToKKyAg
ICAgICAgKG5vcm1hbElubmVyKToKKyAgICAgICAgKHNjcmlwdGVySW5uZXIpOgorICAgICAgICAo
c2NyaXB0ZXJPdXRlcik6CisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDEx
LTA5LTEyICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmViYXNlbGluZSBmb3Igcjk0NzAzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRp
b24tcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkzOTI1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEEKIAogCiBQQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKGVycm9yKSBpcyBb
XQotUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVFcnJvcikgaXMgWyJsaW5lIiwgInNv
dXJjZUlkIiwgInNvdXJjZVVSTCJdCitQQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVy
cm9yKSBpcyBbImxpbmUiLCAic291cmNlSWQiLCAic291cmNlVVJMIiwgImpzY1N0YWNrIl0KIFBB
U1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1lIGlzICJSYW5nZUVycm9y
IgogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm1lc3NhZ2UgaXMgIiIK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDggQEAKK1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVzcyBpbiBzcGVj
aWFsIGNhc2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworLS0+IFN0YWNrIFRy
YWNlOgorICAgIDAgICBub3JtYWxJbm5lciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9P
cGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpz
OjIxCisgICAgMSAgIG5vcm1hbE91dGVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09w
ZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6
MjAKKyAgICAyICAgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNvdXJjZS9MYXlv
dXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyNgorCistLT4gU3Rh
Y2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09w
ZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6
MTgKKyAgICAxICAgZXZhbAorICAgIDIgICBldmFsZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93
ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10
cmFjZS5qcworICAgIDMgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNl
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjI5CisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJr
aXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFj
ZS5qczoxOAorICAgIDEgICBvdXRlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVu
U291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjE3
CisgICAgMiAgIGV2YWwKKyAgICAzICAgZXZhbGVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Vi
a2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJh
Y2UuanMKKyAgICA0ICAgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczozMAorCistLT4g
U3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2Uu
anM6MTgKKyAgICAxICAgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczozMworCistLT4g
U3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2Uu
anM6MTgKKyAgICAxICAgb3V0ZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNv
dXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoxNwor
ICAgIDIgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRl
c3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjM0CisKKy0tPiBTdGFjayBU
cmFjZToKKyAgICAwICAgaG9zdFRocm93ZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQv
T3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5q
czoxNQorICAgIDEgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNlL0xh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjM3CisKKy0tPiBT
dGFjayBUcmFjZToKKyAgICAwICAgaHRtbElubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Vi
a2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOjEwCisg
ICAgMSAgIHNjcmlwdGVySW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNv
dXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyMgor
ICAgIDIgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRl
c3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjM5CisKKy0tPiBTdGFjayBU
cmFjZToKKyAgICAwICAgaHRtbElubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09w
ZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOjEwCisgICAgMSAg
IGh0bWxPdXRlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNlL0xheW91
dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbDoxMQorICAgIDIgICBzY3JpcHRlck91dGVy
IGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MjMKKyAgICAzICAgYXQgZmlsZTovLy9V
c2Vycy9qbW9udC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10
ZXN0cy9zdGFjay10cmFjZS5qczo0MAorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc3Rh
Y2stdHJhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRy
YWNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNl
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+CisJPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorCTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisJPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisJPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKwk8c2Ny
aXB0PmZ1bmN0aW9uIGh0bWxJbm5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCJFcnJvciBpbiBIVE1M
Iik7IH08L3NjcmlwdD4KKwk8c2NyaXB0PmZ1bmN0aW9uIGh0bWxPdXRlcigpIHsgaHRtbElubmVy
KCk7IH08L3NjcmlwdD4KKwk8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
c2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCShyZXZp
c2lvbiA5MzkyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlv
bi1wcm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw3IEBAIHRyeSB7CiAg
ICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCJtZXNzYWdlIik7CiAKICAgICBzaG91bGRCZSgnZW51
bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpJywgJ1tdJyk7Ci0gICAgc2hvdWxkQmUoJ2VudW1lcmFi
bGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKScsICdbImxpbmUiLCAic291cmNlSWQiLCAic291cmNl
VVJMIl0nKTsKKyAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3Ip
JywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiLCAianNjU3RhY2siXScpOwogCiAg
ICAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubmFtZScsICci
UmFuZ2VFcnJvciInKTsKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2
ZUVycm9yKS5tZXNzYWdlJywgJyIiJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9zdGFjay10cmFjZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQyIEBACitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3QgY2hlY2tzIHN0YWNrIHRyYWNlIGNv
cmVjdG5lc3MgaW4gc3BlY2lhbCBjYXNlcy4nCispOworCitmdW5jdGlvbiBwcmludFN0YWNrKHN0
YWNrVHJhY2UpIHsKKwlkZWJ1ZygiLS0+IFN0YWNrIFRyYWNlOiIpCisJdmFyIGkgPSAwOworCWZv
ciAodmFyIGxldmVsIGluIHN0YWNrVHJhY2UpIHsKKwkJZGVidWcoIiAgICAiICsgaSArICIgICAi
ICsgc3RhY2tUcmFjZVtsZXZlbF0pOworCQlpKys7CisJfQorCWRlYnVnKCcnKTsKK30KKworZnVu
Y3Rpb24gaG9zdFRocm93ZXIoKSB7IEVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkLmNhbGwo
eyB9LCBbeyB9XSk7ICB9CitmdW5jdGlvbiBjYWxsYmFja2VyKGYpIHsgWzBdLm1hcChmKTsgfQor
ZnVuY3Rpb24gb3V0ZXIoZXJyb3JOYW1lKSB7IGlubmVyKGVycm9yTmFtZSk7IH0KK2Z1bmN0aW9u
IGlubmVyKGVycm9yTmFtZSkgeyB0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGluICIgKyBlcnJvck5h
bWUpOyB9CitmdW5jdGlvbiBldmFsZXIoY29kZSkgeyBldmFsKGNvZGUpOyB9CitmdW5jdGlvbiBu
b3JtYWxPdXRlcigpIHsgbm9ybWFsSW5uZXIoKTsgfQorZnVuY3Rpb24gbm9ybWFsSW5uZXIoKSB7
IGlmKHRoaXNWYXJEb2VzbnRFeGlzdCkgZmFpbElmVHJ1ZSgic2hvdWxkRmFpbEJlZm9yZVRoaXMi
KSB9OworZnVuY3Rpb24gc2NyaXB0ZXJJbm5lcigpIHsgaHRtbElubmVyKCk7IH0KK2Z1bmN0aW9u
IHNjcmlwdGVyT3V0ZXIoKSB7IGh0bWxPdXRlcigpOyB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4cGVj
dGVkIGZ1bmN0aW9ucyBpbiBzdGFjayB0cmFjZQorLy8gTm9ybWFsIENhc2UKK3RyeSB7IG5vcm1h
bE91dGVyKCkgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spIH0gICAgICAgICAg
ICAgICAgICAgICAvLyBub3JtYWxPdXRlciAtPiBub3JtYWxJbm5lcgorCisvLyBFdmFsIENhc2UK
K3RyeSB7IGV2YWxlcigiaW5uZXIoJ2lubmVyIGV2YWwnKTsiKTsgfSBjYXRjaCAoZSkgeyBwcmlu
dFN0YWNrKGUuanNjU3RhY2spIH0gICAvLyBldmFsZXIgLT4gZXZhbCAtPiBpbm5lcgordHJ5IHsg
ZXZhbGVyKCJvdXRlcignb3V0ZXIgZXZhbCcpOyIpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2so
ZS5qc2NTdGFjaykgfSAgIC8vIGV2YWxlciAtPiBldmFsIC0+IG91dGVyIC0+IGlubmVyCisKKy8v
IEZ1bmN0aW9uIENhbGxiYWNrIENhc2UKK3RyeSB7IGNhbGxiYWNrZXIoaW5uZXIoJ2lubmVyIG1h
cCcpKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spOyB9ICAgLy8gY2FsbGJh
Y2tlciAtPiBtYXAgLT4gaW5uZXIKK3RyeSB7IGNhbGxiYWNrZXIob3V0ZXIoJ291dGVyIG1hcCcp
KTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spOyB9ICAgLy8gY2FsbGJhY2tl
ciAtPiBtYXAgLT4gb3V0ZXIgLT4gaW5uZXIKKworLy8gSG9zdCBDb2RlIENhc2UKK3RyeSB7IGhv
c3RUaHJvd2VyKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKTsgfSAgICAg
ICAgICAgICAgICAgICAgLy8gaG9zdFRocm93ZXIKKwordHJ5IHsgc2NyaXB0ZXJJbm5lcigpOyB9
IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgICAgICAgICAgICAgICAgICAv
LyBwcm9ncmFtIC0+IHNjcmlwdGVyIC0+IGlubmVyCit0cnkgeyBzY3JpcHRlck91dGVyKCk7IH0g
Y2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8v
IHByb2dyYW0gLT4gc2NyaXB0ZXIgLT4gb3V0ZXIgLT4gaW5uZXIKKworc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDkzOTI1KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00NjAsNiArNDYwLDEwIEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvZnJhbWVzL2Nyb3NzLXNpdGUt
dGgKIC8vIHRocm93LiAgVjggZm9sbG93cyB0aGUgc3BlYy4KIFdPTlRGSVggU0tJUCA6IGZhc3Qv
anMvcmVwYXJzaW5nLXNlbWljb2xvbi1pbnNlcnRpb24uaHRtbCA9IEZBSUwKIAorLy8gVGhpcyB0
ZXN0cyBzdGFjay10cmFjZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIGJ5IEpTQy4gVGhpcyB0ZXN0IHNo
b3VsZAorLy8gZmFpbCBzaW5jZSBpdCBpcyBzcGVjaWZpYyB0byBqc2MuCitXT05URklYIFNLSVAg
OiBmYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWwgPSBGQUlMCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBMSUdI
VFRQRAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107169</attachid>
            <date>2011-09-13 06:37:41 -0700</date>
            <delta_ts>2011-09-13 07:18:31 -0700</delta_ts>
            <desc>proposed patch that will apply</desc>
            <filename>bug-66994-20110913093639.patch</filename>
            <type>text/plain</type>
            <size>27458</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTUwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMTMgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250QG1lLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJh
bWUgdG8gY3JlYXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJv
d24uIFVzZXJzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBj
b21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxlckxpbmUp
OgorICAgICAgICAoSlNDOjpnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24p
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OlN0
YWNrRnJhbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkpTQ1N0YWNrKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmg6CisKIDIwMTEtMDktMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBKYXZhU2NyaXB0Q29yZSBkb2VzIG5vdCBoYXZlIGJhc2VsaW5lLT5zcGVj
dWxhdGl2ZSBPU1IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAkocmV2aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgX19aTjNKU0MxMElkZW50
aWZpZXIzYWRkRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxMElkZW50aWZpZXI0ZnJvbUVQTlNf
OUV4ZWNTdGF0ZUVpCiBfX1pOM0pTQzEwSWRlbnRpZmllcjRmcm9tRVBOU185RXhlY1N0YXRlRWoK
IF9fWk4zSlNDMTBJZGVudGlmaWVyOHRvVUludDMyRVJLTlNfN1VTdHJpbmdFUmIKK19fWk4zSlND
MTFJbnRlcnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaVJOM1dURjZW
ZWN0b3JJTlNfMTBTdGFja0ZyYW1lRUxtMEVFRQogX19aTjNKU0MxMEpTRnVuY3Rpb24xNGZpbmlz
aENyZWF0aW9uRVBOU185RXhlY1N0YXRlRWlSS05TXzEwSWRlbnRpZmllckVQTlNfMTRFeGVjdXRh
YmxlQmFzZUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pO
M0pTQzEwSlNGdW5jdGlvbjZzX2luZm9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNp
b24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRp
YyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVj
U3RhdGUqKTsKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KEV4ZWNTdGF0ZSopOwpAQCAtMTcx
LDYgKzE3Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1
bikpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQpKTsKICAgICAgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhl
YygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMo
KSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKKyAgICAgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygp
LCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
ImpzY1N0YWNrIiksIGZ1bmN0aW9uSlNDU3RhY2spKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5l
IiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByZWNpc2VUaW1lIiksIGZ1
bmN0aW9uUHJlY2lzZVRpbWUpKTsKIApAQCAtMjE0LDYgKzIxNywyMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGViCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkpTQ1N0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBTdHJpbmcgdHJhY2UgPSAiLS0+IFN0
YWNrIHRyYWNlOlxuIjsKKyAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZTsKKyAgICBJ
bnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAtMSwgc3RhY2tU
cmFjZSk7CisgICAgaW50IGkgPSAwOworCisgICAgZm9yIChWZWN0b3I8U3RhY2tGcmFtZT46Oml0
ZXJhdG9yIGl0ZXIgPSBzdGFja1RyYWNlLmJlZ2luKCk7IGl0ZXIgPCBzdGFja1RyYWNlLmVuZCgp
OyBpdGVyKyspIHsKKyAgICAgICAgU3RhY2tGcmFtZSBsZXZlbCA9ICppdGVyOworICAgICAgICB0
cmFjZSArPSBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgJXNcbiIsIGksIGxldmVsLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGkrKzsKKyAgICB9CisgICAgZnByaW50ZihzdGRl
cnIsICIlcyIsIHRyYWNlLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA5NTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcgQEAgRVhQT1JUUwogICAgID9nZXRQ
cm9wZXJ0eURlc2NyaXB0b3JASlNPYmplY3RASlNDQEBRQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklk
ZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9nZXRQcm9wZXJ0eU5h
bWVzQEpTT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5
QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAgID9nZXRTbGljZUBBcmdMaXN0QEpTQ0BAUUJF
WEhBQVYxMkBAWgorICAgID9nZXRTdGFja1RyYWNlQEludGVycHJldGVyQEpTQ0BAU0E/QlZVU3Ry
aW5nQDJAUEFWSlNHbG9iYWxEYXRhQDJASEBaCiAgICAgP2dldFN0cmluZ0BKU0NlbGxASlNDQEBR
QkU/QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBK
U0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUFWVVN0cmluZ0AyQEBaCiAgICAgP2dldHRlckBQcm9w
ZXJ0eURlc2NyaXB0b3JASlNDQEBRQkU/QVZKU1ZhbHVlQDJAWFoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24g
OTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCi0j
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5o
IgpAQCAtNjg3LDYgKzY4Niw4NiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENh
bGxGcmFtCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsK
IH0KIAorc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIpCit7CisgICAgKHZvaWQpZ2xv
YmFsRGF0YTsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKKyAgICBsaW5lTnVtYmVyID0g
LTE7CisgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygp
OworCisgICAgaWYgKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSA9PSBDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkgfHwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+Y29kZUJs
b2NrKCk7CisKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgaWYgKCFnbG9iYWxEYXRhLT5j
YW5Vc2VKSVQoKSkKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOworI2lmIEVOQUJMRShKSVQpCisg
ICAgZWxzZQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKKyNlbmRpZgorCisgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7Cit9CisKK3N0
YXRpYyBBTFdBWVNfSU5MSU5FIGNvbnN0IFVTdHJpbmcgZ2V0U291cmNlVVJMRnJvbUNhbGxGcmFt
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgCit7CisgICAgaWYgKGNhbGxGcmFtZS0+aGFzSG9zdENh
bGxGcmFtZUZsYWcoKSkKKyAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKKyNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCisgICAgaWYgKCFjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkK
KyAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnNvdXJjZSgpLT51cmwoKTsK
KyNpZiBFTkFCTEUoSklUKQorICAgIHJldHVybiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJuIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyNl
bmRpZgorfQorCitzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBlIGdldFN0YWNrRnJhbWVDb2RlVHlw
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBpZiAoY2FsbEZyYW1lLT5oYXNIb3N0Q2Fs
bEZyYW1lRmxhZygpKSAKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVOYXRpdmVDb2RlOworCisg
ICAgc3dpdGNoIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpKSB7CisgICAgY2Fz
ZSBHbG9iYWxDb2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUdsb2JhbENvZGU7CisgICAg
Y2FzZSBFdmFsQ29kZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVFdmFsQ29kZTsKKyAgICBj
YXNlIEZ1bmN0aW9uQ29kZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU7
CisgICAgfQorfQorCit2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmUsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cykKK3sK
KyAgICBpbnQgc3RhY2tMaW1pdCA9IDE1OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZ2xv
YmFsRGF0YS0+dG9wQ2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGlm
ICghY2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgfHwgIWNh
bGxGcmFtZS0+Y29kZUJsb2NrKCkpIAorICAgICAgICByZXR1cm47CisgICAgVVN0cmluZyBzb3Vy
Y2VVUkw7CisgICAgVVN0cmluZyB0cmFjZUxldmVsOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzdGFja0xpbWl0OyArK2kpIHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1l
ID09IENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBp
ZiAoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgc291cmNlVVJMID0gZ2V0
U291cmNlVVJMRnJvbUNhbGxGcmFtZShjYWxsRnJhbWUpOworCisgICAgICAgICAgICBTdGFja0Zy
YW1lIHMgPSB7IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVl
KCkpLCBTdHJvbmc8Q2FsbEZyYW1lPigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1lKSwgZ2V0U3RhY2tG
cmFtZUNvZGVUeXBlKGNhbGxGcmFtZSksIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4oKmdsb2JhbERh
dGEsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSwgbGluZSwgc291
cmNlVVJMfTsKKworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocyk7CisgICAgICAgIH0KKyAg
ICAgICAgZ2V0Q2FsbGVyTGluZShnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGxpbmUpOworICAgICAg
ICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJh
bWVGbGFnKCk7CisgICAgfQorfQorCiBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJl
dGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2Vw
dGlvblZhbHVlLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC03MDUsNyArNzg0LDkgQEAgTkVW
RVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogCiAgICAgICAgICAgICAvLyBG
SVhNRTogc2hvdWxkIG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0aGVzZSBwcm9wZXJ0aWVzIHRvIFZN
IGdlbmVyYXRlZCBleGNlcHRpb25zLAogICAgICAgICAgICAgLy8gYnV0IHRoZSBpbnNwZWN0b3Ig
Y3VycmVudGx5IHJlcXVpcmVzIHRoZXNlIGZvciBhbGwgdGhyb3duIG9iamVjdHMuCi0gICAgICAg
ICAgICBhZGRFcnJvckluZm8oY2FsbEZyYW1lLCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51
bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+c291cmNlKCkpOworICAgICAgICAgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0
YWNrVHJhY2U7CisgICAgICAgICAgICBnZXRTdGFja1RyYWNlKCZjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLCBzdGFja1RyYWNlKTsKKyAgICAgICAgICAgIGFkZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4
Y2VwdGlvbiwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3RhY2tUcmFj
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpc0ludGVycnVwdCA9IGlzSW50ZXJydXB0ZWRFeGVj
dXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRp
b24oZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiA5NTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgpAQCAtNDIsOCArNDMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsK
KyAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
Ci0gICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBj
bGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKQEAgLTYyLDYgKzYz
LDU2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXaWxsRXhlY3V0ZVN0YXRlbWVudAogICAg
IH07CiAKKyAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7CisgICAgICAgIFN0YWNrRnJhbWVH
bG9iYWxDb2RlLAorICAgICAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJh
bWVGdW5jdGlvbkNvZGUsCisgICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCisgICAgfTsKKwor
ICAgIHN0cnVjdCBTdGFja0ZyYW1lIHsKKyAgICAgICAgU3Ryb25nPEpTT2JqZWN0PiBjYWxsZWU7
CisgICAgICAgIFN0cm9uZzxDYWxsRnJhbWU+IGNhbGxGcmFtZTsKKyAgICAgICAgU3RhY2tGcmFt
ZUNvZGVUeXBlIGNvZGVUeXBlOworICAgICAgICBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+IGV4ZWN1
dGFibGU7CisgICAgICAgIGludCBsaW5lOworICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTDsKKyAg
ICAgICAgVVN0cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGJv
b2wgaGFzU291cmNlVVJMSW5mbyA9ICFzb3VyY2VVUkwuaXNOdWxsKCkgJiYgIXNvdXJjZVVSTC5p
c0VtcHR5KCk7CisgICAgICAgICAgICBib29sIGhhc0xpbmVJbmZvID0gbGluZSA+IC0xOworICAg
ICAgICAgICAgU3RyaW5nIHRyYWNlTGluZTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzdGFja0Zy
YW1lQ2FsbGVlID0gY2FsbGVlLmdldCgpOworCisgICAgICAgICAgICBzd2l0Y2ggKGNvZGVUeXBl
KSB7CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKKyAgICAgICAgICAgICAg
ICBpZiAoaGFzU291cmNlVVJMSW5mbykgCisgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9
IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoImV2YWwgYXQgJXM6JWQiLCBzb3VyY2VVUkwu
YXNjaWkoKS5kYXRhKCksIGxpbmUpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0KCJldmFsIGF0ICVzIiwgc291cmNlVVJMLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRy
YWNlTGluZSA9IFN0cmluZzo6Zm9ybWF0KCJldmFsIik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVOYXRpdmVDb2RlOgorICAgICAgICAgICAgICAg
IHRyYWNlTGluZSA9ICJOYXRpdmUgY29kZSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU6CisgICAgICAgICAgICAgICAgaWYg
KHN0YWNrRnJhbWVDYWxsZWUgJiYgc3RhY2tGcmFtZUNhbGxlZS0+aW5oZXJpdHMoJkpTRnVuY3Rp
b246OnNfaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgVVN0cmluZyBmdW5jdGlvbk5hbWUg
PSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWVDYWxsZWUpLT5uYW1lKGNhbGxGcmFtZS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJbmZvKSAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoIiVzIGF0
ICVzOiVkIiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpLCBzb3VyY2VVUkwuYXNjaWkoKS5k
YXRhKCksIGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IFN0cmluZzo6Zm9ybWF0KCIlcyBhdCAlcyIsIGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRh
dGEoKSwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gU3RyaW5nOjpmb3JtYXQoIiVz
XG4iLCBmdW5jdGlvbk5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVHbG9i
YWxDb2RlOgorICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5n
Ojpmb3JtYXQoImF0ICVzOiVkIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpLCBsaW5lKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU3RyaW5nOjpmb3JtYXQoImF0
ICVzIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiB0cmFjZUxpbmUuaW1wbCgpOworICAgICAgICB9CisgICAgfTsKKwogICAgIGNs
YXNzIFRvcENhbGxGcmFtZVNldHRlciB7CiAgICAgcHVibGljOgogICAgICAgICBUb3BDYWxsRnJh
bWVTZXR0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWwsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAt
MTI4LDYgKzE3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBORVZFUl9JTkxJTkUgSlNW
YWx1ZSBjYWxsRXZhbChDYWxsRnJhbWUqLCBSZWdpc3RlckZpbGUqLCBSZWdpc3RlciogYXJndiwg
aW50IGFyZ2MsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5k
bGVySW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFt
ZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBz
dGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tGcmFtZUNv
ZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50KTsKKyAgICAgICAgc3RhdGljIHZvaWQgZ2V0U3Rh
Y2tUcmFjZShKU0dsb2JhbERhdGEqLCBpbnQgbGluZSwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1
bHRzKTsKIAogICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAg
ICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCShyZXZpc2lvbiA5NTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSkK
ICAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgZXJyTXNnKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAq
ZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCksIGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxp
bmUsIHNvdXJjZSk7CisgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygm
bGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UsIFZlY3RvcjxTdGFja0Zy
YW1lPigpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fYXJlbmEucmVzZXQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAko
cmV2aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAgICAgbWFjcm8o
aW5wdXQpIFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNQcm90b3R5cGVPZikg
XAorICAgIG1hY3JvKGpzY1N0YWNrKSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFjcm8o
bWVzc2FnZSkgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKIAogI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVj
dG9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC0xMTYs
NyArMTE3LDcgQEAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSogZXhlYwogICAg
IHJldHVybiBjcmVhdGVVUklFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3Nh
Z2UpOwogfQogCi1KU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQor
SlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTT2JqZWN0
KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgVmVjdG9y
PFN0YWNrRnJhbWU+JiBzdGFja1RyYWNlKQogewogICAgIGludHB0cl90IHNvdXJjZUlEID0gc291
cmNlLnByb3ZpZGVyKCktPmFzSUQoKTsKICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwgPSBz
b3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xMjcsMTMgKzEyOCwyMSBAQCBKU09iamVjdCog
YWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvCiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0
cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZUlkUHJvcGVy
dHlOYW1lKSwganNOdW1iZXIoKGRvdWJsZSlzb3VyY2VJRCksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSk7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIGVycm9yLT5wdXRXaXRo
QXR0cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZVVSTFBy
b3BlcnR5TmFtZSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSk7CisgICAgaWYgKCFzdGFja1RyYWNlLmlzRW1wdHkoKSkgeworICAgICAgICBK
U0FycmF5KiBzdGFja1RyYWNlQXJyYXkgPSBKU0FycmF5OjpjcmVhdGUoKmdsb2JhbERhdGEsIGds
b2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCkpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgeworICAg
ICAgICAgICAgVVN0cmluZyBzdGFja0xldmVsID0gIHN0YWNrVHJhY2VbaV0udG9TdHJpbmcoKTsK
KyAgICAgICAgICAgIHN0YWNrVHJhY2VBcnJheS0+cHVzaChnbG9iYWxEYXRhLT50b3BDYWxsRnJh
bWUsIGpzU3RyaW5nKGdsb2JhbERhdGEsIHN0YWNrTGV2ZWwpKTsgCisgICAgICAgIH0KKyAgICAg
ICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPmpzY1N0YWNrLCBzdGFja1RyYWNlQXJyYXksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSk7CisgICAgfQogCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogYWRkRXJyb3JJ
bmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQorSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29u
c3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFja1RyYWNlKQogewotICAgIHJldHVybiBhZGRFcnJv
ckluZm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3IsIGxpbmUsIHNvdXJjZSk7CisgICAgcmV0
dXJuIGFkZEVycm9ySW5mbygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvciwgbGluZSwgc291cmNl
LCBzdGFja1RyYWNlKTsKIH0KIAogYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogZXJyb3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJ
KHJldmlzaW9uIDk1MDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBFcnJvcl9oCiAjZGVm
aW5lIEVycm9yX2gKIAorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIApAQCAtNTUsOSArNTYsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIAogICAgIGJvb2wgaGFzRXJyb3JJbmZvKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvcik7Ci0gICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhK
U0dsb2JhbERhdGEqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2Rl
Jik7CisgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJh
bWU+Jik7CiAgICAgLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgotICAgIEpTT2JqZWN0KiBhZGRFcnJv
ckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNl
Q29kZSYpOworICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3Qq
IGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFZlY3RvcjxTdGFja0Zy
YW1lPiYpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCiAgICAgSlNWYWx1ZSB0
aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTUwMjQp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBA
QAorMjAxMS0wOS0xMyAgSnVhbiBDYXJsb3MgTW9udGVtYXlvciBFbG9zdWEgIDxqLm1vbnRAbWUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBFcnJvci5zdGFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5OTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbml0IHRlc3RzIHRoYXQgY29udGFpbiBib3Ro
IG5vcm1hbCBhbmQgc3BlY2lhbCBjYXNlcyBmb3Igc3RhY2sgdHJhY2UKKyAgICAgICAgZ2VuZXJh
dGlvbi4KKworICAgICAgICAqIGZhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVz
LmpzOgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHByaW50U3RhY2spOgorICAgICAgICAoaG9zdFRocm93ZXIpOgorICAgICAg
ICAoY2FsbGJhY2tlcik6CisgICAgICAgIChvdXRlcik6CisgICAgICAgIChpbm5lcik6CisgICAg
ICAgIChldmFsZXIpOgorICAgICAgICAobm9ybWFsT3V0ZXIpOgorICAgICAgICAobm9ybWFsSW5u
ZXIpOgorICAgICAgICAoc2NyaXB0ZXJJbm5lcik6CisgICAgICAgIChzY3JpcHRlck91dGVyKToK
KyAgICAgICAgKiBmYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDktMTMgIEZ1bWl0b3No
aSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRl
IGNocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4
Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTUw
MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQQogCiAKIFBBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3Ip
IGlzIFtdCi1QQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKSBpcyBbImxpbmUi
LCAic291cmNlSWQiLCAic291cmNlVVJMIl0KK1BBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMobmF0
aXZlRXJyb3IpIGlzIFsibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiLCAianNjU3RhY2si
XQogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm5hbWUgaXMgIlJhbmdl
RXJyb3IiCiBQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubWVzc2FnZSBp
cyAiIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0OCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBzdGFjayB0cmFjZSBjb3JlY3RuZXNzIGlu
IHNwZWNpYWwgY2FzZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCistLT4gU3Rh
Y2sgVHJhY2U6CisgICAgMCAgIG5vcm1hbElubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Vi
a2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJh
Y2UuanM6MjEKKyAgICAxICAgbm9ybWFsT3V0ZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJr
aXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFj
ZS5qczoyMAorICAgIDIgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNl
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjI2CisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJr
aXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFj
ZS5qczoxOAorICAgIDEgICBldmFsCisgICAgMiAgIGV2YWxlciBhdCBmaWxlOi8vL1VzZXJzL2pt
b250L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0
YWNrLXRyYWNlLmpzCisgICAgMyAgIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5T
b3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MjkK
KworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lciBhdCBmaWxlOi8vL1VzZXJzL2ptb250
L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNr
LXRyYWNlLmpzOjE4CisgICAgMSAgIG91dGVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2Uu
anM6MTcKKyAgICAyICAgZXZhbAorICAgIDMgICBldmFsZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9u
dC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFj
ay10cmFjZS5qcworICAgIDQgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291
cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjMwCisK
Ky0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93
ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10
cmFjZS5qczoxOAorICAgIDEgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291
cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjMzCisK
Ky0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93
ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10
cmFjZS5qczoxOAorICAgIDEgICBvdXRlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9P
cGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpz
OjE3CisgICAgMiAgIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MzQKKworLS0+IFN0
YWNrIFRyYWNlOgorICAgIDAgICBob3N0VGhyb3dlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dl
YmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRy
YWNlLmpzOjE1CisgICAgMSAgIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3Vy
Y2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MzcKKwor
LS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9u
dC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWw6
MTAKKyAgICAxICAgc2NyaXB0ZXJJbm5lciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9P
cGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpz
OjIyCisgICAgMiAgIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MzkKKworLS0+IFN0
YWNrIFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJr
aXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWw6MTAKKyAg
ICAxICAgaHRtbE91dGVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2Uv
TGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOjExCisgICAgMiAgIHNjcmlwdGVy
T3V0ZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyMworICAgIDMgICBhdCBmaWxl
Oi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2Ny
aXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjQwCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9zdGFjay10cmFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc3Rh
Y2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2st
dHJhY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKwk8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisJPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwk8cCBpZD0iY29uc29sZSI+PC9wPgor
CTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbElubmVyKCkgeyB0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGlu
IEhUTUwiKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbE91dGVyKCkgeyBodG1s
SW5uZXIoKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RhY2stdHJh
Y2UuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMJ
KHJldmlzaW9uIDk1MDA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhj
ZXB0aW9uLXByb3BlcnRpZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDcgKzE2LDcgQEAgdHJ5
IHsKICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoIm1lc3NhZ2UiKTsKIAogICAgIHNob3VsZEJl
KCdlbnVtZXJhYmxlUHJvcGVydGllcyhlcnJvciknLCAnW10nKTsKLSAgICBzaG91bGRCZSgnZW51
bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpJywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJz
b3VyY2VVUkwiXScpOworICAgIHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVF
cnJvciknLCAnWyJsaW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCIsICJqc2NTdGFjayJdJyk7
CiAKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1l
JywgJyJSYW5nZUVycm9yIicpOwogICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
bmF0aXZlRXJyb3IpLm1lc3NhZ2UnLCAnIiInKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
c2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDIgQEAKK2Rlc2NyaXB0aW9uKAorJ1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJh
Y2UgY29yZWN0bmVzcyBpbiBzcGVjaWFsIGNhc2VzLicKKyk7CisKK2Z1bmN0aW9uIHByaW50U3Rh
Y2soc3RhY2tUcmFjZSkgeworCWRlYnVnKCItLT4gU3RhY2sgVHJhY2U6IikKKwl2YXIgaSA9IDA7
CisJZm9yICh2YXIgbGV2ZWwgaW4gc3RhY2tUcmFjZSkgeworCQlkZWJ1ZygiICAgICIgKyBpICsg
IiAgICIgKyBzdGFja1RyYWNlW2xldmVsXSk7CisJCWkrKzsKKwl9CisJZGVidWcoJycpOworfQor
CitmdW5jdGlvbiBob3N0VGhyb3dlcigpIHsgRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQu
Y2FsbCh7IH0sIFt7IH1dKTsgIH0KK2Z1bmN0aW9uIGNhbGxiYWNrZXIoZikgeyBbMF0ubWFwKGYp
OyB9CitmdW5jdGlvbiBvdXRlcihlcnJvck5hbWUpIHsgaW5uZXIoZXJyb3JOYW1lKTsgfQorZnVu
Y3Rpb24gaW5uZXIoZXJyb3JOYW1lKSB7IHRocm93IG5ldyBFcnJvcigiRXJyb3IgaW4gIiArIGVy
cm9yTmFtZSk7IH0KK2Z1bmN0aW9uIGV2YWxlcihjb2RlKSB7IGV2YWwoY29kZSk7IH0KK2Z1bmN0
aW9uIG5vcm1hbE91dGVyKCkgeyBub3JtYWxJbm5lcigpOyB9CitmdW5jdGlvbiBub3JtYWxJbm5l
cigpIHsgaWYodGhpc1ZhckRvZXNudEV4aXN0KSBmYWlsSWZUcnVlKCJzaG91bGRGYWlsQmVmb3Jl
VGhpcyIpIH07CitmdW5jdGlvbiBzY3JpcHRlcklubmVyKCkgeyBodG1sSW5uZXIoKTsgfQorZnVu
Y3Rpb24gc2NyaXB0ZXJPdXRlcigpIHsgaHRtbE91dGVyKCk7IH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RXhwZWN0ZWQgZnVuY3Rpb25zIGluIHN0YWNrIHRyYWNlCisvLyBOb3JtYWwgQ2FzZQordHJ5IHsg
bm9ybWFsT3V0ZXIoKSB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgICAg
ICAgICAgICAgICAgICAgIC8vIG5vcm1hbE91dGVyIC0+IG5vcm1hbElubmVyCisKKy8vIEV2YWwg
Q2FzZQordHJ5IHsgZXZhbGVyKCJpbm5lcignaW5uZXIgZXZhbCcpOyIpOyB9IGNhdGNoIChlKSB7
IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgIC8vIGV2YWxlciAtPiBldmFsIC0+IGlubmVyCit0
cnkgeyBldmFsZXIoIm91dGVyKCdvdXRlciBldmFsJyk7Iik7IH0gY2F0Y2ggKGUpIHsgcHJpbnRT
dGFjayhlLmpzY1N0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gb3V0ZXIgLT4gaW5uZXIK
KworLy8gRnVuY3Rpb24gQ2FsbGJhY2sgQ2FzZQordHJ5IHsgY2FsbGJhY2tlcihpbm5lcignaW5u
ZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjayk7IH0gICAvLyBj
YWxsYmFja2VyIC0+IG1hcCAtPiBpbm5lcgordHJ5IHsgY2FsbGJhY2tlcihvdXRlcignb3V0ZXIg
bWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjayk7IH0gICAvLyBjYWxs
YmFja2VyIC0+IG1hcCAtPiBvdXRlciAtPiBpbm5lcgorCisvLyBIb3N0IENvZGUgQ2FzZQordHJ5
IHsgaG9zdFRocm93ZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spOyB9
ICAgICAgICAgICAgICAgICAgICAvLyBob3N0VGhyb3dlcgorCit0cnkgeyBzY3JpcHRlcklubmVy
KCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAgICAgICAgICAgICAg
ICAgIC8vIHByb2dyYW0gLT4gc2NyaXB0ZXIgLT4gaW5uZXIKK3RyeSB7IHNjcmlwdGVyT3V0ZXIo
KTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spIH0gICAgICAgICAgICAgICAg
ICAgLy8gcHJvZ3JhbSAtPiBzY3JpcHRlciAtPiBvdXRlciAtPiBpbm5lcgorCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gOTUwMDgpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3Nyw2ICs0NzcsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9mcmFtZXMvY3Jvc3Mt
c2l0ZS10aAogLy8gdGhyb3cuICBWOCBmb2xsb3dzIHRoZSBzcGVjLgogV09OVEZJWCBTS0lQIDog
ZmFzdC9qcy9yZXBhcnNpbmctc2VtaWNvbG9uLWluc2VydGlvbi5odG1sID0gRkFJTAogCisvLyBU
aGlzIHRlc3RzIHN0YWNrLXRyYWNlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkgSlNDLiBUaGlzIHRl
c3Qgc2hvdWxkCisvLyBmYWlsIHNpbmNlIGl0IGlzIHNwZWNpZmljIHRvIGpzYy4KK1dPTlRGSVgg
U0tJUCA6IGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbCA9IEZBSUwKKwogLy8gUnViYmVyLWJhbmRp
bmcgaXMgY3VycmVudGx5IGEgTWFjIG9ubHkgZmVhdHVyZS4KIFdPTlRGSVggV0lOIExJTlVYIDog
cGxhdGZvcm0vY2hyb21pdW0vcnViYmVyYmFuZGluZyA9IEZBSUwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107174</attachid>
            <date>2011-09-13 07:18:44 -0700</date>
            <delta_ts>2011-09-13 12:59:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-66994-20110913101740.patch</filename>
            <type>text/plain</type>
            <size>27569</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTUwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMTMgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250QG1lLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJh
bWUgdG8gY3JlYXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJv
d24uIFVzZXJzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBj
b21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxlckxpbmUp
OgorICAgICAgICAoSlNDOjpnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24p
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OlN0
YWNrRnJhbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkpTQ1N0YWNrKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmg6CisKIDIwMTEtMDktMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBKYXZhU2NyaXB0Q29yZSBkb2VzIG5vdCBoYXZlIGJhc2VsaW5lLT5zcGVj
dWxhdGl2ZSBPU1IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAkocmV2aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgX19aTjNKU0MxMElkZW50
aWZpZXIzYWRkRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxMElkZW50aWZpZXI0ZnJvbUVQTlNf
OUV4ZWNTdGF0ZUVpCiBfX1pOM0pTQzEwSWRlbnRpZmllcjRmcm9tRVBOU185RXhlY1N0YXRlRWoK
IF9fWk4zSlNDMTBJZGVudGlmaWVyOHRvVUludDMyRVJLTlNfN1VTdHJpbmdFUmIKK19fWk4zSlND
MTFJbnRlcnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaVJOM1dURjZW
ZWN0b3JJTlNfMTBTdGFja0ZyYW1lRUxtMEVFRQogX19aTjNKU0MxMEpTRnVuY3Rpb24xNGZpbmlz
aENyZWF0aW9uRVBOU185RXhlY1N0YXRlRWlSS05TXzEwSWRlbnRpZmllckVQTlNfMTRFeGVjdXRh
YmxlQmFzZUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pO
M0pTQzEwSlNGdW5jdGlvbjZzX2luZm9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNp
b24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRp
YyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVj
U3RhdGUqKTsKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KEV4ZWNTdGF0ZSopOwpAQCAtMTcx
LDYgKzE3Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1
bikpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQpKTsKICAgICAgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhl
YygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMo
KSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKKyAgICAgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygp
LCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
ImpzY1N0YWNrIiksIGZ1bmN0aW9uSlNDU3RhY2spKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5l
IiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByZWNpc2VUaW1lIiksIGZ1
bmN0aW9uUHJlY2lzZVRpbWUpKTsKIApAQCAtMjE0LDYgKzIxNywyMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGViCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkpTQ1N0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBTdHJpbmcgdHJhY2UgPSAiLS0+IFN0
YWNrIHRyYWNlOlxuIjsKKyAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZTsKKyAgICBJ
bnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAtMSwgc3RhY2tU
cmFjZSk7CisgICAgaW50IGkgPSAwOworCisgICAgZm9yIChWZWN0b3I8U3RhY2tGcmFtZT46Oml0
ZXJhdG9yIGl0ZXIgPSBzdGFja1RyYWNlLmJlZ2luKCk7IGl0ZXIgPCBzdGFja1RyYWNlLmVuZCgp
OyBpdGVyKyspIHsKKyAgICAgICAgU3RhY2tGcmFtZSBsZXZlbCA9ICppdGVyOworICAgICAgICB0
cmFjZSArPSBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgJXNcbiIsIGksIGxldmVsLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGkrKzsKKyAgICB9CisgICAgZnByaW50ZihzdGRl
cnIsICIlcyIsIHRyYWNlLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA5NTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcgQEAgRVhQT1JUUwogICAgID9nZXRQ
cm9wZXJ0eURlc2NyaXB0b3JASlNPYmplY3RASlNDQEBRQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklk
ZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9nZXRQcm9wZXJ0eU5h
bWVzQEpTT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5
QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAgID9nZXRTbGljZUBBcmdMaXN0QEpTQ0BAUUJF
WEhBQVYxMkBAWgorICAgID9nZXRTdGFja1RyYWNlQEludGVycHJldGVyQEpTQ0BAU0E/QlZVU3Ry
aW5nQDJAUEFWSlNHbG9iYWxEYXRhQDJASEBaCiAgICAgP2dldFN0cmluZ0BKU0NlbGxASlNDQEBR
QkU/QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBK
U0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUFWVVN0cmluZ0AyQEBaCiAgICAgP2dldHRlckBQcm9w
ZXJ0eURlc2NyaXB0b3JASlNDQEBRQkU/QVZKU1ZhbHVlQDJAWFoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24g
OTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCi0j
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5o
IgpAQCAtNjg3LDYgKzY4Niw5MCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENh
bGxGcmFtCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsK
IH0KIAorc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIpCit7CisgICAgKHZvaWQpZ2xv
YmFsRGF0YTsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKKyAgICBsaW5lTnVtYmVyID0g
LTE7CisgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygp
OworCisgICAgaWYgKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSA9PSBDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkgfHwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+Y29kZUJs
b2NrKCk7CisKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgaWYgKCFnbG9iYWxEYXRhLT5j
YW5Vc2VKSVQoKSkKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOworI2lmIEVOQUJMRShKSVQpCisg
ICAgZWxzZQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKKyNlbmRpZgorCisgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7Cit9CisKK3N0
YXRpYyBBTFdBWVNfSU5MSU5FIGNvbnN0IFVTdHJpbmcgZ2V0U291cmNlVVJMRnJvbUNhbGxGcmFt
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgCit7CisgICAgaWYgKGNhbGxGcmFtZS0+aGFzSG9zdENh
bGxGcmFtZUZsYWcoKSkKKyAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKKyNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCisgICAgaWYgKCFjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkK
KyAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnNvdXJjZSgpLT51cmwoKTsK
KyNpZiBFTkFCTEUoSklUKQorICAgIHJldHVybiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJuIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyNl
bmRpZgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBVU3RyaW5nKCk7Cit9
CisKK3N0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3RhY2tGcmFtZUNvZGVUeXBlKENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVG
bGFnKCkpIAorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZU5hdGl2ZUNvZGU7CisKKyAgICBzd2l0
Y2ggKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmNvZGVUeXBlKCkpIHsKKyAgICBjYXNlIEV2YWxD
b2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2RlOworICAgIGNhc2UgRnVuY3Rp
b25Db2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZTsKKyAgICBjYXNl
IEdsb2JhbENvZGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lR2xvYmFsQ29kZTsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0YWNrRnJhbWVHbG9iYWxD
b2RlOworfQorCit2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmUsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cykKK3sKKyAg
ICBpbnQgc3RhY2tMaW1pdCA9IDE1OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZ2xvYmFs
RGF0YS0+dG9wQ2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGlmICgh
Y2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgfHwgIWNhbGxG
cmFtZS0+Y29kZUJsb2NrKCkpIAorICAgICAgICByZXR1cm47CisgICAgVVN0cmluZyBzb3VyY2VV
Ukw7CisgICAgVVN0cmluZyB0cmFjZUxldmVsOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
dGFja0xpbWl0OyArK2kpIHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09
IENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAo
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgc291cmNlVVJMID0gZ2V0U291
cmNlVVJMRnJvbUNhbGxGcmFtZShjYWxsRnJhbWUpOworCisgICAgICAgICAgICBTdGFja0ZyYW1l
IHMgPSB7IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkp
LCBTdHJvbmc8Q2FsbEZyYW1lPigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1lKSwgZ2V0U3RhY2tGcmFt
ZUNvZGVUeXBlKGNhbGxGcmFtZSksIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4oKmdsb2JhbERhdGEs
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSwgbGluZSwgc291cmNl
VVJMfTsKKworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocyk7CisgICAgICAgIH0KKyAgICAg
ICAgZ2V0Q2FsbGVyTGluZShnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGxpbmUpOworICAgICAgICBj
YWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVG
bGFnKCk7CisgICAgfQorfQorCiBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVy
Ojp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlv
blZhbHVlLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC03MDUsNyArNzg4LDkgQEAgTkVWRVJf
SU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogCiAgICAgICAgICAgICAvLyBGSVhN
RTogc2hvdWxkIG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0aGVzZSBwcm9wZXJ0aWVzIHRvIFZNIGdl
bmVyYXRlZCBleGNlcHRpb25zLAogICAgICAgICAgICAgLy8gYnV0IHRoZSBpbnNwZWN0b3IgY3Vy
cmVudGx5IHJlcXVpcmVzIHRoZXNlIGZvciBhbGwgdGhyb3duIG9iamVjdHMuCi0gICAgICAgICAg
ICBhZGRFcnJvckluZm8oY2FsbEZyYW1lLCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJl
ckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlKCkpOworICAgICAgICAgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0YWNr
VHJhY2U7CisgICAgICAgICAgICBnZXRTdGFja1RyYWNlKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
LCBzdGFja1RyYWNlKTsKKyAgICAgICAgICAgIGFkZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2Vw
dGlvbiwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3RhY2tUcmFjZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBpc0ludGVycnVwdCA9IGlzSW50ZXJydXB0ZWRFeGVjdXRp
b25FeGNlcHRpb24oZXhjZXB0aW9uKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
ZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiA5NTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgpAQCAtNDIsOCArNDMsOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKKyAg
ICBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci0g
ICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKQEAgLTYyLDYgKzYzLDU2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXaWxsRXhlY3V0ZVN0YXRlbWVudAogICAgIH07
CiAKKyAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7CisgICAgICAgIFN0YWNrRnJhbWVHbG9i
YWxDb2RlLAorICAgICAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJhbWVG
dW5jdGlvbkNvZGUsCisgICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCisgICAgfTsKKworICAg
IHN0cnVjdCBTdGFja0ZyYW1lIHsKKyAgICAgICAgU3Ryb25nPEpTT2JqZWN0PiBjYWxsZWU7Cisg
ICAgICAgIFN0cm9uZzxDYWxsRnJhbWU+IGNhbGxGcmFtZTsKKyAgICAgICAgU3RhY2tGcmFtZUNv
ZGVUeXBlIGNvZGVUeXBlOworICAgICAgICBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+IGV4ZWN1dGFi
bGU7CisgICAgICAgIGludCBsaW5lOworICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTDsKKyAgICAg
ICAgVVN0cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wg
aGFzU291cmNlVVJMSW5mbyA9ICFzb3VyY2VVUkwuaXNOdWxsKCkgJiYgIXNvdXJjZVVSTC5pc0Vt
cHR5KCk7CisgICAgICAgICAgICBib29sIGhhc0xpbmVJbmZvID0gbGluZSA+IC0xOworICAgICAg
ICAgICAgU3RyaW5nIHRyYWNlTGluZTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzdGFja0ZyYW1l
Q2FsbGVlID0gY2FsbGVlLmdldCgpOworCisgICAgICAgICAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7
CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKKyAgICAgICAgICAgICAgICBp
ZiAoaGFzU291cmNlVVJMSW5mbykgCisgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhh
c0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoImV2YWwgYXQgJXM6JWQiLCBzb3VyY2VVUkwuYXNj
aWkoKS5kYXRhKCksIGxpbmUpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IFN0cmluZzo6Zm9ybWF0KCJldmFsIGF0ICVzIiwgc291cmNlVVJMLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRyYWNl
TGluZSA9IFN0cmluZzo6Zm9ybWF0KCJldmFsIik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVOYXRpdmVDb2RlOgorICAgICAgICAgICAgICAgIHRy
YWNlTGluZSA9ICJOYXRpdmUgY29kZSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU6CisgICAgICAgICAgICAgICAgaWYgKHN0
YWNrRnJhbWVDYWxsZWUgJiYgc3RhY2tGcmFtZUNhbGxlZS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246
OnNfaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgVVN0cmluZyBmdW5jdGlvbk5hbWUgPSBh
c0Z1bmN0aW9uKHN0YWNrRnJhbWVDYWxsZWUpLT5uYW1lKGNhbGxGcmFtZS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJbmZvKSAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoIiVzIGF0ICVz
OiVkIiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRh
KCksIGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IFN0cmluZzo6Zm9ybWF0KCIlcyBhdCAlcyIsIGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEo
KSwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gU3RyaW5nOjpmb3JtYXQoIiVzXG4i
LCBmdW5jdGlvbk5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxD
b2RlOgorICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpm
b3JtYXQoImF0ICVzOiVkIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpLCBsaW5lKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU3RyaW5nOjpmb3JtYXQoImF0ICVz
Iiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiB0cmFjZUxpbmUuaW1wbCgpOworICAgICAgICB9CisgICAgfTsKKwogICAgIGNsYXNz
IFRvcENhbGxGcmFtZVNldHRlciB7CiAgICAgcHVibGljOgogICAgICAgICBUb3BDYWxsRnJhbWVT
ZXR0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWwsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMTI4
LDYgKzE3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBORVZFUl9JTkxJTkUgSlNWYWx1
ZSBjYWxsRXZhbChDYWxsRnJhbWUqLCBSZWdpc3RlckZpbGUqLCBSZWdpc3RlciogYXJndiwgaW50
IGFyZ2MsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVy
SW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSos
IERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBzdGF0
aWMgY29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tGcmFtZUNvZGVU
eXBlLCBjb25zdCBVU3RyaW5nJiwgaW50KTsKKyAgICAgICAgc3RhdGljIHZvaWQgZ2V0U3RhY2tU
cmFjZShKU0dsb2JhbERhdGEqLCBpbnQgbGluZSwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRz
KTsKIAogICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAg
ICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCShyZXZpc2lvbiA5NTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSkKICAg
ICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZXJyTXNnKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqZXhj
ZXB0aW9uID0gYWRkRXJyb3JJbmZvKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCks
IGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUs
IHNvdXJjZSk7CisgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygmbGV4
aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UsIFZlY3RvcjxTdGFja0ZyYW1l
PigpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fYXJlbmEucmVzZXQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2
aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAgICAgbWFjcm8oaW5w
dXQpIFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNQcm90b3R5cGVPZikgXAor
ICAgIG1hY3JvKGpzY1N0YWNrKSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFjcm8obWVz
c2FnZSkgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
IAogI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC0xMTYsNyAr
MTE3LDcgQEAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJl
dHVybiBjcmVhdGVVUklFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2Up
OwogfQogCi1KU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
SlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorSlNP
YmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBl
cnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgVmVjdG9yPFN0
YWNrRnJhbWU+JiBzdGFja1RyYWNlKQogewogICAgIGludHB0cl90IHNvdXJjZUlEID0gc291cmNl
LnByb3ZpZGVyKCktPmFzSUQoKTsKICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwgPSBzb3Vy
Y2UucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xMjcsMTMgKzEyOCwyMSBAQCBKU09iamVjdCogYWRk
RXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvCiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmli
dXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZUlkUHJvcGVydHlO
YW1lKSwganNOdW1iZXIoKGRvdWJsZSlzb3VyY2VJRCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7
CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0
cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZVVSTFByb3Bl
cnR5TmFtZSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSk7CisgICAgaWYgKCFzdGFja1RyYWNlLmlzRW1wdHkoKSkgeworICAgICAgICBKU0Fy
cmF5KiBzdGFja1RyYWNlQXJyYXkgPSBKU0FycmF5OjpjcmVhdGUoKmdsb2JhbERhdGEsIGdsb2Jh
bERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCkpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgeworICAgICAg
ICAgICAgVVN0cmluZyBzdGFja0xldmVsID0gIHN0YWNrVHJhY2VbaV0udG9TdHJpbmcoKTsKKyAg
ICAgICAgICAgIHN0YWNrVHJhY2VBcnJheS0+cHVzaChnbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUs
IGpzU3RyaW5nKGdsb2JhbERhdGEsIHN0YWNrTGV2ZWwpKTsgCisgICAgICAgIH0KKyAgICAgICAg
ZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPmpzY1N0YWNrLCBzdGFja1RyYWNlQXJyYXksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7
CisgICAgfQogCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlKQorSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3Qg
VmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFja1RyYWNlKQogewotICAgIHJldHVybiBhZGRFcnJvcklu
Zm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3IsIGxpbmUsIHNvdXJjZSk7CisgICAgcmV0dXJu
IGFkZEVycm9ySW5mbygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvciwgbGluZSwgc291cmNlLCBz
dGFja1RyYWNlKTsKIH0KIAogYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogZXJyb3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJl
dmlzaW9uIDk1MDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBFcnJvcl9oCiAjZGVmaW5l
IEVycm9yX2gKIAorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIApAQCAtNTUsOSArNTYsOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIAogICAgIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBlcnJvcik7Ci0gICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0ds
b2JhbERhdGEqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7
CisgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqLCBKU09iamVjdCogZXJy
b3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+
Jik7CiAgICAgLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgotICAgIEpTT2JqZWN0KiBhZGRFcnJvcklu
Zm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29k
ZSYpOworICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVy
cm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1l
PiYpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCiAgICAgSlNWYWx1ZSB0aHJv
d0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTUwMjQpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAor
MjAxMS0wOS0xMyAgSnVhbiBDYXJsb3MgTW9udGVtYXlvciBFbG9zdWEgIDxqLm1vbnRAbWUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBFcnJvci5zdGFjaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5OTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbml0IHRlc3RzIHRoYXQgY29udGFpbiBib3RoIG5v
cm1hbCBhbmQgc3BlY2lhbCBjYXNlcyBmb3Igc3RhY2sgdHJhY2UKKyAgICAgICAgZ2VuZXJhdGlv
bi4KKworICAgICAgICAqIGZhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpz
OgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOiBBZGRlZC4K
KyAgICAgICAgKHByaW50U3RhY2spOgorICAgICAgICAoaG9zdFRocm93ZXIpOgorICAgICAgICAo
Y2FsbGJhY2tlcik6CisgICAgICAgIChvdXRlcik6CisgICAgICAgIChpbm5lcik6CisgICAgICAg
IChldmFsZXIpOgorICAgICAgICAobm9ybWFsT3V0ZXIpOgorICAgICAgICAobm9ybWFsSW5uZXIp
OgorICAgICAgICAoc2NyaXB0ZXJJbm5lcik6CisgICAgICAgIChzY3JpcHRlck91dGVyKToKKyAg
ICAgICAgKiBmYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDktMTMgIEZ1bWl0b3NoaSBV
a2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIGNo
cm9taXVtIHRlc3QgZXhwZWN0YXRpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2Vw
dGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTUwMDgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQQogCiAKIFBBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpIGlz
IFtdCi1QQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKSBpcyBbImxpbmUiLCAi
c291cmNlSWQiLCAic291cmNlVVJMIl0KK1BBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZl
RXJyb3IpIGlzIFsibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiLCAianNjU3RhY2siXQog
UEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm5hbWUgaXMgIlJhbmdlRXJy
b3IiCiBQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubWVzc2FnZSBpcyAi
IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0OCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBzdGFjayB0cmFjZSBjb3JlY3RuZXNzIGluIHNw
ZWNpYWwgY2FzZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCistLT4gU3RhY2sg
VHJhY2U6CisgICAgMCAgIG5vcm1hbElubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2Uu
anM6MjEKKyAgICAxICAgbm9ybWFsT3V0ZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQv
T3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5q
czoyMAorICAgIDIgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNlL0xh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjI2CisKKy0tPiBT
dGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQv
T3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5q
czoxOAorICAgIDEgICBldmFsCisgICAgMiAgIGV2YWxlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250
L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNr
LXRyYWNlLmpzCisgICAgMyAgIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3Vy
Y2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MjkKKwor
LS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dl
YmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRy
YWNlLmpzOjE4CisgICAgMSAgIG91dGVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09w
ZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6
MTcKKyAgICAyICAgZXZhbAorICAgIDMgICBldmFsZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93
ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10
cmFjZS5qcworICAgIDQgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNl
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjMwCisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJr
aXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFj
ZS5qczoxOAorICAgIDEgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNl
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjMzCisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJr
aXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFj
ZS5qczoxOAorICAgIDEgICBvdXRlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVu
U291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjE3
CisgICAgMiAgIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MzQKKworLS0+IFN0YWNr
IFRyYWNlOgorICAgIDAgICBob3N0VGhyb3dlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtp
dC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNl
LmpzOjE1CisgICAgMSAgIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2Uv
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MzcKKworLS0+
IFN0YWNrIFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93
ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWw6MTAK
KyAgICAxICAgc2NyaXB0ZXJJbm5lciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVu
U291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjIy
CisgICAgMiAgIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MzkKKworLS0+IFN0YWNr
IFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQv
T3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWw6MTAKKyAgICAx
ICAgaHRtbE91dGVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOjExCisgICAgMiAgIHNjcmlwdGVyT3V0
ZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyMworICAgIDMgICBhdCBmaWxlOi8v
L1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0
LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjQwCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9z
dGFjay10cmFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2st
dHJhY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJh
Y2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKwk8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisJPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwk8cCBpZD0iY29uc29sZSI+PC9wPgorCTxz
Y3JpcHQ+ZnVuY3Rpb24gaHRtbElubmVyKCkgeyB0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGluIEhU
TUwiKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbE91dGVyKCkgeyBodG1sSW5u
ZXIoKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RhY2stdHJhY2Uu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMJKHJl
dmlzaW9uIDk1MDA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0
aW9uLXByb3BlcnRpZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDcgKzE2LDcgQEAgdHJ5IHsK
ICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoIm1lc3NhZ2UiKTsKIAogICAgIHNob3VsZEJlKCdl
bnVtZXJhYmxlUHJvcGVydGllcyhlcnJvciknLCAnW10nKTsKLSAgICBzaG91bGRCZSgnZW51bWVy
YWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpJywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3Vy
Y2VVUkwiXScpOworICAgIHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVFcnJv
ciknLCAnWyJsaW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCIsICJqc2NTdGFjayJdJyk7CiAK
ICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1lJywg
JyJSYW5nZUVycm9yIicpOwogICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0
aXZlRXJyb3IpLm1lc3NhZ2UnLCAnIiInKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2Ny
aXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDIgQEAKK2Rlc2NyaXB0aW9uKAorJ1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2Ug
Y29yZWN0bmVzcyBpbiBzcGVjaWFsIGNhc2VzLicKKyk7CisKK2Z1bmN0aW9uIHByaW50U3RhY2so
c3RhY2tUcmFjZSkgeworCWRlYnVnKCItLT4gU3RhY2sgVHJhY2U6IikKKwl2YXIgaSA9IDA7CisJ
Zm9yICh2YXIgbGV2ZWwgaW4gc3RhY2tUcmFjZSkgeworCQlkZWJ1ZygiICAgICIgKyBpICsgIiAg
ICIgKyBzdGFja1RyYWNlW2xldmVsXSk7CisJCWkrKzsKKwl9CisJZGVidWcoJycpOworfQorCitm
dW5jdGlvbiBob3N0VGhyb3dlcigpIHsgRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuY2Fs
bCh7IH0sIFt7IH1dKTsgIH0KK2Z1bmN0aW9uIGNhbGxiYWNrZXIoZikgeyBbMF0ubWFwKGYpOyB9
CitmdW5jdGlvbiBvdXRlcihlcnJvck5hbWUpIHsgaW5uZXIoZXJyb3JOYW1lKTsgfQorZnVuY3Rp
b24gaW5uZXIoZXJyb3JOYW1lKSB7IHRocm93IG5ldyBFcnJvcigiRXJyb3IgaW4gIiArIGVycm9y
TmFtZSk7IH0KK2Z1bmN0aW9uIGV2YWxlcihjb2RlKSB7IGV2YWwoY29kZSk7IH0KK2Z1bmN0aW9u
IG5vcm1hbE91dGVyKCkgeyBub3JtYWxJbm5lcigpOyB9CitmdW5jdGlvbiBub3JtYWxJbm5lcigp
IHsgaWYodGhpc1ZhckRvZXNudEV4aXN0KSBmYWlsSWZUcnVlKCJzaG91bGRGYWlsQmVmb3JlVGhp
cyIpIH07CitmdW5jdGlvbiBzY3JpcHRlcklubmVyKCkgeyBodG1sSW5uZXIoKTsgfQorZnVuY3Rp
b24gc2NyaXB0ZXJPdXRlcigpIHsgaHRtbE91dGVyKCk7IH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhw
ZWN0ZWQgZnVuY3Rpb25zIGluIHN0YWNrIHRyYWNlCisvLyBOb3JtYWwgQ2FzZQordHJ5IHsgbm9y
bWFsT3V0ZXIoKSB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgICAgICAg
ICAgICAgICAgICAgIC8vIG5vcm1hbE91dGVyIC0+IG5vcm1hbElubmVyCisKKy8vIEV2YWwgQ2Fz
ZQordHJ5IHsgZXZhbGVyKCJpbm5lcignaW5uZXIgZXZhbCcpOyIpOyB9IGNhdGNoIChlKSB7IHBy
aW50U3RhY2soZS5qc2NTdGFjaykgfSAgIC8vIGV2YWxlciAtPiBldmFsIC0+IGlubmVyCit0cnkg
eyBldmFsZXIoIm91dGVyKCdvdXRlciBldmFsJyk7Iik7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFj
ayhlLmpzY1N0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gb3V0ZXIgLT4gaW5uZXIKKwor
Ly8gRnVuY3Rpb24gQ2FsbGJhY2sgQ2FzZQordHJ5IHsgY2FsbGJhY2tlcihpbm5lcignaW5uZXIg
bWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjayk7IH0gICAvLyBjYWxs
YmFja2VyIC0+IG1hcCAtPiBpbm5lcgordHJ5IHsgY2FsbGJhY2tlcihvdXRlcignb3V0ZXIgbWFw
JykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjayk7IH0gICAvLyBjYWxsYmFj
a2VyIC0+IG1hcCAtPiBvdXRlciAtPiBpbm5lcgorCisvLyBIb3N0IENvZGUgQ2FzZQordHJ5IHsg
aG9zdFRocm93ZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spOyB9ICAg
ICAgICAgICAgICAgICAgICAvLyBob3N0VGhyb3dlcgorCit0cnkgeyBzY3JpcHRlcklubmVyKCk7
IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAgICAgICAgICAgICAgICAg
IC8vIHByb2dyYW0gLT4gc2NyaXB0ZXIgLT4gaW5uZXIKK3RyeSB7IHNjcmlwdGVyT3V0ZXIoKTsg
fSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spIH0gICAgICAgICAgICAgICAgICAg
Ly8gcHJvZ3JhbSAtPiBzY3JpcHRlciAtPiBvdXRlciAtPiBpbm5lcgorCitzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gOTUwMDgpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQ3Nyw2ICs0NzcsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9mcmFtZXMvY3Jvc3Mtc2l0
ZS10aAogLy8gdGhyb3cuICBWOCBmb2xsb3dzIHRoZSBzcGVjLgogV09OVEZJWCBTS0lQIDogZmFz
dC9qcy9yZXBhcnNpbmctc2VtaWNvbG9uLWluc2VydGlvbi5odG1sID0gRkFJTAogCisvLyBUaGlz
IHRlc3RzIHN0YWNrLXRyYWNlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkgSlNDLiBUaGlzIHRlc3Qg
c2hvdWxkCisvLyBmYWlsIHNpbmNlIGl0IGlzIHNwZWNpZmljIHRvIGpzYy4KK1dPTlRGSVggU0tJ
UCA6IGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbCA9IEZBSUwKKwogLy8gUnViYmVyLWJhbmRpbmcg
aXMgY3VycmVudGx5IGEgTWFjIG9ubHkgZmVhdHVyZS4KIFdPTlRGSVggV0lOIExJTlVYIDogcGxh
dGZvcm0vY2hyb21pdW0vcnViYmVyYmFuZGluZyA9IEZBSUwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107215</attachid>
            <date>2011-09-13 13:00:01 -0700</date>
            <delta_ts>2011-09-14 20:31:13 -0700</delta_ts>
            <desc>fixed patch for win-bot</desc>
            <filename>bug-66994-20110913155848.patch</filename>
            <type>text/plain</type>
            <size>27519</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTUwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMTMgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250QG1lLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJh
bWUgdG8gY3JlYXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJv
d24uIFVzZXJzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBj
b21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxlckxpbmUp
OgorICAgICAgICAoSlNDOjpnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24p
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OlN0
YWNrRnJhbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkpTQ1N0YWNrKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmg6CisKIDIwMTEtMDktMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBKYXZhU2NyaXB0Q29yZSBkb2VzIG5vdCBoYXZlIGJhc2VsaW5lLT5zcGVj
dWxhdGl2ZSBPU1IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAkocmV2aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgX19aTjNKU0MxMElkZW50
aWZpZXIzYWRkRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxMElkZW50aWZpZXI0ZnJvbUVQTlNf
OUV4ZWNTdGF0ZUVpCiBfX1pOM0pTQzEwSWRlbnRpZmllcjRmcm9tRVBOU185RXhlY1N0YXRlRWoK
IF9fWk4zSlNDMTBJZGVudGlmaWVyOHRvVUludDMyRVJLTlNfN1VTdHJpbmdFUmIKK19fWk4zSlND
MTFJbnRlcnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaVJOM1dURjZW
ZWN0b3JJTlNfMTBTdGFja0ZyYW1lRUxtMEVFRQogX19aTjNKU0MxMEpTRnVuY3Rpb24xNGZpbmlz
aENyZWF0aW9uRVBOU185RXhlY1N0YXRlRWlSS05TXzEwSWRlbnRpZmllckVQTlNfMTRFeGVjdXRh
YmxlQmFzZUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pO
M0pTQzEwSlNGdW5jdGlvbjZzX2luZm9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNp
b24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRp
YyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVj
U3RhdGUqKTsKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KEV4ZWNTdGF0ZSopOwpAQCAtMTcx
LDYgKzE3Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1
bikpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQpKTsKICAgICAgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhl
YygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMo
KSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKKyAgICAgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygp
LCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
ImpzY1N0YWNrIiksIGZ1bmN0aW9uSlNDU3RhY2spKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5l
IiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByZWNpc2VUaW1lIiksIGZ1
bmN0aW9uUHJlY2lzZVRpbWUpKTsKIApAQCAtMjE0LDYgKzIxNywyMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGViCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkpTQ1N0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBTdHJpbmcgdHJhY2UgPSAiLS0+IFN0
YWNrIHRyYWNlOlxuIjsKKyAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZTsKKyAgICBJ
bnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAtMSwgc3RhY2tU
cmFjZSk7CisgICAgaW50IGkgPSAwOworCisgICAgZm9yIChWZWN0b3I8U3RhY2tGcmFtZT46Oml0
ZXJhdG9yIGl0ZXIgPSBzdGFja1RyYWNlLmJlZ2luKCk7IGl0ZXIgPCBzdGFja1RyYWNlLmVuZCgp
OyBpdGVyKyspIHsKKyAgICAgICAgU3RhY2tGcmFtZSBsZXZlbCA9ICppdGVyOworICAgICAgICB0
cmFjZSArPSBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgJXNcbiIsIGksIGxldmVsLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGkrKzsKKyAgICB9CisgICAgZnByaW50ZihzdGRl
cnIsICIlcyIsIHRyYWNlLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA5NTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcgQEAgRVhQT1JUUwogICAgID9nZXRQ
cm9wZXJ0eURlc2NyaXB0b3JASlNPYmplY3RASlNDQEBRQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklk
ZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9nZXRQcm9wZXJ0eU5h
bWVzQEpTT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5
QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAgID9nZXRTbGljZUBBcmdMaXN0QEpTQ0BAUUJF
WEhBQVYxMkBAWgorICAgID9nZXRTdGFja1RyYWNlQEludGVycHJldGVyQEpTQ0BAU0E/QlZVU3Ry
aW5nQDJAUEFWSlNHbG9iYWxEYXRhQDJASEBaCiAgICAgP2dldFN0cmluZ0BKU0NlbGxASlNDQEBR
QkU/QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBK
U0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUFWVVN0cmluZ0AyQEBaCiAgICAgP2dldHRlckBQcm9w
ZXJ0eURlc2NyaXB0b3JASlNDQEBRQkU/QVZKU1ZhbHVlQDJAWFoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24g
OTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCi0j
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5o
IgpAQCAtNjg3LDYgKzY4Niw4OCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENh
bGxGcmFtCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsK
IH0KIAorc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIpCit7CisgICAgKHZvaWQpZ2xv
YmFsRGF0YTsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKKyAgICBsaW5lTnVtYmVyID0g
LTE7CisgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygp
OworCisgICAgaWYgKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSA9PSBDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkgfHwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+Y29kZUJs
b2NrKCk7CisKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgaWYgKCFnbG9iYWxEYXRhLT5j
YW5Vc2VKSVQoKSkKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOworI2lmIEVOQUJMRShKSVQpCisg
ICAgZWxzZQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKKyNlbmRpZgorCisgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7Cit9CisKK3N0
YXRpYyBBTFdBWVNfSU5MSU5FIGNvbnN0IFVTdHJpbmcgZ2V0U291cmNlVVJMRnJvbUNhbGxGcmFt
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgCit7CisgICAgaWYgKGNhbGxGcmFtZS0+aGFzSG9zdENh
bGxGcmFtZUZsYWcoKSkKKyAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKKyNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCisgICAgaWYgKCFjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkK
KyAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnNvdXJjZSgpLT51cmwoKTsK
KyNpZiBFTkFCTEUoSklUKQorICAgIHJldHVybiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJuIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyNl
bmRpZgorfQorCitzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBlIGdldFN0YWNrRnJhbWVDb2RlVHlw
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBpZiAoY2FsbEZyYW1lLT5oYXNIb3N0Q2Fs
bEZyYW1lRmxhZygpKSAKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVOYXRpdmVDb2RlOworCisg
ICAgc3dpdGNoIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpKSB7CisgICAgY2Fz
ZSBFdmFsQ29kZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVFdmFsQ29kZTsKKyAgICBjYXNl
IEZ1bmN0aW9uQ29kZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU7Cisg
ICAgY2FzZSBHbG9iYWxDb2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUdsb2JhbENvZGU7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdGFja0ZyYW1l
R2xvYmFsQ29kZTsKK30KKwordm9pZCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMp
Cit7CisgICAgaW50IHN0YWNrTGltaXQgPSAxNTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IGdsb2JhbERhdGEtPnRvcENhbGxGcmFtZS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsKKyAg
ICBpZiAoIWNhbGxGcmFtZSB8fCBjYWxsRnJhbWUgPT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpIHx8
ICFjYWxsRnJhbWUtPmNvZGVCbG9jaygpKSAKKyAgICAgICAgcmV0dXJuOworICAgIFVTdHJpbmcg
c291cmNlVVJMOworICAgIFVTdHJpbmcgdHJhY2VMZXZlbDsKKworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc3RhY2tMaW1pdDsgKytpKSB7CisgICAgICAgIGlmICghY2FsbEZyYW1lIHx8IGNhbGxG
cmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaWYgKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAgIHNvdXJjZVVSTCA9
IGdldFNvdXJjZVVSTEZyb21DYWxsRnJhbWUoY2FsbEZyYW1lKTsKKworICAgICAgICAgICAgU3Rh
Y2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCpnbG9iYWxEYXRhLCBjYWxsRnJhbWUtPmNh
bGxlZSgpKSwgU3Ryb25nPENhbGxGcmFtZT4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZSksIGdldFN0
YWNrRnJhbWVDb2RlVHlwZShjYWxsRnJhbWUpLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+KCpnbG9i
YWxEYXRhLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSksIGxpbmUs
IHNvdXJjZVVSTH07CisKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOworICAgICAgICB9
CisgICAgICAgIGdldENhbGxlckxpbmUoZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBsaW5lKTsKKyAg
ICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2Fs
bEZyYW1lRmxhZygpOworICAgIH0KK30KKwogTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRl
cnByZXRlcjo6dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlJiBl
eGNlcHRpb25WYWx1ZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtNzA1LDcgKzc4Niw5IEBA
IE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnQKIAogICAgICAgICAgICAg
Ly8gRklYTUU6IHNob3VsZCBvbmx5IHJlYWxseSBiZSBhZGRpbmcgdGhlc2UgcHJvcGVydGllcyB0
byBWTSBnZW5lcmF0ZWQgZXhjZXB0aW9ucywKICAgICAgICAgICAgIC8vIGJ1dCB0aGUgaW5zcGVj
dG9yIGN1cnJlbnRseSByZXF1aXJlcyB0aGVzZSBmb3IgYWxsIHRocm93biBvYmplY3RzLgotICAg
ICAgICAgICAgYWRkRXJyb3JJbmZvKGNhbGxGcmFtZSwgZXhjZXB0aW9uLCBjb2RlQmxvY2stPmxp
bmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPnNvdXJjZSgpKTsKKyAgICAgICAgICAgIFZlY3RvcjxTdGFja0ZyYW1l
PiBzdGFja1RyYWNlOworICAgICAgICAgICAgZ2V0U3RhY2tUcmFjZSgmY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KSwgc3RhY2tUcmFjZSk7CisgICAgICAgICAgICBhZGRFcnJvckluZm8oY2FsbEZyYW1l
LCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlKCksIHN0YWNr
VHJhY2UpOwogICAgICAgICB9CiAKICAgICAgICAgaXNJbnRlcnJ1cHQgPSBpc0ludGVycnVwdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikgfHwgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKQEAgLTQyLDggKzQzLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFi
bGU7CisgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOwotICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAg
ICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CkBAIC02Miw2
ICs2Myw1NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV2lsbEV4ZWN1dGVTdGF0ZW1lbnQK
ICAgICB9OwogCisgICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgeworICAgICAgICBTdGFja0Zy
YW1lR2xvYmFsQ29kZSwKKyAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAorICAgICAgICBTdGFj
a0ZyYW1lRnVuY3Rpb25Db2RlLAorICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQorICAgIH07
CisKKyAgICBzdHJ1Y3QgU3RhY2tGcmFtZSB7CisgICAgICAgIFN0cm9uZzxKU09iamVjdD4gY2Fs
bGVlOworICAgICAgICBTdHJvbmc8Q2FsbEZyYW1lPiBjYWxsRnJhbWU7CisgICAgICAgIFN0YWNr
RnJhbWVDb2RlVHlwZSBjb2RlVHlwZTsKKyAgICAgICAgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPiBl
eGVjdXRhYmxlOworICAgICAgICBpbnQgbGluZTsKKyAgICAgICAgVVN0cmluZyBzb3VyY2VVUkw7
CisgICAgICAgIFVTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBib29sIGhhc1NvdXJjZVVSTEluZm8gPSAhc291cmNlVVJMLmlzTnVsbCgpICYmICFzb3VyY2VV
UkwuaXNFbXB0eSgpOworICAgICAgICAgICAgYm9vbCBoYXNMaW5lSW5mbyA9IGxpbmUgPiAtMTsK
KyAgICAgICAgICAgIFN0cmluZyB0cmFjZUxpbmU7CisgICAgICAgICAgICBKU09iamVjdCogc3Rh
Y2tGcmFtZUNhbGxlZSA9IGNhbGxlZS5nZXQoKTsKKworICAgICAgICAgICAgc3dpdGNoIChjb2Rl
VHlwZSkgeworICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lRXZhbENvZGU6CisgICAgICAgICAg
ICAgICAgaWYgKGhhc1NvdXJjZVVSTEluZm8pIAorICAgICAgICAgICAgICAgICAgICB0cmFjZUxp
bmUgPSBoYXNMaW5lSW5mbyA/IFN0cmluZzo6Zm9ybWF0KCJldmFsIGF0ICVzOiVkIiwgc291cmNl
VVJMLmFzY2lpKCkuZGF0YSgpLCBsaW5lKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiZXZhbCBhdCAlcyIsIHNvdXJjZVVSTC5h
c2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICB0cmFjZUxpbmUgPSBTdHJpbmc6OmZvcm1hdCgiZXZhbCIpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lTmF0aXZlQ29kZToKKyAgICAgICAgICAg
ICAgICB0cmFjZUxpbmUgPSAiTmF0aXZlIGNvZGUiOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlOgorICAgICAgICAgICAgICAg
IGlmIChzdGFja0ZyYW1lQ2FsbGVlICYmIHN0YWNrRnJhbWVDYWxsZWUtPmluaGVyaXRzKCZKU0Z1
bmN0aW9uOjpzX2luZm8pKSB7CisgICAgICAgICAgICAgICAgICAgIFVTdHJpbmcgZnVuY3Rpb25O
YW1lID0gYXNGdW5jdGlvbihzdGFja0ZyYW1lQ2FsbGVlKS0+bmFtZShjYWxsRnJhbWUuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzU291cmNlVVJMSW5mbykgCisgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFjZUxpbmUgPSBoYXNMaW5lSW5mbyA/IFN0cmluZzo6Zm9ybWF0KCIl
cyBhdCAlczolZCIsIGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lp
KCkuZGF0YSgpLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiJXMgYXQgJXMiLCBmdW5jdGlvbk5hbWUuYXNjaWko
KS5kYXRhKCksIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IFN0cmluZzo6Zm9ybWF0
KCIlc1xuIiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1l
R2xvYmFsQ29kZToKKyAgICAgICAgICAgICAgICB0cmFjZUxpbmUgPSBoYXNMaW5lSW5mbyA/IFN0
cmluZzo6Zm9ybWF0KCJhdCAlczolZCIsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSwgbGluZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0
KCJhdCAlcyIsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gdHJhY2VMaW5lLmltcGwoKTsKKyAgICAgICAgfQorICAgIH07CisKICAg
ICBjbGFzcyBUb3BDYWxsRnJhbWVTZXR0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgVG9wQ2Fs
bEZyYW1lU2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
QEAgLTEyOCw2ICsxNzksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTkVWRVJfSU5MSU5F
IEpTVmFsdWUgY2FsbEV2YWwoQ2FsbEZyYW1lKiwgUmVnaXN0ZXJGaWxlKiwgUmVnaXN0ZXIqIGFy
Z3YsIGludCBhcmdjLCBpbnQgcmVnaXN0ZXJPZmZzZXQpOwogICAgICAgICBORVZFUl9JTkxJTkUg
SGFuZGxlckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomLCBKU1ZhbHVlJiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxs
RnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IFVTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSosIFN0YWNrRnJh
bWVDb2RlVHlwZSwgY29uc3QgVVN0cmluZyYsIGludCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGdl
dFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiwgaW50IGxpbmUsIFZlY3RvcjxTdGFja0ZyYW1lPiYg
cmVzdWx0cyk7CiAKICAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMp
OwogICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gOTUwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbHNlIGlmIChpc0V2YWxOb2RlPFBhcnNlZE5vZGU+
KCkpCiAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVN5bnRheEVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIGVyck1zZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBl
cnJMaW5lLCBzb3VyY2UpOworICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRFcnJvcklu
Zm8oJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY3JlYXRlU3ludGF4RXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNlLCBWZWN0b3I8U3Rh
Y2tGcmFtZT4oKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgJKHJldmlzaW9uIDk1MDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogICAgIG1h
Y3JvKGlucHV0KSBcCiAgICAgbWFjcm8oaXNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJvdG90eXBl
T2YpIFwKKyAgICBtYWNybyhqc2NTdGFjaykgXAogICAgIG1hY3JvKGxlbmd0aCkgXAogICAgIG1h
Y3JvKG1lc3NhZ2UpIFwKICAgICBtYWNybyhtdWx0aWxpbmUpIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDk1MDA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAt
MTE2LDcgKzExNyw3IEBAIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUqIGV4ZWMK
ICAgICByZXR1cm4gY3JlYXRlVVJJRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBt
ZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKK0pTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU09i
amVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IFZl
Y3RvcjxTdGFja0ZyYW1lPiYgc3RhY2tUcmFjZSkKIHsKICAgICBpbnRwdHJfdCBzb3VyY2VJRCA9
IHNvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7CiAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJM
ID0gc291cmNlLnByb3ZpZGVyKCktPnVybCgpOwpAQCAtMTI3LDEzICsxMjgsMjEgQEAgSlNPYmpl
Y3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsbwogICAgICAgICBlcnJvci0+cHV0V2l0
aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBzb3VyY2VJZFBy
b3BlcnR5TmFtZSksIGpzTnVtYmVyKChkb3VibGUpc291cmNlSUQpLCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQogICAgICAgICBlcnJvci0+cHV0
V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBzb3VyY2VV
UkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBzb3VyY2VVUkwpLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOworICAgIGlmICghc3RhY2tUcmFjZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgSlNBcnJheSogc3RhY2tUcmFjZUFycmF5ID0gSlNBcnJheTo6Y3JlYXRlKCpnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YWNrVHJhY2Uuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgICAgIFVTdHJpbmcgc3RhY2tMZXZlbCA9ICBzdGFja1RyYWNlW2ldLnRvU3RyaW5n
KCk7CisgICAgICAgICAgICBzdGFja1RyYWNlQXJyYXktPnB1c2goZ2xvYmFsRGF0YS0+dG9wQ2Fs
bEZyYW1lLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBzdGFja0xldmVsKSk7IAorICAgICAgICB9Cisg
ICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5w
cm9wZXJ0eU5hbWVzLT5qc2NTdGFjaywgc3RhY2tUcmFjZUFycmF5LCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOworICAgIH0KIAogICAgIHJldHVybiBlcnJvcjsKIH0KIAotSlNPYmplY3QqIGFkZEVy
cm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKK0pTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhY2tUcmFjZSkKIHsKLSAgICByZXR1cm4gYWRk
RXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yLCBsaW5lLCBzb3VyY2UpOworICAg
IHJldHVybiBhZGRFcnJvckluZm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3IsIGxpbmUsIHNv
dXJjZSwgc3RhY2tUcmFjZSk7CiB9CiAKIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGVycm9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oCShyZXZpc2lvbiA5NTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgRXJyb3JfaAog
I2RlZmluZSBFcnJvcl9oCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKQEAgLTU1LDkgKzU2LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAvLyBNZXRob2RzIHRvIGFkZCAKICAgICBib29sIGhhc0Vycm9ySW5m
byhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IpOwotICAgIEpTT2JqZWN0KiBhZGRFcnJvcklu
Zm8oSlNHbG9iYWxEYXRhKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNl
Q29kZSYpOworICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiwgSlNPYmpl
Y3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFZlY3RvcjxTdGFj
a0ZyYW1lPiYpOwogICAgIC8vIEV4ZWNTdGF0ZSB3cmFwcGVycy4KLSAgICBKU09iamVjdCogYWRk
RXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNv
dXJjZUNvZGUmKTsKKyAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBWZWN0b3I8U3Rh
Y2tGcmFtZT4mKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gdGhyb3cgRXJyb3JzLgogICAgIEpTVmFs
dWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1
MDI0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzAgQEAKKzIwMTEtMDktMTMgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250
QG1lLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0ZXN0cyB0aGF0IGNvbnRhaW4g
Ym90aCBub3JtYWwgYW5kIHNwZWNpYWwgY2FzZXMgZm9yIHN0YWNrIHRyYWNlCisgICAgICAgIGdl
bmVyYXRpb24uCisKKyAgICAgICAgKiBmYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9leGNlcHRpb24tcHJvcGVy
dGllcy5qczoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczog
QWRkZWQuCisgICAgICAgIChwcmludFN0YWNrKToKKyAgICAgICAgKGhvc3RUaHJvd2VyKToKKyAg
ICAgICAgKGNhbGxiYWNrZXIpOgorICAgICAgICAob3V0ZXIpOgorICAgICAgICAoaW5uZXIpOgor
ICAgICAgICAoZXZhbGVyKToKKyAgICAgICAgKG5vcm1hbE91dGVyKToKKyAgICAgICAgKG5vcm1h
bElubmVyKToKKyAgICAgICAgKHNjcmlwdGVySW5uZXIpOgorICAgICAgICAoc2NyaXB0ZXJPdXRl
cik6CisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDExLTA5LTEzICBGdW1p
dG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHVw
ZGF0ZSBjaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDk1MDA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGllcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogCiBQQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKGVy
cm9yKSBpcyBbXQotUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVFcnJvcikgaXMgWyJs
aW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCJdCitQQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVz
KG5hdGl2ZUVycm9yKSBpcyBbImxpbmUiLCAic291cmNlSWQiLCAic291cmNlVVJMIiwgImpzY1N0
YWNrIl0KIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1lIGlzICJS
YW5nZUVycm9yIgogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm1lc3Nh
Z2UgaXMgIiIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDggQEAKK1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVz
cyBpbiBzcGVjaWFsIGNhc2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworLS0+
IFN0YWNrIFRyYWNlOgorICAgIDAgICBub3JtYWxJbm5lciBhdCBmaWxlOi8vL1VzZXJzL2ptb250
L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNr
LXRyYWNlLmpzOjIxCisgICAgMSAgIG5vcm1hbE91dGVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQv
d2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2st
dHJhY2UuanM6MjAKKyAgICAyICAgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNv
dXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoyNgor
CistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQv
d2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2st
dHJhY2UuanM6MTgKKyAgICAxICAgZXZhbAorICAgIDIgICBldmFsZXIgYXQgZmlsZTovLy9Vc2Vy
cy9qbW9udC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0
cy9zdGFjay10cmFjZS5qcworICAgIDMgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9P
cGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpz
OjI5CisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9q
bW9udC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9z
dGFjay10cmFjZS5qczoxOAorICAgIDEgICBvdXRlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dl
YmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRy
YWNlLmpzOjE3CisgICAgMiAgIGV2YWwKKyAgICAzICAgZXZhbGVyIGF0IGZpbGU6Ly8vVXNlcnMv
am1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
c3RhY2stdHJhY2UuanMKKyAgICA0ICAgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3Bl
blNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoz
MAorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1v
bnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3Rh
Y2stdHJhY2UuanM6MTgKKyAgICAxICAgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3Bl
blNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczoz
MworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1v
bnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3Rh
Y2stdHJhY2UuanM6MTgKKyAgICAxICAgb3V0ZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJr
aXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFj
ZS5qczoxNworICAgIDIgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNl
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjM0CisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgaG9zdFRocm93ZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9u
dC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFj
ay10cmFjZS5qczoxNQorICAgIDEgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVu
U291cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjM3
CisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaHRtbElubmVyIGF0IGZpbGU6Ly8vVXNlcnMv
am1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5o
dG1sOjEwCisgICAgMSAgIHNjcmlwdGVySW5uZXIgYXQgZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJr
aXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFj
ZS5qczoyMgorICAgIDIgICBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291cmNl
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOjM5CisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgaHRtbElubmVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQv
d2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOjEw
CisgICAgMSAgIGh0bWxPdXRlciBhdCBmaWxlOi8vL1VzZXJzL2ptb250L3dlYmtpdC9PcGVuU291
cmNlL0xheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbDoxMQorICAgIDIgICBzY3Jp
cHRlck91dGVyIGF0IGZpbGU6Ly8vVXNlcnMvam1vbnQvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6MjMKKyAgICAzICAgYXQg
ZmlsZTovLy9Vc2Vycy9qbW9udC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczo0MAorCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvc3RhY2stdHJhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3N0YWNrLXRyYWNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0
YWNrLXRyYWNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+CisJPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
CTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisJPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisJPHAgaWQ9ImNvbnNvbGUiPjwv
cD4KKwk8c2NyaXB0PmZ1bmN0aW9uIGh0bWxJbm5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCJFcnJv
ciBpbiBIVE1MIik7IH08L3NjcmlwdD4KKwk8c2NyaXB0PmZ1bmN0aW9uIGh0bWxPdXRlcigpIHsg
aHRtbElubmVyKCk7IH08L3NjcmlwdD4KKwk8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0YWNr
LXRyYWNlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVz
LmpzCShyZXZpc2lvbiA5NTAwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
L2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw3IEBA
IHRyeSB7CiAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCJtZXNzYWdlIik7CiAKICAgICBzaG91
bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpJywgJ1tdJyk7Ci0gICAgc2hvdWxkQmUo
J2VudW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKScsICdbImxpbmUiLCAic291cmNlSWQi
LCAic291cmNlVVJMIl0nKTsKKyAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMobmF0
aXZlRXJyb3IpJywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiLCAianNjU3RhY2si
XScpOwogCiAgICAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvciku
bmFtZScsICciUmFuZ2VFcnJvciInKTsKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlw
ZU9mKG5hdGl2ZUVycm9yKS5tZXNzYWdlJywgJyIiJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQyIEBACitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3QgY2hlY2tzIHN0YWNr
IHRyYWNlIGNvcmVjdG5lc3MgaW4gc3BlY2lhbCBjYXNlcy4nCispOworCitmdW5jdGlvbiBwcmlu
dFN0YWNrKHN0YWNrVHJhY2UpIHsKKwlkZWJ1ZygiLS0+IFN0YWNrIFRyYWNlOiIpCisJdmFyIGkg
PSAwOworCWZvciAodmFyIGxldmVsIGluIHN0YWNrVHJhY2UpIHsKKwkJZGVidWcoIiAgICAiICsg
aSArICIgICAiICsgc3RhY2tUcmFjZVtsZXZlbF0pOworCQlpKys7CisJfQorCWRlYnVnKCcnKTsK
K30KKworZnVuY3Rpb24gaG9zdFRocm93ZXIoKSB7IEVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENo
aWxkLmNhbGwoeyB9LCBbeyB9XSk7ICB9CitmdW5jdGlvbiBjYWxsYmFja2VyKGYpIHsgWzBdLm1h
cChmKTsgfQorZnVuY3Rpb24gb3V0ZXIoZXJyb3JOYW1lKSB7IGlubmVyKGVycm9yTmFtZSk7IH0K
K2Z1bmN0aW9uIGlubmVyKGVycm9yTmFtZSkgeyB0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGluICIg
KyBlcnJvck5hbWUpOyB9CitmdW5jdGlvbiBldmFsZXIoY29kZSkgeyBldmFsKGNvZGUpOyB9Citm
dW5jdGlvbiBub3JtYWxPdXRlcigpIHsgbm9ybWFsSW5uZXIoKTsgfQorZnVuY3Rpb24gbm9ybWFs
SW5uZXIoKSB7IGlmKHRoaXNWYXJEb2VzbnRFeGlzdCkgZmFpbElmVHJ1ZSgic2hvdWxkRmFpbEJl
Zm9yZVRoaXMiKSB9OworZnVuY3Rpb24gc2NyaXB0ZXJJbm5lcigpIHsgaHRtbElubmVyKCk7IH0K
K2Z1bmN0aW9uIHNjcmlwdGVyT3V0ZXIoKSB7IGh0bWxPdXRlcigpOyB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEV4cGVjdGVkIGZ1bmN0aW9ucyBpbiBzdGFjayB0cmFjZQorLy8gTm9ybWFsIENhc2UKK3Ry
eSB7IG5vcm1hbE91dGVyKCkgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spIH0g
ICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWxPdXRlciAtPiBub3JtYWxJbm5lcgorCisvLyBF
dmFsIENhc2UKK3RyeSB7IGV2YWxlcigiaW5uZXIoJ2lubmVyIGV2YWwnKTsiKTsgfSBjYXRjaCAo
ZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spIH0gICAvLyBldmFsZXIgLT4gZXZhbCAtPiBpbm5l
cgordHJ5IHsgZXZhbGVyKCJvdXRlcignb3V0ZXIgZXZhbCcpOyIpOyB9IGNhdGNoIChlKSB7IHBy
aW50U3RhY2soZS5qc2NTdGFjaykgfSAgIC8vIGV2YWxlciAtPiBldmFsIC0+IG91dGVyIC0+IGlu
bmVyCisKKy8vIEZ1bmN0aW9uIENhbGxiYWNrIENhc2UKK3RyeSB7IGNhbGxiYWNrZXIoaW5uZXIo
J2lubmVyIG1hcCcpKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spOyB9ICAg
Ly8gY2FsbGJhY2tlciAtPiBtYXAgLT4gaW5uZXIKK3RyeSB7IGNhbGxiYWNrZXIob3V0ZXIoJ291
dGVyIG1hcCcpKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spOyB9ICAgLy8g
Y2FsbGJhY2tlciAtPiBtYXAgLT4gb3V0ZXIgLT4gaW5uZXIKKworLy8gSG9zdCBDb2RlIENhc2UK
K3RyeSB7IGhvc3RUaHJvd2VyKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNr
KTsgfSAgICAgICAgICAgICAgICAgICAgLy8gaG9zdFRocm93ZXIKKwordHJ5IHsgc2NyaXB0ZXJJ
bm5lcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgICAgICAgICAg
ICAgICAgICAvLyBwcm9ncmFtIC0+IHNjcmlwdGVyIC0+IGlubmVyCit0cnkgeyBzY3JpcHRlck91
dGVyKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAgICAgICAgICAg
ICAgICAgIC8vIHByb2dyYW0gLT4gc2NyaXB0ZXIgLT4gb3V0ZXIgLT4gaW5uZXIKKworc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDk1MDA4KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC00NzcsNiArNDc3LDEwIEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvZnJhbWVzL2Ny
b3NzLXNpdGUtdGgKIC8vIHRocm93LiAgVjggZm9sbG93cyB0aGUgc3BlYy4KIFdPTlRGSVggU0tJ
UCA6IGZhc3QvanMvcmVwYXJzaW5nLXNlbWljb2xvbi1pbnNlcnRpb24uaHRtbCA9IEZBSUwKIAor
Ly8gVGhpcyB0ZXN0cyBzdGFjay10cmFjZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIGJ5IEpTQy4gVGhp
cyB0ZXN0IHNob3VsZAorLy8gZmFpbCBzaW5jZSBpdCBpcyBzcGVjaWZpYyB0byBqc2MuCitXT05U
RklYIFNLSVAgOiBmYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWwgPSBGQUlMCisKIC8vIFJ1YmJlci1i
YW5kaW5nIGlzIGN1cnJlbnRseSBhIE1hYyBvbmx5IGZlYXR1cmUuCiBXT05URklYIFdJTiBMSU5V
WCA6IHBsYXRmb3JtL2Nocm9taXVtL3J1YmJlcmJhbmRpbmcgPSBGQUlMCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107446</attachid>
            <date>2011-09-14 20:31:26 -0700</date>
            <delta_ts>2011-09-27 07:41:59 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-66994-20110914232922.patch</filename>
            <type>text/plain</type>
            <size>26006</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTUxNTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMTQgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250QG1lLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJh
bWUgdG8gY3JlYXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJv
d24uIFVzZXJzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBj
b21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxlckxpbmUp
OgorICAgICAgICAoSlNDOjpnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24p
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OlN0
YWNrRnJhbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkpTQ1N0YWNrKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmg6CisKIDIwMTEtMDktMTQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUG9ydCBNYWNoaW5lU3RhY2tNYXJrZXIgdG8gV2luZG93cyBB
Uk0gYW5kIE1JUFMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAkocmV2aXNpb24gOTUxMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgX19aTjNKU0MxMElkZW50
aWZpZXIzYWRkRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxMElkZW50aWZpZXI0ZnJvbUVQTlNf
OUV4ZWNTdGF0ZUVpCiBfX1pOM0pTQzEwSWRlbnRpZmllcjRmcm9tRVBOU185RXhlY1N0YXRlRWoK
IF9fWk4zSlNDMTBJZGVudGlmaWVyOHRvVUludDMyRVJLTlNfN1VTdHJpbmdFUmIKK19fWk4zSlND
MTFJbnRlcnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaVJOM1dURjZW
ZWN0b3JJTlNfMTBTdGFja0ZyYW1lRUxtMEVFRQogX19aTjNKU0MxMEpTRnVuY3Rpb24xNGZpbmlz
aENyZWF0aW9uRVBOU185RXhlY1N0YXRlRWlSS05TXzEwSWRlbnRpZmllckVQTlNfMTRFeGVjdXRh
YmxlQmFzZUUKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pO
M0pTQzEwSlNGdW5jdGlvbjZzX2luZm9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNp
b24gOTUxMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRp
YyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVj
U3RhdGUqKTsKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KEV4ZWNTdGF0ZSopOwpAQCAtMTcz
LDYgKzE3NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1
bikpOwogICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQpKTsKICAgICAgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhl
YygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMo
KSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKKyAgICAgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygp
LCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
ImpzY1N0YWNrIiksIGZ1bmN0aW9uSlNDU3RhY2spKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5l
IiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKICAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByZWNpc2VUaW1lIiksIGZ1
bmN0aW9uUHJlY2lzZVRpbWUpKTsKIApAQCAtMjE1LDYgKzIxOCwyMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGViCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkpTQ1N0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBTdHJpbmcgdHJhY2UgPSAiLS0+IFN0
YWNrIHRyYWNlOlxuIjsKKyAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZTsKKyAgICBJ
bnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAtMSwgc3RhY2tU
cmFjZSk7CisgICAgaW50IGkgPSAwOworCisgICAgZm9yIChWZWN0b3I8U3RhY2tGcmFtZT46Oml0
ZXJhdG9yIGl0ZXIgPSBzdGFja1RyYWNlLmJlZ2luKCk7IGl0ZXIgPCBzdGFja1RyYWNlLmVuZCgp
OyBpdGVyKyspIHsKKyAgICAgICAgU3RhY2tGcmFtZSBsZXZlbCA9ICppdGVyOworICAgICAgICB0
cmFjZSArPSBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgJXNcbiIsIGksIGxldmVsLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGkrKzsKKyAgICB9CisgICAgZnByaW50ZihzdGRl
cnIsICIlcyIsIHRyYWNlLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA5NTEyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcgQEAgRVhQT1JUUwogICAgID9nZXRQ
cm9wZXJ0eURlc2NyaXB0b3JASlNPYmplY3RASlNDQEBRQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklk
ZW50aWZpZXJAMkBBQVZQcm9wZXJ0eURlc2NyaXB0b3JAMkBAWgogICAgID9nZXRQcm9wZXJ0eU5h
bWVzQEpTT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5
QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgogICAgID9nZXRTbGljZUBBcmdMaXN0QEpTQ0BAUUJF
WEhBQVYxMkBAWgorICAgID9nZXRTdGFja1RyYWNlQEludGVycHJldGVyQEpTQ0BAU0E/QlZVU3Ry
aW5nQDJAUEFWSlNHbG9iYWxEYXRhQDJASEBaCiAgICAgP2dldFN0cmluZ0BKU0NlbGxASlNDQEBR
QkU/QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBK
U0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUFWVVN0cmluZ0AyQEBaCiAgICAgP2dldHRlckBQcm9w
ZXJ0eURlc2NyaXB0b3JASlNDQEBRQkU/QVZKU1ZhbHVlQDJAWFoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24g
OTUxMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCi0j
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5o
IgpAQCAtNjg3LDYgKzY4Niw4OCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENh
bGxGcmFtCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsK
IH0KIAorc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIpCit7CisgICAgKHZvaWQpZ2xv
YmFsRGF0YTsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKKyAgICBsaW5lTnVtYmVyID0g
LTE7CisgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygp
OworCisgICAgaWYgKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSA9PSBDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkgfHwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKS0+Y29kZUJs
b2NrKCk7CisKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgaWYgKCFnbG9iYWxEYXRhLT5j
YW5Vc2VKSVQoKSkKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOworI2lmIEVOQUJMRShKSVQpCisg
ICAgZWxzZQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyNlbmRpZgorI2Vsc2UKKyAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKKyNlbmRpZgorCisgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7Cit9CisKK3N0
YXRpYyBBTFdBWVNfSU5MSU5FIGNvbnN0IFVTdHJpbmcgZ2V0U291cmNlVVJMRnJvbUNhbGxGcmFt
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgCit7CisgICAgaWYgKGNhbGxGcmFtZS0+aGFzSG9zdENh
bGxGcmFtZUZsYWcoKSkKKyAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKKyNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCisgICAgaWYgKCFjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkK
KyAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnNvdXJjZSgpLT51cmwoKTsK
KyNpZiBFTkFCTEUoSklUKQorICAgIHJldHVybiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJuIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyNl
bmRpZgorfQorCitzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBlIGdldFN0YWNrRnJhbWVDb2RlVHlw
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBpZiAoY2FsbEZyYW1lLT5oYXNIb3N0Q2Fs
bEZyYW1lRmxhZygpKSAKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVOYXRpdmVDb2RlOworCisg
ICAgc3dpdGNoIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpKSB7CisgICAgY2Fz
ZSBFdmFsQ29kZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVFdmFsQ29kZTsKKyAgICBjYXNl
IEZ1bmN0aW9uQ29kZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU7Cisg
ICAgY2FzZSBHbG9iYWxDb2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUdsb2JhbENvZGU7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdGFja0ZyYW1l
R2xvYmFsQ29kZTsKK30KKwordm9pZCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMp
Cit7CisgICAgaW50IHN0YWNrTGltaXQgPSAxNTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IGdsb2JhbERhdGEtPnRvcENhbGxGcmFtZS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsKKyAg
ICBpZiAoIWNhbGxGcmFtZSB8fCBjYWxsRnJhbWUgPT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpIHx8
ICFjYWxsRnJhbWUtPmNvZGVCbG9jaygpKSAKKyAgICAgICAgcmV0dXJuOworICAgIFVTdHJpbmcg
c291cmNlVVJMOworICAgIFVTdHJpbmcgdHJhY2VMZXZlbDsKKworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc3RhY2tMaW1pdDsgKytpKSB7CisgICAgICAgIGlmICghY2FsbEZyYW1lIHx8IGNhbGxG
cmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaWYgKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAgIHNvdXJjZVVSTCA9
IGdldFNvdXJjZVVSTEZyb21DYWxsRnJhbWUoY2FsbEZyYW1lKTsKKworICAgICAgICAgICAgU3Rh
Y2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCpnbG9iYWxEYXRhLCBjYWxsRnJhbWUtPmNh
bGxlZSgpKSwgU3Ryb25nPENhbGxGcmFtZT4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZSksIGdldFN0
YWNrRnJhbWVDb2RlVHlwZShjYWxsRnJhbWUpLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+KCpnbG9i
YWxEYXRhLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSksIGxpbmUs
IHNvdXJjZVVSTH07CisKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOworICAgICAgICB9
CisgICAgICAgIGdldENhbGxlckxpbmUoZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBsaW5lKTsKKyAg
ICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2Fs
bEZyYW1lRmxhZygpOworICAgIH0KK30KKwogTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRl
cnByZXRlcjo6dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlJiBl
eGNlcHRpb25WYWx1ZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtNzA1LDcgKzc4Niw5IEBA
IE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnQKIAogICAgICAgICAgICAg
Ly8gRklYTUU6IHNob3VsZCBvbmx5IHJlYWxseSBiZSBhZGRpbmcgdGhlc2UgcHJvcGVydGllcyB0
byBWTSBnZW5lcmF0ZWQgZXhjZXB0aW9ucywKICAgICAgICAgICAgIC8vIGJ1dCB0aGUgaW5zcGVj
dG9yIGN1cnJlbnRseSByZXF1aXJlcyB0aGVzZSBmb3IgYWxsIHRocm93biBvYmplY3RzLgotICAg
ICAgICAgICAgYWRkRXJyb3JJbmZvKGNhbGxGcmFtZSwgZXhjZXB0aW9uLCBjb2RlQmxvY2stPmxp
bmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPnNvdXJjZSgpKTsKKyAgICAgICAgICAgIFZlY3RvcjxTdGFja0ZyYW1l
PiBzdGFja1RyYWNlOworICAgICAgICAgICAgZ2V0U3RhY2tUcmFjZSgmY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KSwgc3RhY2tUcmFjZSk7CisgICAgICAgICAgICBhZGRFcnJvckluZm8oY2FsbEZyYW1l
LCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlKCksIHN0YWNr
VHJhY2UpOwogICAgICAgICB9CiAKICAgICAgICAgaXNJbnRlcnJ1cHQgPSBpc0ludGVycnVwdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikgfHwgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gOTUxMjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKQEAgLTQyLDggKzQzLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFi
bGU7CisgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOwotICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAg
ICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CkBAIC02Miw2
ICs2Myw1NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV2lsbEV4ZWN1dGVTdGF0ZW1lbnQK
ICAgICB9OwogCisgICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgeworICAgICAgICBTdGFja0Zy
YW1lR2xvYmFsQ29kZSwKKyAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAorICAgICAgICBTdGFj
a0ZyYW1lRnVuY3Rpb25Db2RlLAorICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQorICAgIH07
CisKKyAgICBzdHJ1Y3QgU3RhY2tGcmFtZSB7CisgICAgICAgIFN0cm9uZzxKU09iamVjdD4gY2Fs
bGVlOworICAgICAgICBTdHJvbmc8Q2FsbEZyYW1lPiBjYWxsRnJhbWU7CisgICAgICAgIFN0YWNr
RnJhbWVDb2RlVHlwZSBjb2RlVHlwZTsKKyAgICAgICAgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPiBl
eGVjdXRhYmxlOworICAgICAgICBpbnQgbGluZTsKKyAgICAgICAgVVN0cmluZyBzb3VyY2VVUkw7
CisgICAgICAgIFVTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBib29sIGhhc1NvdXJjZVVSTEluZm8gPSAhc291cmNlVVJMLmlzTnVsbCgpICYmICFzb3VyY2VV
UkwuaXNFbXB0eSgpOworICAgICAgICAgICAgYm9vbCBoYXNMaW5lSW5mbyA9IGxpbmUgPiAtMTsK
KyAgICAgICAgICAgIFN0cmluZyB0cmFjZUxpbmU7CisgICAgICAgICAgICBKU09iamVjdCogc3Rh
Y2tGcmFtZUNhbGxlZSA9IGNhbGxlZS5nZXQoKTsKKworICAgICAgICAgICAgc3dpdGNoIChjb2Rl
VHlwZSkgeworICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lRXZhbENvZGU6CisgICAgICAgICAg
ICAgICAgaWYgKGhhc1NvdXJjZVVSTEluZm8pIAorICAgICAgICAgICAgICAgICAgICB0cmFjZUxp
bmUgPSBoYXNMaW5lSW5mbyA/IFN0cmluZzo6Zm9ybWF0KCJldmFsIGF0ICVzOiVkIiwgc291cmNl
VVJMLmFzY2lpKCkuZGF0YSgpLCBsaW5lKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiZXZhbCBhdCAlcyIsIHNvdXJjZVVSTC5h
c2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICB0cmFjZUxpbmUgPSBTdHJpbmc6OmZvcm1hdCgiZXZhbCIpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lTmF0aXZlQ29kZToKKyAgICAgICAgICAg
ICAgICB0cmFjZUxpbmUgPSAiTmF0aXZlIGNvZGUiOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlOgorICAgICAgICAgICAgICAg
IGlmIChzdGFja0ZyYW1lQ2FsbGVlICYmIHN0YWNrRnJhbWVDYWxsZWUtPmluaGVyaXRzKCZKU0Z1
bmN0aW9uOjpzX2luZm8pKSB7CisgICAgICAgICAgICAgICAgICAgIFVTdHJpbmcgZnVuY3Rpb25O
YW1lID0gYXNGdW5jdGlvbihzdGFja0ZyYW1lQ2FsbGVlKS0+bmFtZShjYWxsRnJhbWUuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzU291cmNlVVJMSW5mbykgCisgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFjZUxpbmUgPSBoYXNMaW5lSW5mbyA/IFN0cmluZzo6Zm9ybWF0KCIl
cyBhdCAlczolZCIsIGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lp
KCkuZGF0YSgpLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBTdHJpbmc6OmZvcm1hdCgiJXMgYXQgJXMiLCBmdW5jdGlvbk5hbWUuYXNjaWko
KS5kYXRhKCksIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IFN0cmluZzo6Zm9ybWF0
KCIlc1xuIiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBTdGFja0ZyYW1l
R2xvYmFsQ29kZToKKyAgICAgICAgICAgICAgICB0cmFjZUxpbmUgPSBoYXNMaW5lSW5mbyA/IFN0
cmluZzo6Zm9ybWF0KCJhdCAlczolZCIsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSwgbGluZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0
KCJhdCAlcyIsIHNvdXJjZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gdHJhY2VMaW5lLmltcGwoKTsKKyAgICAgICAgfQorICAgIH07CisKICAg
ICBjbGFzcyBUb3BDYWxsRnJhbWVTZXR0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgVG9wQ2Fs
bEZyYW1lU2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
QEAgLTEyOCw2ICsxNzksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTkVWRVJfSU5MSU5F
IEpTVmFsdWUgY2FsbEV2YWwoQ2FsbEZyYW1lKiwgUmVnaXN0ZXJGaWxlKiwgUmVnaXN0ZXIqIGFy
Z3YsIGludCBhcmdjLCBpbnQgcmVnaXN0ZXJPZmZzZXQpOwogICAgICAgICBORVZFUl9JTkxJTkUg
SGFuZGxlckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomLCBKU1ZhbHVlJiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxs
RnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IFVTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSosIFN0YWNrRnJh
bWVDb2RlVHlwZSwgY29uc3QgVVN0cmluZyYsIGludCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGdl
dFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiwgaW50IGxpbmUsIFZlY3RvcjxTdGFja0ZyYW1lPiYg
cmVzdWx0cyk7CiAKICAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMp
OwogICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gOTUxMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbHNlIGlmIChpc0V2YWxOb2RlPFBhcnNlZE5vZGU+
KCkpCiAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVN5bnRheEVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIGVyck1zZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBl
cnJMaW5lLCBzb3VyY2UpOworICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRFcnJvcklu
Zm8oJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY3JlYXRlU3ludGF4RXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNlLCBWZWN0b3I8U3Rh
Y2tGcmFtZT4oKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgJKHJldmlzaW9uIDk1MTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogICAgIG1h
Y3JvKGlucHV0KSBcCiAgICAgbWFjcm8oaXNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJvdG90eXBl
T2YpIFwKKyAgICBtYWNybyhqc2NTdGFjaykgXAogICAgIG1hY3JvKGxlbmd0aCkgXAogICAgIG1h
Y3JvKG1lc3NhZ2UpIFwKICAgICBtYWNybyhtdWx0aWxpbmUpIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDk1MTI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAt
MTE2LDcgKzExNyw3IEBAIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUqIGV4ZWMK
ICAgICByZXR1cm4gY3JlYXRlVVJJRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBt
ZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKK0pTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU09i
amVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IFZl
Y3RvcjxTdGFja0ZyYW1lPiYgc3RhY2tUcmFjZSkKIHsKICAgICBpbnRwdHJfdCBzb3VyY2VJRCA9
IHNvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7CiAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJM
ID0gc291cmNlLnByb3ZpZGVyKCktPnVybCgpOwpAQCAtMTI3LDEzICsxMjgsMjEgQEAgSlNPYmpl
Y3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsbwogICAgICAgICBlcnJvci0+cHV0V2l0
aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBzb3VyY2VJZFBy
b3BlcnR5TmFtZSksIGpzTnVtYmVyKChkb3VibGUpc291cmNlSUQpLCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQogICAgICAgICBlcnJvci0+cHV0
V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBzb3VyY2VV
UkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBzb3VyY2VVUkwpLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOworICAgIGlmICghc3RhY2tUcmFjZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgSlNBcnJheSogc3RhY2tUcmFjZUFycmF5ID0gSlNBcnJheTo6Y3JlYXRlKCpnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YWNrVHJhY2Uuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgICAgIFVTdHJpbmcgc3RhY2tMZXZlbCA9ICBzdGFja1RyYWNlW2ldLnRvU3RyaW5n
KCk7CisgICAgICAgICAgICBzdGFja1RyYWNlQXJyYXktPnB1c2goZ2xvYmFsRGF0YS0+dG9wQ2Fs
bEZyYW1lLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBzdGFja0xldmVsKSk7IAorICAgICAgICB9Cisg
ICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5w
cm9wZXJ0eU5hbWVzLT5qc2NTdGFjaywgc3RhY2tUcmFjZUFycmF5LCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOworICAgIH0KIAogICAgIHJldHVybiBlcnJvcjsKIH0KIAotSlNPYmplY3QqIGFkZEVy
cm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKK0pTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhY2tUcmFjZSkKIHsKLSAgICByZXR1cm4gYWRk
RXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yLCBsaW5lLCBzb3VyY2UpOworICAg
IHJldHVybiBhZGRFcnJvckluZm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3IsIGxpbmUsIHNv
dXJjZSwgc3RhY2tUcmFjZSk7CiB9CiAKIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGVycm9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oCShyZXZpc2lvbiA5NTEyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgRXJyb3JfaAog
I2RlZmluZSBFcnJvcl9oCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKQEAgLTU1LDkgKzU2LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAvLyBNZXRob2RzIHRvIGFkZCAKICAgICBib29sIGhhc0Vycm9ySW5m
byhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IpOwotICAgIEpTT2JqZWN0KiBhZGRFcnJvcklu
Zm8oSlNHbG9iYWxEYXRhKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNl
Q29kZSYpOworICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiwgSlNPYmpl
Y3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFZlY3RvcjxTdGFj
a0ZyYW1lPiYpOwogICAgIC8vIEV4ZWNTdGF0ZSB3cmFwcGVycy4KLSAgICBKU09iamVjdCogYWRk
RXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNv
dXJjZUNvZGUmKTsKKyAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBWZWN0b3I8U3Rh
Y2tGcmFtZT4mKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gdGhyb3cgRXJyb3JzLgogICAgIEpTVmFs
dWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1
MTU2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzAgQEAKKzIwMTEtMDktMTQgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250
QG1lLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0ZXN0cyB0aGF0IGNvbnRhaW4g
Ym90aCBub3JtYWwgYW5kIHNwZWNpYWwgY2FzZXMgZm9yIHN0YWNrIHRyYWNlCisgICAgICAgIGdl
bmVyYXRpb24uCisKKyAgICAgICAgKiBmYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9leGNlcHRpb24tcHJvcGVy
dGllcy5qczoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qczog
QWRkZWQuCisgICAgICAgIChwcmludFN0YWNrKToKKyAgICAgICAgKGhvc3RUaHJvd2VyKToKKyAg
ICAgICAgKGNhbGxiYWNrZXIpOgorICAgICAgICAob3V0ZXIpOgorICAgICAgICAoaW5uZXIpOgor
ICAgICAgICAoZXZhbGVyKToKKyAgICAgICAgKG5vcm1hbE91dGVyKToKKyAgICAgICAgKG5vcm1h
bElubmVyKToKKyAgICAgICAgKHNjcmlwdGVySW5uZXIpOgorICAgICAgICAoc2NyaXB0ZXJPdXRl
cik6CisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDExLTA5LTE0ICBIZW5y
aWsgR3J1bmVsbCAgPGdydW5lbGxAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBB
UEk6IENoYW5nZSBQZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3RvciBuYW1lIHRvIHdlYmtpdFBlZXJD
b25uZWN0aW9uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlv
bi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTUxMjgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QQogCiAKIFBBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpIGlzIFtdCi1QQVNTIGVudW1l
cmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKSBpcyBbImxpbmUiLCAic291cmNlSWQiLCAic291
cmNlVVJMIl0KK1BBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpIGlzIFsibGlu
ZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiLCAianNjU3RhY2siXQogUEFTUyBPYmplY3QuZ2V0
UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm5hbWUgaXMgIlJhbmdlRXJyb3IiCiBQQVNTIE9iamVj
dC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubWVzc2FnZSBpcyAiIgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFj
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10
cmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0
YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorVGhp
cyB0ZXN0IGNoZWNrcyBzdGFjayB0cmFjZSBjb3JlY3RuZXNzIGluIHNwZWNpYWwgY2FzZXMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAg
IG5vcm1hbElubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjIxCisgICAgMSAgIG5vcm1hbE91dGVyIGF0
IHN0YWNrLXRyYWNlLmpzOjIwCisgICAgMiAgIGF0IHN0YWNrLXRyYWNlLmpzOjI2CisKKy0tPiBT
dGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MTgKKyAgICAxICAg
ZXZhbAorICAgIDIgICBldmFsZXIgYXQgc3RhY2stdHJhY2UuanMKKyAgICAzICAgYXQgc3RhY2st
dHJhY2UuanM6MjkKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lciBhdCBzdGFjay10
cmFjZS5qczoxOAorICAgIDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczoxNworICAgIDIgICBl
dmFsCisgICAgMyAgIGV2YWxlciBhdCBzdGFjay10cmFjZS5qcworICAgIDQgICBhdCBzdGFjay10
cmFjZS5qczozMAorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRy
YWNlLmpzOjE4CisgICAgMSAgIGF0IHN0YWNrLXRyYWNlLmpzOjMzCisKKy0tPiBTdGFjayBUcmFj
ZToKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MTgKKyAgICAxICAgb3V0ZXIgYXQg
c3RhY2stdHJhY2UuanM6MTcKKyAgICAyICAgYXQgc3RhY2stdHJhY2UuanM6MzQKKworLS0+IFN0
YWNrIFRyYWNlOgorICAgIDAgICBob3N0VGhyb3dlciBhdCBzdGFjay10cmFjZS5qczoxNQorICAg
IDEgICBhdCBzdGFjay10cmFjZS5qczozNworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGh0
bWxJbm5lciBhdCBzdGFjay10cmFjZS5odG1sOjEwCisgICAgMSAgIHNjcmlwdGVySW5uZXIgYXQg
c3RhY2stdHJhY2UuanM6MjIKKyAgICAyICAgYXQgc3RhY2stdHJhY2UuanM6MzkKKworLS0+IFN0
YWNrIFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMAorICAg
IDEgICBodG1sT3V0ZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMQorICAgIDIgICBzY3JpcHRlck91
dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjIzCisgICAgMyAgIGF0IHN0YWNrLXRyYWNlLmpzOjQwCisK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKwk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+CisJPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKwk8cCBpZD0iY29uc29sZSI+PC9wPgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbElubmVyKCkg
eyB0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGluIEhUTUwiKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQ+
ZnVuY3Rpb24gaHRtbE91dGVyKCkgeyBodG1sSW5uZXIoKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXBy
b3BlcnRpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMJKHJldmlzaW9uIDk1MTI4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTE2LDcgKzE2LDcgQEAgdHJ5IHsKICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3Io
Im1lc3NhZ2UiKTsKIAogICAgIHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVydGllcyhlcnJvcikn
LCAnW10nKTsKLSAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3Ip
JywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiXScpOworICAgIHNob3VsZEJlKCdl
bnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVFcnJvciknLCAnWyJsaW5lIiwgInNvdXJjZUlkIiwg
InNvdXJjZVVSTCIsICJqc2NTdGFjayJdJyk7CiAKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFBy
b3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1lJywgJyJSYW5nZUVycm9yIicpOwogICAgIHNob3Vs
ZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm1lc3NhZ2UnLCAnIiInKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNl
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3Rh
Y2stdHJhY2UuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKK2Rlc2NyaXB0aW9uKAor
J1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVzcyBpbiBzcGVjaWFsIGNhc2Vz
LicKKyk7CisKK2Z1bmN0aW9uIHByaW50U3RhY2soc3RhY2tUcmFjZSkgeworCWRlYnVnKCItLT4g
U3RhY2sgVHJhY2U6IikKKwl2YXIgaSA9IDA7CisJZm9yICh2YXIgbGV2ZWwgaW4gc3RhY2tUcmFj
ZSkgeworCQlkZWJ1ZygiICAgICIgKyBpICsgIiAgICIgKyBzdGFja1RyYWNlW2xldmVsXS5zdWJz
dHJpbmcoMCwgc3RhY2tUcmFjZVtsZXZlbF0uaW5kZXhPZignZmlsZTonKSkgKyBzdGFja1RyYWNl
W2xldmVsXS5zdWJzdHJpbmcoc3RhY2tUcmFjZVtsZXZlbF0ubGFzdEluZGV4T2YoJy8nKSsxKSk7
CisJCWkrKzsKKwl9CisJZGVidWcoJycpOworfQorCitmdW5jdGlvbiBob3N0VGhyb3dlcigpIHsg
RWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuY2FsbCh7IH0sIFt7IH1dKTsgIH0KK2Z1bmN0
aW9uIGNhbGxiYWNrZXIoZikgeyBbMF0ubWFwKGYpOyB9CitmdW5jdGlvbiBvdXRlcihlcnJvck5h
bWUpIHsgaW5uZXIoZXJyb3JOYW1lKTsgfQorZnVuY3Rpb24gaW5uZXIoZXJyb3JOYW1lKSB7IHRo
cm93IG5ldyBFcnJvcigiRXJyb3IgaW4gIiArIGVycm9yTmFtZSk7IH0KK2Z1bmN0aW9uIGV2YWxl
cihjb2RlKSB7IGV2YWwoY29kZSk7IH0KK2Z1bmN0aW9uIG5vcm1hbE91dGVyKCkgeyBub3JtYWxJ
bm5lcigpOyB9CitmdW5jdGlvbiBub3JtYWxJbm5lcigpIHsgaWYodGhpc1ZhckRvZXNudEV4aXN0
KSBmYWlsSWZUcnVlKCJzaG91bGRGYWlsQmVmb3JlVGhpcyIpIH07CitmdW5jdGlvbiBzY3JpcHRl
cklubmVyKCkgeyBodG1sSW5uZXIoKTsgfQorZnVuY3Rpb24gc2NyaXB0ZXJPdXRlcigpIHsgaHRt
bE91dGVyKCk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhwZWN0ZWQgZnVuY3Rpb25zIGluIHN0YWNr
IHRyYWNlCisvLyBOb3JtYWwgQ2FzZQordHJ5IHsgbm9ybWFsT3V0ZXIoKSB9IGNhdGNoIChlKSB7
IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbE91
dGVyIC0+IG5vcm1hbElubmVyCisKKy8vIEV2YWwgQ2FzZQordHJ5IHsgZXZhbGVyKCJpbm5lcign
aW5uZXIgZXZhbCcpOyIpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAg
IC8vIGV2YWxlciAtPiBldmFsIC0+IGlubmVyCit0cnkgeyBldmFsZXIoIm91dGVyKCdvdXRlciBl
dmFsJyk7Iik7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAgLy8gZXZh
bGVyIC0+IGV2YWwgLT4gb3V0ZXIgLT4gaW5uZXIKKworLy8gRnVuY3Rpb24gQ2FsbGJhY2sgQ2Fz
ZQordHJ5IHsgY2FsbGJhY2tlcihpbm5lcignaW5uZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHBy
aW50U3RhY2soZS5qc2NTdGFjayk7IH0gICAvLyBjYWxsYmFja2VyIC0+IG1hcCAtPiBpbm5lcgor
dHJ5IHsgY2FsbGJhY2tlcihvdXRlcignb3V0ZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50
U3RhY2soZS5qc2NTdGFjayk7IH0gICAvLyBjYWxsYmFja2VyIC0+IG1hcCAtPiBvdXRlciAtPiBp
bm5lcgorCisvLyBIb3N0IENvZGUgQ2FzZQordHJ5IHsgaG9zdFRocm93ZXIoKTsgfSBjYXRjaCAo
ZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spOyB9ICAgICAgICAgICAgICAgICAgICAvLyBob3N0
VGhyb3dlcgorCit0cnkgeyBzY3JpcHRlcklubmVyKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFj
ayhlLmpzY1N0YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8vIHByb2dyYW0gLT4gc2NyaXB0ZXIg
LT4gaW5uZXIKK3RyeSB7IHNjcmlwdGVyT3V0ZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNr
KGUuanNjU3RhY2spIH0gICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbSAtPiBzY3JpcHRlciAt
PiBvdXRlciAtPiBpbm5lcgorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAkocmV2aXNpb24gOTUxMjgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw2ICs0NzcsMTAgQEAgV09O
VEZJWCBTS0lQIDogZmFzdC9mcmFtZXMvY3Jvc3Mtc2l0ZS10aAogLy8gdGhyb3cuICBWOCBmb2xs
b3dzIHRoZSBzcGVjLgogV09OVEZJWCBTS0lQIDogZmFzdC9qcy9yZXBhcnNpbmctc2VtaWNvbG9u
LWluc2VydGlvbi5odG1sID0gRkFJTAogCisvLyBUaGlzIHRlc3RzIHN0YWNrLXRyYWNlcyB0aGF0
IGFyZSBnZW5lcmF0ZWQgYnkgSlNDLiBUaGlzIHRlc3Qgc2hvdWxkCisvLyBmYWlsIHNpbmNlIGl0
IGlzIHNwZWNpZmljIHRvIGpzYy4KK1dPTlRGSVggU0tJUCA6IGZhc3QvanMvc3RhY2stdHJhY2Uu
aHRtbCA9IEZBSUwKKwogLy8gUnViYmVyLWJhbmRpbmcgaXMgY3VycmVudGx5IGEgTWFjIG9ubHkg
ZmVhdHVyZS4KIFdPTlRGSVggV0lOIExJTlVYIDogcGxhdGZvcm0vY2hyb21pdW0vcnViYmVyYmFu
ZGluZyA9IEZBSUwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108847</attachid>
            <date>2011-09-27 07:42:10 -0700</date>
            <delta_ts>2011-09-27 08:59:12 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-66994-20110927104208.patch</filename>
            <type>text/plain</type>
            <size>25632</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTYwNjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMjYgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250QG1lLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJh
bWUgdG8gY3JlYXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJv
d24uIFVzZXJzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBj
b21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxlckxpbmUp
OgorICAgICAgICAoSlNDOjpnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24p
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OlN0
YWNrRnJhbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkpTQ1N0YWNrKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmg6CisKIDIwMTEtMDktMjYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyOTU5MTIpOiBDb25zZXJ2YXRpdmUgbWFya2lu
ZyBkb2Vzbid0IGZpbHRlciBvdXQgcG9pbnRlcnMgdG8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gOTU5NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0
LDcgQEAgX19aTjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMEpTRnVuY3Rpb25D
MUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUUKIF9f
Wk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0Mx
MHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMTFJbnRl
cnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaVJOM1dURjZWZWN0b3JJ
TlNfMTBTdGFja0ZyYW1lRUxtMEVFRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTNzX2RlZmF1bHRJ
bmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVTdHJ1Y3R1cmVFUk5TXzEySlNHbG9i
YWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdKU1ZhbHVlRVBLTlNfOUNsYXNzSW5mb0UK
IF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJlRVBO
M1dURjlCeXRlQXJyYXlFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gOTU5NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRpYyBib29sIGZp
bGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqKTsK
ICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KEV4ZWNTdGF0ZSopOwpAQCAtMTc0LDYgKzE3Niw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgInJ1biIsIGZ1
bmN0aW9uUnVuLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgImxvYWQiLCBm
dW5jdGlvbkxvYWQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAiY2hlY2tT
eW50YXgiLCBmdW5jdGlvbkNoZWNrU3ludGF4LCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24oZ2xv
YmFsRGF0YSwgImpzY1N0YWNrIiwgZnVuY3Rpb25KU0NTdGFjaywgMSk7CiAgICAgICAgIGFkZEZ1
bmN0aW9uKGdsb2JhbERhdGEsICJyZWFkbGluZSIsIGZ1bmN0aW9uUmVhZGxpbmUsIDApOwogICAg
ICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAicHJlY2lzZVRpbWUiLCBmdW5jdGlvblByZWNp
c2VUaW1lLCAwKTsKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC0yMjEsNiArMjI0LDIy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWIKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIFN0cmlu
ZyB0cmFjZSA9ICItLT4gU3RhY2sgdHJhY2U6XG4iOworICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBz
dGFja1RyYWNlOworICAgIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKCZleGVjLT5nbG9iYWxE
YXRhKCksIC0xLCBzdGFja1RyYWNlKTsKKyAgICBpbnQgaSA9IDA7CisKKyAgICBmb3IgKFZlY3Rv
cjxTdGFja0ZyYW1lPjo6aXRlcmF0b3IgaXRlciA9IHN0YWNrVHJhY2UuYmVnaW4oKTsgaXRlciA8
IHN0YWNrVHJhY2UuZW5kKCk7IGl0ZXIrKykgeworICAgICAgICBTdGFja0ZyYW1lIGxldmVsID0g
Kml0ZXI7CisgICAgICAgIHRyYWNlICs9IFN0cmluZzo6Zm9ybWF0KCIgICAgJWkgICAlc1xuIiwg
aSwgbGV2ZWwudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaSsrOworICAgIH0K
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdHJhY2UudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDk1OTU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsNyBAQCBF
WFBPUlRTCiAgICAgP2dldFByb3BlcnR5RGVzY3JpcHRvckBKU09iamVjdEBKU0NAQFFBRV9OUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQEBaCiAg
ICAgP2dldFByb3BlcnR5TmFtZXNASlNPYmplY3RASlNDQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUFW
UHJvcGVydHlOYW1lQXJyYXlAMkBXNEVudW1lcmF0aW9uTW9kZUAyQEBaCiAgICAgP2dldFNsaWNl
QEFyZ0xpc3RASlNDQEBRQkVYSEFBVjEyQEBaCisgICAgP2dldFN0YWNrVHJhY2VASW50ZXJwcmV0
ZXJASlNDQEBTQT9CVlVTdHJpbmdAMkBQQVZKU0dsb2JhbERhdGFAMkBIQFoKICAgICA/Z2V0U3Ry
aW5nQEpTQ2VsbEBKU0NAQFFCRT9BVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9n
ZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQVZVU3RyaW5nQDJAQFoK
ICAgICA/Z2V0dGVyQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFCRT9BVkpTVmFsdWVAMkBYWgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiA5NTk1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNp
bmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNCeXRlQXJyYXkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RB
bk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJMaXRlcmFsUGFyc2VyLmgiCkBAIC02ODcsNiArNjg2LDg4IEBAIHN0YXRpYyB2b2lkIGFwcGVu
ZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW0KICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqZ2xvYmFs
RGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFs
RGF0YSwgbWVzc2FnZSkpOwogfQogCitzdGF0aWMgdm9pZCBnZXRDYWxsZXJMaW5lKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGludCYgbGluZU51bWJlcikK
K3sKKyAgICAodm9pZClnbG9iYWxEYXRhOworICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Owor
ICAgIGxpbmVOdW1iZXIgPSAtMTsKKyAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPnJlbW92ZUhv
c3RDYWxsRnJhbWVGbGFnKCk7CisKKyAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpID09
IENhbGxGcmFtZTo6bm9DYWxsZXIoKSB8fCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPmhhc0hv
c3RDYWxsRnJhbWVGbGFnKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENvZGVCbG9jayogY2Fs
bGVyQ29kZUJsb2NrID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZy
YW1lRmxhZygpLT5jb2RlQmxvY2soKTsKKworI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKKyAgICBp
ZiAoIWdsb2JhbERhdGEtPmNhblVzZUpJVCgpKQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNh
bGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7Cisj
aWYgRU5BQkxFKEpJVCkKKyAgICBlbHNlCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVy
Q29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworI2VuZGlm
CisjZWxzZQorICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworI2VuZGlmCisKKyAgICBsaW5lTnVtYmVyID0g
Y2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQgLSAxKTsKK30KKworc3RhdGljIEFMV0FZU19JTkxJTkUgY29uc3QgVVN0cmluZyBnZXRTb3Vy
Y2VVUkxGcm9tQ2FsbEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKSAKK3sKKyAgICBpZiAoY2Fs
bEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpKQorICAgICAgICByZXR1cm4gVVN0cmluZygp
OworI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKKyAgICBpZiAoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0
YSgpLmNhblVzZUpJVCgpKQorICAgICAgICByZXR1cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
c291cmNlKCktPnVybCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgcmV0dXJuIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyNlbmRpZgorI2Vs
c2UKKyAgICByZXR1cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkt
PnNvdXJjZVVSTCgpOworI2VuZGlmCit9CisKK3N0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0
U3RhY2tGcmFtZUNvZGVUeXBlKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChjYWxs
RnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpIAorICAgICAgICByZXR1cm4gU3RhY2tGcmFt
ZU5hdGl2ZUNvZGU7CisKKyAgICBzd2l0Y2ggKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmNvZGVU
eXBlKCkpIHsKKyAgICBjYXNlIEV2YWxDb2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUV2
YWxDb2RlOworICAgIGNhc2UgRnVuY3Rpb25Db2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFt
ZUZ1bmN0aW9uQ29kZTsKKyAgICBjYXNlIEdsb2JhbENvZGU6CisgICAgICAgIHJldHVybiBTdGFj
a0ZyYW1lR2xvYmFsQ29kZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIFN0YWNrRnJhbWVHbG9iYWxDb2RlOworfQorCit2b2lkIEludGVycHJldGVyOjpnZXRT
dGFja1RyYWNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmUsIFZlY3RvcjxTdGFj
a0ZyYW1lPiYgcmVzdWx0cykKK3sKKyAgICBpbnQgc3RhY2tMaW1pdCA9IDE1OworICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2Fs
bEZyYW1lRmxhZygpOworICAgIGlmICghY2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJh
bWU6Om5vQ2FsbGVyKCkgfHwgIWNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpIAorICAgICAgICByZXR1
cm47CisgICAgVVN0cmluZyBzb3VyY2VVUkw7CisgICAgVVN0cmluZyB0cmFjZUxldmVsOworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGFja0xpbWl0OyArK2kpIHsKKyAgICAgICAgaWYgKCFj
YWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBpZiAoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkgeworICAgICAg
ICAgICAgc291cmNlVVJMID0gZ2V0U291cmNlVVJMRnJvbUNhbGxGcmFtZShjYWxsRnJhbWUpOwor
CisgICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERh
dGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBTdHJvbmc8Q2FsbEZyYW1lPigqZ2xvYmFsRGF0YSwg
Y2FsbEZyYW1lKSwgZ2V0U3RhY2tGcmFtZUNvZGVUeXBlKGNhbGxGcmFtZSksIFN0cm9uZzxFeGVj
dXRhYmxlQmFzZT4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhl
Y3V0YWJsZSgpKSwgbGluZSwgc291cmNlVVJMfTsKKworICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQocyk7CisgICAgICAgIH0KKyAgICAgICAgZ2V0Q2FsbGVyTGluZShnbG9iYWxEYXRhLCBjYWxs
RnJhbWUsIGxpbmUpOworICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1l
KCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisgICAgfQorfQorCiBORVZFUl9JTkxJTkUg
SGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxs
RnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
IHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBA
IC03MDUsNyArNzg2LDkgQEAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6
dAogCiAgICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxkIG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0
aGVzZSBwcm9wZXJ0aWVzIHRvIFZNIGdlbmVyYXRlZCBleGNlcHRpb25zLAogICAgICAgICAgICAg
Ly8gYnV0IHRoZSBpbnNwZWN0b3IgY3VycmVudGx5IHJlcXVpcmVzIHRoZXNlIGZvciBhbGwgdGhy
b3duIG9iamVjdHMuCi0gICAgICAgICAgICBhZGRFcnJvckluZm8oY2FsbEZyYW1lLCBleGNlcHRp
b24sIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlKCkpOworICAgICAgICAgICAg
VmVjdG9yPFN0YWNrRnJhbWU+IHN0YWNrVHJhY2U7CisgICAgICAgICAgICBnZXRTdGFja1RyYWNl
KCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBzdGFja1RyYWNlKTsKKyAgICAgICAgICAgIGFkZEVy
cm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2VwdGlvbiwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5zb3VyY2UoKSwgc3RhY2tUcmFjZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpc0ludGVycnVw
dCA9IGlzSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSB8fCBpc1Rlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiA5NTk1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVmFs
dWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgpAQCAtNDIs
OCArNDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBj
bGFzcyBFdmFsRXhlY3V0YWJsZTsKKyAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBS
ZWdpc3RlcjsKQEAgLTYyLDYgKzYzLDU2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXaWxs
RXhlY3V0ZVN0YXRlbWVudAogICAgIH07CiAKKyAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7
CisgICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAorICAgICAgICBTdGFja0ZyYW1lRXZhbENv
ZGUsCisgICAgICAgIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGUsCisgICAgICAgIFN0YWNrRnJhbWVO
YXRpdmVDb2RlCisgICAgfTsKKworICAgIHN0cnVjdCBTdGFja0ZyYW1lIHsKKyAgICAgICAgU3Ry
b25nPEpTT2JqZWN0PiBjYWxsZWU7CisgICAgICAgIFN0cm9uZzxDYWxsRnJhbWU+IGNhbGxGcmFt
ZTsKKyAgICAgICAgU3RhY2tGcmFtZUNvZGVUeXBlIGNvZGVUeXBlOworICAgICAgICBTdHJvbmc8
RXhlY3V0YWJsZUJhc2U+IGV4ZWN1dGFibGU7CisgICAgICAgIGludCBsaW5lOworICAgICAgICBV
U3RyaW5nIHNvdXJjZVVSTDsKKyAgICAgICAgVVN0cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGJvb2wgaGFzU291cmNlVVJMSW5mbyA9ICFzb3VyY2VVUkwuaXNO
dWxsKCkgJiYgIXNvdXJjZVVSTC5pc0VtcHR5KCk7CisgICAgICAgICAgICBib29sIGhhc0xpbmVJ
bmZvID0gbGluZSA+IC0xOworICAgICAgICAgICAgU3RyaW5nIHRyYWNlTGluZTsKKyAgICAgICAg
ICAgIEpTT2JqZWN0KiBzdGFja0ZyYW1lQ2FsbGVlID0gY2FsbGVlLmdldCgpOworCisgICAgICAg
ICAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVFdmFs
Q29kZToKKyAgICAgICAgICAgICAgICBpZiAoaGFzU291cmNlVVJMSW5mbykgCisgICAgICAgICAg
ICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoImV2YWwg
YXQgJXM6JWQiLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCksIGxpbmUpIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0KCJldmFsIGF0
ICVzIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IFN0cmluZzo6Zm9ybWF0KCJldmFsIik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVOYXRpdmVD
b2RlOgorICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9ICJOYXRpdmUgY29kZSI7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU6
CisgICAgICAgICAgICAgICAgaWYgKHN0YWNrRnJhbWVDYWxsZWUgJiYgc3RhY2tGcmFtZUNhbGxl
ZS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAg
VVN0cmluZyBmdW5jdGlvbk5hbWUgPSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWVDYWxsZWUpLT5uYW1l
KGNhbGxGcmFtZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJ
bmZvKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8g
U3RyaW5nOjpmb3JtYXQoIiVzIGF0ICVzOiVkIiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgp
LCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCksIGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0KCIlcyBhdCAlcyIsIGZ1
bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VMaW5l
ID0gU3RyaW5nOjpmb3JtYXQoIiVzXG4iLCBmdW5jdGlvbk5hbWUuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxDb2RlOgorICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9
IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoImF0ICVzOiVkIiwgc291cmNlVVJMLmFzY2lp
KCkuZGF0YSgpLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogU3RyaW5nOjpmb3JtYXQoImF0ICVzIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cmFjZUxpbmUuaW1wbCgpOworICAgICAg
ICB9CisgICAgfTsKKwogICAgIGNsYXNzIFRvcENhbGxGcmFtZVNldHRlciB7CiAgICAgcHVibGlj
OgogICAgICAgICBUb3BDYWxsRnJhbWVTZXR0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWwsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQpAQCAtMTI4LDYgKzE3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBORVZFUl9JTkxJTkUgSlNWYWx1ZSBjYWxsRXZhbChDYWxsRnJhbWUqLCBSZWdpc3RlckZp
bGUqLCBSZWdpc3RlciogYXJndiwgaW50IGFyZ2MsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAg
ICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYs
IEpTVmFsdWUmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElO
RSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQg
bGFzdExpbmUpOworICAgICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2Fs
bEZyYW1lKiwgU3RhY2tGcmFtZUNvZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50KTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBpbnQgbGluZSwgVmVj
dG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzKTsKIAogICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRh
KEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lvbiA5NTk1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
NCw3ICsxMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzRXZh
bE5vZGU8UGFyc2VkTm9kZT4oKSkKICAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRl
U3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIGVyck1zZyksIGVyckxpbmUsIHNvdXJjZSk7CisgICAgICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBj
cmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBz
b3VyY2UsIFZlY3RvcjxTdGFja0ZyYW1lPigpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fYXJl
bmEucmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gOTU5NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2
ICs1Miw3IEBACiAgICAgbWFjcm8oaW5wdXQpIFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAg
bWFjcm8oaXNQcm90b3R5cGVPZikgXAorICAgIG1hY3JvKGpzY1N0YWNrKSBcCiAgICAgbWFjcm8o
bGVuZ3RoKSBcCiAgICAgbWFjcm8obWVzc2FnZSkgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gOTU5
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNp
bmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCkBAIC0xMTYsNyArMTE3LDcgQEAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9y
KEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBjcmVhdGVVUklFcnJvcihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogYWRkRXJyb3JJbmZvKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQorSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFja1RyYWNlKQogewogICAgIGlu
dHB0cl90IHNvdXJjZUlEID0gc291cmNlLnByb3ZpZGVyKCktPmFzSUQoKTsKICAgICBjb25zdCBV
U3RyaW5nJiBzb3VyY2VVUkwgPSBzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xMjcsMTMg
KzEyOCwyMSBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvCiAgICAg
ICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2Jh
bERhdGEsIHNvdXJjZUlkUHJvcGVydHlOYW1lKSwganNOdW1iZXIoKGRvdWJsZSlzb3VyY2VJRCks
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAg
ICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGds
b2JhbERhdGEsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHNv
dXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgaWYgKCFzdGFja1RyYWNlLmlz
RW1wdHkoKSkgeworICAgICAgICBKU0FycmF5KiBzdGFja1RyYWNlQXJyYXkgPSBKU0FycmF5Ojpj
cmVhdGUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tUcmFj
ZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgVVN0cmluZyBzdGFja0xldmVsID0gIHN0YWNr
VHJhY2VbaV0udG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHN0YWNrVHJhY2VBcnJheS0+cHVzaChn
bG9iYWxEYXRhLT50b3BDYWxsRnJhbWUsIGpzU3RyaW5nKGdsb2JhbERhdGEsIHN0YWNrTGV2ZWwp
KTsgCisgICAgICAgIH0KKyAgICAgICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERh
dGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmpzY1N0YWNrLCBzdGFja1RyYWNlQXJyYXks
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgfQogCiAgICAgcmV0dXJuIGVycm9yOwogfQog
Ci1KU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9y
LCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorSlNPYmplY3QqIGFkZEVycm9y
SW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFja1RyYWNlKQog
ewotICAgIHJldHVybiBhZGRFcnJvckluZm8oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3IsIGxp
bmUsIHNvdXJjZSk7CisgICAgcmV0dXJuIGFkZEVycm9ySW5mbygmZXhlYy0+Z2xvYmFsRGF0YSgp
LCBlcnJvciwgbGluZSwgc291cmNlLCBzdGFja1RyYWNlKTsKIH0KIAogYm9vbCBoYXNFcnJvcklu
Zm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXJyb3IpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDk1OTU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAog
I2lmbmRlZiBFcnJvcl9oCiAjZGVmaW5lIEVycm9yX2gKIAorI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIApAQCAtNTUs
OSArNTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIAogICAg
IGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvcik7Ci0gICAgSlNP
YmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqLCBKU09iamVjdCogZXJyb3IsIGludCBs
aW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0ds
b2JhbERhdGEqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwg
Y29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7CiAgICAgLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgot
ICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBp
bnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpOworICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8o
RXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYs
IGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBF
cnJvcnMuCiAgICAgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gOTYwNjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wOS0yNiAgSnVhbiBDYXJsb3MgTW9udGVtYXlv
ciBFbG9zdWEgIDxqLm1vbnRAbWUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBFcnJvci5zdGFj
aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbml0IHRl
c3RzIHRoYXQgY29udGFpbiBib3RoIG5vcm1hbCBhbmQgc3BlY2lhbCBjYXNlcyBmb3Igc3RhY2sg
dHJhY2UKKyAgICAgICAgZ2VuZXJhdGlvbi4KKworICAgICAgICAqIGZhc3QvanMvZXhjZXB0aW9u
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3Rz
L2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzOgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3Rz
L3N0YWNrLXRyYWNlLmpzOiBBZGRlZC4KKyAgICAgICAgKHByaW50U3RhY2spOgorICAgICAgICAo
aG9zdFRocm93ZXIpOgorICAgICAgICAoY2FsbGJhY2tlcik6CisgICAgICAgIChvdXRlcik6Cisg
ICAgICAgIChpbm5lcik6CisgICAgICAgIChldmFsZXIpOgorICAgICAgICAobm9ybWFsT3V0ZXIp
OgorICAgICAgICAobm9ybWFsSW5uZXIpOgorICAgICAgICAoc2NyaXB0ZXJJbm5lcik6CisgICAg
ICAgIChzY3JpcHRlck91dGVyKToKKyAgICAgICAgKiBmYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisK
IDIwMTEtMDktMjYgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUHV0IGJhY2sgYWxsIENocm9taXVtIHBsYXRmb3JtIGZhaWxpbmcgZXhwZWN0YXRpb25z
IGZvciBzb21lIHRlc3RzICh0aGV5CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlv
bi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTU5NTkpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQQogCiAKIFBBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpIGlzIFtd
Ci1QQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKSBpcyBbImxpbmUiLCAic291
cmNlSWQiLCAic291cmNlVVJMIl0KK1BBU1MgZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJy
b3IpIGlzIFsibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiLCAianNjU3RhY2siXQogUEFT
UyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm5hbWUgaXMgIlJhbmdlRXJyb3Ii
CiBQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubWVzc2FnZSBpcyAiIgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0OCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBzdGFjayB0cmFjZSBjb3JlY3RuZXNzIGluIHNwZWNp
YWwgY2FzZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCistLT4gU3RhY2sgVHJh
Y2U6CisgICAgMCAgIG5vcm1hbElubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjIxCisgICAgMSAgIG5v
cm1hbE91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjIwCisgICAgMiAgIGF0IHN0YWNrLXRyYWNlLmpz
OjI2CisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6
MTgKKyAgICAxICAgZXZhbAorICAgIDIgICBldmFsZXIgYXQgc3RhY2stdHJhY2UuanMKKyAgICAz
ICAgYXQgc3RhY2stdHJhY2UuanM6MjkKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5l
ciBhdCBzdGFjay10cmFjZS5qczoxOAorICAgIDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczox
NworICAgIDIgICBldmFsCisgICAgMyAgIGV2YWxlciBhdCBzdGFjay10cmFjZS5qcworICAgIDQg
ICBhdCBzdGFjay10cmFjZS5qczozMAorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVy
IGF0IHN0YWNrLXRyYWNlLmpzOjE4CisgICAgMSAgIGF0IHN0YWNrLXRyYWNlLmpzOjMzCisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MTgKKyAgICAx
ICAgb3V0ZXIgYXQgc3RhY2stdHJhY2UuanM6MTcKKyAgICAyICAgYXQgc3RhY2stdHJhY2UuanM6
MzQKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBob3N0VGhyb3dlciBhdCBzdGFjay10cmFj
ZS5qczoxNQorICAgIDEgICBhdCBzdGFjay10cmFjZS5qczozNworCistLT4gU3RhY2sgVHJhY2U6
CisgICAgMCAgIGh0bWxJbm5lciBhdCBzdGFjay10cmFjZS5odG1sOjEwCisgICAgMSAgIHNjcmlw
dGVySW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MjIKKyAgICAyICAgYXQgc3RhY2stdHJhY2UuanM6
MzkKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2Uu
aHRtbDoxMAorICAgIDEgICBodG1sT3V0ZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMQorICAgIDIg
ICBzY3JpcHRlck91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjIzCisgICAgMyAgIGF0IHN0YWNrLXRy
YWNlLmpzOjQwCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKwk8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisJPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwk8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKwk8cCBpZD0iY29uc29sZSI+PC9wPgorCTxzY3JpcHQ+ZnVuY3Rpb24g
aHRtbElubmVyKCkgeyB0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGluIEhUTUwiKTsgfTwvc2NyaXB0
PgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbE91dGVyKCkgeyBodG1sSW5uZXIoKTsgfTwvc2NyaXB0
PgorCTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
ZXhjZXB0aW9uLXByb3BlcnRpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMJKHJldmlzaW9uIDk1OTU5KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDcgKzE2LDcgQEAgdHJ5IHsKICAgICB2YXIgZXJyb3Ig
PSBuZXcgRXJyb3IoIm1lc3NhZ2UiKTsKIAogICAgIHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVy
dGllcyhlcnJvciknLCAnW10nKTsKLSAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMo
bmF0aXZlRXJyb3IpJywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiXScpOworICAg
IHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVFcnJvciknLCAnWyJsaW5lIiwg
InNvdXJjZUlkIiwgInNvdXJjZVVSTCIsICJqc2NTdGFjayJdJyk7CiAKICAgICBzaG91bGRCZSgn
T2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1lJywgJyJSYW5nZUVycm9yIicp
OwogICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm1lc3Nh
Z2UnLCAnIiInKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNr
LXRyYWNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
L3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvc3RhY2stdHJhY2UuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKK2Rl
c2NyaXB0aW9uKAorJ1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVzcyBpbiBz
cGVjaWFsIGNhc2VzLicKKyk7CisKK2Z1bmN0aW9uIHByaW50U3RhY2soc3RhY2tUcmFjZSkgewor
CWRlYnVnKCItLT4gU3RhY2sgVHJhY2U6IikKKwl2YXIgaSA9IDA7CisJZm9yICh2YXIgbGV2ZWwg
aW4gc3RhY2tUcmFjZSkgeworCQlkZWJ1ZygiICAgICIgKyBpICsgIiAgICIgKyBzdGFja1RyYWNl
W2xldmVsXS5zdWJzdHJpbmcoMCwgc3RhY2tUcmFjZVtsZXZlbF0uaW5kZXhPZignZmlsZTonKSkg
KyBzdGFja1RyYWNlW2xldmVsXS5zdWJzdHJpbmcoc3RhY2tUcmFjZVtsZXZlbF0ubGFzdEluZGV4
T2YoJy8nKSsxKSk7CisJCWkrKzsKKwl9CisJZGVidWcoJycpOworfQorCitmdW5jdGlvbiBob3N0
VGhyb3dlcigpIHsgRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuY2FsbCh7IH0sIFt7IH1d
KTsgIH0KK2Z1bmN0aW9uIGNhbGxiYWNrZXIoZikgeyBbMF0ubWFwKGYpOyB9CitmdW5jdGlvbiBv
dXRlcihlcnJvck5hbWUpIHsgaW5uZXIoZXJyb3JOYW1lKTsgfQorZnVuY3Rpb24gaW5uZXIoZXJy
b3JOYW1lKSB7IHRocm93IG5ldyBFcnJvcigiRXJyb3IgaW4gIiArIGVycm9yTmFtZSk7IH0KK2Z1
bmN0aW9uIGV2YWxlcihjb2RlKSB7IGV2YWwoY29kZSk7IH0KK2Z1bmN0aW9uIG5vcm1hbE91dGVy
KCkgeyBub3JtYWxJbm5lcigpOyB9CitmdW5jdGlvbiBub3JtYWxJbm5lcigpIHsgaWYodGhpc1Zh
ckRvZXNudEV4aXN0KSBmYWlsSWZUcnVlKCJzaG91bGRGYWlsQmVmb3JlVGhpcyIpIH07CitmdW5j
dGlvbiBzY3JpcHRlcklubmVyKCkgeyBodG1sSW5uZXIoKTsgfQorZnVuY3Rpb24gc2NyaXB0ZXJP
dXRlcigpIHsgaHRtbE91dGVyKCk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhwZWN0ZWQgZnVuY3Rp
b25zIGluIHN0YWNrIHRyYWNlCisvLyBOb3JtYWwgQ2FzZQordHJ5IHsgbm9ybWFsT3V0ZXIoKSB9
IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgICAgICAgICAgICAgICAgICAg
IC8vIG5vcm1hbE91dGVyIC0+IG5vcm1hbElubmVyCisKKy8vIEV2YWwgQ2FzZQordHJ5IHsgZXZh
bGVyKCJpbm5lcignaW5uZXIgZXZhbCcpOyIpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5q
c2NTdGFjaykgfSAgIC8vIGV2YWxlciAtPiBldmFsIC0+IGlubmVyCit0cnkgeyBldmFsZXIoIm91
dGVyKCdvdXRlciBldmFsJyk7Iik7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNr
KSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gb3V0ZXIgLT4gaW5uZXIKKworLy8gRnVuY3Rpb24g
Q2FsbGJhY2sgQ2FzZQordHJ5IHsgY2FsbGJhY2tlcihpbm5lcignaW5uZXIgbWFwJykpOyB9IGNh
dGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjayk7IH0gICAvLyBjYWxsYmFja2VyIC0+IG1h
cCAtPiBpbm5lcgordHJ5IHsgY2FsbGJhY2tlcihvdXRlcignb3V0ZXIgbWFwJykpOyB9IGNhdGNo
IChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjayk7IH0gICAvLyBjYWxsYmFja2VyIC0+IG1hcCAt
PiBvdXRlciAtPiBpbm5lcgorCisvLyBIb3N0IENvZGUgQ2FzZQordHJ5IHsgaG9zdFRocm93ZXIo
KTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spOyB9ICAgICAgICAgICAgICAg
ICAgICAvLyBob3N0VGhyb3dlcgorCit0cnkgeyBzY3JpcHRlcklubmVyKCk7IH0gY2F0Y2ggKGUp
IHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8vIHByb2dyYW0g
LT4gc2NyaXB0ZXIgLT4gaW5uZXIKK3RyeSB7IHNjcmlwdGVyT3V0ZXIoKTsgfSBjYXRjaCAoZSkg
eyBwcmludFN0YWNrKGUuanNjU3RhY2spIH0gICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbSAt
PiBzY3JpcHRlciAtPiBvdXRlciAtPiBpbm5lcgorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAkocmV2aXNpb24gOTU5NTkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw2ICs0
OTcsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9mcmFtZXMvY3Jvc3Mtc2l0ZS10aAogLy8gdGhy
b3cuICBWOCBmb2xsb3dzIHRoZSBzcGVjLgogV09OVEZJWCBTS0lQIDogZmFzdC9qcy9yZXBhcnNp
bmctc2VtaWNvbG9uLWluc2VydGlvbi5odG1sID0gRkFJTAogCisvLyBUaGlzIHRlc3RzIHN0YWNr
LXRyYWNlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkgSlNDLiBUaGlzIHRlc3Qgc2hvdWxkCisvLyBm
YWlsIHNpbmNlIGl0IGlzIHNwZWNpZmljIHRvIGpzYy4KK1dPTlRGSVggU0tJUCA6IGZhc3QvanMv
c3RhY2stdHJhY2UuaHRtbCA9IEZBSUwKKwogLy8gUnViYmVyLWJhbmRpbmcgaXMgY3VycmVudGx5
IGEgQ0cgb25seSBmZWF0dXJlLgogV09OVEZJWCBDUFUgR1BVIDogcGxhdGZvcm0vY2hyb21pdW0v
cnViYmVyYmFuZGluZyA9IEZBSUwKIFdPTlRGSVggQ1BVIEdQVSA6IHBsYXRmb3JtL2Nocm9taXVt
LWdwdS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5nID0gSU1BR0UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108854</attachid>
            <date>2011-09-27 08:59:47 -0700</date>
            <delta_ts>2011-09-27 09:58:14 -0700</delta_ts>
            <desc>fixing win bot</desc>
            <filename>bug-66994-20110927115944.patch</filename>
            <type>text/plain</type>
            <size>24750</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTYwNjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMjYgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250QG1lLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJh
bWUgdG8gY3JlYXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJv
d24uIFVzZXJzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBj
b21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxlckxpbmUp
OgorICAgICAgICAoSlNDOjpnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24p
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OlN0
YWNrRnJhbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkpTQ1N0YWNrKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmg6CisKIDIwMTEtMDktMjYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyOTU5MTIpOiBDb25zZXJ2YXRpdmUgbWFya2lu
ZyBkb2Vzbid0IGZpbHRlciBvdXQgcG9pbnRlcnMgdG8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gOTU5NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0
LDcgQEAgX19aTjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMEpTRnVuY3Rpb25D
MUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUUKIF9f
Wk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0Mx
MHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMTFJbnRl
cnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaVJOM1dURjZWZWN0b3JJ
TlNfMTBTdGFja0ZyYW1lRUxtMEVFRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTNzX2RlZmF1bHRJ
bmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVTdHJ1Y3R1cmVFUk5TXzEySlNHbG9i
YWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdKU1ZhbHVlRVBLTlNfOUNsYXNzSW5mb0UK
IF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJlRVBO
M1dURjlCeXRlQXJyYXlFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gOTU5NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRpYyBib29sIGZp
bGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqKTsK
ICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KEV4ZWNTdGF0ZSopOwpAQCAtMTc0LDYgKzE3Niw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgInJ1biIsIGZ1
bmN0aW9uUnVuLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgImxvYWQiLCBm
dW5jdGlvbkxvYWQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAiY2hlY2tT
eW50YXgiLCBmdW5jdGlvbkNoZWNrU3ludGF4LCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24oZ2xv
YmFsRGF0YSwgImpzY1N0YWNrIiwgZnVuY3Rpb25KU0NTdGFjaywgMSk7CiAgICAgICAgIGFkZEZ1
bmN0aW9uKGdsb2JhbERhdGEsICJyZWFkbGluZSIsIGZ1bmN0aW9uUmVhZGxpbmUsIDApOwogICAg
ICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAicHJlY2lzZVRpbWUiLCBmdW5jdGlvblByZWNp
c2VUaW1lLCAwKTsKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC0yMjEsNiArMjI0LDIy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWIKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIFN0cmlu
ZyB0cmFjZSA9ICItLT4gU3RhY2sgdHJhY2U6XG4iOworICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBz
dGFja1RyYWNlOworICAgIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKCZleGVjLT5nbG9iYWxE
YXRhKCksIC0xLCBzdGFja1RyYWNlKTsKKyAgICBpbnQgaSA9IDA7CisKKyAgICBmb3IgKFZlY3Rv
cjxTdGFja0ZyYW1lPjo6aXRlcmF0b3IgaXRlciA9IHN0YWNrVHJhY2UuYmVnaW4oKTsgaXRlciA8
IHN0YWNrVHJhY2UuZW5kKCk7IGl0ZXIrKykgeworICAgICAgICBTdGFja0ZyYW1lIGxldmVsID0g
Kml0ZXI7CisgICAgICAgIHRyYWNlICs9IFN0cmluZzo6Zm9ybWF0KCIgICAgJWkgICAlc1xuIiwg
aSwgbGV2ZWwudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaSsrOworICAgIH0K
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdHJhY2UudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiA5NTk1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKLSNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgiCkBAIC02ODcs
NiArNjg2LDg4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW0KICAg
ICBleGNlcHRpb24tPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2FnZSkpOwogfQogCitzdGF0
aWMgdm9pZCBnZXRDYWxsZXJMaW5lKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGludCYgbGluZU51bWJlcikKK3sKKyAgICAodm9pZClnbG9iYWxEYXRhOwor
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OworICAgIGxpbmVOdW1iZXIgPSAtMTsKKyAgICBj
YWxsRnJhbWUgPSBjYWxsRnJhbWUtPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisKKyAgICBp
ZiAoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpID09IENhbGxGcmFtZTo6bm9DYWxsZXIoKSB8fCBj
YWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbEZyYW1lLT5j
YWxsZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpLT5jb2RlQmxvY2soKTsKKwor
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKKyAgICBpZiAoIWdsb2JhbERhdGEtPmNhblVzZUpJVCgp
KQorICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBlbHNlCisg
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPnJldHVyblBDKCkpOworI2VuZGlmCisjZWxzZQorICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkp
OworI2VuZGlmCisKKyAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVy
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKK30KKworc3RhdGljIEFMV0FZ
U19JTkxJTkUgY29uc3QgVVN0cmluZyBnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKENhbGxGcmFt
ZSogY2FsbEZyYW1lKSAKK3sKKyAgICBpZiAoY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxh
ZygpKQorICAgICAgICByZXR1cm4gVVN0cmluZygpOworI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
KyAgICBpZiAoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQorICAgICAgICBy
ZXR1cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+c291cmNlKCktPnVybCgpOworI2lmIEVOQUJM
RShKSVQpCisgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJs
ZSgpLT5zb3VyY2VVUkwoKTsKKyNlbmRpZgorI2Vsc2UKKyAgICByZXR1cm4gY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOworI2VuZGlmCit9CisK
K3N0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3RhY2tGcmFtZUNvZGVUeXBlKENhbGxGcmFt
ZSogY2FsbEZyYW1lKQoreworICAgIGlmIChjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFn
KCkpIAorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZU5hdGl2ZUNvZGU7CisKKyAgICBzd2l0Y2gg
KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmNvZGVUeXBlKCkpIHsKKyAgICBjYXNlIEV2YWxDb2Rl
OgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2RlOworICAgIGNhc2UgRnVuY3Rpb25D
b2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZTsKKyAgICBjYXNlIEds
b2JhbENvZGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lR2xvYmFsQ29kZTsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0YWNrRnJhbWVHbG9iYWxDb2Rl
OworfQorCit2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgaW50IGxpbmUsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cykKK3sKKyAgICBp
bnQgc3RhY2tMaW1pdCA9IDE1OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZ2xvYmFsRGF0
YS0+dG9wQ2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGlmICghY2Fs
bEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgfHwgIWNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCkpIAorICAgICAgICByZXR1cm47CisgICAgVVN0cmluZyBzb3VyY2VVUkw7
CisgICAgVVN0cmluZyB0cmFjZUxldmVsOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGFj
a0xpbWl0OyArK2kpIHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IENh
bGxGcmFtZTo6bm9DYWxsZXIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgc291cmNlVVJMID0gZ2V0U291cmNl
VVJMRnJvbUNhbGxGcmFtZShjYWxsRnJhbWUpOworCisgICAgICAgICAgICBTdGFja0ZyYW1lIHMg
PSB7IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBT
dHJvbmc8Q2FsbEZyYW1lPigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1lKSwgZ2V0U3RhY2tGcmFtZUNv
ZGVUeXBlKGNhbGxGcmFtZSksIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4oKmdsb2JhbERhdGEsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSwgbGluZSwgc291cmNlVVJM
fTsKKworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocyk7CisgICAgICAgIH0KKyAgICAgICAg
Z2V0Q2FsbGVyTGluZShnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGxpbmUpOworICAgICAgICBjYWxs
RnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFn
KCk7CisgICAgfQorfQorCiBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0
aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlvblZh
bHVlLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC03MDUsNyArNzg2LDkgQEAgTkVWRVJfSU5M
SU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogCiAgICAgICAgICAgICAvLyBGSVhNRTog
c2hvdWxkIG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0aGVzZSBwcm9wZXJ0aWVzIHRvIFZNIGdlbmVy
YXRlZCBleGNlcHRpb25zLAogICAgICAgICAgICAgLy8gYnV0IHRoZSBpbnNwZWN0b3IgY3VycmVu
dGx5IHJlcXVpcmVzIHRoZXNlIGZvciBhbGwgdGhyb3duIG9iamVjdHMuCi0gICAgICAgICAgICBh
ZGRFcnJvckluZm8oY2FsbEZyYW1lLCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJlckZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+c291cmNlKCkpOworICAgICAgICAgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0YWNrVHJh
Y2U7CisgICAgICAgICAgICBnZXRTdGFja1RyYWNlKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
Y29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBz
dGFja1RyYWNlKTsKKyAgICAgICAgICAgIGFkZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2VwdGlv
biwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3RhY2tUcmFjZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBpc0ludGVycnVwdCA9IGlzSW50ZXJydXB0ZWRFeGVjdXRpb25F
eGNlcHRpb24oZXhjZXB0aW9uKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhj
ZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCShyZXZpc2lvbiA5NTk1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgogI2luY2x1ZGUgIk9wY29kZS5oIgpAQCAtNDIsOCArNDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKKyAgICBj
bGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAg
Y2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBQ
cm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKQEAgLTYyLDYgKzYzLDU2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXaWxsRXhlY3V0ZVN0YXRlbWVudAogICAgIH07CiAK
KyAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7CisgICAgICAgIFN0YWNrRnJhbWVHbG9iYWxD
b2RlLAorICAgICAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJhbWVGdW5j
dGlvbkNvZGUsCisgICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCisgICAgfTsKKworICAgIHN0
cnVjdCBTdGFja0ZyYW1lIHsKKyAgICAgICAgU3Ryb25nPEpTT2JqZWN0PiBjYWxsZWU7CisgICAg
ICAgIFN0cm9uZzxDYWxsRnJhbWU+IGNhbGxGcmFtZTsKKyAgICAgICAgU3RhY2tGcmFtZUNvZGVU
eXBlIGNvZGVUeXBlOworICAgICAgICBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+IGV4ZWN1dGFibGU7
CisgICAgICAgIGludCBsaW5lOworICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTDsKKyAgICAgICAg
VVN0cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgaGFz
U291cmNlVVJMSW5mbyA9ICFzb3VyY2VVUkwuaXNOdWxsKCkgJiYgIXNvdXJjZVVSTC5pc0VtcHR5
KCk7CisgICAgICAgICAgICBib29sIGhhc0xpbmVJbmZvID0gbGluZSA+IC0xOworICAgICAgICAg
ICAgU3RyaW5nIHRyYWNlTGluZTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzdGFja0ZyYW1lQ2Fs
bGVlID0gY2FsbGVlLmdldCgpOworCisgICAgICAgICAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7Cisg
ICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKKyAgICAgICAgICAgICAgICBpZiAo
aGFzU291cmNlVVJMSW5mbykgCisgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xp
bmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoImV2YWwgYXQgJXM6JWQiLCBzb3VyY2VVUkwuYXNjaWko
KS5kYXRhKCksIGxpbmUpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IFN0cmluZzo6Zm9ybWF0KCJldmFsIGF0ICVzIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRyYWNlTGlu
ZSA9IFN0cmluZzo6Zm9ybWF0KCJldmFsIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFN0YWNrRnJhbWVOYXRpdmVDb2RlOgorICAgICAgICAgICAgICAgIHRyYWNl
TGluZSA9ICJOYXRpdmUgY29kZSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU6CisgICAgICAgICAgICAgICAgaWYgKHN0YWNr
RnJhbWVDYWxsZWUgJiYgc3RhY2tGcmFtZUNhbGxlZS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNf
aW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgVVN0cmluZyBmdW5jdGlvbk5hbWUgPSBhc0Z1
bmN0aW9uKHN0YWNrRnJhbWVDYWxsZWUpLT5uYW1lKGNhbGxGcmFtZS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJbmZvKSAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoIiVzIGF0ICVzOiVk
IiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCks
IGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IFN0cmluZzo6Zm9ybWF0KCIlcyBhdCAlcyIsIGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEoKSwg
c291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gU3RyaW5nOjpmb3JtYXQoIiVzXG4iLCBm
dW5jdGlvbk5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxDb2Rl
OgorICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3Jt
YXQoImF0ICVzOiVkIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpLCBsaW5lKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU3RyaW5nOjpmb3JtYXQoImF0ICVzIiwg
c291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiB0cmFjZUxpbmUuaW1wbCgpOworICAgICAgICB9CisgICAgfTsKKwogICAgIGNsYXNzIFRv
cENhbGxGcmFtZVNldHRlciB7CiAgICAgcHVibGljOgogICAgICAgICBUb3BDYWxsRnJhbWVTZXR0
ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWwsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMTI4LDYg
KzE3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBORVZFUl9JTkxJTkUgSlNWYWx1ZSBj
YWxsRXZhbChDYWxsRnJhbWUqLCBSZWdpc3RlckZpbGUqLCBSZWdpc3RlciogYXJndiwgaW50IGFy
Z2MsIGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5m
byogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERl
YnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBzdGF0aWMg
Y29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tGcmFtZUNvZGVUeXBl
LCBjb25zdCBVU3RyaW5nJiwgaW50KTsKKyAgICAgICAgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFj
ZShKU0dsb2JhbERhdGEqLCBpbnQgbGluZSwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzKTsK
IAogICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAg
IHZvaWQgc3RhcnRTYW1wbGluZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCShyZXZpc2lvbiA5NTk1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSkKICAgICAg
ICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgZXJyTXNnKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqZXhjZXB0
aW9uID0gYWRkRXJyb3JJbmZvKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGNy
ZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUsIHNv
dXJjZSk7CisgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNh
bEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UsIFZlY3RvcjxTdGFja0ZyYW1lPigp
KTsKICAgICAgICAgfQogCiAgICAgICAgIG1fYXJlbmEucmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNp
b24gOTU5NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAgICAgbWFjcm8oaW5wdXQp
IFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNQcm90b3R5cGVPZikgXAorICAg
IG1hY3JvKGpzY1N0YWNrKSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFjcm8obWVzc2Fn
ZSkgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gOTU5NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAog
I2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC0xMTYsNyArMTE3
LDcgQEAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVy
biBjcmVhdGVVUklFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwog
fQogCi1KU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNP
YmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorSlNPYmpl
Y3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBlcnJv
ciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgVmVjdG9yPFN0YWNr
RnJhbWU+JiBzdGFja1RyYWNlKQogewogICAgIGludHB0cl90IHNvdXJjZUlEID0gc291cmNlLnBy
b3ZpZGVyKCktPmFzSUQoKTsKICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwgPSBzb3VyY2Uu
cHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xMjcsMTMgKzEyOCwyMSBAQCBKU09iamVjdCogYWRkRXJy
b3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvCiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRl
cyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZUlkUHJvcGVydHlOYW1l
KSwganNOdW1iZXIoKGRvdWJsZSlzb3VyY2VJRCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAg
ICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmli
dXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZVVSTFByb3BlcnR5
TmFtZSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSk7CisgICAgaWYgKCFzdGFja1RyYWNlLmlzRW1wdHkoKSkgeworICAgICAgICBKU0FycmF5
KiBzdGFja1RyYWNlQXJyYXkgPSBKU0FycmF5OjpjcmVhdGUoKmdsb2JhbERhdGEsIGdsb2JhbERh
dGEtPmR5bmFtaWNHbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCkpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgeworICAgICAgICAg
ICAgVVN0cmluZyBzdGFja0xldmVsID0gIHN0YWNrVHJhY2VbaV0udG9TdHJpbmcoKTsKKyAgICAg
ICAgICAgIHN0YWNrVHJhY2VBcnJheS0+cHVzaChnbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUsIGpz
U3RyaW5nKGdsb2JhbERhdGEsIHN0YWNrTGV2ZWwpKTsgCisgICAgICAgIH0KKyAgICAgICAgZXJy
b3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPmpzY1N0YWNrLCBzdGFja1RyYWNlQXJyYXksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Cisg
ICAgfQogCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogYWRkRXJyb3JJbmZvKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlKQorSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgVmVj
dG9yPFN0YWNrRnJhbWU+JiBzdGFja1RyYWNlKQogewotICAgIHJldHVybiBhZGRFcnJvckluZm8o
JmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3IsIGxpbmUsIHNvdXJjZSk7CisgICAgcmV0dXJuIGFk
ZEVycm9ySW5mbygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvciwgbGluZSwgc291cmNlLCBzdGFj
a1RyYWNlKTsKIH0KIAogYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogZXJyb3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlz
aW9uIDk1OTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBFcnJvcl9oCiAjZGVmaW5lIEVy
cm9yX2gKIAorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIK
ICNpbmNsdWRlIDxzdGRpbnQuaD4KIApAQCAtNTUsOSArNTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIAogICAgIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiBlcnJvcik7Ci0gICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2Jh
bERhdGEqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7Cisg
ICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqLCBKU09iamVjdCogZXJyb3Is
IGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7
CiAgICAgLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgotICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8o
RXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYp
OworICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9y
LCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYp
OwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCiAgICAgSlNWYWx1ZSB0aHJvd0Vy
cm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTYwNjgpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAx
MS0wOS0yNiAgSnVhbiBDYXJsb3MgTW9udGVtYXlvciBFbG9zdWEgIDxqLm1vbnRAbWUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFcnJvci5zdGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVbml0IHRlc3RzIHRoYXQgY29udGFpbiBib3RoIG5vcm1h
bCBhbmQgc3BlY2lhbCBjYXNlcyBmb3Igc3RhY2sgdHJhY2UKKyAgICAgICAgZ2VuZXJhdGlvbi4K
KworICAgICAgICAqIGZhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzOgor
ICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHByaW50U3RhY2spOgorICAgICAgICAoaG9zdFRocm93ZXIpOgorICAgICAgICAoY2Fs
bGJhY2tlcik6CisgICAgICAgIChvdXRlcik6CisgICAgICAgIChpbm5lcik6CisgICAgICAgIChl
dmFsZXIpOgorICAgICAgICAobm9ybWFsT3V0ZXIpOgorICAgICAgICAobm9ybWFsSW5uZXIpOgor
ICAgICAgICAoc2NyaXB0ZXJJbm5lcik6CisgICAgICAgIChzY3JpcHRlck91dGVyKToKKyAgICAg
ICAgKiBmYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDktMjYgIE1paGFpIFBhcnBhcml0
YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUHV0IGJhY2sgYWxsIENocm9taXVt
IHBsYXRmb3JtIGZhaWxpbmcgZXhwZWN0YXRpb25zIGZvciBzb21lIHRlc3RzICh0aGV5CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gOTU5NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2Vw
dGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcg
QEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiAKIFBBU1MgZW51
bWVyYWJsZVByb3BlcnRpZXMoZXJyb3IpIGlzIFtdCi1QQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVz
KG5hdGl2ZUVycm9yKSBpcyBbImxpbmUiLCAic291cmNlSWQiLCAic291cmNlVVJMIl0KK1BBU1Mg
ZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpIGlzIFsibGluZSIsICJzb3VyY2VJZCIs
ICJzb3VyY2VVUkwiLCAianNjU3RhY2siXQogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0
aXZlRXJyb3IpLm5hbWUgaXMgIlJhbmdlRXJyb3IiCiBQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVP
ZihuYXRpdmVFcnJvcikubWVzc2FnZSBpcyAiIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBz
dGFjayB0cmFjZSBjb3JlY3RuZXNzIGluIHNwZWNpYWwgY2FzZXMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIG5vcm1hbElubmVyIGF0
IHN0YWNrLXRyYWNlLmpzOjIxCisgICAgMSAgIG5vcm1hbE91dGVyIGF0IHN0YWNrLXRyYWNlLmpz
OjIwCisgICAgMiAgIGF0IHN0YWNrLXRyYWNlLmpzOjI2CisKKy0tPiBTdGFjayBUcmFjZToKKyAg
ICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MTgKKyAgICAxICAgZXZhbAorICAgIDIgICBl
dmFsZXIgYXQgc3RhY2stdHJhY2UuanMKKyAgICAzICAgYXQgc3RhY2stdHJhY2UuanM6MjkKKwor
LS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoxOAorICAg
IDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczoxNworICAgIDIgICBldmFsCisgICAgMyAgIGV2
YWxlciBhdCBzdGFjay10cmFjZS5qcworICAgIDQgICBhdCBzdGFjay10cmFjZS5qczozMAorCist
LT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjE4CisgICAg
MSAgIGF0IHN0YWNrLXRyYWNlLmpzOjMzCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5u
ZXIgYXQgc3RhY2stdHJhY2UuanM6MTgKKyAgICAxICAgb3V0ZXIgYXQgc3RhY2stdHJhY2UuanM6
MTcKKyAgICAyICAgYXQgc3RhY2stdHJhY2UuanM6MzQKKworLS0+IFN0YWNrIFRyYWNlOgorICAg
IDAgICBob3N0VGhyb3dlciBhdCBzdGFjay10cmFjZS5qczoxNQorICAgIDEgICBhdCBzdGFjay10
cmFjZS5qczozNworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGh0bWxJbm5lciBhdCBzdGFj
ay10cmFjZS5odG1sOjEwCisgICAgMSAgIHNjcmlwdGVySW5uZXIgYXQgc3RhY2stdHJhY2UuanM6
MjIKKyAgICAyICAgYXQgc3RhY2stdHJhY2UuanM6MzkKKworLS0+IFN0YWNrIFRyYWNlOgorICAg
IDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMAorICAgIDEgICBodG1sT3V0ZXIg
YXQgc3RhY2stdHJhY2UuaHRtbDoxMQorICAgIDIgICBzY3JpcHRlck91dGVyIGF0IHN0YWNrLXRy
YWNlLmpzOjIzCisgICAgMyAgIGF0IHN0YWNrLXRyYWNlLmpzOjQwCisKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKwk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+CisJPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwk8cCBpZD0iY29u
c29sZSI+PC9wPgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbElubmVyKCkgeyB0aHJvdyBuZXcgRXJy
b3IoIkVycm9yIGluIEhUTUwiKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbE91
dGVyKCkgeyBodG1sSW5uZXIoKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXBy
b3BlcnRpZXMuanMJKHJldmlzaW9uIDk1OTU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDcg
KzE2LDcgQEAgdHJ5IHsKICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoIm1lc3NhZ2UiKTsKIAog
ICAgIHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVydGllcyhlcnJvciknLCAnW10nKTsKLSAgICBz
aG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpJywgJ1sibGluZSIsICJz
b3VyY2VJZCIsICJzb3VyY2VVUkwiXScpOworICAgIHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVy
dGllcyhuYXRpdmVFcnJvciknLCAnWyJsaW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCIsICJq
c2NTdGFjayJdJyk7CiAKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2
ZUVycm9yKS5uYW1lJywgJyJSYW5nZUVycm9yIicpOwogICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0
UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm1lc3NhZ2UnLCAnIiInKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKK2Rlc2NyaXB0aW9uKAorJ1RoaXMgdGVzdCBjaGVj
a3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVzcyBpbiBzcGVjaWFsIGNhc2VzLicKKyk7CisKK2Z1bmN0
aW9uIHByaW50U3RhY2soc3RhY2tUcmFjZSkgeworCWRlYnVnKCItLT4gU3RhY2sgVHJhY2U6IikK
Kwl2YXIgaSA9IDA7CisJZm9yICh2YXIgbGV2ZWwgaW4gc3RhY2tUcmFjZSkgeworCQlkZWJ1Zygi
ICAgICIgKyBpICsgIiAgICIgKyBzdGFja1RyYWNlW2xldmVsXS5zdWJzdHJpbmcoMCwgc3RhY2tU
cmFjZVtsZXZlbF0uaW5kZXhPZignZmlsZTonKSkgKyBzdGFja1RyYWNlW2xldmVsXS5zdWJzdHJp
bmcoc3RhY2tUcmFjZVtsZXZlbF0ubGFzdEluZGV4T2YoJy8nKSsxKSk7CisJCWkrKzsKKwl9CisJ
ZGVidWcoJycpOworfQorCitmdW5jdGlvbiBob3N0VGhyb3dlcigpIHsgRWxlbWVudC5wcm90b3R5
cGUuYXBwZW5kQ2hpbGQuY2FsbCh7IH0sIFt7IH1dKTsgIH0KK2Z1bmN0aW9uIGNhbGxiYWNrZXIo
ZikgeyBbMF0ubWFwKGYpOyB9CitmdW5jdGlvbiBvdXRlcihlcnJvck5hbWUpIHsgaW5uZXIoZXJy
b3JOYW1lKTsgfQorZnVuY3Rpb24gaW5uZXIoZXJyb3JOYW1lKSB7IHRocm93IG5ldyBFcnJvcigi
RXJyb3IgaW4gIiArIGVycm9yTmFtZSk7IH0KK2Z1bmN0aW9uIGV2YWxlcihjb2RlKSB7IGV2YWwo
Y29kZSk7IH0KK2Z1bmN0aW9uIG5vcm1hbE91dGVyKCkgeyBub3JtYWxJbm5lcigpOyB9CitmdW5j
dGlvbiBub3JtYWxJbm5lcigpIHsgaWYodGhpc1ZhckRvZXNudEV4aXN0KSBmYWlsSWZUcnVlKCJz
aG91bGRGYWlsQmVmb3JlVGhpcyIpIH07CitmdW5jdGlvbiBzY3JpcHRlcklubmVyKCkgeyBodG1s
SW5uZXIoKTsgfQorZnVuY3Rpb24gc2NyaXB0ZXJPdXRlcigpIHsgaHRtbE91dGVyKCk7IH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRXhwZWN0ZWQgZnVuY3Rpb25zIGluIHN0YWNrIHRyYWNlCisvLyBOb3Jt
YWwgQ2FzZQordHJ5IHsgbm9ybWFsT3V0ZXIoKSB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5q
c2NTdGFjaykgfSAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbE91dGVyIC0+IG5vcm1hbElu
bmVyCisKKy8vIEV2YWwgQ2FzZQordHJ5IHsgZXZhbGVyKCJpbm5lcignaW5uZXIgZXZhbCcpOyIp
OyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgIC8vIGV2YWxlciAtPiBl
dmFsIC0+IGlubmVyCit0cnkgeyBldmFsZXIoIm91dGVyKCdvdXRlciBldmFsJyk7Iik7IH0gY2F0
Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4g
b3V0ZXIgLT4gaW5uZXIKKworLy8gRnVuY3Rpb24gQ2FsbGJhY2sgQ2FzZQordHJ5IHsgY2FsbGJh
Y2tlcihpbm5lcignaW5uZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NT
dGFjayk7IH0gICAvLyBjYWxsYmFja2VyIC0+IG1hcCAtPiBpbm5lcgordHJ5IHsgY2FsbGJhY2tl
cihvdXRlcignb3V0ZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFj
ayk7IH0gICAvLyBjYWxsYmFja2VyIC0+IG1hcCAtPiBvdXRlciAtPiBpbm5lcgorCisvLyBIb3N0
IENvZGUgQ2FzZQordHJ5IHsgaG9zdFRocm93ZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNr
KGUuanNjU3RhY2spOyB9ICAgICAgICAgICAgICAgICAgICAvLyBob3N0VGhyb3dlcgorCit0cnkg
eyBzY3JpcHRlcklubmVyKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9
ICAgICAgICAgICAgICAgICAgIC8vIHByb2dyYW0gLT4gc2NyaXB0ZXIgLT4gaW5uZXIKK3RyeSB7
IHNjcmlwdGVyT3V0ZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spIH0g
ICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbSAtPiBzY3JpcHRlciAtPiBvdXRlciAtPiBpbm5l
cgorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gOTU5
NTkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw2ICs0OTcsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFz
dC9mcmFtZXMvY3Jvc3Mtc2l0ZS10aAogLy8gdGhyb3cuICBWOCBmb2xsb3dzIHRoZSBzcGVjLgog
V09OVEZJWCBTS0lQIDogZmFzdC9qcy9yZXBhcnNpbmctc2VtaWNvbG9uLWluc2VydGlvbi5odG1s
ID0gRkFJTAogCisvLyBUaGlzIHRlc3RzIHN0YWNrLXRyYWNlcyB0aGF0IGFyZSBnZW5lcmF0ZWQg
YnkgSlNDLiBUaGlzIHRlc3Qgc2hvdWxkCisvLyBmYWlsIHNpbmNlIGl0IGlzIHNwZWNpZmljIHRv
IGpzYy4KK1dPTlRGSVggU0tJUCA6IGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbCA9IEZBSUwKKwog
Ly8gUnViYmVyLWJhbmRpbmcgaXMgY3VycmVudGx5IGEgQ0cgb25seSBmZWF0dXJlLgogV09OVEZJ
WCBDUFUgR1BVIDogcGxhdGZvcm0vY2hyb21pdW0vcnViYmVyYmFuZGluZyA9IEZBSUwKIFdPTlRG
SVggQ1BVIEdQVSA6IHBsYXRmb3JtL2Nocm9taXVtLWdwdS9jb21wb3NpdGluZy9ydWJiZXJiYW5k
aW5nID0gSU1BR0UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108861</attachid>
            <date>2011-09-27 09:58:25 -0700</date>
            <delta_ts>2012-01-31 15:02:05 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-66994-20110927125823.patch</filename>
            <type>text/plain</type>
            <size>25659</size>
            <attacher name="Juan C. Montemayor">j.mont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTYwNjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMjYgIEp1YW4gQ2FybG9zIE1vbnRlbWF5b3IgRWxvc3VhICA8ai5tb250QG1lLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgRXJyb3Iuc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1dGlsaXplcyB0b3BDYWxsRnJh
bWUgdG8gY3JlYXRlIGEgc3RhY2sgdHJhY2Ugd2hlbgorICAgICAgICBhbiBlcnJvciBpcyB0aHJv
d24uIFVzZXJzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIHVzZSB0aGUgc3RhY2soKQorICAgICAgICBj
b21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5mb3JtYXRpb24u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxlckxpbmUp
OgorICAgICAgICAoSlNDOjpnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dFN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24p
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OlN0
YWNrRnJhbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkpTQ1N0YWNrKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmg6CisKIDIwMTEtMDktMjYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyOTU5MTIpOiBDb25zZXJ2YXRpdmUgbWFya2lu
ZyBkb2Vzbid0IGZpbHRlciBvdXQgcG9pbnRlcnMgdG8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gOTU5NTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0
LDcgQEAgX19aTjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMEpTRnVuY3Rpb25D
MUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUUKIF9f
Wk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0Mx
MHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMTFJbnRl
cnByZXRlcjEzZ2V0U3RhY2tUcmFjZUVQTlNfMTJKU0dsb2JhbERhdGFFaVJOM1dURjZWZWN0b3JJ
TlNfMTBTdGFja0ZyYW1lRUxtMEVFRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTNzX2RlZmF1bHRJ
bmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVTdHJ1Y3R1cmVFUk5TXzEySlNHbG9i
YWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdKU1ZhbHVlRVBLTlNfOUNsYXNzSW5mb0UK
IF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJlRVBO
M1dURjlCeXRlQXJyYXlFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gOTU5NTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRpYyBib29sIGZp
bGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqKTsK
ICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KEV4ZWNTdGF0ZSopOwpAQCAtMTc0LDYgKzE3Niw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgInJ1biIsIGZ1
bmN0aW9uUnVuLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgImxvYWQiLCBm
dW5jdGlvbkxvYWQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAiY2hlY2tT
eW50YXgiLCBmdW5jdGlvbkNoZWNrU3ludGF4LCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24oZ2xv
YmFsRGF0YSwgImpzY1N0YWNrIiwgZnVuY3Rpb25KU0NTdGFjaywgMSk7CiAgICAgICAgIGFkZEZ1
bmN0aW9uKGdsb2JhbERhdGEsICJyZWFkbGluZSIsIGZ1bmN0aW9uUmVhZGxpbmUsIDApOwogICAg
ICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAicHJlY2lzZVRpbWUiLCBmdW5jdGlvblByZWNp
c2VUaW1lLCAwKTsKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC0yMjEsNiArMjI0LDIy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWIKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIFN0cmlu
ZyB0cmFjZSA9ICItLT4gU3RhY2sgdHJhY2U6XG4iOworICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBz
dGFja1RyYWNlOworICAgIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKCZleGVjLT5nbG9iYWxE
YXRhKCksIC0xLCBzdGFja1RyYWNlKTsKKyAgICBpbnQgaSA9IDA7CisKKyAgICBmb3IgKFZlY3Rv
cjxTdGFja0ZyYW1lPjo6aXRlcmF0b3IgaXRlciA9IHN0YWNrVHJhY2UuYmVnaW4oKTsgaXRlciA8
IHN0YWNrVHJhY2UuZW5kKCk7IGl0ZXIrKykgeworICAgICAgICBTdGFja0ZyYW1lIGxldmVsID0g
Kml0ZXI7CisgICAgICAgIHRyYWNlICs9IFN0cmluZzo6Zm9ybWF0KCIgICAgJWkgICAlc1xuIiwg
aSwgbGV2ZWwudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaSsrOworICAgIH0K
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdHJhY2UudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDk1OTU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsNyBAQCBF
WFBPUlRTCiAgICAgP2dldFByb3BlcnR5RGVzY3JpcHRvckBKU09iamVjdEBKU0NAQFFBRV9OUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQEBaCiAg
ICAgP2dldFByb3BlcnR5TmFtZXNASlNPYmplY3RASlNDQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUFW
UHJvcGVydHlOYW1lQXJyYXlAMkBXNEVudW1lcmF0aW9uTW9kZUAyQEBaCiAgICAgP2dldFNsaWNl
QEFyZ0xpc3RASlNDQEBRQkVYSEFBVjEyQEBaCisgICAgP2dldFN0YWNrVHJhY2VASW50ZXJwcmV0
ZXJASlNDQEBTQVhQQVZKU0dsb2JhbERhdGFAMkBIQUFWPyRWZWN0b3JAVVN0YWNrRnJhbWVASlND
QEAkMEFAQFdURkBAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBKU0NAQFFCRT9BVlVTdHJpbmdA
MkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFX05QQVZF
eGVjU3RhdGVAMkBBQVZVU3RyaW5nQDJAQFoKICAgICA/Z2V0dGVyQFByb3BlcnR5RGVzY3JpcHRv
ckBKU0NAQFFCRT9BVkpTVmFsdWVAMkBYWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiA5NTk1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKLSNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgiCkBAIC02ODcsNiAr
Njg2LDg4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW0KICAgICBl
eGNlcHRpb24tPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2FnZSkpOwogfQogCitzdGF0aWMg
dm9pZCBnZXRDYWxsZXJMaW5lKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGludCYgbGluZU51bWJlcikKK3sKKyAgICAodm9pZClnbG9iYWxEYXRhOworICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OworICAgIGxpbmVOdW1iZXIgPSAtMTsKKyAgICBjYWxs
RnJhbWUgPSBjYWxsRnJhbWUtPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisKKyAgICBpZiAo
Y2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpID09IENhbGxGcmFtZTo6bm9DYWxsZXIoKSB8fCBjYWxs
RnJhbWUtPmNhbGxlckZyYW1lKCktPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbEZyYW1lLT5jYWxs
ZXJGcmFtZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpLT5jb2RlQmxvY2soKTsKKworI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKKyAgICBpZiAoIWdsb2JhbERhdGEtPmNhblVzZUpJVCgpKQor
ICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBlbHNlCisgICAg
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblBDKCkpOworI2VuZGlmCisjZWxzZQorICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOwor
I2VuZGlmCisKKyAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKK30KKworc3RhdGljIEFMV0FZU19J
TkxJTkUgY29uc3QgVVN0cmluZyBnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKENhbGxGcmFtZSog
Y2FsbEZyYW1lKSAKK3sKKyAgICBpZiAoY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygp
KQorICAgICAgICByZXR1cm4gVVN0cmluZygpOworI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKKyAg
ICBpZiAoIWNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQorICAgICAgICByZXR1
cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+c291cmNlKCktPnVybCgpOworI2lmIEVOQUJMRShK
SVQpCisgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgp
LT5zb3VyY2VVUkwoKTsKKyNlbmRpZgorI2Vsc2UKKyAgICByZXR1cm4gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOworI2VuZGlmCit9CisKK3N0
YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3RhY2tGcmFtZUNvZGVUeXBlKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIGlmIChjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkp
IAorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZU5hdGl2ZUNvZGU7CisKKyAgICBzd2l0Y2ggKGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmNvZGVUeXBlKCkpIHsKKyAgICBjYXNlIEV2YWxDb2RlOgor
ICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2RlOworICAgIGNhc2UgRnVuY3Rpb25Db2Rl
OgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZTsKKyAgICBjYXNlIEdsb2Jh
bENvZGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lR2xvYmFsQ29kZTsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0YWNrRnJhbWVHbG9iYWxDb2RlOwor
fQorCit2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmUsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cykKK3sKKyAgICBpbnQg
c3RhY2tMaW1pdCA9IDE1OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZ2xvYmFsRGF0YS0+
dG9wQ2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOworICAgIGlmICghY2FsbEZy
YW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgfHwgIWNhbGxGcmFtZS0+
Y29kZUJsb2NrKCkpIAorICAgICAgICByZXR1cm47CisgICAgVVN0cmluZyBzb3VyY2VVUkw7Cisg
ICAgVVN0cmluZyB0cmFjZUxldmVsOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGFja0xp
bWl0OyArK2kpIHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IENhbGxG
cmFtZTo6bm9DYWxsZXIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2FsbEZy
YW1lLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgc291cmNlVVJMID0gZ2V0U291cmNlVVJM
RnJvbUNhbGxGcmFtZShjYWxsRnJhbWUpOworCisgICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7
IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBTdHJv
bmc8Q2FsbEZyYW1lPigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1lKSwgZ2V0U3RhY2tGcmFtZUNvZGVU
eXBlKGNhbGxGcmFtZSksIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4oKmdsb2JhbERhdGEsIGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSwgbGluZSwgc291cmNlVVJMfTsK
KworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocyk7CisgICAgICAgIH0KKyAgICAgICAgZ2V0
Q2FsbGVyTGluZShnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGxpbmUpOworICAgICAgICBjYWxsRnJh
bWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7
CisgICAgfQorfQorCiBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJv
d0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVl
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC03MDUsNyArNzg2LDkgQEAgTkVWRVJfSU5MSU5F
IEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dAogCiAgICAgICAgICAgICAvLyBGSVhNRTogc2hv
dWxkIG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0aGVzZSBwcm9wZXJ0aWVzIHRvIFZNIGdlbmVyYXRl
ZCBleGNlcHRpb25zLAogICAgICAgICAgICAgLy8gYnV0IHRoZSBpbnNwZWN0b3IgY3VycmVudGx5
IHJlcXVpcmVzIHRoZXNlIGZvciBhbGwgdGhyb3duIG9iamVjdHMuCi0gICAgICAgICAgICBhZGRF
cnJvckluZm8oY2FsbEZyYW1lLCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+c291cmNlKCkpOworICAgICAgICAgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0YWNrVHJhY2U7
CisgICAgICAgICAgICBnZXRTdGFja1RyYWNlKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBzdGFj
a1RyYWNlKTsKKyAgICAgICAgICAgIGFkZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2VwdGlvbiwg
Y29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3RhY2tUcmFjZSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpc0ludGVycnVwdCA9IGlzSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNl
cHRpb24oZXhjZXB0aW9uKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0
aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCShyZXZpc2lvbiA5NTk1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAK
ICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgIk9wY29kZS5oIgpAQCAtNDIsOCArNDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKKyAgICBjbGFz
cyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAgY2xh
c3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBQcm9n
cmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKQEAgLTYyLDYgKzYzLDU2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBXaWxsRXhlY3V0ZVN0YXRlbWVudAogICAgIH07CiAKKyAg
ICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7CisgICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2Rl
LAorICAgICAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJhbWVGdW5jdGlv
bkNvZGUsCisgICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCisgICAgfTsKKworICAgIHN0cnVj
dCBTdGFja0ZyYW1lIHsKKyAgICAgICAgU3Ryb25nPEpTT2JqZWN0PiBjYWxsZWU7CisgICAgICAg
IFN0cm9uZzxDYWxsRnJhbWU+IGNhbGxGcmFtZTsKKyAgICAgICAgU3RhY2tGcmFtZUNvZGVUeXBl
IGNvZGVUeXBlOworICAgICAgICBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+IGV4ZWN1dGFibGU7Cisg
ICAgICAgIGludCBsaW5lOworICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTDsKKyAgICAgICAgVVN0
cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgaGFzU291
cmNlVVJMSW5mbyA9ICFzb3VyY2VVUkwuaXNOdWxsKCkgJiYgIXNvdXJjZVVSTC5pc0VtcHR5KCk7
CisgICAgICAgICAgICBib29sIGhhc0xpbmVJbmZvID0gbGluZSA+IC0xOworICAgICAgICAgICAg
U3RyaW5nIHRyYWNlTGluZTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzdGFja0ZyYW1lQ2FsbGVl
ID0gY2FsbGVlLmdldCgpOworCisgICAgICAgICAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CisgICAg
ICAgICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKKyAgICAgICAgICAgICAgICBpZiAoaGFz
U291cmNlVVJMSW5mbykgCisgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJ
bmZvID8gU3RyaW5nOjpmb3JtYXQoImV2YWwgYXQgJXM6JWQiLCBzb3VyY2VVUkwuYXNjaWkoKS5k
YXRhKCksIGxpbmUpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IFN0cmluZzo6Zm9ybWF0KCJldmFsIGF0ICVzIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9
IFN0cmluZzo6Zm9ybWF0KCJldmFsIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFN0YWNrRnJhbWVOYXRpdmVDb2RlOgorICAgICAgICAgICAgICAgIHRyYWNlTGlu
ZSA9ICJOYXRpdmUgY29kZSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU6CisgICAgICAgICAgICAgICAgaWYgKHN0YWNrRnJh
bWVDYWxsZWUgJiYgc3RhY2tGcmFtZUNhbGxlZS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5m
bykpIHsKKyAgICAgICAgICAgICAgICAgICAgVVN0cmluZyBmdW5jdGlvbk5hbWUgPSBhc0Z1bmN0
aW9uKHN0YWNrRnJhbWVDYWxsZWUpLT5uYW1lKGNhbGxGcmFtZS5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJbmZvKSAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoIiVzIGF0ICVzOiVkIiwg
ZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCksIGxp
bmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0
cmluZzo6Zm9ybWF0KCIlcyBhdCAlcyIsIGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEoKSwgc291
cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gU3RyaW5nOjpmb3JtYXQoIiVzXG4iLCBmdW5j
dGlvbk5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxDb2RlOgor
ICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQo
ImF0ICVzOiVkIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpLCBsaW5lKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU3RyaW5nOjpmb3JtYXQoImF0ICVzIiwgc291
cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biB0cmFjZUxpbmUuaW1wbCgpOworICAgICAgICB9CisgICAgfTsKKwogICAgIGNsYXNzIFRvcENh
bGxGcmFtZVNldHRlciB7CiAgICAgcHVibGljOgogICAgICAgICBUb3BDYWxsRnJhbWVTZXR0ZXIo
SlNHbG9iYWxEYXRhJiBnbG9iYWwsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMTI4LDYgKzE3
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBORVZFUl9JTkxJTkUgSlNWYWx1ZSBjYWxs
RXZhbChDYWxsRnJhbWUqLCBSZWdpc3RlckZpbGUqLCBSZWdpc3RlciogYXJndiwgaW50IGFyZ2Ms
IGludCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyog
dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVn
SG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBzdGF0aWMgY29u
c3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tGcmFtZUNvZGVUeXBlLCBj
b25zdCBVU3RyaW5nJiwgaW50KTsKKyAgICAgICAgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFjZShK
U0dsb2JhbERhdGEqLCBpbnQgbGluZSwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzKTsKIAog
ICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgIHZv
aWQgc3RhcnRTYW1wbGluZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCShyZXZpc2lvbiA5NTk1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIGVsc2UgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSkKICAgICAgICAg
ICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgZXJyTXNnKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqZXhjZXB0aW9u
ID0gYWRkRXJyb3JJbmZvKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGNyZWF0
ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUsIHNvdXJj
ZSk7CisgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNhbEds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UsIFZlY3RvcjxTdGFja0ZyYW1lPigpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIG1fYXJlbmEucmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24g
OTU5NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAgICAgbWFjcm8oaW5wdXQpIFwK
ICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNQcm90b3R5cGVPZikgXAorICAgIG1h
Y3JvKGpzY1N0YWNrKSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFjcm8obWVzc2FnZSkg
XAogICAgIG1hY3JvKG11bHRpbGluZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gOTU5NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lu
Y2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC0xMTYsNyArMTE3LDcg
QEAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBj
cmVhdGVVUklFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQog
Ci1KU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNPYmpl
Y3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorSlNPYmplY3Qq
IGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBlcnJvciwg
aW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgVmVjdG9yPFN0YWNrRnJh
bWU+JiBzdGFja1RyYWNlKQogewogICAgIGludHB0cl90IHNvdXJjZUlEID0gc291cmNlLnByb3Zp
ZGVyKCktPmFzSUQoKTsKICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwgPSBzb3VyY2UucHJv
dmlkZXIoKS0+dXJsKCk7CkBAIC0xMjcsMTMgKzEyOCwyMSBAQCBKU09iamVjdCogYWRkRXJyb3JJ
bmZvKEpTR2xvYmFsRGF0YSogZ2xvCiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhn
bG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZUlkUHJvcGVydHlOYW1lKSwg
anNOdW1iZXIoKGRvdWJsZSlzb3VyY2VJRCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAg
aWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRl
cyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZVVSTFByb3BlcnR5TmFt
ZSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSk7CisgICAgaWYgKCFzdGFja1RyYWNlLmlzRW1wdHkoKSkgeworICAgICAgICBKU0FycmF5KiBz
dGFja1RyYWNlQXJyYXkgPSBKU0FycmF5OjpjcmVhdGUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEt
PmR5bmFtaWNHbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCkpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAg
VVN0cmluZyBzdGFja0xldmVsID0gIHN0YWNrVHJhY2VbaV0udG9TdHJpbmcoKTsKKyAgICAgICAg
ICAgIHN0YWNrVHJhY2VBcnJheS0+cHVzaChnbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUsIGpzU3Ry
aW5nKGdsb2JhbERhdGEsIHN0YWNrTGV2ZWwpKTsgCisgICAgICAgIH0KKyAgICAgICAgZXJyb3It
PnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMt
PmpzY1N0YWNrLCBzdGFja1RyYWNlQXJyYXksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAg
fQogCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQorSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgVmVjdG9y
PFN0YWNrRnJhbWU+JiBzdGFja1RyYWNlKQogewotICAgIHJldHVybiBhZGRFcnJvckluZm8oJmV4
ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3IsIGxpbmUsIHNvdXJjZSk7CisgICAgcmV0dXJuIGFkZEVy
cm9ySW5mbygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvciwgbGluZSwgc291cmNlLCBzdGFja1Ry
YWNlKTsKIH0KIAogYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
ZXJyb3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9u
IDk1OTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBFcnJvcl9oCiAjZGVmaW5lIEVycm9y
X2gKIAorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlIDxzdGRpbnQuaD4KIApAQCAtNTUsOSArNTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIC8vIE1ldGhvZHMgdG8gYWRkIAogICAgIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiBlcnJvcik7Ci0gICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERh
dGEqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAg
SlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqLCBKU09iamVjdCogZXJyb3IsIGlu
dCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7CiAg
ICAgLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgotICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhl
Y1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpOwor
ICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBp
bnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYpOwog
CiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCiAgICAgSlNWYWx1ZSB0aHJvd0Vycm9y
KEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTYwNjgpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0w
OS0yNiAgSnVhbiBDYXJsb3MgTW9udGVtYXlvciBFbG9zdWEgIDxqLm1vbnRAbWUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBFcnJvci5zdGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVbml0IHRlc3RzIHRoYXQgY29udGFpbiBib3RoIG5vcm1hbCBh
bmQgc3BlY2lhbCBjYXNlcyBmb3Igc3RhY2sgdHJhY2UKKyAgICAgICAgZ2VuZXJhdGlvbi4KKwor
ICAgICAgICAqIGZhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzOgorICAg
ICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHByaW50U3RhY2spOgorICAgICAgICAoaG9zdFRocm93ZXIpOgorICAgICAgICAoY2FsbGJh
Y2tlcik6CisgICAgICAgIChvdXRlcik6CisgICAgICAgIChpbm5lcik6CisgICAgICAgIChldmFs
ZXIpOgorICAgICAgICAobm9ybWFsT3V0ZXIpOgorICAgICAgICAobm9ybWFsSW5uZXIpOgorICAg
ICAgICAoc2NyaXB0ZXJJbm5lcik6CisgICAgICAgIChzY3JpcHRlck91dGVyKToKKyAgICAgICAg
KiBmYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9zdGFjay10cmFjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDktMjYgIE1paGFpIFBhcnBhcml0YSAg
PG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUHV0IGJhY2sgYWxsIENocm9taXVtIHBs
YXRmb3JtIGZhaWxpbmcgZXhwZWN0YXRpb25zIGZvciBzb21lIHRlc3RzICh0aGV5CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gOTU5NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlv
bi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAg
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiAKIFBBU1MgZW51bWVy
YWJsZVByb3BlcnRpZXMoZXJyb3IpIGlzIFtdCi1QQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKG5h
dGl2ZUVycm9yKSBpcyBbImxpbmUiLCAic291cmNlSWQiLCAic291cmNlVVJMIl0KK1BBU1MgZW51
bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpIGlzIFsibGluZSIsICJzb3VyY2VJZCIsICJz
b3VyY2VVUkwiLCAianNjU3RhY2siXQogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZl
RXJyb3IpLm5hbWUgaXMgIlJhbmdlRXJyb3IiCiBQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihu
YXRpdmVFcnJvcikubWVzc2FnZSBpcyAiIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBzdGFj
ayB0cmFjZSBjb3JlY3RuZXNzIGluIHNwZWNpYWwgY2FzZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIG5vcm1hbElubmVyIGF0IHN0
YWNrLXRyYWNlLmpzOjIxCisgICAgMSAgIG5vcm1hbE91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjIw
CisgICAgMiAgIGF0IHN0YWNrLXRyYWNlLmpzOjI2CisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAw
ICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MTgKKyAgICAxICAgZXZhbAorICAgIDIgICBldmFs
ZXIgYXQgc3RhY2stdHJhY2UuanMKKyAgICAzICAgYXQgc3RhY2stdHJhY2UuanM6MjkKKworLS0+
IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoxOAorICAgIDEg
ICBvdXRlciBhdCBzdGFjay10cmFjZS5qczoxNworICAgIDIgICBldmFsCisgICAgMyAgIGV2YWxl
ciBhdCBzdGFjay10cmFjZS5qcworICAgIDQgICBhdCBzdGFjay10cmFjZS5qczozMAorCistLT4g
U3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjE4CisgICAgMSAg
IGF0IHN0YWNrLXRyYWNlLmpzOjMzCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIg
YXQgc3RhY2stdHJhY2UuanM6MTgKKyAgICAxICAgb3V0ZXIgYXQgc3RhY2stdHJhY2UuanM6MTcK
KyAgICAyICAgYXQgc3RhY2stdHJhY2UuanM6MzQKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAg
ICBob3N0VGhyb3dlciBhdCBzdGFjay10cmFjZS5qczoxNQorICAgIDEgICBhdCBzdGFjay10cmFj
ZS5qczozNworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGh0bWxJbm5lciBhdCBzdGFjay10
cmFjZS5odG1sOjEwCisgICAgMSAgIHNjcmlwdGVySW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MjIK
KyAgICAyICAgYXQgc3RhY2stdHJhY2UuanM6MzkKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAg
ICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMAorICAgIDEgICBodG1sT3V0ZXIgYXQg
c3RhY2stdHJhY2UuaHRtbDoxMQorICAgIDIgICBzY3JpcHRlck91dGVyIGF0IHN0YWNrLXRyYWNl
LmpzOjIzCisgICAgMyAgIGF0IHN0YWNrLXRyYWNlLmpzOjQwCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9zdGFjay10cmFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvc3RhY2stdHJhY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
Kwk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+CisJPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKwk8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwk8cCBpZD0iY29uc29s
ZSI+PC9wPgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbElubmVyKCkgeyB0aHJvdyBuZXcgRXJyb3Io
IkVycm9yIGluIEhUTUwiKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQ+ZnVuY3Rpb24gaHRtbE91dGVy
KCkgeyBodG1sSW5uZXIoKTsgfTwvc2NyaXB0PgorCTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
c3RhY2stdHJhY2UuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3Bl
cnRpZXMuanMJKHJldmlzaW9uIDk1OTU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQt
dGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDcgKzE2
LDcgQEAgdHJ5IHsKICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoIm1lc3NhZ2UiKTsKIAogICAg
IHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVydGllcyhlcnJvciknLCAnW10nKTsKLSAgICBzaG91
bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpJywgJ1sibGluZSIsICJzb3Vy
Y2VJZCIsICJzb3VyY2VVUkwiXScpOworICAgIHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVydGll
cyhuYXRpdmVFcnJvciknLCAnWyJsaW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCIsICJqc2NT
dGFjayJdJyk7CiAKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVy
cm9yKS5uYW1lJywgJyJSYW5nZUVycm9yIicpOwogICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJv
dG90eXBlT2YobmF0aXZlRXJyb3IpLm1lc3NhZ2UnLCAnIiInKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKK2Rlc2NyaXB0aW9uKAorJ1RoaXMgdGVzdCBjaGVja3Mg
c3RhY2sgdHJhY2UgY29yZWN0bmVzcyBpbiBzcGVjaWFsIGNhc2VzLicKKyk7CisKK2Z1bmN0aW9u
IHByaW50U3RhY2soc3RhY2tUcmFjZSkgeworCWRlYnVnKCItLT4gU3RhY2sgVHJhY2U6IikKKwl2
YXIgaSA9IDA7CisJZm9yICh2YXIgbGV2ZWwgaW4gc3RhY2tUcmFjZSkgeworCQlkZWJ1ZygiICAg
ICIgKyBpICsgIiAgICIgKyBzdGFja1RyYWNlW2xldmVsXS5zdWJzdHJpbmcoMCwgc3RhY2tUcmFj
ZVtsZXZlbF0uaW5kZXhPZignZmlsZTonKSkgKyBzdGFja1RyYWNlW2xldmVsXS5zdWJzdHJpbmco
c3RhY2tUcmFjZVtsZXZlbF0ubGFzdEluZGV4T2YoJy8nKSsxKSk7CisJCWkrKzsKKwl9CisJZGVi
dWcoJycpOworfQorCitmdW5jdGlvbiBob3N0VGhyb3dlcigpIHsgRWxlbWVudC5wcm90b3R5cGUu
YXBwZW5kQ2hpbGQuY2FsbCh7IH0sIFt7IH1dKTsgIH0KK2Z1bmN0aW9uIGNhbGxiYWNrZXIoZikg
eyBbMF0ubWFwKGYpOyB9CitmdW5jdGlvbiBvdXRlcihlcnJvck5hbWUpIHsgaW5uZXIoZXJyb3JO
YW1lKTsgfQorZnVuY3Rpb24gaW5uZXIoZXJyb3JOYW1lKSB7IHRocm93IG5ldyBFcnJvcigiRXJy
b3IgaW4gIiArIGVycm9yTmFtZSk7IH0KK2Z1bmN0aW9uIGV2YWxlcihjb2RlKSB7IGV2YWwoY29k
ZSk7IH0KK2Z1bmN0aW9uIG5vcm1hbE91dGVyKCkgeyBub3JtYWxJbm5lcigpOyB9CitmdW5jdGlv
biBub3JtYWxJbm5lcigpIHsgaWYodGhpc1ZhckRvZXNudEV4aXN0KSBmYWlsSWZUcnVlKCJzaG91
bGRGYWlsQmVmb3JlVGhpcyIpIH07CitmdW5jdGlvbiBzY3JpcHRlcklubmVyKCkgeyBodG1sSW5u
ZXIoKTsgfQorZnVuY3Rpb24gc2NyaXB0ZXJPdXRlcigpIHsgaHRtbE91dGVyKCk7IH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRXhwZWN0ZWQgZnVuY3Rpb25zIGluIHN0YWNrIHRyYWNlCisvLyBOb3JtYWwg
Q2FzZQordHJ5IHsgbm9ybWFsT3V0ZXIoKSB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NT
dGFjaykgfSAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbE91dGVyIC0+IG5vcm1hbElubmVy
CisKKy8vIEV2YWwgQ2FzZQordHJ5IHsgZXZhbGVyKCJpbm5lcignaW5uZXIgZXZhbCcpOyIpOyB9
IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjaykgfSAgIC8vIGV2YWxlciAtPiBldmFs
IC0+IGlubmVyCit0cnkgeyBldmFsZXIoIm91dGVyKCdvdXRlciBldmFsJyk7Iik7IH0gY2F0Y2gg
KGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gb3V0
ZXIgLT4gaW5uZXIKKworLy8gRnVuY3Rpb24gQ2FsbGJhY2sgQ2FzZQordHJ5IHsgY2FsbGJhY2tl
cihpbm5lcignaW5uZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFj
ayk7IH0gICAvLyBjYWxsYmFja2VyIC0+IG1hcCAtPiBpbm5lcgordHJ5IHsgY2FsbGJhY2tlcihv
dXRlcignb3V0ZXIgbWFwJykpOyB9IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5qc2NTdGFjayk7
IH0gICAvLyBjYWxsYmFja2VyIC0+IG1hcCAtPiBvdXRlciAtPiBpbm5lcgorCisvLyBIb3N0IENv
ZGUgQ2FzZQordHJ5IHsgaG9zdFRocm93ZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUu
anNjU3RhY2spOyB9ICAgICAgICAgICAgICAgICAgICAvLyBob3N0VGhyb3dlcgorCit0cnkgeyBz
Y3JpcHRlcklubmVyKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLmpzY1N0YWNrKSB9ICAg
ICAgICAgICAgICAgICAgIC8vIHByb2dyYW0gLT4gc2NyaXB0ZXIgLT4gaW5uZXIKK3RyeSB7IHNj
cmlwdGVyT3V0ZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuanNjU3RhY2spIH0gICAg
ICAgICAgICAgICAgICAgLy8gcHJvZ3JhbSAtPiBzY3JpcHRlciAtPiBvdXRlciAtPiBpbm5lcgor
CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gOTU5NTkp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw2ICs0OTcsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9m
cmFtZXMvY3Jvc3Mtc2l0ZS10aAogLy8gdGhyb3cuICBWOCBmb2xsb3dzIHRoZSBzcGVjLgogV09O
VEZJWCBTS0lQIDogZmFzdC9qcy9yZXBhcnNpbmctc2VtaWNvbG9uLWluc2VydGlvbi5odG1sID0g
RkFJTAogCisvLyBUaGlzIHRlc3RzIHN0YWNrLXRyYWNlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkg
SlNDLiBUaGlzIHRlc3Qgc2hvdWxkCisvLyBmYWlsIHNpbmNlIGl0IGlzIHNwZWNpZmljIHRvIGpz
Yy4KK1dPTlRGSVggU0tJUCA6IGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbCA9IEZBSUwKKwogLy8g
UnViYmVyLWJhbmRpbmcgaXMgY3VycmVudGx5IGEgQ0cgb25seSBmZWF0dXJlLgogV09OVEZJWCBD
UFUgR1BVIDogcGxhdGZvcm0vY2hyb21pdW0vcnViYmVyYmFuZGluZyA9IEZBSUwKIFdPTlRGSVgg
Q1BVIEdQVSA6IHBsYXRmb3JtL2Nocm9taXVtLWdwdS9jb21wb3NpdGluZy9ydWJiZXJiYW5kaW5n
ID0gSU1BR0UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124830</attachid>
            <date>2012-01-31 15:02:17 -0800</date>
            <delta_ts>2012-02-16 13:56:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66994-20120131150216.patch</filename>
            <type>text/plain</type>
            <size>41942</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZDE4YWRlMWEwMTcyZDM0M2VlYzY3MGQxYTdhMjhkNGQxMGU2ODA4Li43ZGVlNWM0ODlhMzgyZjdm
OWRhZTJiYzY3NTk4YWYwNWQ1NmM2NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxMi0wMS0zMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFcnJvci5zdGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCBieSBKdWFuIENhcmxvcyBNb250
ZW1heW9yIEVsb3N1YToKKyAgICAgICAgICAgIFRoaXMgcGF0Y2ggdXRpbGl6ZXMgdG9wQ2FsbEZy
YW1lIHRvIGNyZWF0ZSBhIHN0YWNrIHRyYWNlIHdoZW4KKyAgICAgICAgICAgIGFuIGVycm9yIGlz
IHRocm93bi4gVXNlcnMgd2lsbCBhbHNvIGJlIGFibGUgdG8gdXNlIHRoZSBzdGFjaygpCisgICAg
ICAgICAgICBjb21tYW5kIGluIGpzYyB0byBnZXQgYXJyYXlzIHdpdGggc3RhY2sgdHJhY2UgaW5m
b3JtYXRpb24uCisKKyAgICAgICAgTW9kaWZpZWQgdG8gYmUgY29ycmVjdCBvbiBUb1QsIHdpdGgg
YSB2YXJpZXR5IG9mIGNvcnJlY3RuZXNzLAorICAgICAgICBwZXJmb3JtYW5jZSwgYW5kIHNlY3Vy
aXR5IGltcHJvdmVtZW50cy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0Q2FsbGVyTGluZSk6CisgICAgICAgIChKU0M6OmdldFNvdXJjZVVSTEZyb21DYWxsRnJh
bWUpOgorICAgICAgICAoSlNDOjpnZXRTdGFja0ZyYW1lQ29kZVR5cGUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoK
KyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcpOgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0
aW9uSlNDU3RhY2spOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6
UGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjphZGRFcnJvckluZm8p
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKwogMjAxMi0wMS0zMSAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlQobV9qdW1wc1RvTGluay5p
c0VtcHR5KCkpIGZhaWxpbmcgaW4gQVJNdjdBc3NlbWJsZXIgZHRvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggMmY3YjMxNTdmNmRiYjdlMGQzNWIxYWUyNGI3
NzhkOTNhMjQ1OWUzNy4uOWYzMWFmNzA3YWQ3NDcyNWFiNGU5MjA0OTNlMDhmMTE3NjIyZmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xMTgsNyArMTE4
LDcgQEAgX19aTjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMEpTRnVuY3Rpb25D
MUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUUKIF9f
Wk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0Mx
MHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEUKLV9fWk4zSlNDMTFKU0J5
dGVBcnJheTEwcHV0QnlJbmRleEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pTVmFs
dWVFCitfX1pOM0pTQzExSW50ZXJwcmV0ZXIxM2dldFN0YWNrVHJhY2VFUE5TXzEySlNHbG9iYWxE
YXRhRWlSTjNXVEY2VmVjdG9ySU5TXzEwU3RhY2tGcmFtZUVMbTBFRUUKIF9fWk4zSlNDMTFKU0J5
dGVBcnJheTE1Y3JlYXRlU3RydWN0dXJlRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRKU0dsb2Jh
bE9iamVjdEVOU183SlNWYWx1ZUVQS05TXzlDbGFzc0luZm9FCiBfX1pOM0pTQzExSlNCeXRlQXJy
YXkxOGdldE93blByb3BlcnR5U2xvdEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxOWdl
dE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9w
ZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggOTNjOWU3NTY5NjYyYTI2
ODBkZDQ1N2ZkNjY5ZjdhZTZiZjExZmQxNy4uOWU2MDQyYjhhYWQ2MWIwZmE4MmFiYjFkYjgxYTVi
YzBhMGJiOTQzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYKQEAgLTIwOSw2ICsyMDksNyBAQCBFWFBPUlRTCiAgICAgP2dldFByb3Bl
cnR5RGVzY3JpcHRvckBKU09iamVjdEBKU0NAQFFBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRp
ZmllckAyQEFBVlByb3BlcnR5RGVzY3JpcHRvckAyQEBaCiAgICAgP2dldFByb3BlcnR5TmFtZXNA
SlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVjU3RhdGVAMkBBQVZQcm9wZXJ0eU5hbWVBcnJh
eUAyQFc0RW51bWVyYXRpb25Nb2RlQDJAQFoKICAgICA/Z2V0U2xpY2VAQXJnTGlzdEBKU0NAQFFC
RVhIQUFWMTJAQFoKKyAgICA/Z2V0U3RhY2tUcmFjZUBJbnRlcnByZXRlckBKU0NAQFNBWFBBVkpT
R2xvYmFsRGF0YUAyQEhBQVY/JFZlY3RvckBVU3RhY2tGcmFtZUBKU0NAQCQwQUBAV1RGQEBAWgog
ICAgID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFP0FWVVN0cmluZ0AyQFBBVkV4ZWNTdGF0ZUAy
QEBaCiAgICAgP2dldFN0cmluZ0BKU0NlbGxASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFBVlVT
dHJpbmdAMkBAWgogICAgID9nZXR0ZXJAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFP0FWSlNW
YWx1ZUAyQFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
QWJzdHJhY3RQQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJh
Y3RQQy5jcHAKaW5kZXggODYzOTE1YmRhYjg2NDNhOTYwOGZhOGM3ZGEwZTEzN2NhYTFlMzhkMS4u
ODllODZhYjg0YjE1MjQyNjQxYjFhNmUyYzE1M2VhZWJlZTMxNjgzYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcApAQCAtNDYsNiArNDYs
NyBAQCBBYnN0cmFjdFBDOjpBYnN0cmFjdFBDKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhl
Y1N0YXRlKiBleGVjKQogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorICAg
IFVOVVNFRF9QQVJBTShnbG9iYWxEYXRhKTsKICAgICBtX3BvaW50ZXIgPSBleGVjLT5yZXR1cm5W
UEMoKTsKICAgICBtX21vZGUgPSBJbnRlcnByZXRlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggNDQ1ZTI4NjUz
ODRlZTAyYjg0NDdmNTA4YzRkNmMxOGE1MWM2YWZhMi4uOWM0M2E3NzJjOGJiMjYxNWNkNmMwOGJk
ZDljZWU3OTFlM2QyYjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNBY3Rp
dmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQnl0ZUFycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNl
ci5oIgpAQCAtNjAsNiArNTksNyBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAi
U2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKKyNpbmNs
dWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTc5MCw2ICs3OTAsODYg
QEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
RXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCpnbG9i
YWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9i
YWxEYXRhLCBtZXNzYWdlKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGdldENhbGxlckxpbmUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgaW50JiBsaW5lTnVtYmVy
KQoreworICAgICh2b2lkKWdsb2JhbERhdGE7CisgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7
CisgICAgbGluZU51bWJlciA9IC0xOworICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+cmVtb3Zl
SG9zdENhbGxGcmFtZUZsYWcoKTsKKworICAgIGlmIChjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkg
PT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpIHx8IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+aGFz
SG9zdENhbGxGcmFtZUZsYWcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ29kZUJsb2NrKiBj
YWxsZXJDb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxs
RnJhbWVGbGFnKCktPmNvZGVCbG9jaygpOworCisjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorICAg
IGlmICghZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsK
KyNpZiBFTkFCTEUoSklUKQorICAgIGVsc2UKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxs
ZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisjZW5k
aWYKKyNlbHNlCisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisjZW5kaWYKKworICAgIGxpbmVOdW1iZXIg
PSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCAtIDEpOworfQorCitzdGF0aWMgQUxXQVlTX0lOTElORSBjb25zdCBVU3RyaW5nIGdldFNv
dXJjZVVSTEZyb21DYWxsRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIAoreworICAgIGlmIChj
YWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpCisgICAgICAgIHJldHVybiBVU3RyaW5n
KCk7CisjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQorICAgICAgICByZXR1cm4gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOworI2VuZGlm
CisgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnNvdXJjZSgpLT51cmwoKTsKKwor
I2Vsc2UKKyAgICByZXR1cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxl
KCktPnNvdXJjZVVSTCgpOworI2VuZGlmCit9CisKK3N0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUg
Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIGlmIChj
YWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpIAorICAgICAgICByZXR1cm4gU3RhY2tG
cmFtZU5hdGl2ZUNvZGU7CisKKyAgICBzd2l0Y2ggKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmNv
ZGVUeXBlKCkpIHsKKyAgICBjYXNlIEV2YWxDb2RlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFt
ZUV2YWxDb2RlOworICAgIGNhc2UgRnVuY3Rpb25Db2RlOgorICAgICAgICByZXR1cm4gU3RhY2tG
cmFtZUZ1bmN0aW9uQ29kZTsKKyAgICBjYXNlIEdsb2JhbENvZGU6CisgICAgICAgIHJldHVybiBT
dGFja0ZyYW1lR2xvYmFsQ29kZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIFN0YWNrRnJhbWVHbG9iYWxDb2RlOworfQorCit2b2lkIEludGVycHJldGVyOjpn
ZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmUsIFZlY3RvcjxT
dGFja0ZyYW1lPiYgcmVzdWx0cykKK3sKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGdsb2Jh
bERhdGEtPnRvcENhbGxGcmFtZS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsKKyAgICBpZiAo
IWNhbGxGcmFtZSB8fCBjYWxsRnJhbWUgPT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpIHx8ICFjYWxs
RnJhbWUtPmNvZGVCbG9jaygpKSAKKyAgICAgICAgcmV0dXJuOworICAgIFVTdHJpbmcgc291cmNl
VVJMOworICAgIFVTdHJpbmcgdHJhY2VMZXZlbDsKKworICAgIHdoaWxlIChjYWxsRnJhbWUgJiYg
Y2FsbEZyYW1lICE9IENhbGxGcmFtZTo6bm9DYWxsZXIoKSkgeworICAgICAgICBpZiAoY2FsbEZy
YW1lLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgc291cmNlVVJMID0gZ2V0U291cmNlVVJM
RnJvbUNhbGxGcmFtZShjYWxsRnJhbWUpOworCisgICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7
IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBnZXRT
dGFja0ZyYW1lQ29kZVR5cGUoY2FsbEZyYW1lKSwgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPigqZ2xv
YmFsRGF0YSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpLCBsaW5l
LCBzb3VyY2VVUkx9OworCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzKTsKKyAgICAgICAg
fQorICAgICAgICBnZXRDYWxsZXJMaW5lKGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgbGluZSk7Cisg
ICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENh
bGxGcmFtZUZsYWcoKTsKKyAgICB9Cit9CisKIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50
ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSYg
ZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTgwOCw3ICs4ODgsOSBA
QCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihD
YWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVgogCiAgICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxk
IG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0aGVzZSBwcm9wZXJ0aWVzIHRvIFZNIGdlbmVyYXRlZCBl
eGNlcHRpb25zLAogICAgICAgICAgICAgLy8gYnV0IHRoZSBpbnNwZWN0b3IgY3VycmVudGx5IHJl
cXVpcmVzIHRoZXNlIGZvciBhbGwgdGhyb3duIG9iamVjdHMuCi0gICAgICAgICAgICBhZGRFcnJv
ckluZm8oY2FsbEZyYW1lLCBleGNlcHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+
c291cmNlKCkpOworICAgICAgICAgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0YWNrVHJhY2U7Cisg
ICAgICAgICAgICBnZXRTdGFja1RyYWNlKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBzdGFja1Ry
YWNlKTsKKyAgICAgICAgICAgIGFkZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2VwdGlvbiwgY29k
ZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3RhY2tUcmFjZSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpc0ludGVycnVwdCA9IGlzSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRp
b24oZXhjZXB0aW9uKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
aW5kZXggMTk0MzUxM2FlMzI2MDM4ZDA3NTMxYWY1MWZkZDljYjQwMmNkNWIzMi4uNTNiY2EyZjNm
NTA0MWZiYmEwMzBlOTc4M2E3MTJiNDM0MjFiODUyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lu
Y2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiT3Bjb2RlLmgiCkBAIC00Miw4ICs0Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlOworICAgIGNsYXNzIEV4
ZWN1dGFibGVCYXNlOwogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKLSAgICBjbGFzcyBK
U0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwpAQCAtNjIsNiArNjMsNTkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50CiAgICAgfTsKIAorICAgIGVu
dW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsKKyAgICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCisg
ICAgICAgIFN0YWNrRnJhbWVFdmFsQ29kZSwKKyAgICAgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29k
ZSwKKyAgICAgICAgU3RhY2tGcmFtZU5hdGl2ZUNvZGUKKyAgICB9OworCisgICAgc3RydWN0IFN0
YWNrRnJhbWUgeworICAgICAgICBTdHJvbmc8SlNPYmplY3Q+IGNhbGxlZTsKKyAgICAgICAgU3Rh
Y2tGcmFtZUNvZGVUeXBlIGNvZGVUeXBlOworICAgICAgICBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+
IGV4ZWN1dGFibGU7CisgICAgICAgIGludCBsaW5lOworICAgICAgICBVU3RyaW5nIHNvdXJjZVVS
TDsKKyAgICAgICAgVVN0cmluZyB0b1N0cmluZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgYm9vbCBoYXNTb3VyY2VVUkxJbmZvID0gIXNvdXJjZVVS
TC5pc051bGwoKSAmJiAhc291cmNlVVJMLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGJvb2wgaGFz
TGluZUluZm8gPSBsaW5lID4gLTE7CisgICAgICAgICAgICBTdHJpbmcgdHJhY2VMaW5lOworICAg
ICAgICAgICAgSlNPYmplY3QqIHN0YWNrRnJhbWVDYWxsZWUgPSBjYWxsZWUuZ2V0KCk7CisKKyAg
ICAgICAgICAgIHN3aXRjaCAoY29kZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgU3RhY2tGcmFt
ZUV2YWxDb2RlOgorICAgICAgICAgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJbmZvKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQo
ImV2YWwgYXQgJXM6JWQiLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCksIGxpbmUpIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0KCJl
dmFsIGF0ICVzIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gU3RyaW5nOjpmb3JtYXQoImV2
YWwiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3RhY2tGcmFt
ZU5hdGl2ZUNvZGU6CisgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gIk5hdGl2ZSBjb2RlIjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3RhY2tGcmFtZUZ1bmN0
aW9uQ29kZToKKyAgICAgICAgICAgICAgICBpZiAoc3RhY2tGcmFtZUNhbGxlZSAmJiBzdGFja0Zy
YW1lQ2FsbGVlLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSkgeworICAgICAgICAgICAg
ICAgICAgICBVU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IGFzRnVuY3Rpb24oc3RhY2tGcmFtZUNhbGxl
ZSktPm5hbWUoY2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1NvdXJjZVVS
TEluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZv
ID8gU3RyaW5nOjpmb3JtYXQoIiVzIGF0ICVzOiVkIiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0
YSgpLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCksIGxpbmUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0KCIlcyBhdCAlcyIs
IGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEoKSwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB0cmFj
ZUxpbmUgPSBTdHJpbmc6OmZvcm1hdCgiJXNcbiIsIGZ1bmN0aW9uTmFtZS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhc2UgU3RhY2tGcmFtZUdsb2JhbENvZGU6CisgICAgICAgICAgICAgICAgaWYgKGhh
c1NvdXJjZVVSTEluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gaGFzTGlu
ZUluZm8gPyBTdHJpbmc6OmZvcm1hdCgiZ2xvYmFsIGNvZGUgYXQgJXM6JWQiLCBzb3VyY2VVUkwu
YXNjaWkoKS5kYXRhKCksIGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogU3RyaW5nOjpmb3JtYXQoImdsb2JhbCBjb2RlIGF0ICVzIiwgc291cmNlVVJM
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgdHJhY2VMaW5lID0gU3RyaW5nOjpmb3JtYXQoImdsb2JhbCBjb2RlIik7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRyYWNlTGlu
ZS5pbXBsKCk7CisgICAgICAgIH0KKyAgICB9OworCiAgICAgY2xhc3MgVG9wQ2FsbEZyYW1lU2V0
dGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRvcENhbGxGcmFtZVNldHRlcihKU0dsb2JhbERh
dGEmIGdsb2JhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xNTEsNiArMjA1LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4
Y2VwdGlvbihDYWxsRnJhbWUqJiwgSlNWYWx1ZSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsK
ICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQs
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CisgICAgICAgIHN0YXRpYyBjb25zdCBVU3Ry
aW5nIGdldFRyYWNlTGluZShDYWxsRnJhbWUqLCBTdGFja0ZyYW1lQ29kZVR5cGUsIGNvbnN0IFVT
dHJpbmcmLCBpbnQpOworICAgICAgICBzdGF0aWMgdm9pZCBnZXRTdGFja1RyYWNlKEpTR2xvYmFs
RGF0YSosIGludCBsaW5lLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMpOwogCiAgICAgICAg
IHZvaWQgZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRlKiBleGVjKTsKICAgICAgICAgdm9pZCBzdGFy
dFNhbXBsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDQ3ZWM4YzYwODU4YjY3OWUwOWFj
YWZiMGQzZjFkMmEwOWVkNWMzMjYuLjI1MjQ1ZTY5MDA2YTlmYzIzYzU3ZmE1M2ZmMmMyMzRiYTVh
MTc3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Q3VycmVudFRpbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAi
SW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKQEAgLTc4LDYgKzc5LDcgQEAgc3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09m
RmlsZShjb25zdCBVU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNoYXI+JgogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2so
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkdDKEV4ZWNTdGF0ZSopOwogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoRXhlY1N0YXRlKik7
CkBAIC0xODQsNiArMTg2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbihnbG9i
YWxEYXRhLCAicnVuIiwgZnVuY3Rpb25SdW4sIDEpOwogICAgICAgICBhZGRGdW5jdGlvbihnbG9i
YWxEYXRhLCAibG9hZCIsIGZ1bmN0aW9uTG9hZCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKGds
b2JhbERhdGEsICJjaGVja1N5bnRheCIsIGZ1bmN0aW9uQ2hlY2tTeW50YXgsIDEpOworICAgICAg
ICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAianNjU3RhY2siLCBmdW5jdGlvbkpTQ1N0YWNrLCAx
KTsKICAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgInJlYWRsaW5lIiwgZnVuY3Rpb25S
ZWFkbGluZSwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKGdsb2JhbERhdGEsICJwcmVjaXNlVGlt
ZSIsIGZ1bmN0aW9uUHJlY2lzZVRpbWUsIDApOwogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykK
QEAgLTI1Miw2ICsyNTUsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRlYnVnKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlND
U3RhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIFN0cmluZyB0cmFjZSA9ICItLT4gU3RhY2sg
dHJhY2U6XG4iOworICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBzdGFja1RyYWNlOworICAgIEludGVy
cHJldGVyOjpnZXRTdGFja1RyYWNlKCZleGVjLT5nbG9iYWxEYXRhKCksIC0xLCBzdGFja1RyYWNl
KTsKKyAgICBpbnQgaSA9IDA7CisKKyAgICBmb3IgKFZlY3RvcjxTdGFja0ZyYW1lPjo6aXRlcmF0
b3IgaXRlciA9IHN0YWNrVHJhY2UuYmVnaW4oKTsgaXRlciA8IHN0YWNrVHJhY2UuZW5kKCk7IGl0
ZXIrKykgeworICAgICAgICBTdGFja0ZyYW1lIGxldmVsID0gKml0ZXI7CisgICAgICAgIHRyYWNl
ICs9IFN0cmluZzo6Zm9ybWF0KCIgICAgJWkgICAlc1xuIiwgaSwgbGV2ZWwudG9TdHJpbmcoZXhl
YykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGkrKzsKKyAgICB9CisgICAgZnByaW50ZihzdGRl
cnIsICIlcyIsIHRyYWNlLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGYzZDk2
ZmYzZWM5ZTJjZTdhNzEyN2JhODJmNGM5YzYyNGZjMDY0YzkuLjI3ZGFmYWU3NDY5YWNlZGU1Mzk0
YzliYjdmY2IyNjNmZWRhZDQyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoKICAgICAgICAg
ZWxzZSBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpKQogICAgICAgICAgICAgKmV4Y2VwdGlv
biA9IGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRFcnJvckluZm8oJmxleGljYWxH
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgKm1fc291cmNlKTsKKyAgICAgICAgICAgICpleGNl
cHRpb24gPSBhZGRFcnJvckluZm8oJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwg
Y3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwg
Km1fc291cmNlLCBWZWN0b3I8U3RhY2tGcmFtZT4oKSk7CiAgICAgfQogCiAgICAgaWYgKGRlYnVn
Z2VyICYmICFQYXJzZWROb2RlOjpzY29wZUlzRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAwOGQ4NjQ0YjU4YjZi
NmU4YWQwZTA5NWYxOGFkMzQzZjJiN2RmNmE4Li5kNzllNWM3ODNhMzY5ZjY0MjI0YzkxM2YzODRk
MzNhYjM4ZTViYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTYyLDYgKzYyLDcgQEAKICAgICBtYWNybyhwcm90b3R5cGUp
IFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzb3VyY2UpIFwKKyAgICBtYWNybyhzdGFj
aykgXAogICAgIG1hY3JvKHRlc3QpIFwKICAgICBtYWNybyh0b0V4cG9uZW50aWFsKSBcCiAgICAg
bWFjcm8odG9GaXhlZCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmlu
ZGV4IGMzZjI4NzgzYTQyNzA5NDA4MDdkYjJhNTlmZDUzYTAwZGMyOGQ1ZmMuLmZiNGI2NjE4YjM0
ZTU5ZmUzYThkOWI2YzNjOWMyZTZlYmI5NTIyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKIAogI2luY2x1ZGUgIkNvbnN0cnVjdERh
dGEuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNB
cnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC0xMTcsNyArMTE5LDcgQEAgSlNPYmplY3Qq
IGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
ICAgICByZXR1cm4gY3JlYXRlVVJJRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBt
ZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKK0pTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU09i
amVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IFZl
Y3RvcjxTdGFja0ZyYW1lPiYgc3RhY2tUcmFjZSkKIHsKICAgICBpbnRwdHJfdCBzb3VyY2VJRCA9
IHNvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7CiAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJM
ID0gc291cmNlLnByb3ZpZGVyKCktPnVybCgpOwpAQCAtMTI4LDEzICsxMzAsMzQgQEAgSlNPYmpl
Y3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBlcnJv
ciwgaW50IGxpbmUsIGNvbnMKICAgICAgICAgZXJyb3ItPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwg
SWRlbnRpZmllcihnbG9iYWxEYXRhLCBzb3VyY2VJZFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKChk
b3VibGUpc291cmNlSUQpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIGlmICghc291cmNl
VVJMLmlzTnVsbCgpKQogICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBJZGVu
dGlmaWVyKGdsb2JhbERhdGEsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKGdsb2Jh
bERhdGEsIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgaWYgKCFzdGFj
a1RyYWNlLmlzRW1wdHkoKSkgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gMDsKKyAgICAgICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihlcnJvcikg
fHwgaXNJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihlcnJvcikpCisgICAgICAgICAgICBn
bG9iYWxPYmplY3QgPSBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0OworICAgICAgICBl
bHNlCisgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBlcnJvci0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgICAgIC8vIFdlIHVzZSB0aGUgdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBjcmVhdGlvbiBtZWNo
YW5pc20gYW5kIHJlbGF0ZWQgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgLy8gZnVuY3Rpb25zIGFz
IHRoZXkncmUgdGhlIG9ubHkgbWVjaGFuaXNtIHdlIGN1cnJlbnRseSBoYXZlIHRoYXQgd2lsbCBn
dWFyYW50ZWUgd2UKKyAgICAgICAgLy8gZG9uJ3QgY2FsbCBzZXR0ZXJzIG9uIHRoZSBwcm90b3R5
cGUuIFRlY2huaWNhbGx5IGl0J3MgZmFzdGVyIHRoYW4gdGhlIGFsdGVybmF0aXZlLAorICAgICAg
ICAvLyBidXQgdGhlIG51bWVyb3VzIGFsbG9jYXRpb25zIHRoYXQgdGFrZSBwbGFjZSBpbiB0aGlz
IGxvb3AgbWFrZXMgdGhhdCBsYXN0IGJpdAorICAgICAgICAvLyBzb21ld2hhdCBtb290LgorICAg
ICAgICBKU0FycmF5KiBzdGFja1RyYWNlQXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKCpnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCksIHN0YWNr
VHJhY2Uuc2l6ZSgpKTsKKyAgICAgICAgaWYgKCFzdGFja1RyYWNlQXJyYXkpCisgICAgICAgICAg
ICByZXR1cm4gZXJyb3I7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGFja1Ry
YWNlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBVU3RyaW5nIHN0YWNrTGV2ZWwgPSBzdGFj
a1RyYWNlW2ldLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKKyAgICAgICAg
ICAgIHN0YWNrVHJhY2VBcnJheS0+aW5pdGlhbGl6ZUluZGV4KCpnbG9iYWxEYXRhLCBpLCBqc1N0
cmluZyhnbG9iYWxEYXRhLCBzdGFja0xldmVsKSk7CisgICAgICAgIH0KKyAgICAgICAgc3RhY2tU
cmFjZUFycmF5LT5jb21wbGV0ZUluaXRpYWxpemF0aW9uKHN0YWNrVHJhY2Uuc2l6ZSgpKTsKKyAg
ICAgICAgZXJyb3ItPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+c3RhY2ssIHN0YWNrVHJhY2VBcnJheSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAg
ICB9CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKLUpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UpCitKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBWZWN0
b3I8U3RhY2tGcmFtZT4mIHN0YWNrVHJhY2UpCiB7Ci0gICAgcmV0dXJuIGFkZEVycm9ySW5mbygm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvciwgbGluZSwgc291cmNlKTsKKyAgICByZXR1cm4gYWRk
RXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yLCBsaW5lLCBzb3VyY2UsIHN0YWNr
VHJhY2UpOwogfQogCiBib29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IDg4YjU0MGEz
NWZjMjI3YmExMDAxZDA5YjY2MjlkZDU3MTQwZjNhN2MuLjU5YjM5NDk1ZmFiNjI3NWE2YzI5ZjI5
NDY4OTc5MWE4M2VlM2NhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApA
QCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBFcnJvcl9oCiAKICNpbmNsdWRlICJJbnRlcm5hbEZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgogI2luY2x1ZGUgPHN0ZGludC5oPgogCkBAIC01Niw5ICs1Nyw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgLy8gTWV0aG9kcyB0byBhZGQgCiAgICAgYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0
YXRlKiwgSlNPYmplY3QqIGVycm9yKTsKLSAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xv
YmFsRGF0YSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmKTsK
KyAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSosIEpTT2JqZWN0KiBlcnJv
ciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4m
KTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGFkZEVycm9ySW5m
byhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2Rl
Jik7CisgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJy
b3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+
Jik7CiAKICAgICAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KICAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU1ZhbHVlIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2Nm
MGE3OWYzNTA1NDU2ZTFlNDRjNmE1OGQ3YjAxMmQzYTM3MTdmZS4uYTA1YWM1Y2NlODgwMGMxNmMx
MzI4OGZmOTBmZmM2NTRkMzMzOTlkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAxLTMx
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVy
cm9yLnN0YWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Njk5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWShPT1BTISkKKworICAgICAgICBP
cmlnaW5hbCBwYXRjaCBieSBKdWFuIENhcmxvcyBNb250ZW1heW9yIEVsb3N1YS4KKworICAgICAg
ICBVbml0IHRlc3RzIHRoYXQgY29udGFpbiBib3RoIG5vcm1hbCBhbmQgc3BlY2lhbCBjYXNlcyBm
b3Igc3RhY2sgdHJhY2UKKyAgICAgICAgZ2VuZXJhdGlvbi4KKworICAgICAgICAqIGZhc3QvanMv
ZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvc2Ny
aXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzOgorICAgICAgICAqIGZhc3QvanMvc2Ny
aXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzOiBBZGRlZC4KKyAgICAgICAgKHByaW50U3RhY2spOgor
ICAgICAgICAoaG9zdFRocm93ZXIpOgorICAgICAgICAoY2FsbGJhY2tlcik6CisgICAgICAgIChv
dXRlcik6CisgICAgICAgIChpbm5lcik6CisgICAgICAgIChldmFsZXIpOgorICAgICAgICAobm9y
bWFsT3V0ZXIpOgorICAgICAgICAobm9ybWFsSW5uZXIpOgorICAgICAgICAoc2NyaXB0ZXJJbm5l
cik6CisgICAgICAgIChzY3JpcHRlck91dGVyKToKKyAgICAgICAgKiBmYXN0L2pzL3N0YWNrLXRy
YWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zdGFjay10cmFjZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQ6CisKIDIwMTItMDEtMzEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIEZpeCBjc3MzL2ZsZXhib3gvY3Jvc3MtYXhpcy1zY3JvbGxiYXIt
ZXhwZWN0ZWQgdG8gd29yayBvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNl
cHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2Vw
dGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAzNmQ3ZTg0YjFlZDA4ZTJiZTE2MWIy
YWU1NGRhZjUxZDMyMjU1OTVlLi41NzNlZjEwNjhmODc0MjFlYzYwY2M4NzhjNjNkNjE3MTU4ZWI0
MmNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogCiBQQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKGVycm9yKSBpcyBbXQotUEFTUyBlbnVtZXJh
YmxlUHJvcGVydGllcyhuYXRpdmVFcnJvcikgaXMgWyJsaW5lIiwgInNvdXJjZUlkIiwgInNvdXJj
ZVVSTCJdCitQQVNTIGVudW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9yKSBpcyBbImxpbmUi
LCAic291cmNlSWQiLCAic291cmNlVVJMIiwgInN0YWNrIl0KIFBBU1MgT2JqZWN0LmdldFByb3Rv
dHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1lIGlzICJSYW5nZUVycm9yIgogUEFTUyBPYmplY3QuZ2V0
UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm1lc3NhZ2UgaXMgIiIKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQt
dGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanMKaW5kZXggMzA3ODlhMGUzYjkyMmE2MGNjMGFh
NzMzNmUzMDA1MjMzMjMwZjBkNi4uNmQ5NWVjODdiNjVhMGEzNDdjMDIzNjU4MWY3MDkxNWI1NTRl
MDc1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0
aW9uLXByb3BlcnRpZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
ZXhjZXB0aW9uLXByb3BlcnRpZXMuanMKQEAgLTE2LDcgKzE2LDcgQEAgdHJ5IHsKICAgICB2YXIg
ZXJyb3IgPSBuZXcgRXJyb3IoIm1lc3NhZ2UiKTsKIAogICAgIHNob3VsZEJlKCdlbnVtZXJhYmxl
UHJvcGVydGllcyhlcnJvciknLCAnW10nKTsKLSAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3Bl
cnRpZXMobmF0aXZlRXJyb3IpJywgJ1sibGluZSIsICJzb3VyY2VJZCIsICJzb3VyY2VVUkwiXScp
OworICAgIHNob3VsZEJlKCdlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVFcnJvciknLCAnWyJs
aW5lIiwgInNvdXJjZUlkIiwgInNvdXJjZVVSTCIsICJzdGFjayJdJyk7CiAKICAgICBzaG91bGRC
ZSgnT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2ZUVycm9yKS5uYW1lJywgJyJSYW5nZUVycm9y
IicpOwogICAgIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90eXBlT2YobmF0aXZlRXJyb3IpLm1l
c3NhZ2UnLCAnIiInKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzL3N0YWNrLXRyYWNlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3Rh
Y2stdHJhY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQxMzJmNDU0NGQ2ZTM4ODZmNDMxOGQzMGQ3ZjU4Y2Q4
ZGI4NjNmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzL3N0YWNrLXRyYWNlLmpzCkBAIC0wLDAgKzEsNjQgQEAKK2Rlc2NyaXB0aW9uKAorJ1RoaXMg
dGVzdCBjaGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVzcyBpbiBzcGVjaWFsIGNhc2VzLicKKyk7
CisKK2Z1bmN0aW9uIHByaW50U3RhY2soc3RhY2tUcmFjZSkgeworICAgIGRlYnVnKCItLT4gU3Rh
Y2sgVHJhY2U6IikKKyAgICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oc3RhY2tUcmFjZS5sZW5ndGgs
IDEwMCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgZGVi
dWcoIiAgICAiICsgaSArICIgICAiICsgc3RhY2tUcmFjZVtpXS5zdWJzdHJpbmcoMCwgc3RhY2tU
cmFjZVtpXS5pbmRleE9mKCdmaWxlOicpKSArIHN0YWNrVHJhY2VbaV0uc3Vic3RyaW5nKHN0YWNr
VHJhY2VbaV0ubGFzdEluZGV4T2YoJy8nKSsxKSk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKK2Z1
bmN0aW9uIGhvc3RUaHJvd2VyKCkgeyBFbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZC5jYWxs
KHsgfSwgW3sgfV0pOyAgfQorZnVuY3Rpb24gY2FsbGJhY2tlcihmKSB7IFswXS5tYXAoZik7IH0K
K2Z1bmN0aW9uIG91dGVyKGVycm9yTmFtZSkgeyBpbm5lcihlcnJvck5hbWUpOyB9CitmdW5jdGlv
biBpbm5lcihlcnJvck5hbWUpIHsgdGhyb3cgbmV3IEVycm9yKCJFcnJvciBpbiAiICsgZXJyb3JO
YW1lKTsgfQorZnVuY3Rpb24gZXZhbGVyKGNvZGUpIHsgZXZhbChjb2RlKTsgfQorZnVuY3Rpb24g
bm9ybWFsT3V0ZXIoKSB7IG5vcm1hbElubmVyKCk7IH0KK2Z1bmN0aW9uIG5vcm1hbElubmVyKCkg
eyBpZih0aGlzVmFyRG9lc250RXhpc3QpIGZhaWxJZlRydWUoInNob3VsZEZhaWxCZWZvcmVUaGlz
IikgfTsKK2Z1bmN0aW9uIHNjcmlwdGVySW5uZXIoKSB7IGh0bWxJbm5lcigpOyB9CitmdW5jdGlv
biBzY3JpcHRlck91dGVyKCkgeyBodG1sT3V0ZXIoKTsgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHBl
Y3RlZCBmdW5jdGlvbnMgaW4gc3RhY2sgdHJhY2UKKy8vIE5vcm1hbCBDYXNlCit0cnkgeyBub3Jt
YWxPdXRlcigpIH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKSB9ICAgICAgICAgICAg
ICAgICAgICAgLy8gbm9ybWFsT3V0ZXIgLT4gbm9ybWFsSW5uZXIKKworLy8gRXZhbCBDYXNlCit0
cnkgeyBldmFsZXIoImlubmVyKCdpbm5lciBldmFsJyk7Iik7IH0gY2F0Y2ggKGUpIHsgcHJpbnRT
dGFjayhlLnN0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gaW5uZXIKK3RyeSB7IGV2YWxl
cigib3V0ZXIoJ291dGVyIGV2YWwnKTsiKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3Rh
Y2spIH0gICAvLyBldmFsZXIgLT4gZXZhbCAtPiBvdXRlciAtPiBpbm5lcgorCisvLyBGdW5jdGlv
biBDYWxsYmFjayBDYXNlCit0cnkgeyBjYWxsYmFja2VyKGlubmVyKCdpbm5lciBtYXAnKSk7IH0g
Y2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfSAgIC8vIGNhbGxiYWNrZXIgLT4gbWFw
IC0+IGlubmVyCit0cnkgeyBjYWxsYmFja2VyKG91dGVyKCdvdXRlciBtYXAnKSk7IH0gY2F0Y2gg
KGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfSAgIC8vIGNhbGxiYWNrZXIgLT4gbWFwIC0+IG91
dGVyIC0+IGlubmVyCisKKy8vIEhvc3QgQ29kZSBDYXNlCit0cnkgeyBob3N0VGhyb3dlcigpOyB9
IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0gICAgICAgICAgICAgICAgICAgIC8v
IGhvc3RUaHJvd2VyCisKK3RyeSB7IHNjcmlwdGVySW5uZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmlu
dFN0YWNrKGUuc3RhY2spIH0gICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbSAtPiBzY3JpcHRl
ciAtPiBpbm5lcgordHJ5IHsgc2NyaXB0ZXJPdXRlcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3Rh
Y2soZS5zdGFjaykgfSAgICAgICAgICAgICAgICAgICAvLyBwcm9ncmFtIC0+IHNjcmlwdGVyIC0+
IG91dGVyIC0+IGlubmVyCisKK2Z1bmN0aW9uIHNlbGZSZWN1cnNpdmUxKCkgeworICAgIHNlbGZS
ZWN1cnNpdmUxKCk7Cit9CisKK3RyeSB7IHNlbGZSZWN1cnNpdmUxKCk7IH0gY2F0Y2ggKGUpIHsg
cHJpbnRTdGFjayhlLnN0YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8vIHNlbGZSZWN1cnNpdmUx
IC0+IHNlbGZSZWN1cnNpdmUxIC0+IHNlbGZSZWN1cnNpdmUxIC0+IHNlbGZSZWN1cnNpdmUxIC4u
LgorCitmdW5jdGlvbiBzZWxmUmVjdXJzaXZlMigpIHsKKyAgICAvLyBBIGxpdHRsZSB3b3JrIHRv
IG1ha2UgdGhlIERGRyBraWNrIGluCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7
CisgICAgICAgIGlmIChpID09IDkpCisgICAgICAgICAgICBzZWxmUmVjdXJzaXZlMigpOyAKKyAg
ICB9Cit9CisKK3RyeSB7IHNlbGZSZWN1cnNpdmUyKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFj
ayhlLnN0YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8vIHNlbGZSZWN1cnNpdmUyIC0+IHNlbGZS
ZWN1cnNpdmUyIC0+IHNlbGZSZWN1cnNpdmUyIC0+IHNlbGZSZWN1cnNpdmUyIC4uLgorCitmdW5j
dGlvbiBzZWxmUmVjdXJzaXZlMygpIHsKKyAgICBldmFsKCJzZWxmUmVjdXJzaXZlMygpIik7Cit9
CisKK3RyeSB7IHNlbGZSZWN1cnNpdmUzKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0
YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8vIHNlbGZSZWN1cnNpdmUzIC0+IGV2YWwgLT4gc2Vs
ZlJlY3Vyc2l2ZTMgLT4gZXZhbCAuLi4KKworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NzlkNzAyYTY0ZTA1OGEzYWYzYzU4NzdjYTM5YmZjMjMwNmI1ZGRjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzNTQgQEAKK1RoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVzcyBpbiBz
cGVjaWFsIGNhc2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworLS0+IFN0YWNr
IFRyYWNlOgorICAgIDAgICBub3JtYWxJbm5lciBhdCBzdGFjay10cmFjZS5qczoyMAorICAgIDEg
ICBub3JtYWxPdXRlciBhdCBzdGFjay10cmFjZS5qczoxOQorICAgIDIgICBnbG9iYWwgY29kZSBh
dCBzdGFjay10cmFjZS5qczoyNQorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0
IHN0YWNrLXRyYWNlLmpzOjE3CisgICAgMSAgIGV2YWwKKyAgICAyICAgZXZhbGVyIGF0IHN0YWNr
LXRyYWNlLmpzOjE4CisgICAgMyAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjI4CisK
Ky0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MTcKKyAg
ICAxICAgb3V0ZXIgYXQgc3RhY2stdHJhY2UuanM6MTYKKyAgICAyICAgZXZhbAorICAgIDMgICBl
dmFsZXIgYXQgc3RhY2stdHJhY2UuanM6MTgKKyAgICA0ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2st
dHJhY2UuanM6MjkKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lciBhdCBzdGFjay10
cmFjZS5qczoxNworICAgIDEgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozMgorCist
LT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjE3CisgICAg
MSAgIG91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjE2CisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IHN0
YWNrLXRyYWNlLmpzOjMzCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaG9zdFRocm93ZXIg
YXQgc3RhY2stdHJhY2UuanM6MTQKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2Uu
anM6MzYKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJh
Y2UuaHRtbDoxMAorICAgIDEgICBzY3JpcHRlcklubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjIxCisg
ICAgMiAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjM4CisKKy0tPiBTdGFjayBUcmFj
ZToKKyAgICAwICAgaHRtbElubmVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTAKKyAgICAxICAgaHRt
bE91dGVyIGF0IHN0YWNrLXRyYWNlLmh0bWw6MTEKKyAgICAyICAgc2NyaXB0ZXJPdXRlciBhdCBz
dGFjay10cmFjZS5qczoyMgorICAgIDMgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoz
OQorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjQyCisgICAgMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisg
ICAgMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgMyAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNCAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjQyCisgICAgNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAg
NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgOCAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgOSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjQyCisgICAgMTAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo0MgorICAgIDExICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICAx
MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgMTMgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NDIKKyAgICAxNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjQyCisgICAgMTYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAg
IDE3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICAxOCAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgMTkgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo0MgorICAgIDIwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NDIKKyAgICAyMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisg
ICAgMjIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDIzICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICAyNCAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgMjUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo0MgorICAgIDI2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIK
KyAgICAyNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgMjggICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDI5ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICAzMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjQyCisgICAgMzEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0
MgorICAgIDMyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICAzMyAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgMzQgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDM1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NDIKKyAgICAzNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjQyCisgICAgMzcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDM4
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICAzOSAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNDAgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo0MgorICAgIDQxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NDIKKyAgICA0MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAg
NDMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDQ0ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA0NSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNDYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo0MgorICAgIDQ3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAg
ICA0OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNDkgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDUwICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA1MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjQyCisgICAgNTIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0Mgor
ICAgIDUzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA1NCAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNTUgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDU2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NDIKKyAgICA1NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQy
CisgICAgNTggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDU5ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA2MCAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNjEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo0MgorICAgIDYyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NDIKKyAgICA2MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNjQg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDY1ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA2NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjQyCisgICAgNjcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo0MgorICAgIDY4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA2
OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNzAgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NDIKKyAgICA3MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjQyCisgICAgNzMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAg
IDc0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA3NSAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgNzYgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo0MgorICAgIDc3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NDIKKyAgICA3OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisg
ICAgNzkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDgwICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA4MSAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgODIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo0MgorICAgIDgzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIK
KyAgICA4NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgODUgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDg2ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA4NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjQyCisgICAgODggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0
MgorICAgIDg5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA5MCAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgOTEgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NDIKKyAgICA5MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjQyCisgICAgOTQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo0MgorICAgIDk1
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NDIKKyAgICA5NiAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisgICAgOTcgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo0MgorICAgIDk4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NDIKKyAgICA5OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjQyCisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NTEKKyAgICAxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICAyICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICAzICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NTEKKyAgICA1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEK
KyAgICA2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA3ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA4ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NTEKKyAgICAxMCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisg
ICAgMTEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDEyICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICAxMyAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgMTQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo1MQorICAgIDE1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEK
KyAgICAxNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgMTcgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDE4ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICAxOSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjUxCisgICAgMjAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1
MQorICAgIDIxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICAyMiAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgMjMgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDI0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NTEKKyAgICAyNSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjUxCisgICAgMjYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDI3
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICAyOCAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgMjkgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo1MQorICAgIDMwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NTEKKyAgICAzMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAg
MzIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDMzICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICAzNCAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgMzUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo1MQorICAgIDM2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAg
ICAzNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgMzggICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDM5ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA0MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjUxCisgICAgNDEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQor
ICAgIDQyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA0MyAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgNDQgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDQ1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NTEKKyAgICA0NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUx
CisgICAgNDcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDQ4ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA0OSAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgNTAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo1MQorICAgIDUxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NTEKKyAgICA1MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgNTMg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDU0ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA1NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjUxCisgICAgNTYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo1MQorICAgIDU3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA1
OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgNTkgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDYwICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NTEKKyAgICA2MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjUxCisgICAgNjIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAg
IDYzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA2NCAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgNjUgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo1MQorICAgIDY2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NTEKKyAgICA2NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisg
ICAgNjggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDY5ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA3MCAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgNzEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo1MQorICAgIDcyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEK
KyAgICA3MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgNzQgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDc1ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA3NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjUxCisgICAgNzcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1
MQorICAgIDc4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA3OSAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgODAgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDgxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NTEKKyAgICA4MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjUxCisgICAgODMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDg0
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA4NSAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgODYgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo1MQorICAgIDg3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NTEKKyAgICA4OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAg
ODkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDkwICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA5MSAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgOTIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo1MQorICAgIDkzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKyAg
ICA5NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjUxCisgICAgOTUgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQorICAgIDk2ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NTEKKyAgICA5NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjUxCisgICAgOTggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo1MQor
ICAgIDk5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NTEKKworLS0+IFN0YWNr
IFRyYWNlOgorICAgIDAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAg
IDEgICBldmFsCisgICAgMiAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4Cisg
ICAgMyAgIGV2YWwKKyAgICA0ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgK
KyAgICA1ICAgZXZhbAorICAgIDYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1
OAorICAgIDcgICBldmFsCisgICAgOCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpz
OjU4CisgICAgOSAgIGV2YWwKKyAgICAxMCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNl
LmpzOjU4CisgICAgMTEgICBldmFsCisgICAgMTIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10
cmFjZS5qczo1OAorICAgIDEzICAgZXZhbAorICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3Rh
Y2stdHJhY2UuanM6NTgKKyAgICAxNSAgIGV2YWwKKyAgICAxNiAgIHNlbGZSZWN1cnNpdmUzIGF0
IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgMTcgICBldmFsCisgICAgMTggICBzZWxmUmVjdXJzaXZl
MyBhdCBzdGFjay10cmFjZS5qczo1OAorICAgIDE5ICAgZXZhbAorICAgIDIwICAgc2VsZlJlY3Vy
c2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgKKyAgICAyMSAgIGV2YWwKKyAgICAyMiAgIHNlbGZS
ZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgMjMgICBldmFsCisgICAgMjQgICBz
ZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAgIDI1ICAgZXZhbAorICAgIDI2
ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgKKyAgICAyNyAgIGV2YWwKKyAg
ICAyOCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgMjkgICBldmFs
CisgICAgMzAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAgIDMxICAg
ZXZhbAorICAgIDMyICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgKKyAgICAz
MyAgIGV2YWwKKyAgICAzNCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4Cisg
ICAgMzUgICBldmFsCisgICAgMzYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1
OAorICAgIDM3ICAgZXZhbAorICAgIDM4ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2Uu
anM6NTgKKyAgICAzOSAgIGV2YWwKKyAgICA0MCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRy
YWNlLmpzOjU4CisgICAgNDEgICBldmFsCisgICAgNDIgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFj
ay10cmFjZS5qczo1OAorICAgIDQzICAgZXZhbAorICAgIDQ0ICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanM6NTgKKyAgICA0NSAgIGV2YWwKKyAgICA0NiAgIHNlbGZSZWN1cnNpdmUz
IGF0IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgNDcgICBldmFsCisgICAgNDggICBzZWxmUmVjdXJz
aXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAgIDQ5ICAgZXZhbAorICAgIDUwICAgc2VsZlJl
Y3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgKKyAgICA1MSAgIGV2YWwKKyAgICA1MiAgIHNl
bGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgNTMgICBldmFsCisgICAgNTQg
ICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAgIDU1ICAgZXZhbAorICAg
IDU2ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgKKyAgICA1NyAgIGV2YWwK
KyAgICA1OCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgNTkgICBl
dmFsCisgICAgNjAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAgIDYx
ICAgZXZhbAorICAgIDYyICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgKKyAg
ICA2MyAgIGV2YWwKKyAgICA2NCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4
CisgICAgNjUgICBldmFsCisgICAgNjYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5q
czo1OAorICAgIDY3ICAgZXZhbAorICAgIDY4ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJh
Y2UuanM6NTgKKyAgICA2OSAgIGV2YWwKKyAgICA3MCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNr
LXRyYWNlLmpzOjU4CisgICAgNzEgICBldmFsCisgICAgNzIgICBzZWxmUmVjdXJzaXZlMyBhdCBz
dGFjay10cmFjZS5qczo1OAorICAgIDczICAgZXZhbAorICAgIDc0ICAgc2VsZlJlY3Vyc2l2ZTMg
YXQgc3RhY2stdHJhY2UuanM6NTgKKyAgICA3NSAgIGV2YWwKKyAgICA3NiAgIHNlbGZSZWN1cnNp
dmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgNzcgICBldmFsCisgICAgNzggICBzZWxmUmVj
dXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAgIDc5ICAgZXZhbAorICAgIDgwICAgc2Vs
ZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgKKyAgICA4MSAgIGV2YWwKKyAgICA4MiAg
IHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgODMgICBldmFsCisgICAg
ODQgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAgIDg1ICAgZXZhbAor
ICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgKKyAgICA4NyAgIGV2
YWwKKyAgICA4OCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpzOjU4CisgICAgODkg
ICBldmFsCisgICAgOTAgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFjZS5qczo1OAorICAg
IDkxICAgZXZhbAorICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2stdHJhY2UuanM6NTgK
KyAgICA5MyAgIGV2YWwKKyAgICA5NCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRyYWNlLmpz
OjU4CisgICAgOTUgICBldmFsCisgICAgOTYgICBzZWxmUmVjdXJzaXZlMyBhdCBzdGFjay10cmFj
ZS5qczo1OAorICAgIDk3ICAgZXZhbAorICAgIDk4ICAgc2VsZlJlY3Vyc2l2ZTMgYXQgc3RhY2st
dHJhY2UuanM6NTgKKyAgICA5OSAgIGV2YWwKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2pzL3N0YWNrLXRyYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0YWNrLXRyYWNl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTA4YzkxMGJmMGFkODIwOWFlMGE4NWUyMjhhMjgzYzljMTRhMDU0
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRt
bApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKwk8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCTxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorCTxwIGlkPSJjb25zb2xlIj48L3A+CisJPHNjcmlwdD5mdW5jdGlvbiBodG1s
SW5uZXIoKSB7IHRocm93IG5ldyBFcnJvcigiRXJyb3IgaW4gSFRNTCIpOyB9PC9zY3JpcHQ+CisJ
PHNjcmlwdD5mdW5jdGlvbiBodG1sT3V0ZXIoKSB7IGh0bWxJbm5lcigpOyB9PC9zY3JpcHQ+CisJ
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMGVkYTEyYzc4MDc5NDJmNmU0ZDhlZjFkOWM4MGY0M2Fk
M2JjOGNmNy4uYThlNGNkZmE5ZGZjN2VhMzZjMjhhNTY5OWM4OGZhZmRjNDUxNzg5MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dApAQCAtNTE4LDYgKzUxOCwxMCBAQCBXT05URklYIFNLSVAgOiBmYXN0L2ZyYW1lcy9jcm9zcy1z
aXRlLXRoaXMuaHRtbCA9IEZBSUwKIC8vIHRocm93LiAgVjggZm9sbG93cyB0aGUgc3BlYy4KIFdP
TlRGSVggU0tJUCA6IGZhc3QvanMvcmVwYXJzaW5nLXNlbWljb2xvbi1pbnNlcnRpb24uaHRtbCA9
IEZBSUwKIAorLy8gVGhpcyB0ZXN0cyBzdGFjay10cmFjZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIGJ5
IEpTQy4gVGhpcyB0ZXN0IHNob3VsZAorLy8gZmFpbCBzaW5jZSBpdCBpcyBzcGVjaWZpYyB0byBq
c2MuCitXT05URklYIFNLSVAgOiBmYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWwgPSBGQUlMCisKIC8v
IFJ1YmJlci1iYW5kaW5nIGlzIGN1cnJlbnRseSBhIENHIG9ubHkgZmVhdHVyZS4KIFdPTlRGSVgg
OiBwbGF0Zm9ybS9jaHJvbWl1bS9ydWJiZXJiYW5kaW5nID0gRkFJTAogV09OVEZJWCA6IHBsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3J1YmJlcmJhbmRpbmcgPSBJTUFHRQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127437</attachid>
            <date>2012-02-16 13:57:01 -0800</date>
            <delta_ts>2012-02-16 14:36:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66994-20120216135700.patch</filename>
            <type>text/plain</type>
            <size>45789</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NWNiOWE4YmFkOTEyZTM0ZmIwNzk2N2FmZWQ2MTM2MTVlNDY5YTk4Li5lODlhMWE2NDdlNTdlMjE3
MjczZTcyZGYyZTMwYzU2MWQyZjk5MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxMi0wMi0xNiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBFcnJvci5zdGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igc3RhY2sgdHJhY2Vz
IG9uIGV4Y2VwdGlvbiBvYmplY3RzLiAgVGhpcyBpcyBhIHJld3JpdGUKKyAgICAgICAgb2YgdGhl
IGNvcmUgcG9ydGlvbiBvZiB0aGUgbGFzdCBzdGFjayB3YWxraW5nIGxvZ2ljLCBidXQgdGhlIG1l
Y2hhbmljYWwgd29yaworICAgICAgICBvZiBhZGRpbmcgdGhlIGluZm9ybWF0aW9uIHRvIGFuIGV4
Y2VwdGlvbiBjb21lcyBmcm9tIHRoZSBvcmlnaW5hbCB3b3JrIGJ5CisgICAgICAgIEp1YW4gQ2Fy
bG9zIE1vbnRlbWF5b3IgRWxvc3VhLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpnZXRDYWxsZXJJbmZvKToKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OmdldFNvdXJjZVVSTEZyb21DYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpn
ZXRTdGFja0ZyYW1lQ29kZVR5cGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0U3Rh
Y2tUcmFjZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbik6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdGFja0Zy
YW1lKToKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcpOgorICAgICAgICAoSW50
ZXJwcmV0ZXIpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uSlNDU3RhY2spOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpzZXRJbmZlcnJl
ZE5hbWUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6OjpwYXJz
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjphZGRFcnJvckluZm8pOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQyk6CisKIDIwMTItMDItMTUgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIE51bWVyb3VzIHRy
aXZpYWwgYnVncyBpbiBPYmplY3QuZGVmaW5lUHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGY2YjNiZTIwZmU4MDcx
YjgzNDIwNGU5MGUyMzZkZTIxZGUwYjY0YzcuLjAxOWM4MGJmY2E2ZTQ5ZjIxZTRmNWYyMDY5MmU3
NDIyNmYxZmY1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgotI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIK
QEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIlNhbXBs
aW5nVG9vbC5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1
ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC03OTAsNiArNzkwLDEzMiBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJv
ckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERh
dGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERh
dGEsIG1lc3NhZ2UpKTsKIH0KIAorc3RhdGljIENhbGxGcmFtZSogZ2V0Q2FsbGVySW5mbyhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQmIGxpbmVOdW1i
ZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbERhdGEpOworICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gMDsKKyAgICBsaW5lTnVtYmVyID0gLTE7CisgICAgQVNTRVJUKCFjYWxsRnJh
bWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpOworICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpID8gY2FsbEZyYW1lLT50cnVlQ2FsbGVyRnJhbWUoKSA6
IDA7CisgICAgYm9vbCBjYWxsZnJhbWVJc0hvc3QgPSBjYWxsZXJGcmFtZS0+YWRkSG9zdENhbGxG
cmFtZUZsYWcoKSA9PSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CisgICAgQVNTRVJUKCFjYWxs
ZXJGcmFtZS0+aGFzSG9zdENhbGxGcmFtZUZsYWcoKSk7CisKKyAgICBpZiAoY2FsbGVyRnJhbWUg
PT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpIHx8ICFjYWxsZXJGcmFtZSB8fCAhY2FsbGVyRnJhbWUt
PmNvZGVCbG9jaygpKQorICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWU7CisKKyAgICBDb2RlQmxv
Y2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIGlm
IChjYWxsZnJhbWVJc0hvc3QpIHsKKyAgICAgICAgLy8gRG9uJ3QgbmVlZCB0byBkZWFsIHdpdGgg
aW5saW5lIGNhbGxmcmFtZXMgaGVyZSBhcyBieSBkZWZpbml0aW9uIHdlIGhhdmVuJ3QKKyAgICAg
ICAgLy8gaW5saW5lZCBhIGNhbGwgd2l0aCBhbiBpbnRlcnZlbmluZyBuYXRpdmUgY2FsbCBmcmFt
ZS4KKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgICAgIGlmICghZ2xvYmFsRGF0YS0+Y2Fu
VXNlSklUKCkpIHsKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyRnJhbWUtPmJ5
dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpOworICAgICAgICAgICAgbGluZU51bWJlciA9IGNh
bGxlckNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
IC0gMSk7CisgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWU7CisgICAgICAgIH0KKyNlbmRp
ZgorI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgICAgIGlmIChjYWxs
ZXJDb2RlQmxvY2sgJiYgY2FsbGVyQ29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
REZHSklUKQorICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmNv
ZGVPcmlnaW4oY2FsbGVyRnJhbWUtPmNvZGVPcmlnaW5JbmRleEZvckRGRygpKS5ieXRlY29kZUlu
ZGV4OworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y2FsbGVyRnJhbWUtPmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpOworI2VuZGlmCisgICAg
fSBlbHNlIHsKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgICAgIGlmICghZ2xvYmFsRGF0
YS0+Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKKyAgICAgICAg
ICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCAtIDEpOworICAgICAgICAgICAgcmV0dXJuIGNhbGxlckZyYW1l
OworICAgICAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoSklUKQorICAgICNpZiBFTkFCTEUoREZH
X0pJVCkKKyAgICAgICAgaWYgKGNhbGxGcmFtZS0+aXNJbmxpbmVDYWxsRnJhbWUoKSkgeworICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpY2YgPSBjYWxsRnJhbWUtPmlubGluZUNhbGxGcmFt
ZSgpOworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBpY2YtPmNhbGxlci5ieXRlY29kZUlu
ZGV4OworICAgICAgICAgICAgaWYgKElubGluZUNhbGxGcmFtZSogcGFyZW50Q2FsbEZyYW1lID0g
aWNmLT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
cGFyZW50Q2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDb2Rl
QmxvY2sqIG5ld0NvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHBh
cmVudENhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQobmV3Q29kZUJsb2NrKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQobmV3Q29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPiBieXRlY29kZU9mZnNldCk7
CisgICAgICAgICAgICAgICAgY2FsbGVyQ29kZUJsb2NrID0gbmV3Q29kZUJsb2NrOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNhbGxlckNvZGVCbG9jayAmJiBjYWxsZXJDb2Rl
QmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpIHsKKyAgICAgICAgICAgIENv
ZGVPcmlnaW4gb3JpZ2luOworICAgICAgICAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2stPmNvZGVP
cmlnaW5Gb3JSZXR1cm4oY2FsbEZyYW1lLT5yZXR1cm5QQygpLCBvcmlnaW4pKQorICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQg
PSBvcmlnaW4uYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIGlmIChJbmxpbmVDYWxsRnJhbWUq
IGljZiA9IG9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihpY2YtPmV4ZWN1dGFibGUuZ2V0KCkpOworICAgICAgICAgICAgICAgIENvZGVCbG9jayogbmV3
Q29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoaWNmLT5pc0NhbGwg
PyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgICAgIEFTU0VS
VChuZXdDb2RlQmxvY2spOworICAgICAgICAgICAgICAgIEFTU0VSVChuZXdDb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSA+IGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBjYWxs
ZXJDb2RlQmxvY2sgPSBuZXdDb2RlQmxvY2s7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZQorICAgICNlbmRpZgorICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgIHJldHVybiBjYWxsZXJGcmFtZTsKK30KKwor
c3RhdGljIEFMV0FZU19JTkxJTkUgY29uc3QgVVN0cmluZyBnZXRTb3VyY2VVUkxGcm9tQ2FsbEZy
YW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKSAKK3sKKyAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFz
SG9zdENhbGxGcmFtZUZsYWcoKSk7CisjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShKSVQpCisgICAgaWYgKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQorICAg
ICAgICByZXR1cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZVVSTCgpOworI2VuZGlmCisgICAgcmV0dXJuIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnNv
dXJjZSgpLT51cmwoKTsKKworI2Vsc2UKKyAgICByZXR1cm4gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOworI2VuZGlmCit9CisKK3N0YXRpYyBT
dGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3RhY2tGcmFtZUNvZGVUeXBlKENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIEFTU0VSVCghY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpKTsK
KworICAgIHN3aXRjaCAoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSkgeworICAg
IGNhc2UgRXZhbENvZGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lRXZhbENvZGU7CisgICAg
Y2FzZSBGdW5jdGlvbkNvZGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lRnVuY3Rpb25Db2Rl
OworICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVHbG9iYWxD
b2RlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RhY2tG
cmFtZUdsb2JhbENvZGU7Cit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZSwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1
bHRzKQoreworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZ2xvYmFsRGF0YS0+dG9wQ2FsbEZy
YW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpLT50cnVlQ2FsbEZyYW1lRnJvbVZNQ29kZSgp
OworICAgIGlmICghY2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVy
KCkpIAorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoY2FsbEZyYW1lICYmIGNhbGxGcmFt
ZSAhPSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpIHsKKyAgICAgICAgVVN0cmluZyBzb3VyY2VVUkw7
CisgICAgICAgIGlmIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpKSB7CisgICAgICAgICAgICBzb3Vy
Y2VVUkwgPSBnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKGNhbGxGcmFtZSk7CisgICAgICAgICAg
ICBTdGFja0ZyYW1lIHMgPSB7IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFt
ZS0+Y2FsbGVlKCkpLCBnZXRTdGFja0ZyYW1lQ29kZVR5cGUoY2FsbEZyYW1lKSwgU3Ryb25nPEV4
ZWN1dGFibGVCYXNlPigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJF
eGVjdXRhYmxlKCkpLCBsaW5lLCBzb3VyY2VVUkx9OworICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQocyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7IFN0
cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBTdGFja0Zy
YW1lTmF0aXZlQ29kZSwgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPigpLCAtMSwgVVN0cmluZygpfTsK
KyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOworICAgICAgICB9CisgICAgICAgIGNhbGxG
cmFtZSA9IGdldENhbGxlckluZm8oZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBsaW5lKTsKKyAgICB9
Cit9CisKIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0
aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKQEAgLTgwOCw3ICs5MzQsOSBAQCBORVZFUl9JTkxJTkUgSGFuZGxl
ckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUs
IEpTVgogCiAgICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxkIG9ubHkgcmVhbGx5IGJlIGFkZGlu
ZyB0aGVzZSBwcm9wZXJ0aWVzIHRvIFZNIGdlbmVyYXRlZCBleGNlcHRpb25zLAogICAgICAgICAg
ICAgLy8gYnV0IHRoZSBpbnNwZWN0b3IgY3VycmVudGx5IHJlcXVpcmVzIHRoZXNlIGZvciBhbGwg
dGhyb3duIG9iamVjdHMuCi0gICAgICAgICAgICBhZGRFcnJvckluZm8oY2FsbEZyYW1lLCBleGNl
cHRpb24sIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlKCkpOworICAgICAgICAg
ICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0YWNrVHJhY2U7CisgICAgICAgICAgICBnZXRTdGFja1Ry
YWNlKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBzdGFja1RyYWNlKTsKKyAgICAgICAgICAgIGFk
ZEVycm9ySW5mbyhjYWxsRnJhbWUsIGV4Y2VwdGlvbiwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5zb3VyY2UoKSwgc3RhY2tUcmFjZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpc0ludGVy
cnVwdCA9IGlzSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSB8fCBpc1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKTsKQEAgLTE3NDMsMjAgKzE4NzEs
MzEgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBm
bGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAjZGVmaW5lIFNBTVBMRShjb2RlQmxv
Y2ssIHZQQykKICNlbmRpZgogCisjZGVmaW5lIFVQREFURV9CWVRFQ09ERV9PRkZTRVQoKSBcCisg
ICAgZG8ge1wKKyAgICAgICAgY2FsbEZyYW1lLT5zZXRCeXRlY29kZU9mZnNldEZvck5vbkRGR0Nv
ZGUodlBDIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5kYXRhKCkgKyAxKTtcCisgICAgfSB3
aGlsZSAoMCkKKwogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICNk
ZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFNBTVBMRShjb2RlQmxvY2ssIHZQQyk7IGdvdG8gKnZQ
Qy0+dS5vcGNvZGUKICNpZiBFTkFCTEUoT1BDT0RFX1NUQVRTKQotICAgICNkZWZpbmUgREVGSU5F
X09QQ09ERShvcGNvZGUpIG9wY29kZTogT3Bjb2RlU3RhdHM6OnJlY29yZEluc3RydWN0aW9uKG9w
Y29kZSk7CisgICAgI2RlZmluZSBERUZJTkVfT1BDT0RFKG9wY29kZSkgXAorICAgICAgICBvcGNv
ZGU6XAorICAgICAgICAgICAgT3Bjb2RlU3RhdHM6OnJlY29yZEluc3RydWN0aW9uKG9wY29kZSk7
XAorICAgICAgICAgICAgVVBEQVRFX0JZVEVDT0RFX09GRlNFVCgpOwogI2Vsc2UKLSAgICAjZGVm
aW5lIERFRklORV9PUENPREUob3Bjb2RlKSBvcGNvZGU6CisgICAgI2RlZmluZSBERUZJTkVfT1BD
T0RFKG9wY29kZSkgb3Bjb2RlOiBVUERBVEVfQllURUNPREVfT0ZGU0VUKCk7CiAjZW5kaWYKICAg
ICBORVhUX0lOU1RSVUNUSU9OKCk7CiAjZWxzZQogICAgICNkZWZpbmUgTkVYVF9JTlNUUlVDVElP
TigpIFNBTVBMRShjb2RlQmxvY2ssIHZQQyk7IGdvdG8gaW50ZXJwcmV0ZXJMb29wU3RhcnQKICNp
ZiBFTkFCTEUoT1BDT0RFX1NUQVRTKQotICAgICNkZWZpbmUgREVGSU5FX09QQ09ERShvcGNvZGUp
IGNhc2Ugb3Bjb2RlOiBPcGNvZGVTdGF0czo6cmVjb3JkSW5zdHJ1Y3Rpb24ob3Bjb2RlKTsKKyAg
ICAjZGVmaW5lIERFRklORV9PUENPREUob3Bjb2RlKSBcCisgICAgICAgIGNhc2Ugb3Bjb2RlOlwK
KyAgICAgICAgICAgIE9wY29kZVN0YXRzOjpyZWNvcmRJbnN0cnVjdGlvbihvcGNvZGUpO1wKKyAg
ICAgICAgICAgIFVQREFURV9CWVRFQ09ERV9PRkZTRVQoKTsKICNlbHNlCi0gICAgI2RlZmluZSBE
RUZJTkVfT1BDT0RFKG9wY29kZSkgY2FzZSBvcGNvZGU6CisgICAgI2RlZmluZSBERUZJTkVfT1BD
T0RFKG9wY29kZSkgY2FzZSBvcGNvZGU6IFVQREFURV9CWVRFQ09ERV9PRkZTRVQoKTsKICNlbmRp
ZgogICAgIHdoaWxlICgxKSB7IC8vIGl0ZXJhdG9yIGxvb3AgYmVnaW5zCiAgICAgaW50ZXJwcmV0
ZXJMb29wU3RhcnQ6OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAppbmRleCAyZTZhM2NhMTMwYzdjMDY1NDEyNjVkNzQ1ZDBkNDg1ZTRiYjdjNmVh
Li4zZWEwYTU4NWYxNWExMjA2Nzg1ZGViYTRmMzgyYWZhYTk1YzMzMjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMzEsNiArMzEs
NyBAQAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKQEAgLTQyLDggKzQzLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGU7Cisg
ICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwot
ICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xh
c3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CkBAIC02Miw2ICs2Myw2
MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV2lsbEV4ZWN1dGVTdGF0ZW1lbnQKICAgICB9
OwogCisgICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgeworICAgICAgICBTdGFja0ZyYW1lR2xv
YmFsQ29kZSwKKyAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAorICAgICAgICBTdGFja0ZyYW1l
RnVuY3Rpb25Db2RlLAorICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQorICAgIH07CisKKyAg
ICBzdHJ1Y3QgU3RhY2tGcmFtZSB7CisgICAgICAgIFN0cm9uZzxKU09iamVjdD4gY2FsbGVlOwor
ICAgICAgICBTdGFja0ZyYW1lQ29kZVR5cGUgY29kZVR5cGU7CisgICAgICAgIFN0cm9uZzxFeGVj
dXRhYmxlQmFzZT4gZXhlY3V0YWJsZTsKKyAgICAgICAgaW50IGxpbmU7CisgICAgICAgIFVTdHJp
bmcgc291cmNlVVJMOworICAgICAgICBVU3RyaW5nIHRvU3RyaW5nKENhbGxGcmFtZSogY2FsbEZy
YW1lKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBib29sIGhhc1NvdXJjZVVSTEluZm8g
PSAhc291cmNlVVJMLmlzTnVsbCgpICYmICFzb3VyY2VVUkwuaXNFbXB0eSgpOworICAgICAgICAg
ICAgYm9vbCBoYXNMaW5lSW5mbyA9IGxpbmUgPiAtMTsKKyAgICAgICAgICAgIFN0cmluZyB0cmFj
ZUxpbmU7CisgICAgICAgICAgICBKU09iamVjdCogc3RhY2tGcmFtZUNhbGxlZSA9IGNhbGxlZS5n
ZXQoKTsKKworICAgICAgICAgICAgc3dpdGNoIChjb2RlVHlwZSkgeworICAgICAgICAgICAgY2Fz
ZSBTdGFja0ZyYW1lRXZhbENvZGU6CisgICAgICAgICAgICAgICAgaWYgKGhhc1NvdXJjZVVSTElu
Zm8pIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gaGFzTGluZUluZm8gPyBTdHJp
bmc6OmZvcm1hdCgiZXZhbCBjb2RlQCVzOiVkIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpLCBs
aW5lKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTdHJp
bmc6OmZvcm1hdCgiZXZhbCBjb2RlQCVzIiwgc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gU3Ry
aW5nOjpmb3JtYXQoImV2YWwgY29kZSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBTdGFja0ZyYW1lTmF0aXZlQ29kZTogeworICAgICAgICAgICAgICAgIGlmIChj
YWxsZWUpIHsKKyAgICAgICAgICAgICAgICAgICAgVVN0cmluZyBmdW5jdGlvbk5hbWUgPSBnZXRD
YWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lLCBzdGFja0ZyYW1lQ2FsbGVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgdHJhY2VMaW5lID0gU3RyaW5nOjpmb3JtYXQoIiVzQFtuYXRpdmUgY29k
ZV0iLCBmdW5jdGlvbk5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgICAgICB0cmFjZUxpbmUgPSAiW25hdGl2ZSBjb2RlXSI7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFN0YWNr
RnJhbWVGdW5jdGlvbkNvZGU6IHsKKyAgICAgICAgICAgICAgICBVU3RyaW5nIGZ1bmN0aW9uTmFt
ZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUsIHN0YWNrRnJhbWVDYWxsZWUp
OworICAgICAgICAgICAgICAgIGlmIChoYXNTb3VyY2VVUkxJbmZvKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRyYWNlTGluZSA9IGhhc0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoIiVzQCVzOiVk
IiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpLCBzb3VyY2VVUkwuYXNjaWkoKS5kYXRhKCks
IGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU3Ry
aW5nOjpmb3JtYXQoIiVzQCVzIiwgZnVuY3Rpb25OYW1lLmFzY2lpKCkuZGF0YSgpLCBzb3VyY2VV
UkwuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICB0cmFjZUxpbmUgPSBTdHJpbmc6OmZvcm1hdCgiJXNcbiIsIGZ1bmN0aW9uTmFtZS5h
c2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxDb2RlOgorICAgICAgICAgICAgICAgIGlm
IChoYXNTb3VyY2VVUkxJbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIHRyYWNlTGluZSA9IGhh
c0xpbmVJbmZvID8gU3RyaW5nOjpmb3JtYXQoImdsb2JhbCBjb2RlQCVzOiVkIiwgc291cmNlVVJM
LmFzY2lpKCkuZGF0YSgpLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IFN0cmluZzo6Zm9ybWF0KCJnbG9iYWwgY29kZUAlcyIsIHNvdXJjZVVSTC5h
c2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHRyYWNlTGluZSA9IFN0cmluZzo6Zm9ybWF0KCJnbG9iYWwgY29kZSIpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cmFjZUxpbmUu
aW1wbCgpOworICAgICAgICB9CisgICAgfTsKKwogICAgIGNsYXNzIFRvcENhbGxGcmFtZVNldHRl
ciB7CiAgICAgcHVibGljOgogICAgICAgICBUb3BDYWxsRnJhbWVTZXR0ZXIoSlNHbG9iYWxEYXRh
JiBnbG9iYWwsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMTUxLDYgKzIwOSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdGhyb3dFeGNl
cHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAg
ICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lELCBp
bnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBzdGF0aWMgY29uc3QgVVN0cmlu
ZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tGcmFtZUNvZGVUeXBlLCBjb25zdCBVU3Ry
aW5nJiwgaW50KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0U3Rh
Y2tUcmFjZShKU0dsb2JhbERhdGEqLCBpbnQgbGluZSwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1
bHRzKTsKIAogICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAg
ICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0N2Vj
OGM2MDg1OGI2NzllMDlhY2FmYjBkM2YxZDJhMDllZDVjMzI2Li4yNTI0NWU2OTAwNmE5ZmMyM2M1
N2ZhNTNmZjJjMjM0YmE1YTE3N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCkBAIC03OCw2ICs3OSw3IEBAIHN0YXRpYyBib29sIGZpbGxCdWZm
ZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgVVN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFy
PiYKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RGVidWcoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVjU3RhdGUqKTsKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVt
b3J5KEV4ZWNTdGF0ZSopOwpAQCAtMTg0LDYgKzE4Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
YWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgInJ1biIsIGZ1bmN0aW9uUnVuLCAxKTsKICAgICAgICAg
YWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgImxvYWQiLCBmdW5jdGlvbkxvYWQsIDEpOwogICAgICAg
ICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAiY2hlY2tTeW50YXgiLCBmdW5jdGlvbkNoZWNrU3lu
dGF4LCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgImpzY1N0YWNrIiwgZnVu
Y3Rpb25KU0NTdGFjaywgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKGdsb2JhbERhdGEsICJyZWFk
bGluZSIsIGZ1bmN0aW9uUmVhZGxpbmUsIDApOwogICAgICAgICBhZGRGdW5jdGlvbihnbG9iYWxE
YXRhLCAicHJlY2lzZVRpbWUiLCBmdW5jdGlvblByZWNpc2VUaW1lLCAwKTsKICNpZiBFTkFCTEUo
U0FNUExJTkdfRkxBR1MpCkBAIC0yNTIsNiArMjU1LDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkpTQ1N0YWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBTdHJpbmcgdHJh
Y2UgPSAiLS0+IFN0YWNrIHRyYWNlOlxuIjsKKyAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tU
cmFjZTsKKyAgICBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhlYy0+Z2xvYmFsRGF0YSgp
LCAtMSwgc3RhY2tUcmFjZSk7CisgICAgaW50IGkgPSAwOworCisgICAgZm9yIChWZWN0b3I8U3Rh
Y2tGcmFtZT46Oml0ZXJhdG9yIGl0ZXIgPSBzdGFja1RyYWNlLmJlZ2luKCk7IGl0ZXIgPCBzdGFj
a1RyYWNlLmVuZCgpOyBpdGVyKyspIHsKKyAgICAgICAgU3RhY2tGcmFtZSBsZXZlbCA9ICppdGVy
OworICAgICAgICB0cmFjZSArPSBTdHJpbmc6OmZvcm1hdCgiICAgICVpICAgJXNcbiIsIGksIGxl
dmVsLnRvU3RyaW5nKGV4ZWMpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpKys7CisgICAgfQor
ICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCB0cmFjZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0MoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKaW5kZXggMjc4ZDE3ZWY0OGY2NGMyMDcwZTZhYThmMGM5NWQ1MWI0MGIwOTA5Yi4uMWMwMDll
ZWNiNmRjNzQwZjc4N2Y0MGQ0NzQ5ZDVmZWQwMjQyYjFmYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaApAQCAtMTQ5Myw3ICsxNDkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZmluaXNoUGFyc2luZyhQYXNzUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4sIGNv
bnN0IElkZW50aWZpZXImKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQotICAgICAgICB2b2lkIHNldEluZmVycmVkTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUpIHsgbV9pbmZlcnJlZE5hbWUgPSBpbmZlcnJl
ZE5hbWU7IH0KKyAgICAgICAgdm9pZCBzZXRJbmZlcnJlZE5hbWUoY29uc3QgSWRlbnRpZmllciYg
aW5mZXJyZWROYW1lKSB7IEFTU0VSVCghaW5mZXJyZWROYW1lLmlzTnVsbCgpKTsgbV9pbmZlcnJl
ZE5hbWUgPSBpbmZlcnJlZE5hbWU7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJy
ZWROYW1lKCkgeyByZXR1cm4gbV9pbmZlcnJlZE5hbWUuaXNFbXB0eSgpID8gbV9pZGVudCA6IG1f
aW5mZXJyZWROYW1lOyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0
aW9uID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGUzZTZl
MWUyMzAwOTYyOTFkMmRkNTEyNmNmMzhmYWM5ZGJlMGZmOTcuLjliNzYyNDJkNGQ5MzJjYWRhYmZm
YzIxMTNkNGI5OGVkMzY5MWY3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aApAQCAtMTAyNSw3ICsxMDI1LDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoKICAgICAgICAg
ZWxzZSBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpKQogICAgICAgICAgICAgKmV4Y2VwdGlv
biA9IGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRFcnJvckluZm8oJmxleGljYWxH
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgKm1fc291cmNlKTsKKyAgICAgICAgICAgICpleGNl
cHRpb24gPSBhZGRFcnJvckluZm8oJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwg
Y3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwg
Km1fc291cmNlLCBWZWN0b3I8U3RhY2tGcmFtZT4oKSk7CiAgICAgfQogCiAgICAgaWYgKGRlYnVn
Z2VyICYmICFQYXJzZWROb2RlOjpzY29wZUlzRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAwOGQ4NjQ0YjU4YjZi
NmU4YWQwZTA5NWYxOGFkMzQzZjJiN2RmNmE4Li5kNzllNWM3ODNhMzY5ZjY0MjI0YzkxM2YzODRk
MzNhYjM4ZTViYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTYyLDYgKzYyLDcgQEAKICAgICBtYWNybyhwcm90b3R5cGUp
IFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzb3VyY2UpIFwKKyAgICBtYWNybyhzdGFj
aykgXAogICAgIG1hY3JvKHRlc3QpIFwKICAgICBtYWNybyh0b0V4cG9uZW50aWFsKSBcCiAgICAg
bWFjcm8odG9GaXhlZCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmlu
ZGV4IDA5NDdlM2MyMDFiZmZjZWZjMjE0ZWRmNDE3NDczODYzNzFjNzQ4NDkuLjI0M2RjODg1NmIw
MDFjNWU4NjFmNzQxZjJhZTgxNjQyZTRhNTMxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKIAogI2luY2x1ZGUgIkNvbnN0cnVjdERh
dGEuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNB
cnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC0xMTYsNyArMTE4LDcgQEAgSlNPYmplY3Qq
IGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
ICAgICByZXR1cm4gY3JlYXRlVVJJRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBt
ZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKK0pTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU09i
amVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IFZl
Y3RvcjxTdGFja0ZyYW1lPiYgc3RhY2tUcmFjZSkKIHsKICAgICBjb25zdCBVU3RyaW5nJiBzb3Vy
Y2VVUkwgPSBzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7CiAKQEAgLTEyNCwxMyArMTI2LDM0IEBA
IEpTT2JqZWN0KiBhZGRFcnJvckluZm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU09iamVj
dCogZXJyb3IsIGludCBsaW5lLCBjb25zCiAgICAgICAgIGVycm9yLT5wdXREaXJlY3QoKmdsb2Jh
bERhdGEsIElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgbGluZVByb3BlcnR5TmFtZSksIGpzTnVtYmVy
KGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVs
bCgpKQogICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGds
b2JhbERhdGEsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKGdsb2JhbERhdGEsIHNv
dXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgaWYgKCFzdGFja1RyYWNlLmlz
RW1wdHkoKSkgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gMDsKKyAg
ICAgICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihlcnJvcikgfHwgaXNJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihlcnJvcikpCisgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QgPSBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0OworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBnbG9iYWxPYmplY3QgPSBlcnJvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8v
IFdlIHVzZSB0aGUgdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBjcmVhdGlvbiBtZWNoYW5pc20gYW5k
IHJlbGF0ZWQgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgLy8gZnVuY3Rpb25zIGFzIHRoZXkncmUg
dGhlIG9ubHkgbWVjaGFuaXNtIHdlIGN1cnJlbnRseSBoYXZlIHRoYXQgd2lsbCBndWFyYW50ZWUg
d2UKKyAgICAgICAgLy8gZG9uJ3QgY2FsbCBzZXR0ZXJzIG9uIHRoZSBwcm90b3R5cGUuIFRlY2hu
aWNhbGx5IGl0J3MgZmFzdGVyIHRoYW4gdGhlIGFsdGVybmF0aXZlLAorICAgICAgICAvLyBidXQg
dGhlIG51bWVyb3VzIGFsbG9jYXRpb25zIHRoYXQgdGFrZSBwbGFjZSBpbiB0aGlzIGxvb3AgbWFr
ZXMgdGhhdCBsYXN0IGJpdAorICAgICAgICAvLyBzb21ld2hhdCBtb290LgorICAgICAgICBKU0Fy
cmF5KiBzdGFja1RyYWNlQXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKCpn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCksIHN0YWNrVHJhY2Uuc2l6
ZSgpKTsKKyAgICAgICAgaWYgKCFzdGFja1RyYWNlQXJyYXkpCisgICAgICAgICAgICByZXR1cm4g
ZXJyb3I7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGFja1RyYWNlLnNpemUo
KTsgaSsrKSB7CisgICAgICAgICAgICBVU3RyaW5nIHN0YWNrTGV2ZWwgPSBzdGFja1RyYWNlW2ld
LnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKKyAgICAgICAgICAgIHN0YWNr
VHJhY2VBcnJheS0+aW5pdGlhbGl6ZUluZGV4KCpnbG9iYWxEYXRhLCBpLCBqc1N0cmluZyhnbG9i
YWxEYXRhLCBzdGFja0xldmVsKSk7CisgICAgICAgIH0KKyAgICAgICAgc3RhY2tUcmFjZUFycmF5
LT5jb21wbGV0ZUluaXRpYWxpemF0aW9uKHN0YWNrVHJhY2Uuc2l6ZSgpKTsKKyAgICAgICAgZXJy
b3ItPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+c3Rh
Y2ssIHN0YWNrVHJhY2VBcnJheSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICB9CiAKICAg
ICByZXR1cm4gZXJyb3I7CiB9CiAKLUpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Up
CitKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9y
LCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBWZWN0b3I8U3RhY2tG
cmFtZT4mIHN0YWNrVHJhY2UpCiB7Ci0gICAgcmV0dXJuIGFkZEVycm9ySW5mbygmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBlcnJvciwgbGluZSwgc291cmNlKTsKKyAgICByZXR1cm4gYWRkRXJyb3JJbmZv
KCZleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yLCBsaW5lLCBzb3VyY2UsIHN0YWNrVHJhY2UpOwog
fQogCiBib29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IDg4YjU0MGEzNWZjMjI3YmEx
MDAxZDA5YjY2MjlkZDU3MTQwZjNhN2MuLjU5YjM5NDk1ZmFiNjI3NWE2YzI5ZjI5NDY4OTc5MWE4
M2VlM2NhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtMjQsNiAr
MjQsNyBAQAogI2RlZmluZSBFcnJvcl9oCiAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgi
CisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgPHN0ZGludC5oPgogCkBAIC01Niw5ICs1Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Ly8gTWV0aG9kcyB0byBhZGQgCiAgICAgYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNP
YmplY3QqIGVycm9yKTsKLSAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSos
IEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICBKU09i
amVjdCogYWRkRXJyb3JJbmZvKEpTR2xvYmFsRGF0YSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxp
bmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mKTsKICAgICAv
LyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3Rh
dGUqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAg
SlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IsIGludCBs
aW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+Jik7CiAKICAg
ICAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1Zh
bHVlIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTNiODkxZjlmYWMw
N2U4NDAyZTc3OWU1NjI5ZDNiMzMyMzFmNTlkMi4uMmU4NjhlZWYzMGY3ZWM4NWY1NjZhNTQ2MjY1
MzU3ZTk0NTQxNTk3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAyLTE2ICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEVycm9yLnN0YWNr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njk5NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0
Y2FzZXMgZm9yIHByb2R1Y2luZyBhIHN0YWNrIHRyYWNlIG9uIGV4Y2VwdGlvbiBvYmplY3RzLgor
CisgICAgICAgICogZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvZXhjZXB0aW9uLXByb3BlcnRpZXMuanM6Cisg
ICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RhY2stdHJhY2UuanM6IEFkZGVkLgorICAg
ICAgICAocHJpbnRTdGFjayk6CisgICAgICAgIChob3N0VGhyb3dlcik6CisgICAgICAgIChjYWxs
YmFja2VyKToKKyAgICAgICAgKG91dGVyKToKKyAgICAgICAgKGlubmVyKToKKyAgICAgICAgKGV2
YWxlcik6CisgICAgICAgIChub3JtYWxPdXRlcik6CisgICAgICAgIChub3JtYWxJbm5lcik6Cisg
ICAgICAgIChzY3JpcHRlcklubmVyKToKKyAgICAgICAgKHNjcmlwdGVyT3V0ZXIpOgorICAgICAg
ICAoc2VsZlJlY3Vyc2l2ZTEpOgorICAgICAgICAoc2VsZlJlY3Vyc2l2ZTIpOgorICAgICAgICAo
c2VsZlJlY3Vyc2l2ZTMpOgorICAgICAgICAodGhyb3dFcnJvcik6CisgICAgICAgIChvYmplY3Qu
Z2V0IGdldHRlcjEuby52YWx1ZU9mKToKKyAgICAgICAgKG9iamVjdC5nZXQgZ2V0dGVyMSk6Cisg
ICAgICAgIChvYmplY3QuZ2V0IGdldHRlcjIpOgorICAgICAgICAob2JqZWN0LmdldCBnZXR0ZXIz
Lm8yLnZhbHVlT2YpOgorICAgICAgICAob2JqZWN0LmdldCBnZXR0ZXIzKToKKyAgICAgICAgKG9i
amVjdC5ub25JbmxpbmVhYmxlLmNhbGxDb3VudCk6CisgICAgICAgIChvYmplY3Qubm9uSW5saW5l
YWJsZSk6CisgICAgICAgIChvYmplY3QuaW5saW5lYWJsZSk6CisgICAgICAgICh5ZXRBbm90aGVy
SW5saW5lZENhbGwpOgorICAgICAgICAobWFrZUlubGluYWJsZUNhbGwpOgorICAgICAgICAoLnRy
eS5nKToKKyAgICAgICAgKGgpOgorICAgICAgICAobWFwVGVzdCk6CisgICAgICAgIChtYXBUZXN0
RHJpdmVyKToKKyAgICAgICAgKGRmZ0Z1bmN0aW9uKToKKyAgICAgICAgKHRyeS5mKToKKyAgICAg
ICAgKiBmYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9zdGFjay10cmFjZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0xNiAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RL
IHJlYmFzZWxpbmUgYWZ0ZXIgcjEwNzk1Mi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
anMvZXhjZXB0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9leGNlcHRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMDgwMzY3MGMzNmNiMDI3
NmY2NTYxMDhmM2I0YjQ4MWQ0NzY5OTcwNy4uNTM2M2UwNDU3NGI3MjdkMmY2ZDg5ZDM2ZmFmZGJl
OWIwZWU1YTQ1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24tcHJv
cGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9leGNlcHRpb24t
cHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFCiAKIAogUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhlcnJvcikgaXMgW10KLVBBU1Mg
ZW51bWVyYWJsZVByb3BlcnRpZXMobmF0aXZlRXJyb3IpIGlzIFsibGluZSIsICJzb3VyY2VVUkwi
XQorUEFTUyBlbnVtZXJhYmxlUHJvcGVydGllcyhuYXRpdmVFcnJvcikgaXMgWyJsaW5lIiwgInNv
dXJjZVVSTCIsICJzdGFjayJdCiBQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJv
cikubmFtZSBpcyAiUmFuZ2VFcnJvciIKIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hdGl2
ZUVycm9yKS5tZXNzYWdlIGlzICIiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9leGNlcHRpb24tcHJv
cGVydGllcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1w
cm9wZXJ0aWVzLmpzCmluZGV4IGMyZjYwZGFiNTVhNmJkNDczODAyYWJkMDRlMGIxOGU3ZmFjODU1
OGMuLjE5ZWIzNDUyNDkyMGQ4MDJmYjA5NTE1MTEzYWM5OWU0OWQyMmQxNmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzLmpz
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2V4Y2VwdGlvbi1wcm9wZXJ0
aWVzLmpzCkBAIC0xNiw3ICsxNiw3IEBAIHRyeSB7CiAgICAgdmFyIGVycm9yID0gbmV3IEVycm9y
KCJtZXNzYWdlIik7CiAKICAgICBzaG91bGRCZSgnZW51bWVyYWJsZVByb3BlcnRpZXMoZXJyb3Ip
JywgJ1tdJyk7Ci0gICAgc2hvdWxkQmUoJ2VudW1lcmFibGVQcm9wZXJ0aWVzKG5hdGl2ZUVycm9y
KScsICdbImxpbmUiLCAic291cmNlVVJMIl0nKTsKKyAgICBzaG91bGRCZSgnZW51bWVyYWJsZVBy
b3BlcnRpZXMobmF0aXZlRXJyb3IpJywgJ1sibGluZSIsICJzb3VyY2VVUkwiLCAic3RhY2siXScp
OwogCiAgICAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90b3R5cGVPZihuYXRpdmVFcnJvcikubmFt
ZScsICciUmFuZ2VFcnJvciInKTsKICAgICBzaG91bGRCZSgnT2JqZWN0LmdldFByb3RvdHlwZU9m
KG5hdGl2ZUVycm9yKS5tZXNzYWdlJywgJyIiJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMv
c2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzMjIxNzQ3MmJlYTA2ZGZk
NGE3MGQ4YWEwOGQ0Mjg5YjU0NmNlNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwpAQCAtMCwwICsxLDIxNCBAQAoraWYg
KCF0aGlzLmFsZXJ0KSB7CisgICAgZGVidWcgPSBwcmludDsKKyAgICBkZXNjcmlwdGlvbiA9IHBy
aW50OworfQorCitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3QgY2hlY2tzIHN0YWNrIHRyYWNlIGNv
cmVjdG5lc3MgaW4gc3BlY2lhbCBjYXNlcy4nCispOworCitmdW5jdGlvbiBwcmludFN0YWNrKHN0
YWNrVHJhY2UpIHsKKyAgICBkZWJ1ZygiLS0+IFN0YWNrIFRyYWNlOiIpCisgICAgdmFyIGxlbmd0
aCA9IE1hdGgubWluKHN0YWNrVHJhY2UubGVuZ3RoLCAxMDApOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGluZGV4T2ZBdCA9IHN0YWNrVHJhY2Vb
aV0uaW5kZXhPZignQCcpCisgICAgICAgIHZhciBpbmRleE9mTGFzdFNsYXNoID0gc3RhY2tUcmFj
ZVtpXS5sYXN0SW5kZXhPZignLycpOworICAgICAgICBpZiAoaW5kZXhPZkxhc3RTbGFzaCA9PSAt
MSkKKyAgICAgICAgICAgIGluZGV4T2ZMYXN0U2xhc2ggPSBpbmRleE9mQXQKKyAgICAgICAgdmFy
IGZ1bmN0aW9uTmFtZSA9IHN0YWNrVHJhY2VbaV0uc3Vic3RyaW5nKDAsIGluZGV4T2ZBdCk7Cisg
ICAgICAgIHZhciBmaWxlTmFtZSA9IHN0YWNrVHJhY2VbaV0uc3Vic3RyaW5nKGluZGV4T2ZMYXN0
U2xhc2ggKyAxKTsKKyAgICAgICAgZGVidWcoIiAgICAiICsgaSArICIgICAiICsgZnVuY3Rpb25O
YW1lICsgIiBhdCAiICsgZmlsZU5hbWUpOworICAgIH0KKyAgICBkZWJ1ZygnJyk7Cit9CisKK2Z1
bmN0aW9uIGhvc3RUaHJvd2VyKCkgeyBFbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZC5jYWxs
KHsgfSwgW3sgfV0pOyAgfQorZnVuY3Rpb24gY2FsbGJhY2tlcihmKSB7IFswXS5tYXAoZik7IH0K
K2Z1bmN0aW9uIG91dGVyKGVycm9yTmFtZSkgeyBpbm5lcihlcnJvck5hbWUpOyB9CitmdW5jdGlv
biBpbm5lcihlcnJvck5hbWUpIHsgdGhyb3cgbmV3IEVycm9yKCJFcnJvciBpbiAiICsgZXJyb3JO
YW1lKTsgfQorZnVuY3Rpb24gZXZhbGVyKGNvZGUpIHsgZXZhbChjb2RlKTsgfQorZnVuY3Rpb24g
bm9ybWFsT3V0ZXIoKSB7IG5vcm1hbElubmVyKCk7IH0KK2Z1bmN0aW9uIG5vcm1hbElubmVyKCkg
eyBpZih0aGlzVmFyRG9lc250RXhpc3QpIGZhaWxJZlRydWUoInNob3VsZEZhaWxCZWZvcmVUaGlz
IikgfTsKK2Z1bmN0aW9uIHNjcmlwdGVySW5uZXIoKSB7IGh0bWxJbm5lcigpOyB9CitmdW5jdGlv
biBzY3JpcHRlck91dGVyKCkgeyBodG1sT3V0ZXIoKTsgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHBl
Y3RlZCBmdW5jdGlvbnMgaW4gc3RhY2sgdHJhY2UKKy8vIE5vcm1hbCBDYXNlCit0cnkgeyBub3Jt
YWxPdXRlcigpIH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKSB9ICAgICAgICAgICAg
ICAgICAgICAgLy8gbm9ybWFsT3V0ZXIgLT4gbm9ybWFsSW5uZXIKKworLy8gRXZhbCBDYXNlCit0
cnkgeyBldmFsZXIoImlubmVyKCdpbm5lciBldmFsJyk7Iik7IH0gY2F0Y2ggKGUpIHsgcHJpbnRT
dGFjayhlLnN0YWNrKSB9ICAgLy8gZXZhbGVyIC0+IGV2YWwgLT4gaW5uZXIKK3RyeSB7IGV2YWxl
cigib3V0ZXIoJ291dGVyIGV2YWwnKTsiKTsgfSBjYXRjaCAoZSkgeyBwcmludFN0YWNrKGUuc3Rh
Y2spIH0gICAvLyBldmFsZXIgLT4gZXZhbCAtPiBvdXRlciAtPiBpbm5lcgorCisvLyBGdW5jdGlv
biBDYWxsYmFjayBDYXNlCit0cnkgeyBjYWxsYmFja2VyKGlubmVyKCdpbm5lciBtYXAnKSk7IH0g
Y2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfSAgIC8vIGNhbGxiYWNrZXIgLT4gbWFw
IC0+IGlubmVyCit0cnkgeyBjYWxsYmFja2VyKG91dGVyKCdvdXRlciBtYXAnKSk7IH0gY2F0Y2gg
KGUpIHsgcHJpbnRTdGFjayhlLnN0YWNrKTsgfSAgIC8vIGNhbGxiYWNrZXIgLT4gbWFwIC0+IG91
dGVyIC0+IGlubmVyCisKKy8vIEhvc3QgQ29kZSBDYXNlCit0cnkgeyBob3N0VGhyb3dlcigpOyB9
IGNhdGNoIChlKSB7IHByaW50U3RhY2soZS5zdGFjayk7IH0gICAgICAgICAgICAgICAgICAgIC8v
IGhvc3RUaHJvd2VyCisKK3RyeSB7IHNjcmlwdGVySW5uZXIoKTsgfSBjYXRjaCAoZSkgeyBwcmlu
dFN0YWNrKGUuc3RhY2spIH0gICAgICAgICAgICAgICAgICAgLy8gcHJvZ3JhbSAtPiBzY3JpcHRl
ciAtPiBpbm5lcgordHJ5IHsgc2NyaXB0ZXJPdXRlcigpOyB9IGNhdGNoIChlKSB7IHByaW50U3Rh
Y2soZS5zdGFjaykgfSAgICAgICAgICAgICAgICAgICAvLyBwcm9ncmFtIC0+IHNjcmlwdGVyIC0+
IG91dGVyIC0+IGlubmVyCisKK2Z1bmN0aW9uIHNlbGZSZWN1cnNpdmUxKCkgeworICAgIHNlbGZS
ZWN1cnNpdmUxKCk7Cit9CisKK3RyeSB7IHNlbGZSZWN1cnNpdmUxKCk7IH0gY2F0Y2ggKGUpIHsg
cHJpbnRTdGFjayhlLnN0YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8vIHNlbGZSZWN1cnNpdmUx
IC0+IHNlbGZSZWN1cnNpdmUxIC0+IHNlbGZSZWN1cnNpdmUxIC0+IHNlbGZSZWN1cnNpdmUxIC4u
LgorCitmdW5jdGlvbiBzZWxmUmVjdXJzaXZlMigpIHsKKyAgICAvLyBBIGxpdHRsZSB3b3JrIHRv
IG1ha2UgdGhlIERGRyBraWNrIGluCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7
CisgICAgICAgIGlmIChpID09IDkpCisgICAgICAgICAgICBzZWxmUmVjdXJzaXZlMigpOyAKKyAg
ICB9Cit9CisKK3RyeSB7IHNlbGZSZWN1cnNpdmUyKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFj
ayhlLnN0YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8vIHNlbGZSZWN1cnNpdmUyIC0+IHNlbGZS
ZWN1cnNpdmUyIC0+IHNlbGZSZWN1cnNpdmUyIC0+IHNlbGZSZWN1cnNpdmUyIC4uLgorCitmdW5j
dGlvbiBzZWxmUmVjdXJzaXZlMygpIHsKKyAgICBldmFsKCJzZWxmUmVjdXJzaXZlMygpIik7Cit9
CisKK3RyeSB7IHNlbGZSZWN1cnNpdmUzKCk7IH0gY2F0Y2ggKGUpIHsgcHJpbnRTdGFjayhlLnN0
YWNrKSB9ICAgICAgICAgICAgICAgICAgIC8vIHNlbGZSZWN1cnNpdmUzIC0+IGV2YWwgLT4gc2Vs
ZlJlY3Vyc2l2ZTMgLT4gZXZhbCAuLi4KKwordmFyIGNhbGxDb3VudCA9IDA7CisKK2Z1bmN0aW9u
IHRocm93RXJyb3IoKSB7CisgICAgdGhyb3cge307Cit9CisKK3ZhciBvYmplY3QgPSB7CisgICAg
Z2V0IGdldHRlcjEoKSB7CisgICAgICAgIHZhciBvID0geworICAgICAgICAgICAgdmFsdWVPZjog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcigpCisgICAgICAgICAgICB9
CisgICAgICAgIH07CisgICAgICAgICtvOworICAgIH0sCisgICAgZ2V0IGdldHRlcjIoKSB7Cisg
ICAgICAgIHZhciBvID0geworICAgICAgICAgICAgdmFsdWVPZjogdGhyb3dFcnJvcgorICAgICAg
ICB9OworICAgICAgICArbzsKKyAgICB9LAorICAgIGdldCBnZXR0ZXIzKCkgeworICAgICAgICB2
YXIgbzEgPSB7CisgICAgICAgICAgICB2YWx1ZU9mOiB0aHJvd0Vycm9yCisgICAgICAgIH07Cisg
ICAgICAgIHZhciBvMiA9IHsKKyAgICAgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07Cisg
ICAgICAgIGlmIChjYWxsQ291bnQgPT0gOTk5OCkKKyAgICAgICAgICAgICtvMTsKKyAgICAgICAg
aWYgKGNhbGxDb3VudCA9PSA5OTk5KQorICAgICAgICAgICAgK28yOworICAgIH0sCisgICAgbm9u
SW5saW5lYWJsZSA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKDApIHJldHVybiBbYXJndW1l
bnRzLCBmdW5jdGlvbigpe31dOworICAgICAgICArK2NhbGxDb3VudDsKKyAgICAgICAgaWYgKGNh
bGxDb3VudCA9PSAxKSB7CisgICAgICAgICAgICB0aGlzLmdldHRlcjE7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2FsbENvdW50ID09IDIpIHsKKyAgICAgICAgICAgIHRoaXMuZ2V0dGVyMjsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZ2V0dGVyMzsKKyAgICAgICAgfQorICAgIH0s
CisgICAgaW5saW5lYWJsZSA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy5ub25JbmxpbmVh
YmxlKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB5ZXRBbm90aGVySW5saW5lZENhbGwobykgewor
ICAgIG8uaW5saW5lYWJsZSgpOworfQorCitmdW5jdGlvbiBtYWtlSW5saW5hYmxlQ2FsbChvKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgICAgIG5ldyB5ZXRB
bm90aGVySW5saW5lZENhbGwobyk7CisgICAgfQorfQorZm9yICh2YXIgayA9IDA7IGsgPCA0OyBr
KyspIHsKKyAgICB0cnkgeworICAgICAgICBmdW5jdGlvbiBnKCkgeworICAgICAgICAgICAgdmFy
IGogPSAwOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICBqKys7CisgICAgICAgICAgICAgICAgbWFrZUlubGluYWJsZUNhbGwob2Jq
ZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBbMV0ubWFwKGcpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcHJpbnRTdGFjayhlLnN0YWNrKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGgoKSB7CisgICAgaWYgKGNhbGxDb3VudCsrID09IDEwMDApCisgICAgICAgIHRo
cm93IHt9OworICAgIGlmIChjYWxsQ291bnQgPiAxMDAwKSB7CisgICAgICAgIFtdLm1hcC5hcHBs
eSh1bmRlZmluZWQsIHRocm93RXJyb3IpOworICAgIH0KK30KKworZnVuY3Rpb24gbWFwVGVzdChh
KSB7CisgICAgYS5tYXAoaCk7Cit9CisKK2Z1bmN0aW9uIG1hcFRlc3REcml2ZXIoKSB7CisgICAg
dmFyIGEgPSBbMSwyLDNdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjAwMDsgaSsrKQorICAg
ICAgICBtYXBUZXN0KGEpOworfQorCit0cnkgeworICAgIGNhbGxDb3VudCA9IDA7CisgICAgbWFw
VGVzdERyaXZlcigpCit9IGNhdGNoKGUpIHsKKyAgICBwcmludFN0YWNrKGUuc3RhY2spOworfQor
Cit0cnkgeworICAgIG1hcFRlc3REcml2ZXIoKQorfSBjYXRjaChlKSB7CisgICAgcHJpbnRTdGFj
ayhlLnN0YWNrKTsKK30KKwordmFyIGRmZ0Z1bmN0aW9uU2hvdWxkVGhyb3cgPSBmYWxzZTsKK2Z1
bmN0aW9uIGRmZ0Z1bmN0aW9uKCkgeyAKKyAgICBpZiAoZGZnRnVuY3Rpb25TaG91bGRUaHJvdykg
eyAKKyAgICAgICAgZGZnRnVuY3Rpb25TaG91bGRUaHJvdyA9IGZhbHNlOyAKKyAgICAgICAgdGhy
b3dFcnJvcigpOworICAgIH0KK30KKworZm9yICh2YXIgayA9IDA7IGsgPCAxMDAwOyBrKyspCisg
ICAgZGZnRnVuY3Rpb24oKTsKKwordHJ5IHsKKyAgICBkZmdGdW5jdGlvblNob3VsZFRocm93ID0g
dHJ1ZTsKKyAgICBbMSwyLDMsNF0ubWFwKGRmZ0Z1bmN0aW9uKTsKK30gY2F0Y2ggKGUpIHsKKyAg
ICBwcmludFN0YWNrKGUuc3RhY2spOworfQorCit0cnkgeyAKKyAgICB2YXIgbyA9IHsgfTsKKyAg
ICBvLl9fZGVmaW5lR2V0dGVyX18oImciLCBkZmdGdW5jdGlvbik7CisgICAgZnVuY3Rpb24gZihv
KSB7CisgICAgICAgIG8uZzsKKyAgICB9CisgICAgZm9yICh2YXIgayA9IDA7IGsgPCAxMDAwOyBr
KyspCisgICAgICAgIGYobyk7CisgICAgCisgICAgZGZnRnVuY3Rpb25TaG91bGRUaHJvdyA9IHRy
dWU7CisgICAgZihvKTsKKworfSBjYXRjaCAoZSkgeworICAgIHByaW50U3RhY2soZS5zdGFjayk7
Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMv
c3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ODhkZTMxNmE1NWFmZmVkZWVh
MjI1ZTBiM2Y5Y2VmNjZjOGYzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMxNiBAQAorVGhpcyB0ZXN0
IGNoZWNrcyBzdGFjayB0cmFjZSBjb3JlY3RuZXNzIGluIHNwZWNpYWwgY2FzZXMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIG5vcm1h
bElubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjMxCisgICAgMSAgIG5vcm1hbE91dGVyIGF0IHN0YWNr
LXRyYWNlLmpzOjMwCisgICAgMiAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjM2CisK
Ky0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6MjgKKyAg
ICAxICAgIGF0IGV2YWwgY29kZQorICAgIDIgICBldmFsIGF0IFtuYXRpdmUgY29kZV0KKworLS0+
IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczoyOAorICAgIDEg
ICBvdXRlciBhdCBzdGFjay10cmFjZS5qczoyNworICAgIDIgICAgYXQgZXZhbCBjb2RlCisgICAg
MyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlu
bmVyIGF0IHN0YWNrLXRyYWNlLmpzOjI4CisgICAgMSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRy
YWNlLmpzOjQzCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJh
Y2UuanM6MjgKKyAgICAxICAgb3V0ZXIgYXQgc3RhY2stdHJhY2UuanM6MjcKKyAgICAyICAgZ2xv
YmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDQKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAg
ICBob3N0VGhyb3dlciBhdCBzdGFjay10cmFjZS5qczoyNQorICAgIDEgICBnbG9iYWwgY29kZSBh
dCBzdGFjay10cmFjZS5qczo0NworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGh0bWxJbm5l
ciBhdCBzdGFjay10cmFjZS5odG1sOjEwCisgICAgMSAgIHNjcmlwdGVySW5uZXIgYXQgc3RhY2st
dHJhY2UuanM6MzIKKyAgICAyICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6NDkKKwor
LS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBodG1sSW5uZXIgYXQgc3RhY2stdHJhY2UuaHRtbDox
MAorICAgIDEgICBodG1sT3V0ZXIgYXQgc3RhY2stdHJhY2UuaHRtbDoxMQorICAgIDIgICBzY3Jp
cHRlck91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjMzCisgICAgMyAgIGdsb2JhbCBjb2RlIGF0IHN0
YWNrLXRyYWNlLmpzOjUwCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICAxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTMKKyAgICAyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMK
KyAgICAzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA0ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA1ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTMKKyAgICA3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAg
ICA4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA5ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICAxMCAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgMTEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1MworICAgIDEyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAg
ICAxMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgMTQgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDE1ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICAxNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUzCisgICAgMTcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mwor
ICAgIDE4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICAxOSAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgMjAgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDIxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTMKKyAgICAyMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUz
CisgICAgMjMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDI0ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICAyNSAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgMjYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1MworICAgIDI3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTMKKyAgICAyOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgMjkg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDMwICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICAzMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUzCisgICAgMzIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1MworICAgIDMzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICAz
NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgMzUgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDM2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTMKKyAgICAzNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUzCisgICAgMzggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAg
IDM5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA0MCAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgNDEgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1MworICAgIDQyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTMKKyAgICA0MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisg
ICAgNDQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDQ1ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA0NiAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgNDcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczo1MworICAgIDQ4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMK
KyAgICA0OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgNTAgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDUxICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA1MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjUzCisgICAgNTMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1
MworICAgIDU0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA1NSAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgNTYgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDU3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6NTMKKyAgICA1OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjUzCisgICAgNTkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDYw
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA2MSAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgNjIgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczo1MworICAgIDYzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6NTMKKyAgICA2NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAg
NjUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDY2ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA2NyAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgNjggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczo1MworICAgIDY5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAg
ICA3MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgNzEgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDcyICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA3MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjUzCisgICAgNzQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1Mwor
ICAgIDc1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA3NiAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgNzcgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDc4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6NTMKKyAgICA3OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUz
CisgICAgODAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDgxICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA4MiAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgODMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczo1MworICAgIDg0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
NTMKKyAgICA4NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgODYg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDg3ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA4OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjUzCisgICAgODkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czo1MworICAgIDkwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA5
MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgOTIgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAgIDkzICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6NTMKKyAgICA5NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjUzCisgICAgOTUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczo1MworICAg
IDk2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6NTMKKyAgICA5NyAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjUzCisgICAgOTggICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczo1MworICAgIDk5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6NTMKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MgorICAgIDEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MgorICAgIDIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDMg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDQgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MgorICAgIDYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MgorICAgIDcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDggICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDkgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDEwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjIKKyAgICAxMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
CisgICAgMTIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDEzICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICAxNCAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgMTUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MgorICAgIDE2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjIKKyAgICAxNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgMTgg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDE5ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICAyMCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyCisgICAgMjEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MgorICAgIDIyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICAy
MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgMjQgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDI1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjIKKyAgICAyNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyCisgICAgMjcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAg
IDI4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICAyOSAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgMzAgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MgorICAgIDMxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjIKKyAgICAzMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisg
ICAgMzMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDM0ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICAzNSAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgMzYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MgorICAgIDM3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIK
KyAgICAzOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgMzkgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDQwICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA0MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyCisgICAgNDIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MgorICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA0NCAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgNDUgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDQ2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6NjIKKyAgICA0NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjYyCisgICAgNDggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDQ5
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA1MCAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgNTEgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczo2MgorICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6NjIKKyAgICA1MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAg
NTQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDU1ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA1NiAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgNTcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczo2MgorICAgIDU4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAg
ICA1OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgNjAgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDYxICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA2MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjYyCisgICAgNjMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2Mgor
ICAgIDY0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA2NSAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgNjYgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDY3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6NjIKKyAgICA2OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYy
CisgICAgNjkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDcwICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA3MSAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgNzIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczo2MgorICAgIDczICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
NjIKKyAgICA3NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgNzUg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDc2ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA3NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjYyCisgICAgNzggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czo2MgorICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA4
MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgODEgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDgyICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6NjIKKyAgICA4MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjYyCisgICAgODQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAg
IDg1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA4NiAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgODcgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczo2MgorICAgIDg4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6NjIKKyAgICA4OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisg
ICAgOTAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDkxICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA5MiAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgOTMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczo2MgorICAgIDk0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIK
KyAgICA5NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjYyCisgICAgOTYgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2MgorICAgIDk3ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6NjIKKyAgICA5OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjYyCisgICAgOTkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczo2
MgorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHNlbGZSZWN1cnNpdmUzIGF0IHN0YWNrLXRy
YWNlLmpzOjY5CisgICAgMSAgICBhdCBldmFsIGNvZGUKKyAgICAyICAgZXZhbCBhdCBbbmF0aXZl
IGNvZGVdCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10
cmFjZS5qczo3NworICAgIDEgICB2YWx1ZU9mIGF0IHN0YWNrLXRyYWNlLmpzOjg0CisgICAgMiAg
IGdldHRlcjEgYXQgc3RhY2stdHJhY2UuanM6ODcKKyAgICAzICAgbm9uSW5saW5lYWJsZSBhdCBz
dGFjay10cmFjZS5qczoxMTMKKyAgICA0ICAgaW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczox
MjEKKyAgICA1ICAgeWV0QW5vdGhlcklubGluZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEyNgor
ICAgIDYgICBtYWtlSW5saW5hYmxlQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxMzEKKyAgICA3ICAg
ZyBhdCBzdGFjay10cmFjZS5qczoxNDAKKyAgICA4ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KKwor
LS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjc3
CisgICAgMSAgIGdldHRlcjIgYXQgc3RhY2stdHJhY2UuanM6OTMKKyAgICAyICAgbm9uSW5saW5l
YWJsZSBhdCBzdGFjay10cmFjZS5qczoxMTUKKyAgICAzICAgaW5saW5lYWJsZSBhdCBzdGFjay10
cmFjZS5qczoxMjEKKyAgICA0ICAgeWV0QW5vdGhlcklubGluZWRDYWxsIGF0IHN0YWNrLXRyYWNl
LmpzOjEyNgorICAgIDUgICBtYWtlSW5saW5hYmxlQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxMzEK
KyAgICA2ICAgZyBhdCBzdGFjay10cmFjZS5qczoxNDAKKyAgICA3ICAgbWFwIGF0IFtuYXRpdmUg
Y29kZV0KKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRy
YWNlLmpzOjc3CisgICAgMSAgIGdldHRlcjMgYXQgc3RhY2stdHJhY2UuanM6MTA1CisgICAgMiAg
IG5vbklubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTE3CisgICAgMyAgIGlubGluZWFibGUg
YXQgc3RhY2stdHJhY2UuanM6MTIxCisgICAgNCAgIHlldEFub3RoZXJJbmxpbmVkQ2FsbCBhdCBz
dGFjay10cmFjZS5qczoxMjYKKyAgICA1ICAgbWFrZUlubGluYWJsZUNhbGwgYXQgc3RhY2stdHJh
Y2UuanM6MTMxCisgICAgNiAgIGcgYXQgc3RhY2stdHJhY2UuanM6MTQwCisgICAgNyAgIG1hcCBh
dCBbbmF0aXZlIGNvZGVdCisKKy0tPiBTdGFjayBUcmFjZToKKyAgICAwICAgdGhyb3dFcnJvciBh
dCBzdGFjay10cmFjZS5qczo3NworICAgIDEgICB2YWx1ZU9mIGF0IHN0YWNrLXRyYWNlLmpzOjEw
MQorICAgIDIgICBnZXR0ZXIzIGF0IHN0YWNrLXRyYWNlLmpzOjEwNworICAgIDMgICBub25Jbmxp
bmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjExNworICAgIDQgICBpbmxpbmVhYmxlIGF0IHN0YWNr
LXRyYWNlLmpzOjEyMQorICAgIDUgICB5ZXRBbm90aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJh
Y2UuanM6MTI2CisgICAgNiAgIG1ha2VJbmxpbmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjEz
MQorICAgIDcgICBnIGF0IHN0YWNrLXRyYWNlLmpzOjE0MAorICAgIDggICBtYXAgYXQgW25hdGl2
ZSBjb2RlXQorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGggYXQgc3RhY2stdHJhY2UuanM6
MTUxCisgICAgMSAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCisKKy0tPiBTdGFjayBUcmFjZToKKyAg
ICAwICAgaCBhdCBzdGFjay10cmFjZS5qczoxNTMKKyAgICAxICAgbWFwIGF0IFtuYXRpdmUgY29k
ZV0KKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNl
LmpzOjc3CisgICAgMSAgIGRmZ0Z1bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpzOjE4NAorICAgIDIg
ICBtYXAgYXQgW25hdGl2ZSBjb2RlXQorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHRocm93
RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6NzcKKyAgICAxICAgZGZnRnVuY3Rpb24gYXQgc3RhY2st
dHJhY2UuanM6MTg0CisgICAgMiAgIGYgYXQgc3RhY2stdHJhY2UuanM6MjAyCisgICAgMyAgIGds
b2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjIwOAorCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvanMvc3RhY2stdHJhY2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RhY2st
dHJhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDhjOTEwYmYwYWQ4MjA5YWUwYTg1ZTIyOGEyODNjOWMx
NGEwNTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdGFjay10cmFj
ZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+CisJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorCTxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisJPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+CisJPHAgaWQ9ImNvbnNvbGUiPjwvcD4KKwk8c2NyaXB0PmZ1bmN0aW9u
IGh0bWxJbm5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCJFcnJvciBpbiBIVE1MIik7IH08L3Njcmlw
dD4KKwk8c2NyaXB0PmZ1bmN0aW9uIGh0bWxPdXRlcigpIHsgaHRtbElubmVyKCk7IH08L3Njcmlw
dD4KKwk8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0YWNrLXRyYWNlLmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="129571"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>