<?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>111728</bug_id>
          
          <creation_ts>2013-03-07 07:18:09 -0800</creation_ts>
          <short_desc>Implement support for nullable types in the bindings generator</short_desc>
          <delta_ts>2013-03-21 16:05:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>112711</dependson>
          <blocked>112447</blocked>
    
    <blocked>112975</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Beverloo">peter</reporter>
          <assigned_to name="Peter Beverloo">peter</assigned_to>
          <cc>abarth</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>850062</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-07 07:18:09 -0800</bug_when>
    <thetext>Implement support for nullable types in the bindings generator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850065</commentid>
    <comment_count>1</comment_count>
      <attachid>191992</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-07 07:22:57 -0800</bug_when>
    <thetext>Created attachment 191992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850067</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-07 07:27:23 -0800</bug_when>
    <thetext>Hi Haraken-san!

Before implementing support for other generators as well, I&apos;d like to know if I&apos;m on the right direction.  I also have a few questions to ask:

  * IDLParser.pm takes the &quot;old&quot; code-path. I have updated parseAttributeRestOld, should I update parseAttributeRest as well?

  * The specification[1] lists a number of constraints: does not apply to &quot;any&quot; types, neither for certain union types, and so on.  Do we validate correctness of the IDL before generating code?

There are more places where nullable types can be used, i.e. constants.  I&apos;ll have to update parsing/code generation for those as well.  Also, I&apos;ll verify whether the the &quot;TreatNullAs&quot; directive works as expected.

[1] http://dev.w3.org/2006/webapi/WebIDL/#idl-nullable-type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850421</commentid>
    <comment_count>3</comment_count>
      <attachid>191992</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-07 13:16:17 -0800</bug_when>
    <thetext>Comment on attachment 191992
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1051
&gt; +        if ($isNullable) {
&gt; +            push(@implContentInternals, &quot;    if (isNull)\n&quot;);
&gt; +            push(@implContentInternals, &quot;        return v8Null(info.GetIsolate());\n&quot;);
&gt;          }

I don&apos;t understand.  We basically assume that all attributes are nullable in our implementation.  The way we implement non-nullable attributes is by never returning null from the implementation.

I would have expected this patch to be an ASSERT that we don&apos;t return null from non-nullable attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850595</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-07 16:19:16 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 191992 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191992&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1051
&gt; &gt; +        if ($isNullable) {
&gt; &gt; +            push(@implContentInternals, &quot;    if (isNull)\n&quot;);
&gt; &gt; +            push(@implContentInternals, &quot;        return v8Null(info.GetIsolate());\n&quot;);
&gt; &gt;          }
&gt; 
&gt; I don&apos;t understand.  We basically assume that all attributes are nullable in our implementation.  The way we implement non-nullable attributes is by never returning null from the implementation.

This approach works for XXX* but won&apos;t work for double, int etc.

Our current context is how we can remove custom bindings for V8DeviceOrientationEvent::gammaAttrGetterCustom() (in preparation for adding more features around Device events).

  v8::Handle&lt;v8::Value&gt; V8DeviceOrientationEvent::gammaAccessorGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
  {
      v8::Handle&lt;v8::Object&gt; holder = info.Holder();
      DeviceOrientationEvent* imp = V8DeviceOrientationEvent::toNative(holder);
      if (!imp-&gt;orientation()-&gt;canProvideGamma())
          return v8::Null();
      return v8::Number::New(imp-&gt;orientation()-&gt;gamma());
  }

We cannot judge if we should return v8Null() or not by &quot;if(imp-&gt;orientation()-&gt;gamma()==0)&quot;. Given that imp-&gt;orientation()-&gt;gamma() can return any double values, we need some other way to know whether we should return v8Null() or not. Beverloo introduced an isNull parameter for that purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851195</commentid>
    <comment_count>5</comment_count>
      <attachid>192228</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-08 07:53:11 -0800</bug_when>
    <thetext>Created attachment 192228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851198</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-08 07:57:40 -0800</bug_when>
    <thetext>Haraken&apos;s explanation is correct, which I also briefly discussed with Adam over IRC yesterday.

The updated patch contains modifications for all code generators except for ObjC, which is throwing an error for me.  I&apos;ll figure that out.  Open questions at this point:

  * IDLParser.pm takes the &quot;old&quot; code-path. I have updated parseAttributeRestOld, should I update parseAttributeRest as well?

  * The specification lists a number of constraints: does not apply to &quot;any&quot; types, neither for certain union types, and so on.  Do we validate correctness of the IDL before generating code?

  * The GObject, CPP and ObjC generators need to return a non-null value.  Do we ignore the isNull return value, or return a &quot;default&quot; value for the type (i.e. 0 for numeric types, false for bool, and so on).

  * Do I include the output each code generator creates for the TestNullableAttributes.idl file in the patch?

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851851</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-03-09 17:54:23 -0800</bug_when>
    <thetext>(In reply to comment #6)

&gt;   * Do I include the output each code generator creates for the TestNullableAttributes.idl file in the patch?

Please do.  It will make reviewing much easier.  When thinking about this in the past, I had considered adding a Nullable&lt;&gt;/OptionallyNull&lt;&gt; type to represent this possibility in WebCore C++ code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852001</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-10 17:24:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt;   * IDLParser.pm takes the &quot;old&quot; code-path. I have updated parseAttributeRestOld, should I update parseAttributeRest as well?

Yes, please.

&gt;   * The specification lists a number of constraints: does not apply to &quot;any&quot; types, neither for certain union types, and so on.  Do we validate correctness of the IDL before generating code?

Not needed. We normally omit this kind of validation in the IDL parser (If we implemented all the validations, the parser would get extremely complicated:).

&gt;   * The GObject, CPP and ObjC generators need to return a non-null value.  Do we ignore the isNull return value, or return a &quot;default&quot; value for the type (i.e. 0 for numeric types, false for bool, and so on).

Although in the future we want to support isNull in GObject, CPP and ObjC, for the time being it sounds reasonable to ignore the isNull return value. It is important not to change current behavior of those code generators.

&gt;   * Do I include the output each code generator creates for the TestNullableAttributes.idl file in the patch?

Yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852005</commentid>
    <comment_count>9</comment_count>
      <attachid>192228</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-10 17:30:27 -0700</bug_when>
    <thetext>Comment on attachment 192228
Patch

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

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:2404
&gt; +        my $type = $self-&gt;parseType();
&gt; +        if ($type =~ /\?$/) {
&gt; +            $newDataNode-&gt;signature-&gt;isNullable(1);
&gt; +        } else {
&gt; +            $newDataNode-&gt;signature-&gt;isNullable(0);
&gt; +        }
&gt; +        # Remove all &quot;?&quot; in the type declaration, e.g. &quot;double?&quot; -&gt; &quot;double&quot;.
&gt; +        $type =~ s/\?//g;

The IDL parser is written strictly following the IDL grammar (http://www.w3.org/TR/WebIDL/#idl-grammar) and we don&apos;t want to add ad-hoc regular expressions. Would you write parseTypeSuffix() or parserNull() according to the grammar?

&gt; Source/WebCore/bindings/scripts/test/TestNullableAttributes.idl:29
&gt; +interface TestNullableAttributes {

You don&apos;t need to add a new test file. You can just add new attributes to TestObj.idl or TestInterface.idl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855175</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-14 07:15:00 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; 
&gt; &gt;   * Do I include the output each code generator creates for the TestNullableAttributes.idl file in the patch?
&gt; 
&gt; Please do.  It will make reviewing much easier.  When thinking about this in the past, I had considered adding a Nullable&lt;&gt;/OptionallyNull&lt;&gt; type to represent this possibility in WebCore C++ code.

Ok, I&apos;ve included the output.  I don&apos;t have a very strong preference for either an isNull attribute or adding a Nullable&lt;&gt; type so I&apos;ve kept it as it is for now.

(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt;   * IDLParser.pm takes the &quot;old&quot; code-path. I have updated parseAttributeRestOld, should I update parseAttributeRest as well?
&gt; 
&gt; Yes, please.

Done.
 
&gt; &gt;   * The specification lists a number of constraints: does not apply to &quot;any&quot; types, neither for certain union types, and so on.  Do we validate correctness of the IDL before generating code?
&gt; 
&gt; Not needed. We normally omit this kind of validation in the IDL parser (If we implemented all the validations, the parser would get extremely complicated:).

I see, ok.  The current parsing routines already seem to do a lot of checking in the existing Parse* functions.
 
&gt; &gt;   * The GObject, CPP and ObjC generators need to return a non-null value.  Do we ignore the isNull return value, or return a &quot;default&quot; value for the type (i.e. 0 for numeric types, false for bool, and so on).
&gt; 
&gt; Although in the future we want to support isNull in GObject, CPP and ObjC, for the time being it sounds reasonable to ignore the isNull return value. It is important not to change current behavior of those code generators.

I agree.  They do have to call the WebCore methods with the right signature, though.

&gt; &gt;   * Do I include the output each code generator creates for the TestNullableAttributes.idl file in the patch?
&gt; 
&gt; Yes!

Done.

(In reply to comment #9)
&gt; (From update of attachment 192228 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192228&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/IDLParser.pm:2404
&gt; &gt; +        my $type = $self-&gt;parseType();
&gt; &gt; +        if ($type =~ /\?$/) {
&gt; &gt; +            $newDataNode-&gt;signature-&gt;isNullable(1);
&gt; &gt; +        } else {
&gt; &gt; +            $newDataNode-&gt;signature-&gt;isNullable(0);
&gt; &gt; +        }
&gt; &gt; +        # Remove all &quot;?&quot; in the type declaration, e.g. &quot;double?&quot; -&gt; &quot;double&quot;.
&gt; &gt; +        $type =~ s/\?//g;
&gt; 
&gt; The IDL parser is written strictly following the IDL grammar (http://www.w3.org/TR/WebIDL/#idl-grammar) and we don&apos;t want to add ad-hoc regular expressions. Would you write parseTypeSuffix() or parserNull() according to the grammar?

The parseTypeSuffix() method already exists and is being called in parseNonAnyType(), which appends it to the type name.  Other methods, such as parseOptionalOrRequiredArgument, use this same regular expression to achieve the same goal.

These are the third and fourth occurrences of that structure in the code, each of which wants to separate the nullable (&quot;?&quot;) suffix from the type&apos;s name.  A solution would be for parseType() to return a structure with the type name and suffix separated, but there are 30 callers so only 10% cares about the suffix.  We could generalize the regular expressions by moving them in two utility methods, which would change to code to read:

my $type = $self-&gt;parseType();
if (typeHasNullableSuffix($type)) {
    $newDataNode-&gt;signature-&gt;isNullable(1);
    $type = typeRemoveNullableSuffix($type);
} else {
    $newDataNode-&gt;signature-&gt;isNullable(0);
}

While it would increase readability, such utility methods are rare (only unquoteString exists right now) in the parser.  In either case, I&apos;m unsure how to handle this in case of more complicated compositions such as &quot;type?[][]?[]&quot;, which, per the grammar, are valid.  The existing code doesn&apos;t take this into account either.

&gt; &gt; Source/WebCore/bindings/scripts/test/TestNullableAttributes.idl:29
&gt; &gt; +interface TestNullableAttributes {
&gt; 
&gt; You don&apos;t need to add a new test file. You can just add new attributes to TestObj.idl or TestInterface.idl.

Ok, that significantly reduces the noise in the diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855176</commentid>
    <comment_count>11</comment_count>
      <attachid>193118</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-14 07:16:18 -0700</bug_when>
    <thetext>Created attachment 193118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855177</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 07:17:54 -0700</bug_when>
    <thetext>Attachment 193118 did not pass style-queue:

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:936:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:938:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:939:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:940:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:943:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:945:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:947:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:948:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:949:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:952:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:954:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:956:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:957:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:958:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:959:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:961:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:963:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:964:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:965:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:966:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:968:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:970:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:971:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:972:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:975:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scriptsFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorV8.pm&apos;, u&apos;Source/WebCore/bindings/scripts/IDLParser.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp&apos;]&quot; exit_code: 1
/test/GObject/WebKitDOMTestObj.cpp:977:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:979:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:980:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:981:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:984:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 30 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855653</commentid>
    <comment_count>13</comment_count>
      <attachid>193118</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-14 19:45:05 -0700</bug_when>
    <thetext>Comment on attachment 193118
Patch

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

Looks good except for the changes in CodeGenerator{ObjC,CPP,GObject}.pm.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm:567
&gt;      if (!defined($returnType) or $returnType eq &quot;void&quot;) {
&gt; -        $returnType = &quot;&quot;;
&gt; +        return &quot;&quot;;
&gt;      } elsif ($codeGenerator-&gt;IsPrimitiveType($returnType)) {
&gt; -        $returnType = &quot; 0&quot;;
&gt; +        return &quot; 0&quot;;
&gt;      } elsif ($returnType eq &quot;bool&quot;) {
&gt; -        $returnType = &quot; false&quot;;
&gt; +        return &quot; false&quot;;
&gt;      } else {
&gt; -        $returnType = &quot; $returnType()&quot;;
&gt; +        return &quot; $returnType()&quot;;
&gt;      }

Nit: WebKit coding style requires:

if (A)
  return X;
if (B)
  return Y;
return Z;

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1015
&gt; +    # FIXME: When creating a getter for a nullable attribute, should a default value
&gt; +    # be returned by the API is isNull=true?
&gt; +    if ($function-&gt;signature-&gt;isNullable) {
&gt; +        push(@cBody, &quot;    bool isNull = false;\n&quot;);
&gt; +        push(@callImplParams, &quot;isNull&quot;);
&gt; +    }
&gt; +

I think you don&apos;t need to touch CodeGenerator{ObjC,CPP,GObject}.pm in this patch. You can just ignore Nullable in these code generators so that generated code is kept the same between before and after your patch.

I&apos;m not intending to say that we want to ignore these code generators. For the time being, it would be safer to keep the generated code the same than changing their behavior with uncertainty (you are adding FIXMEs). Yu can change these code generators in a separate patch.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm:1363
&gt; +                # FIXME: Should we return a &quot;default&quot; value for the return type
&gt; +                # when isNull=true?

Ditto.

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:305
&gt; +sub typeHasNullableSuffix
&gt; +{
&gt; +    my $type = shift;
&gt; +    return $type =~ /\?$/;
&gt; +}
&gt; +
&gt; +sub typeRemoveNullableSuffix
&gt; +{
&gt; +    my $type = shift;
&gt; +    $type =~ s/\?//g;
&gt; +    return $type;
&gt; +}

Looks better!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855977</commentid>
    <comment_count>14</comment_count>
      <attachid>193303</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-15 07:19:08 -0700</bug_when>
    <thetext>Created attachment 193303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855978</commentid>
    <comment_count>15</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-15 07:22:14 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Nit: WebKit coding style requires:
&gt; 
&gt; if (A)
&gt;   return X;
&gt; if (B)
&gt;   return Y;
&gt; return Z;
&gt;

We can address this in the patch for GObject/CPP and ObjC.

&gt; I think you don&apos;t need to touch CodeGenerator{ObjC,CPP,GObject}.pm in this patch. You can just ignore Nullable in these code generators so that generated code is kept the same between before and after your patch.
&gt; 
&gt; I&apos;m not intending to say that we want to ignore these code generators. For the time being, it would be safer to keep the generated code the same than changing their behavior with uncertainty (you are adding FIXMEs). Yu can change these code generators in a separate patch.

The signature of the WebCore methods will change once they start using nullable types.  For example, a non-custom binding for:

readonly attribute double? myDouble;

will change the signature from &quot;double myDouble() const;&quot; to &quot;double myDouble(bool&amp; isNull) const;&quot;. I don&apos;t understand why we don&apos;t have to implement this now, as using this feature will now effectively break bindings.

I&apos;ll upload a separate patch to address these three code generators, only making sure that the calls to the WebCore methods have the correct signatures.

&gt; Ditto.

Done..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855987</commentid>
    <comment_count>16</comment_count>
      <attachid>193306</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-15 07:45:07 -0700</bug_when>
    <thetext>Created attachment 193306
Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855989</commentid>
    <comment_count>17</comment_count>
      <attachid>193308</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-15 07:47:18 -0700</bug_when>
    <thetext>Created attachment 193308
Fix ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856003</commentid>
    <comment_count>18</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-15 08:17:26 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; readonly attribute double? myDouble;
&gt; 
&gt; will change the signature from &quot;double myDouble() const;&quot; to &quot;double myDouble(bool&amp; isNull) const;&quot;. I don&apos;t understand why we don&apos;t have to implement this now, as using this feature will now effectively break bindings.
&gt; 
&gt; I&apos;ll upload a separate patch to address these three code generators, only making sure that the calls to the WebCore methods have the correct signatures.

I&apos;m very sorry about it... You&apos;re completely right. Would you again include the change to this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856015</commentid>
    <comment_count>19</comment_count>
      <attachid>193318</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-15 08:54:26 -0700</bug_when>
    <thetext>Created attachment 193318
Full patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856017</commentid>
    <comment_count>20</comment_count>
      <attachid>193318</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-15 08:55:27 -0700</bug_when>
    <thetext>Comment on attachment 193318
Full patch

LGTM. I&apos;m very sorry I&apos;ve asked you redundant work...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856018</commentid>
    <comment_count>21</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-15 08:55:51 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 193318 [details])
&gt; LGTM. I&apos;m very sorry I&apos;ve asked you redundant work...

Done. No problem, and thank you for the review!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856019</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 08:56:23 -0700</bug_when>
    <thetext>Attachment 193318 did not pass style-queue:

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:936:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:938:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:939:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:940:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:943:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:945:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:947:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:948:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:949:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:952:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:954:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:956:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:957:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:958:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:959:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:961:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:963:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:964:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:965:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:966:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:968:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:970:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:971:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:972:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:975:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scriptsFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorV8.pm&apos;, u&apos;Source/WebCore/bindings/scripts/IDLParser.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp&apos;]&quot; exit_code: 1
/test/GObject/WebKitDOMTestObj.cpp:977:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:979:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:980:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:981:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:984:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 30 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856037</commentid>
    <comment_count>23</comment_count>
      <attachid>193318</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 09:26:17 -0700</bug_when>
    <thetext>Comment on attachment 193318
Full patch

Clearing flags on attachment: 193318

Committed r145907: &lt;http://trac.webkit.org/changeset/145907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856038</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 09:26:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856649</commentid>
    <comment_count>25</comment_count>
      <attachid>193318</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-03-16 19:34:11 -0700</bug_when>
    <thetext>Comment on attachment 193318
Full patch

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

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:995
&gt; +    JSValue result = jsNumber(impl-&gt;nullableDoubleAttribute(isNull));
&gt; +    if (isNull)
&gt; +        return jsNull();
&gt; +    return result;
&gt; +}

This seems quite inefficient.  You are creating the JSValue just to throw it out.  Please rework this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858332</commentid>
    <comment_count>26</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-19 09:03:45 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 193318 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193318&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:995
&gt; &gt; +    JSValue result = jsNumber(impl-&gt;nullableDoubleAttribute(isNull));
&gt; &gt; +    if (isNull)
&gt; &gt; +        return jsNull();
&gt; &gt; +    return result;
&gt; &gt; +}
&gt; 
&gt; This seems quite inefficient.  You are creating the JSValue just to throw it out.  Please rework this.

I only copied the semantics of what exceptions already do.  I&apos;ll upload a patch to rework this for JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858409</commentid>
    <comment_count>27</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-19 10:11:01 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 112711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858410</commentid>
    <comment_count>28</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-19 10:11:31 -0700</bug_when>
    <thetext>Sorry -- no need to reopen this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191992</attachid>
            <date>2013-03-07 07:22:57 -0800</date>
            <delta_ts>2013-03-08 07:53:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111728-20130307151901.patch</filename>
            <type>text/plain</type>
            <size>8055</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q5YjQzYjMxZmJkOTM5
NDM1MzY3NjQxNzM2ZjQ3YTlkODE0MjE2Mi4uZDQ3MWQ1NTU2OTUzNWRhZmYyNzQ2MTQyMjUxNDAz
NDZlMWQ1NDU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAzLTA3ICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3IgbnVsbGFibGUgdHlwZXMgaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzI4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHN1cHBvcnQgZm9yIG51bGxhYmxlIHR5cGVzIGluIHRoZSBiaW5kaW5ncworICAgICAgICBnZW5l
cmF0b3IsIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTAuMjIgb2YgV2ViSURMOgorICAgICAg
ICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtbnVsbGFibGUt
dHlwZQorCisgICAgICAgIGludGVyZmFjZSBNeUludGVyZmFjZSB7CisgICAgICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbj8gdmFsdWU7IC8vIHRydWUsIGZhbHNlIG9yIG51bGwuCisg
ICAgICAgIH07CisKKyAgICAgICAgVGhlIElETCBQYXJzZXIgaGFzIGJlZW4gbW9kaWZpZWQgdG8g
cmVjb3JkIHdoZXRoZXIgYXR0cmlidXRlcyBhcmUKKyAgICAgICAgbnVsbGFibGUuIFF1ZXN0aW9u
IG1hcmtzIGZyb20gdGhlIHR5cGUgd2lsbCBhbHdheXMgYmUgc3RyaXBwZWQKKyAgICAgICAgZnJv
bSB0aGUgZG9tQXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZmllbGQuIE9uY2Ugc3VwcG9ydCBm
b3IKKyAgICAgICAgdGhpcyBoYXMgYmVlbiBjb21wbGV0ZWx5IGltcGxlbWVudGVkLCB3ZSdsbCBi
ZSBhYmxlIHRvIHJlbW92ZSBhCisgICAgICAgIGJ1bmNoIG9mIGN1c3RvbSBiaW5kaW5ncywgaS5l
LiB0aG9zZSBvZiBEZXZpY2UgT3JpZW50YXRpb24uCisgICAgICAgIAorICAgICAgICBUZXN0ZWQg
YnkgZXhpc3RpbmcgYmluZGluZyB0ZXN0cyBhbmQgdGhlIG5ldyBudWxsYWJsZSBhdHRyaWJ1dGUK
KyAgICAgICAgdGVzdCBpbiB0aGUgYmluZGluZ3Mvc2NyaXB0cy90ZXN0LyBkaXJlY3RvcnkuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAg
KEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9J
RExQYXJzZXIucG06CisgICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3RPbGQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TnVsbGFibGVBdHRyaWJ1dGVzLmlkbDogQWRkZWQu
CisKIDIwMTMtMDMtMDcgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFtSZWZhY3RvcmluZ10gSW1wbGVtZW50IFJ1bGVDb2xsZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZTM4
YWY0ZDE1NjVkZDliZTVkZjRiZjUwN2YzZjI4ZjZkZmMwMTQzYy4uZTEwOWRkODViN2Q5MmU2Y2I0
NWQxMjg2Zjc0NjZmZTg5ZTA3ZGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTk4OSwxNiArOTg5LDIyIEBAIEVORAog
ICAgIH0KIAogICAgIG15ICR1c2VFeGNlcHRpb25zID0gMSBpZiBAeyRhdHRyaWJ1dGUtPmdldHRl
ckV4Y2VwdGlvbnN9OworICAgIG15ICRpc051bGxhYmxlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5pc051bGxhYmxlOwogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewogICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiRXhjZXB0aW9uQ29kZS5oIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAgICAgfQogCisgICAg
aWYgKCRpc051bGxhYmxlKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAi
ICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKTsKKyAgICB9CisKICAgICBteSAkcmV0dXJuVHlw
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICBteSAkZ2V0dGVyU3RyaW5nOwog
CiAgICAgaWYgKCRnZXR0ZXJTdHJpbmdVc2VzSW1wKSB7CiAgICAgICAgIG15ICgkZnVuY3Rpb25O
YW1lLCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uKFwlaW1w
bEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIHB1c2goQGFy
Z3VtZW50cywgImlzTnVsbCIpIGlmICRpc051bGxhYmxlOwogICAgICAgICBwdXNoKEBhcmd1bWVu
dHMsICJlYyIpIGlmICR1c2VFeGNlcHRpb25zOwogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CiAgICAgICAg
ICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKQEAgLTEwMjIsMTggKzEwMjgsMjYgQEAgRU5E
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTtcbiIpOwogICAgIH0KIAotICAgIGlmICgkdXNlRXhjZXB0aW9ucykgeworICAg
IGlmICgkdXNlRXhjZXB0aW9ucyB8fCAkaXNOdWxsYWJsZSkgewogICAgICAgICBpZiAoJG5hdGl2
ZVR5cGUgPX4gL15WOFN0cmluZ1Jlc291cmNlLykgewogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4U3RyaW5nUmVzb3VyY2UoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlwZSwgInYiLCAkZ2V0dGVyU3RyaW5nKSAuICI7XG4i
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJu
YWxzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5nO1xuIik7CiAgICAgICAgIH0K
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKFVOTElLRUxZKGVj
KSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CiAKLSAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sICJTY3JpcHRT
dGF0ZSIpKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24o
KSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CisgICAgICAgIGlmICgkdXNlRXhjZXB0aW9ucykg
eworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKFVOTElL
RUxZKGVjKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIg
ICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIp
OworCisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29u
dGFpbnMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdp
dGgifSwgIlNjcmlwdFN0YXRlIikpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dEludGVybmFscywgIiAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpXG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJuIHRocm93
RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCRpc051bGxhYmxlKSB7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBpZiAoaXNOdWxsKVxuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJuIHY4
TnVsbChpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKICAgICAgICAgfQogCiAgICAgICAgICRyZXN1
bHQgPSAidiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
CmluZGV4IGQyZGJiYTI5ZDE1YmZmYTUwMzgyMWRjNWMzNTlkNmQzMGJiOThkMjAuLjlmNGEzM2Ji
NzQ3OGVkNjY5Yzc5YWQ3MGJmMmQ1Yzc4OGM0MzFlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0yMzk0LDcgKzIzOTQsMTYgQEAgc3ViIHBh
cnNlQXR0cmlidXRlUmVzdE9sZAogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2Vs
Zi0+Z2V0VG9rZW4oKSwgImF0dHJpYnV0ZSIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdCA9ICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdEFsbG93
RW1wdHkoKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5u
ZXcoKSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRzZWxmLT5wYXJz
ZVR5cGUoKSk7CisgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAg
ICBpZiAoJHR5cGUgPX4gL1w/JC8pIHsKKyAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0
dXJlLT5pc051bGxhYmxlKDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJG5ld0Rh
dGFOb2RlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUoMCk7CisgICAgICAgIH0KKyAgICAgICAgIyBS
ZW1vdmUgYWxsICI/IiBpbiB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgZS5nLiAiZG91YmxlPyIgLT4g
ImRvdWJsZSIuCisgICAgICAgICR0eXBlID1+IHMvXD8vL2c7CisKKyAgICAgICAgJG5ld0RhdGFO
b2RlLT5zaWduYXR1cmUtPnR5cGUoJHR5cGUpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgICAg
ICBteSAkdG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRv
a2VuVHlwZSgkdG9rZW4sIElkZW50aWZpZXJUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE51bGxhYmxlQXR0cmlidXRlcy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE51bGxhYmxlQXR0cmlidXRl
cy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQ0OGFiMGE1ZWM3OWJkZWM4YmNiNDIwODBiMjYxNjhlMGQ4OTQz
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0TnVsbGFibGVBdHRyaWJ1dGVzLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgSURMIGZpbGUgaXMg
Zm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFuZCBmb3IgdHJhY2tpbmcK
Ky8vIGNoYW5nZXMgaW4gaXRzIG91dHB1dC4gU3BlY2lmaWNhbGx5LCB0aGlzIElETCBmb2N1c2Vz
IG9uIG51bGxhYmxlIGF0dHJpYnV0ZXMuCisKK2ludGVyZmFjZSBUZXN0TnVsbGFibGVBdHRyaWJ1
dGVzIHsKKyAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZT8gbnVsbGFibGVEb3VibGVBdHRyaWJ1
dGU7CisgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nPyBudWxsYWJsZUxvbmdBdHRyaWJ1dGU7Cisg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuPyBudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGU7Cisg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IG51bGxhYmxlU3RyaW5nQXR0cmlidXRlOwor
CisgIGF0dHJpYnV0ZSBsb25nPyBudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZTsKKworICBh
dHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVTdHJpbmdWYWx1ZQorICAgICAgZ2V0dGVyIHJhaXNlcyhE
T01FeGNlcHRpb24pOworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192228</attachid>
            <date>2013-03-08 07:53:11 -0800</date>
            <delta_ts>2013-03-14 07:16:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111728-20130308154914.patch</filename>
            <type>text/plain</type>
            <size>17797</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFhYzgwNGMyNjliNzJi
MzUxY2E1YzZmOGRlZGZkOWE4ZjkyZGI2OC4uZDVhNmZjMzJlNDRhZWFlM2RmN2YyZDdjZjkxMjI4
MzQ2ZWEzMzRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAzLTA3ICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3IgbnVsbGFibGUgdHlwZXMgaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzI4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHN1cHBvcnQgZm9yIG51bGxhYmxlIHR5cGVzIGluIHRoZSBiaW5kaW5ncworICAgICAgICBnZW5l
cmF0b3IsIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTAuMjIgb2YgV2ViSURMOgorICAgICAg
ICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtbnVsbGFibGUt
dHlwZQorCisgICAgICAgIGludGVyZmFjZSBNeUludGVyZmFjZSB7CisgICAgICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbj8gdmFsdWU7IC8vIHRydWUsIGZhbHNlIG9yIG51bGwuCisg
ICAgICAgIH07CisKKyAgICAgICAgVGhlIElETCBQYXJzZXIgaGFzIGJlZW4gbW9kaWZpZWQgdG8g
cmVjb3JkIHdoZXRoZXIgYXR0cmlidXRlcyBhcmUKKyAgICAgICAgbnVsbGFibGUuIFF1ZXN0aW9u
IG1hcmtzIGZyb20gdGhlIHR5cGUgd2lsbCBhbHdheXMgYmUgc3RyaXBwZWQKKyAgICAgICAgZnJv
bSB0aGUgZG9tQXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZmllbGQuIE9uY2Ugc3VwcG9ydCBm
b3IKKyAgICAgICAgdGhpcyBoYXMgYmVlbiBjb21wbGV0ZWx5IGltcGxlbWVudGVkLCB3ZSdsbCBi
ZSBhYmxlIHRvIHJlbW92ZSBhCisgICAgICAgIGJ1bmNoIG9mIGN1c3RvbSBiaW5kaW5ncywgaS5l
LiB0aG9zZSBvZiBEZXZpY2UgT3JpZW50YXRpb24uCisKKyAgICAgICAgQW55IGdldHRlciBmb3Ig
YW4gYXR0cmlidXRlIHdoaWNoIHJldHVybnMgYSBudWxsYWJsZSB0eXBlIHdpbGwgYmUKKyAgICAg
ICAgY2FsbGVkIHdpdGggYW4gYWRkaXRpb25hbCBhdHRyaWJ1dGUgKHBhc3NlZCBieSByZWZlcmVu
Y2UpIG5hbWVkCisgICAgICAgICJpc051bGwiLiBUaGlzIHdpbGwgYmUgdGhlIGxhc3QgYXJndW1l
bnQgcGFzc2VkIHRvIHRoZSBtZXRob2QsCisgICAgICAgIHVubGVzcyBhbiBleGNlcHRpb24gY29k
ZSAoZWMpIGFyZ3VtZW50IHdpbGwgYmUgcGFzc2VkIGFzIHdlbGwuCisKKyAgICAgICAgVGVzdGVk
IGJ5IGV4aXN0aW5nIGJpbmRpbmcgdGVzdHMgYW5kIHRoZSBuZXcgbnVsbGFibGUgYXR0cmlidXRl
CisgICAgICAgIHRlc3QgaW4gdGhlIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC8gZGlyZWN0b3J5Lgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChSZXR1cm5WYWx1ZUZvckVhcmx5
UmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEFkZEVhcmx5UmV0dXJuU3RhdGVtZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAg
ICAoR2VuZXJhdGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRl
Tm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG06CisgICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3RPbGQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0TnVsbGFibGVBdHRyaWJ1dGVzLmlkbDogQWRkZWQuCisKIDIwMTMt
MDMtMDggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBEb2Vzbid0IGJ1aWxkIHdpdGggUXRNdWx0aW1lZGlhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KaW5kZXgg
Y2EwYTk2NGMzYzdmMjY3OTliMzcxMzNhMjE3YjczNmU0MTgzZTJiZS4uZDFmYjM1ZDU4Yzg2OWYx
MGI5NWRmZjNkM2Y5NDhlOTE0M2QzYWM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQpAQCAtNTUyLDIzICs1NTIsMjkgQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKLXN1
YiBBZGRFYXJseVJldHVyblN0YXRlbWVudAorc3ViIFJldHVyblZhbHVlRm9yRWFybHlSZXR1cm5T
dGF0ZW1lbnQKIHsKICAgICBteSAkcmV0dXJuVHlwZSA9IHNoaWZ0OwogCiAgICAgaWYgKCFkZWZp
bmVkKCRyZXR1cm5UeXBlKSBvciAkcmV0dXJuVHlwZSBlcSAidm9pZCIpIHsKLSAgICAgICAgJHJl
dHVyblR5cGUgPSAiIjsKKyAgICAgICAgcmV0dXJuICIiOwogICAgIH0gZWxzaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHJldHVyblR5cGUpKSB7Ci0gICAgICAgICRyZXR1cm5U
eXBlID0gIiAwIjsKKyAgICAgICAgcmV0dXJuICIgMCI7CiAgICAgfSBlbHNpZiAoJHJldHVyblR5
cGUgZXEgImJvb2wiKSB7Ci0gICAgICAgICRyZXR1cm5UeXBlID0gIiBmYWxzZSI7CisgICAgICAg
IHJldHVybiAiIGZhbHNlIjsKICAgICB9IGVsc2UgewotICAgICAgICAkcmV0dXJuVHlwZSA9ICIg
JHJldHVyblR5cGUoKSI7CisgICAgICAgIHJldHVybiAiICRyZXR1cm5UeXBlKCkiOwogICAgIH0K
K30KKworc3ViIEFkZEVhcmx5UmV0dXJuU3RhdGVtZW50Cit7CisgICAgbXkgJHJldHVyblR5cGUg
PSBzaGlmdDsKKyAgICAkcmV0dXJuVmFsdWUgPSBSZXR1cm5WYWx1ZUZvckVhcmx5UmV0dXJuU3Rh
dGVtZW50KCRyZXR1cm5UeXBlKTsKIAogICAgICMgVE9ETzogV2UgY291bGQgc2V0IGV4Y2VwdGlv
bnMgaGVyZSwgaWYgd2Ugd2FudCB0aGF0CiAgICAgbXkgJHN0YXRlbWVudCA9ICIgICAgaWYgKCFp
bXBsKCkpXG4iOwotICAgICRzdGF0ZW1lbnQgLj0gICAiICAgICAgICByZXR1cm4kcmV0dXJuVHlw
ZTtcblxuIjsKKyAgICAkc3RhdGVtZW50IC49ICAgIiAgICAgICAgcmV0dXJuJHJldHVyblZhbHVl
O1xuXG4iOwogICAgIHJldHVybiAkc3RhdGVtZW50OwogfQogCkBAIC02OTcsNiArNzAzLDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1l
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZVR5cGUgPSBHZXRDUFBUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSwgMCk7CiAgICAg
ICAgICAgICBteSAkYXR0cmlidXRlSXNSZWFkb25seSA9ICgkYXR0cmlidXRlLT50eXBlID1+IC9e
cmVhZG9ubHkvKTsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVJc051bGxhYmxlID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlOwogCiAgICAgICAgICAgICAkYXR0cmlidXRlTmFt
ZXN7JGF0dHJpYnV0ZU5hbWV9ID0gMTsKIApAQCAtNzA0LDYgKzcxMSw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkZ2V0dGVyU2lnID0gIiRhdHRyaWJ1dGVU
eXBlICRjbGFzc05hbWVcOlw6JGF0dHJpYnV0ZU5hbWUoKSBjb25zdFxuIjsKICAgICAgICAgICAg
IG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSBAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9
OwogICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5l
cmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAk
YXR0cmlidXRlKTsKKyAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImlzTnVsbCIpIGlmICRh
dHRyaWJ1dGVJc051bGxhYmxlOwogICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBp
ZiAkaGFzR2V0dGVyRXhjZXB0aW9uOwogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAg
ICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwpAQCAtNzM2LDcgKzc0NCw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEFkZEVhcmx5UmV0dXJuU3RhdGVt
ZW50KCRhdHRyaWJ1dGVUeXBlKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgQGN1
c3RvbUdldHRlckNvbnRlbnQpOwotICAgICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRpb24p
IHsKKyAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uIHx8ICRhdHRyaWJ1dGVJc051
bGxhYmxlKSB7CiAgICAgICAgICAgICAgICAgIyBEaWZmZXJlbnRpYXRlZCBiZXR3ZWVuIHdoZW4g
dGhlIHJldHVybiB0eXBlIGlzIGEgcG9pbnRlciBhbmQKICAgICAgICAgICAgICAgICAjIG5vdCBm
b3Igd2hpdGUgc3BhY2UgaXNzdWUgKGllLiBGb28gKnJlc3VsdCB2cy4gaW50IHJlc3VsdCkuCiAg
ICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGVUeXBlID1+IC9cKiQvKSB7CkBAIC03NDUsOSAr
NzUzLDE1IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICRnZXR0ZXJDb250ZW50ID0gJGF0dHJpYnV0ZVR5cGUgLiAiIHJlc3VsdCA9ICIgLiAkZ2V0dGVy
Q29udGVudDsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYm9vbCBpc051bGwgPSBmYWxzZTtcbiIpIGlmICRhdHRyaWJ1dGVJ
c051bGxhYmxlOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRleGNl
cHRpb25Jbml0XG4iKSBpZiAkaGFzR2V0dGVyRXhjZXB0aW9uOwogICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRnZXR0ZXJDb250ZW50O1xuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIik7Cisg
ICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGVJc051bGxhYmxlKSB7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpc051bGwpXG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiIgLiBSZXR1cm5W
YWx1ZUZvckVhcmx5UmV0dXJuU3RhdGVtZW50KCRhdHRyaWJ1dGVUeXBlKSAuICI7XG5cbiIpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpIGlmICRoYXNHZXR0ZXJFeGNlcHRpb247CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEFkZFJldHVyblN0YXRlbWVudCgkYXR0
cmlidXRlLCAicmVzdWx0IikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgQWRkUmV0dXJuU3RhdGVtZW50KCRhdHRyaWJ1dGUsICRnZXR0
ZXJDb250ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQppbmRleCAwNmNmYWEzN2VlOWQ0MGEwNjVhMTFmY2Zk
MWYxOTQyN2RmMzBhMGY3Li42MDVhMDhmMzJhNjdiZmQ1ZDY3ZmNhYWFiNjRmNWQ4MzkwODI5ODMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckdPYmplY3QucG0KQEAgLTQ3MCw2ICs0NzAsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0
eSB7CiAgICAgICAgICRnZXR0ZXJGdW5jdGlvbk5hbWUgPSAiY29yZVNlbGYtPiRnZXR0ZXJGdW5j
dGlvbk5hbWUiOwogICAgICAgICAkc2V0dGVyRnVuY3Rpb25OYW1lID0gImNvcmVTZWxmLT4kc2V0
dGVyRnVuY3Rpb25OYW1lIjsKICAgICB9CisgICAgcHVzaChAZ2V0dGVyQXJndW1lbnRzLCAiaXNO
dWxsIikgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlOwogICAgIHB1c2goQGdl
dHRlckFyZ3VtZW50cywgImVjIikgaWYgQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfTsK
ICAgICBwdXNoKEBzZXR0ZXJBcmd1bWVudHMsICJlYyIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVy
RXhjZXB0aW9uc307CiAKQEAgLTQ5MSw3ICs0OTIsOSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0eSB7
CiAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAgY2FzZSAke3Byb3BFbnVtfToge1xuIik7CiAg
ICAgcHVzaChAdHh0R2V0UHJvcHMsICIjaWYgJHtwYXJlbnRDb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRwYXJlbnRDb25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIHB1
c2goQHR4dEdldFByb3BzLCAiICAgICAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYgJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlOwogICAgIHB1c2goQHR4dEdldFByb3BzLCAi
ICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7JGF0dHJpYnV0
ZS0+Z2V0dGVyRXhjZXB0aW9uc307CisgICAgIyBGSVhNRTogUmV0dXJuIGEgZGVmYXVsdCB2YWx1
ZSBmb3IgbnVsbGFibGUgYXR0cmlidXRlcz8KIAogICAgIG15ICRwb3N0Q29udmVydEZ1bmN0aW9u
ID0gIiI7CiAgICAgbXkgJGRvbmUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA2YWRjOTg4M2Q0NjZiNzFmYTUxMDc1
ZjViOGRjOWJmMjlhNWE4ZjMxLi4xOTc4ZWFkNTlmNTA4ZTdmMTRhZGJhZmUwODhlNTA1NzIwMTc3
NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtMTgyNyw2ICsxODI3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRy
aWJ1dGVzfSkgewogICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lOwogICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlOworICAgICAgICAgICAgICAgIG15ICRpc051bGxhYmxlID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5pc051bGxhYmxlOwogICAgICAgICAgICAgICAgICRjb2RlR2VuZXJhdG9yLT5B
c3NlcnROb3RTZXF1ZW5jZVR5cGUoJHR5cGUpOwogICAgICAgICAgICAgICAgIG15ICRnZXRGdW5j
dGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NO
YW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0aW9u
TmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRuYW1lKTsKQEAgLTE4ODksNiArMTg5
MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9IGVsc2lmICghQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25z
fSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0oZXhlYyk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYm9vbCBpc051bGwgPSBmYWxzZTtcbiIpIGlmICRpc051bGxhYmxlOwogCiAgICAg
ICAgICAgICAgICAgICAgIG15ICRjYWNoZUluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0
dHJpYnV0ZSJ9KSB7CkBAIC0xOTEyLDYgKzE5MTQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVu
dHMpID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRp
bnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGFyZ3VtZW50cywgImlzTnVsbCIpIGlmICRpc051bGxhYmxlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Iklt
cGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1l
bnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1w
bGVtZW50ZWRCeSJ9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKQEAgLTE5MzMsNiArMTkzNiwxMSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVl
IHJlc3VsdCA9ICRqc1R5cGU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc051bGxhYmxlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlzTnVsbClcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4ganNOdWxsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGNhc3RlZFRoaXMtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgY2FzdGVkVGhpcywgcmVzdWx0KTtcbiIpIGlmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNoZWRBdHRyaWJ1dGUifSk7CkBA
IC0xOTQyLDYgKzE5NTAsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICAgICAgbXkgQGFyZ3VtZW50cyA9ICgiZWMiKTsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKIAorICAg
ICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImlzTnVsbCIpOworICAg
ICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1l
bnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIikpOwog
CiAgICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUp
IHsKQEAgLTE5NTIsNiArMTk2NSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAk
aW50ZXJmYWNlTmFtZSwgImltcGwtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIs
ICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRpc051bGxhYmxlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaXNOdWxs
KVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiByZXN1bHQ7XG4iKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGUzOGFmNGQx
NTY1ZGQ5YmU1ZGY0YmY1MDdmM2YyOGY2ZGZjMDE0M2MuLmUxMDlkZDg1YjdkOTJlNmNiNDVkMTI4
NmY3NDY2ZmU4OWUwN2RmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC05ODksMTYgKzk4OSwyMiBAQCBFTkQKICAgICB9
CiAKICAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNl
cHRpb25zfTsKKyAgICBteSAkaXNOdWxsYWJsZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNO
dWxsYWJsZTsKICAgICBpZiAoJHVzZUV4Y2VwdGlvbnMpIHsKICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkV4Y2VwdGlvbkNvZGUuaCIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAgIH0KIAorICAgIGlmICgk
aXNOdWxsYWJsZSkgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBi
b29sIGlzTnVsbCA9IGZhbHNlO1xuIik7CisgICAgfQorCiAgICAgbXkgJHJldHVyblR5cGUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgbXkgJGdldHRlclN0cmluZzsKIAogICAg
IGlmICgkZ2V0dGVyU3RyaW5nVXNlc0ltcCkgewogICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwg
QGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNs
dWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEBhcmd1bWVu
dHMsICJpc051bGwiKSBpZiAkaXNOdWxsYWJsZTsKICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAi
ZWMiKSBpZiAkdXNlRXhjZXB0aW9uczsKICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAg
bXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CkBAIC0xMDIyLDE4ICsxMDI4LDI2IEBAIEVORAogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7XG4iKTsKICAgICB9CiAKLSAgICBpZiAoJHVzZUV4Y2VwdGlvbnMpIHsKKyAgICBpZiAo
JHVzZUV4Y2VwdGlvbnMgfHwgJGlzTnVsbGFibGUpIHsKICAgICAgICAgaWYgKCRuYXRpdmVUeXBl
ID1+IC9eVjhTdHJpbmdSZXNvdXJjZS8pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCAiICAgICIgLiBDb252ZXJ0VG9WOFN0cmluZ1Jlc291cmNlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgJG5hdGl2ZVR5cGUsICJ2IiwgJGdldHRlclN0cmluZykgLiAiO1xuIik7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywg
IiAgICAkbmF0aXZlVHlwZSB2ID0gJGdldHRlclN0cmluZztcbiIpOwogICAgICAgICB9Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmIChVTkxJS0VMWShlYykpXG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiBz
ZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwogCi0gICAgICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUi
KSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgICAgICBpZiAoJHVzZUV4Y2VwdGlvbnMpIHsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmIChVTkxJS0VMWShl
YykpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAg
ICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKKwor
ICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5z
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0s
ICJTY3JpcHRTdGF0ZSIpKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRl
cm5hbHMsICIgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KHN0YXRlLmV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgeworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKGlzTnVsbClcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiB2OE51bGwo
aW5mby5HZXRJc29sYXRlKCkpO1xuIik7CiAgICAgICAgIH0KIAogICAgICAgICAkcmVzdWx0ID0g
InYiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJz
ZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQppbmRl
eCBkMmRiYmEyOWQxNWJmZmE1MDM4MjFkYzVjMzU5ZDZkMzBiYjk4ZDIwLi45ZjRhMzNiYjc0Nzhl
ZDY2OWM3OWFkNzBiZjJkNWM3ODhjNDMxZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMjM5NCw3ICsyMzk0LDE2IEBAIHN1YiBwYXJzZUF0
dHJpYnV0ZVJlc3RPbGQKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdl
dFRva2VuKCksICJhdHRyaWJ1dGUiLCBfX0xJTkVfXyk7CiAgICAgICAgIG15ICRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3RBbGxvd0VtcHR5
KCk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkp
OwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkc2VsZi0+cGFyc2VUeXBl
KCkpOworICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgaWYg
KCR0eXBlID1+IC9cPyQvKSB7CisgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
aXNOdWxsYWJsZSgxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRuZXdEYXRhTm9k
ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKDApOworICAgICAgICB9CisgICAgICAgICMgUmVtb3Zl
IGFsbCAiPyIgaW4gdGhlIHR5cGUgZGVjbGFyYXRpb24sIGUuZy4gImRvdWJsZT8iIC0+ICJkb3Vi
bGUiLgorICAgICAgICAkdHlwZSA9fiBzL1w/Ly9nOworCisgICAgICAgICRuZXdEYXRhTm9kZS0+
c2lnbmF0dXJlLT50eXBlKCR0eXBlKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICAgICAgbXkg
JHRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5
cGUoJHRva2VuLCBJZGVudGlmaWVyVG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROdWxsYWJsZUF0dHJpYnV0ZXMuaWRsIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROdWxsYWJsZUF0dHJpYnV0ZXMuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkNDhhYjBhNWVjNzliZGVjOGJjYjQyMDgwYjI2MTY4ZTBkODk0M2YKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE51bGxhYmxlQXR0cmlidXRlcy5pZGwKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlzIGZvciB0
ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5nCisvLyBj
aGFuZ2VzIGluIGl0cyBvdXRwdXQuIFNwZWNpZmljYWxseSwgdGhpcyBJREwgZm9jdXNlcyBvbiBu
dWxsYWJsZSBhdHRyaWJ1dGVzLgorCitpbnRlcmZhY2UgVGVzdE51bGxhYmxlQXR0cmlidXRlcyB7
CisgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGU/IG51bGxhYmxlRG91YmxlQXR0cmlidXRlOwor
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVMb25nQXR0cmlidXRlOworICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbj8gbnVsbGFibGVCb29sZWFuQXR0cmlidXRlOworICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZTsKKworICBh
dHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGU7CisKKyAgYXR0cmli
dXRlIGxvbmc/IG51bGxhYmxlU3RyaW5nVmFsdWUKKyAgICAgIGdldHRlciByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193118</attachid>
            <date>2013-03-14 07:16:18 -0700</date>
            <delta_ts>2013-03-15 07:19:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111728-20130314141214.patch</filename>
            <type>text/plain</type>
            <size>61200</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhmNWYxYWE4MWFlOTRj
ZmYzYWI0N2E5ZjYxMWQ4YmZhNzFiNTRiMi4uYTliNDQ0MGI3ZTg5ZTc3ZDM1NTc5ZjBmYzhkZjM4
NmFhYWE5MjFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMy0wMy0xNCAgUGV0
ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHN1
cHBvcnQgZm9yIG51bGxhYmxlIHR5cGVzIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBudWxsYWJsZSB0eXBlcyBpbiB0aGUgYmluZGluZ3MKKyAgICAgICAgZ2Vu
ZXJhdG9yLCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEwLjIyIG9mIFdlYklETDoKKyAgICAg
ICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jaWRsLW51bGxhYmxl
LXR5cGUKKworICAgICAgICBpbnRlcmZhY2UgTXlJbnRlcmZhY2UgeworICAgICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4/IHZhbHVlOyAvLyB0cnVlLCBmYWxzZSBvciBudWxsLgor
ICAgICAgICB9OworCisgICAgICAgIFRoZSBJREwgUGFyc2VyIGhhcyBiZWVuIG1vZGlmaWVkIHRv
IHJlY29yZCB3aGV0aGVyIGF0dHJpYnV0ZXMgYXJlCisgICAgICAgIG51bGxhYmxlLiBRdWVzdGlv
biBtYXJrcyBmcm9tIHRoZSB0eXBlIHdpbGwgYWx3YXlzIGJlIHN0cmlwcGVkCisgICAgICAgIGZy
b20gdGhlIGRvbUF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGZpZWxkLiBPbmNlIHN1cHBvcnQg
Zm9yCisgICAgICAgIHRoaXMgaGFzIGJlZW4gY29tcGxldGVseSBpbXBsZW1lbnRlZCwgd2UnbGwg
YmUgYWJsZSB0byByZW1vdmUgYQorICAgICAgICBidW5jaCBvZiBjdXN0b20gYmluZGluZ3MsIGku
ZS4gdGhvc2Ugb2YgRGV2aWNlIE9yaWVudGF0aW9uLgorCisgICAgICAgIEFueSBnZXR0ZXIgZm9y
IGFuIGF0dHJpYnV0ZSB3aGljaCByZXR1cm5zIGEgbnVsbGFibGUgdHlwZSB3aWxsIGJlCisgICAg
ICAgIGNhbGxlZCB3aXRoIGFuIGFkZGl0aW9uYWwgYXR0cmlidXRlIChwYXNzZWQgYnkgcmVmZXJl
bmNlKSBuYW1lZAorICAgICAgICAiaXNOdWxsIi4gVGhpcyB3aWxsIGJlIHRoZSBsYXN0IGFyZ3Vt
ZW50IHBhc3NlZCB0byB0aGUgbWV0aG9kLAorICAgICAgICB1bmxlc3MgYW4gZXhjZXB0aW9uIGNv
ZGUgKGVjKSBhcmd1bWVudCB3aWxsIGJlIHBhc3NlZCBhcyB3ZWxsLgorCisgICAgICAgIFRlc3Rl
ZCBieSBleGlzdGluZyBiaW5kaW5nIHRlc3RzIGFuZCB0aGUgbmV3IG51bGxhYmxlIGF0dHJpYnV0
ZQorICAgICAgICB0ZXN0cyBpbiB0aGUgYmluZGluZ3Mvc2NyaXB0cy90ZXN0LyBkaXJlY3Rvcnku
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG06CisgICAg
ICAgIChSZXR1cm5WYWx1ZUZvckVhcmx5UmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEFkZEVh
cmx5UmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CisgICAg
ICAgIChHZW5lcmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJh
dGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNl
ci5wbToKKyAgICAgICAgKHR5cGVIYXNOdWxsYWJsZVN1ZmZpeCk6CisgICAgICAgICh0eXBlUmVt
b3ZlTnVsbGFibGVTdWZmaXgpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAgICAg
ICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VBdHRy
aWJ1dGVSZXN0T2xkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRP
TVRlc3RPYmouY3BwOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6bnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6bnVsbGFibGVMb25nQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkRPTVRlc3RPYmo6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJET01UZXN0T2JqOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJET01UZXN0T2JqOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJET01UZXN0T2JqOjpzZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJET01UZXN0T2JqOjpudWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkRPTVRl
c3RPYmo6OnNldE51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X29ial9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2RvdWJsZV9hdHRyaWJ1dGUp
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfbG9uZ19hdHRyaWJ1
dGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfYm9vbGVhbl9h
dHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfc3Ry
aW5nX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJs
ZV9sb25nX3NldHRhYmxlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3NldF9udWxsYWJsZV9sb25nX3NldHRhYmxlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9zdHJpbmdfdmFsdWUpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9zZXRfbnVsbGFibGVfc3RyaW5nX3ZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbToKKyAgICAgICAg
KC1bRE9NVGVzdE9iaiBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZV0pOgorICAgICAgICAoLVtET01U
ZXN0T2JqIG51bGxhYmxlTG9uZ0F0dHJpYnV0ZV0pOgorICAgICAgICAoLVtET01UZXN0T2JqIG51
bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZV0pOgorICAgICAgICAoLVtET01UZXN0T2JqIG51bGxhYmxl
U3RyaW5nQXR0cmlidXRlXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogbnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXROdWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBudWxsYWJsZVN0cmlu
Z1ZhbHVlXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0TnVsbGFibGVTdHJpbmdWYWx1ZTpd
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVy
KToKKyAgICAgICAgKFRlc3RPYmpWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmli
dXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVs
bGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRy
aWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9u
Z1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5n
VmFsdWVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpu
dWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJT
ZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMy0wMy0xMyAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBnZXQgcmlkIG9mIGhpZGRlblBhbmVscyBmaWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCBjYTBhOTY0YzNjN2Yy
Njc5OWIzNzEzM2EyMTdiNzM2ZTQxODNlMmJlLi5kMWZiMzVkNThjODY5ZjEwYjk1ZGZmM2QzZjk0
OGU5MTQzZDNhYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JDUFAucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCkBAIC01NTIsMjMgKzU1MiwyOSBAQCBzdWIgR2VuZXJhdGVI
ZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIH0KIAotc3ViIEFkZEVhcmx5UmV0
dXJuU3RhdGVtZW50CitzdWIgUmV0dXJuVmFsdWVGb3JFYXJseVJldHVyblN0YXRlbWVudAogewog
ICAgIG15ICRyZXR1cm5UeXBlID0gc2hpZnQ7CiAKICAgICBpZiAoIWRlZmluZWQoJHJldHVyblR5
cGUpIG9yICRyZXR1cm5UeXBlIGVxICJ2b2lkIikgewotICAgICAgICAkcmV0dXJuVHlwZSA9ICIi
OworICAgICAgICByZXR1cm4gIiI7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzUHJp
bWl0aXZlVHlwZSgkcmV0dXJuVHlwZSkpIHsKLSAgICAgICAgJHJldHVyblR5cGUgPSAiIDAiOwor
ICAgICAgICByZXR1cm4gIiAwIjsKICAgICB9IGVsc2lmICgkcmV0dXJuVHlwZSBlcSAiYm9vbCIp
IHsKLSAgICAgICAgJHJldHVyblR5cGUgPSAiIGZhbHNlIjsKKyAgICAgICAgcmV0dXJuICIgZmFs
c2UiOwogICAgIH0gZWxzZSB7Ci0gICAgICAgICRyZXR1cm5UeXBlID0gIiAkcmV0dXJuVHlwZSgp
IjsKKyAgICAgICAgcmV0dXJuICIgJHJldHVyblR5cGUoKSI7CiAgICAgfQorfQorCitzdWIgQWRk
RWFybHlSZXR1cm5TdGF0ZW1lbnQKK3sKKyAgICBteSAkcmV0dXJuVHlwZSA9IHNoaWZ0OworICAg
ICRyZXR1cm5WYWx1ZSA9IFJldHVyblZhbHVlRm9yRWFybHlSZXR1cm5TdGF0ZW1lbnQoJHJldHVy
blR5cGUpOwogCiAgICAgIyBUT0RPOiBXZSBjb3VsZCBzZXQgZXhjZXB0aW9ucyBoZXJlLCBpZiB3
ZSB3YW50IHRoYXQKICAgICBteSAkc3RhdGVtZW50ID0gIiAgICBpZiAoIWltcGwoKSlcbiI7Ci0g
ICAgJHN0YXRlbWVudCAuPSAgICIgICAgICAgIHJldHVybiRyZXR1cm5UeXBlO1xuXG4iOworICAg
ICRzdGF0ZW1lbnQgLj0gICAiICAgICAgICByZXR1cm4kcmV0dXJuVmFsdWU7XG5cbiI7CiAgICAg
cmV0dXJuICRzdGF0ZW1lbnQ7CiB9CiAKQEAgLTY5Nyw2ICs3MDMsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9IEdldENQ
UFR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlLCAwKTsKICAgICAgICAgICAgIG15ICRh
dHRyaWJ1dGVJc1JlYWRvbmx5ID0gKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pOwor
ICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUlzTnVsbGFibGUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmlzTnVsbGFibGU7CiAKICAgICAgICAgICAgICRhdHRyaWJ1dGVOYW1lc3skYXR0cmlidXRl
TmFtZX0gPSAxOwogCkBAIC03MDQsNiArNzExLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgIG15ICRnZXR0ZXJTaWcgPSAiJGF0dHJpYnV0ZVR5cGUgJGNsYXNzTmFt
ZVw6XDokYXR0cmlidXRlTmFtZSgpIGNvbnN0XG4iOwogICAgICAgICAgICAgbXkgJGhhc0dldHRl
ckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc307CiAgICAgICAgICAg
ICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+R2V0dGVy
RXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOwor
ICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiaXNOdWxsIikgaWYgJGF0dHJpYnV0ZUlzTnVs
bGFibGU7CiAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICRoYXNHZXR0ZXJF
eGNlcHRpb247CiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGlt
cGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJJbXBsZW1lbnRlZEJ5In07CkBAIC03MzYsNyArNzQ0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgQWRkRWFybHlSZXR1cm5TdGF0ZW1lbnQoJGF0dHJpYnV0
ZVR5cGUpKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBAY3VzdG9tR2V0dGVyQ29u
dGVudCk7Ci0gICAgICAgICAgICBpZiAoJGhhc0dldHRlckV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRpb24gfHwgJGF0dHJpYnV0ZUlzTnVsbGFibGUpIHsKICAg
ICAgICAgICAgICAgICAjIERpZmZlcmVudGlhdGVkIGJldHdlZW4gd2hlbiB0aGUgcmV0dXJuIHR5
cGUgaXMgYSBwb2ludGVyIGFuZAogICAgICAgICAgICAgICAgICMgbm90IGZvciB3aGl0ZSBzcGFj
ZSBpc3N1ZSAoaWUuIEZvbyAqcmVzdWx0IHZzLiBpbnQgcmVzdWx0KS4KICAgICAgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZVR5cGUgPX4gL1wqJC8pIHsKQEAgLTc0NSw5ICs3NTMsMTUgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnQgPSAkYXR0cmlidXRlVHlwZSAuICIgcmVzdWx0ID0gIiAuICRnZXR0ZXJDb250ZW50OwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRleGNlcHRpb25Jbml0XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYgJGF0dHJpYnV0ZUlzTnVsbGFibGU7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIp
IGlmICRoYXNHZXR0ZXJFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGdldHRlckNvbnRlbnQ7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9yXG4iKTsKKyAgICAgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZUlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKGlzTnVsbClcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIiAuIFJldHVyblZhbHVlRm9yRWFybHlS
ZXR1cm5TdGF0ZW1lbnQoJGF0dHJpYnV0ZVR5cGUpIC4gIjtcblxuIik7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlv
blJhaXNlT25FcnJvclxuIikgaWYgJGhhc0dldHRlckV4Y2VwdGlvbjsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgQWRkUmV0dXJuU3RhdGVtZW50KCRhdHRyaWJ1dGUsICJyZXN1
bHQiKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCBBZGRSZXR1cm5TdGF0ZW1lbnQoJGF0dHJpYnV0ZSwgJGdldHRlckNvbnRlbnQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtCmluZGV4IDA2Y2ZhYTM3ZWU5ZDQwYTA2NWExMWZjZmQxZjE5NDI3ZGYzMGEw
ZjcuLjRlOTc0Y2RjNTc3NzkyMGMzN2RlYTE1YmJkZTE3Mjk2ZGJmZmUwYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVj
dC5wbQpAQCAtNDcwLDYgKzQ3MCw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnR5IHsKICAgICAgICAg
JGdldHRlckZ1bmN0aW9uTmFtZSA9ICJjb3JlU2VsZi0+JGdldHRlckZ1bmN0aW9uTmFtZSI7CiAg
ICAgICAgICRzZXR0ZXJGdW5jdGlvbk5hbWUgPSAiY29yZVNlbGYtPiRzZXR0ZXJGdW5jdGlvbk5h
bWUiOwogICAgIH0KKyAgICBwdXNoKEBnZXR0ZXJBcmd1bWVudHMsICJpc051bGwiKSBpZiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGU7CiAgICAgcHVzaChAZ2V0dGVyQXJndW1lbnRz
LCAiZWMiKSBpZiBAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OwogICAgIHB1c2goQHNl
dHRlckFyZ3VtZW50cywgImVjIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsK
IApAQCAtNDkxLDcgKzQ5Miw5IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnR5IHsKICAgICBwdXNoKEB0
eHRHZXRQcm9wcywgIiAgICBjYXNlICR7cHJvcEVudW19OiB7XG4iKTsKICAgICBwdXNoKEB0eHRH
ZXRQcm9wcywgIiNpZiAke3BhcmVudENvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJHBhcmVudENv
bmRpdGlvbmFsU3RyaW5nOwogICAgIHB1c2goQHR4dEdldFByb3BzLCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgcHVzaChAdHh0R2V0UHJv
cHMsICIgICAgICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKSBpZiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmlzTnVsbGFibGU7CiAgICAgcHVzaChAdHh0R2V0UHJvcHMsICIgICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNl
cHRpb25zfTsKKyAgICAjIEZJWE1FOiBSZXR1cm4gYSBkZWZhdWx0IHZhbHVlIGZvciBudWxsYWJs
ZSBhdHRyaWJ1dGVzPwogCiAgICAgbXkgJHBvc3RDb252ZXJ0RnVuY3Rpb24gPSAiIjsKICAgICBt
eSAkZG9uZSA9IDA7CkBAIC0xMDAzLDggKzEwMDYsMTUgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24g
ewogICAgICAgICB9CiAgICAgfQogCisgICAgIyBGSVhNRTogV2hlbiBjcmVhdGluZyBhIGdldHRl
ciBmb3IgYSBudWxsYWJsZSBhdHRyaWJ1dGUsIHNob3VsZCBhIGRlZmF1bHQgdmFsdWUKKyAgICAj
IGJlIHJldHVybmVkIGJ5IHRoZSBBUEkgaXMgaXNOdWxsPXRydWU/CisgICAgaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5pc051bGxhYmxlKSB7CisgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGJv
b2wgaXNOdWxsID0gZmFsc2U7XG4iKTsKKyAgICAgICAgcHVzaChAY2FsbEltcGxQYXJhbXMsICJp
c051bGwiKTsKKyAgICB9CisKICAgICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9
KSB7Ci0gICAgICAgIHB1c2goQGNCb2R5LCAiICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwO1xuIikgOworICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDtcbiIpOwogICAgICAgICBwdXNoKEBjYWxsSW1wbFBhcmFtcywgImVjIik7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IDZhZGM5ODgzZDQ2NmI3MWZhNTEwNzVmNWI4ZGM5YmYyOWE1YThmMzEu
LjE5NzhlYWQ1OWY1MDhlN2YxNGFkYmFmZTA4OGU1MDU3MjAxNzc0YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODI3
LDYgKzE4MjcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgZm9y
ZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAg
ICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAg
ICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAg
ICAgICAgICAgbXkgJGlzTnVsbGFibGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFi
bGU7CiAgICAgICAgICAgICAgICAgJGNvZGVHZW5lcmF0b3ItPkFzc2VydE5vdFNlcXVlbmNlVHlw
ZSgkdHlwZSk7CiAgICAgICAgICAgICAgICAgbXkgJGdldEZ1bmN0aW9uTmFtZSA9IEdldEF0dHJp
YnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwog
ICAgICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0
b3ItPldLX2xjZmlyc3QoJG5hbWUpOwpAQCAtMTg4OSw2ICsxODkwLDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0g
ZWxzaWYgKCFAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9KSB7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpIGlm
ICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIGlzTnVs
bCA9IGZhbHNlO1xuIikgaWYgJGlzTnVsbGFibGU7CiAKICAgICAgICAgICAgICAgICAgICAgbXkg
JGNhY2hlSW5kZXggPSAwOwogICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKQEAgLTE5
MTIsNiArMTkxNCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRv
ci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRy
aWJ1dGUpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiaXNOdWxs
IikgaWYgJGlzTnVsbGFibGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5o
In0gPSAxOwpAQCAtMTkzMyw2ICsxOTM2LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlwZTtc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJGlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoaXNOdWxsKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBqc051bGwoKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+bV8iIC4g
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
YXN0ZWRUaGlzLCByZXN1bHQpO1xuIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KTsKQEAgLTE5NDIsNiArMTk1MCwxMSBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBteSBAYXJn
dW1lbnRzID0gKCJlYyIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogCisgICAgICAgICAgICAgICAgICAgIGlm
ICgkaXNOdWxsYWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYm9vbCBpc051bGwgPSBmYWxzZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaXNOdWxsIik7CisgICAgICAgICAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdp
dGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgi
fSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCkiKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewpAQCAtMTk1Miw2ICsxOTY1
LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1w
bC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAi
KSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KIAorICAg
ICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpc051bGwpXG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNOdWxsKCk7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIp
OwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IDI5NTBhMmE1YjAwNTNkZGExOGZlNDEw
ZWJjYmIyYzNiMDQ2MjExYWUuLmVlOTcxNzhhNDk3YzZiNzBmNTgxZTlkZDk4ODkxYmU4ZTRkNzJj
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbQpAQCAtNzYsNiArNzYsNyBAQCBteSAlYmFzZVR5cGVIYXNoID0gKCJPYmpl
Y3QiID0+IDEsICJOb2RlIiA9PiAxLCAiTm9kZUxpc3QiID0+IDEsICJOYW1lZE5vZGVNYXAiCiAg
ICAgICAgICAgICAgICAgICAgICJTVkdTdHJpbmdMaXN0IiA9PiAxLCAiU1ZHVHJhbnNmb3JtIiA9
PiAxLCAiU1ZHVHJhbnNmb3JtTGlzdCIgPT4gMSwgIlNWR1VuaXRUeXBlcyIgPT4gMSk7CiAKICMg
Q29uc3RhbnRzCitteSAkbnVsbGFibGVJbml0ID0gImJvb2wgaXNOdWxsID0gZmFsc2U7IjsKIG15
ICRleGNlcHRpb25Jbml0ID0gIldlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOyI7CiBteSAk
anNDb250ZXh0U2V0dGVyID0gIldlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsi
OwogbXkgJGV4Y2VwdGlvblJhaXNlT25FcnJvciA9ICJXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3Io
ZWMpOyI7CkBAIC0xMzM0LDggKzEzMzUsMTcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnQ7Ci0gICAgICAg
ICAgICBpZiAoJGhhc0dldHRlckV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICRnZXR0ZXJD
b250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gKCRnZXR0ZXJDb250ZW50SGVhZCA9fiAvXCgk
fCwgJC8gPyAiZWMiIDogIiwgZWMiKSAuICRnZXR0ZXJDb250ZW50VGFpbDsKKyAgICAgICAgICAg
IGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxs
YWJsZSkgeworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdldHRlckNvbnRlbnRI
ZWFkOworICAgICAgICAgICAgICAgIG15ICRnZXR0ZXJXaXRob3V0QXR0cmlidXRlcyA9ICRnZXR0
ZXJDb250ZW50SGVhZCA9fiAvXCgkfCwgJC8gPyAiZWMiIDogIiwgZWMiOworICAgICAgICAgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnQgLj0gJGdldHRlcldpdGhvdXRBdHRyaWJ1dGVzID8gImlz
TnVsbCIgOiAiLCBpc051bGwiOworICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyV2l0aG91dEF0
dHJpYnV0ZXMgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoJGhh
c0dldHRlckV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCAu
PSAkZ2V0dGVyV2l0aG91dEF0dHJpYnV0ZXMgPyAiZWMiIDogIiwgZWMiOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCAuPSAkZ2V0dGVyQ29udGVudFRh
aWw7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50
ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gJGdldHRlckNvbnRlbnRUYWlsOwogICAgICAgICAgICAg
fQpAQCAtMTM0Niw2ICsxMzU2LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJGpzQ29udGV4dFNldHRlclxuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgQGN1c3RvbUdldHRlckNvbnRlbnQpOworCisgICAgICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKSB7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJG51bGxhYmxlSW5pdFxuIik7CisgICAgICAgICAgICAgICAgIyBG
SVhNRTogU2hvdWxkIHdlIHJldHVybiBhICJkZWZhdWx0IiB2YWx1ZSBmb3IgdGhlIHJldHVybiB0
eXBlCisgICAgICAgICAgICAgICAgIyB3aGVuIGlzTnVsbD10cnVlPworICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICBpZiAoJGhhc0dldHRlckV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAg
ICMgRGlmZmVyZW50aWF0ZWQgYmV0d2VlbiB3aGVuIHRoZSByZXR1cm4gdHlwZSBpcyBhIHBvaW50
ZXIgYW5kCiAgICAgICAgICAgICAgICAgIyBub3QgZm9yIHdoaXRlIHNwYWNlIGlzc3VlIChpZS4g
Rm9vICpyZXN1bHQgdnMuIGludCByZXN1bHQpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBlZjIwZjlmZWVkM2NkNGYzYTYy
ODY3MDlmZjcwNTQ1OWY5MzZlOTJmLi42NjMwMjE2MTgyZDdjMWI2OGE0ZjVjMTM1Y2NhM2NiNDVm
YzIwMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQpAQCAtOTk0LDE2ICs5OTQsMjIgQEAgRU5ECiAgICAgfQogCiAgICAgbXkg
JHVzZUV4Y2VwdGlvbnMgPSAxIGlmIEB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc307Cisg
ICAgbXkgJGlzTnVsbGFibGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGU7CiAg
ICAgaWYgKCR1c2VFeGNlcHRpb25zKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJFeGNl
cHRpb25Db2RlLmgiKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKICAgICB9CiAKKyAgICBpZiAoJGlzTnVsbGFibGUp
IHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgYm9vbCBpc051bGwg
PSBmYWxzZTtcbiIpOworICAgIH0KKwogICAgIG15ICRyZXR1cm5UeXBlID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlOwogICAgIG15ICRnZXR0ZXJTdHJpbmc7CiAKICAgICBpZiAoJGdldHRl
clN0cmluZ1VzZXNJbXApIHsKICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMp
ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRl
cmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiaXNOdWxs
IikgaWYgJGlzTnVsbGFibGU7CiAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImVjIikgaWYgJHVz
ZUV4Y2VwdGlvbnM7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgIG15ICRpbXBsZW1l
bnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1w
bGVtZW50ZWRCeSJ9OwpAQCAtMTAyNywxOCArMTAzMywyNiBAQCBFTkQKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpO1xuIik7
CiAgICAgfQogCi0gICAgaWYgKCR1c2VFeGNlcHRpb25zKSB7CisgICAgaWYgKCR1c2VFeGNlcHRp
b25zIHx8ICRpc051bGxhYmxlKSB7CiAgICAgICAgIGlmICgkbmF0aXZlVHlwZSA9fiAvXlY4U3Ry
aW5nUmVzb3VyY2UvKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywg
IiAgICAiIC4gQ29udmVydFRvVjhTdHJpbmdSZXNvdXJjZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
ICRuYXRpdmVUeXBlLCAidiIsICRnZXR0ZXJTdHJpbmcpIC4gIjtcbiIpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgJG5hdGl2
ZVR5cGUgdiA9ICRnZXR0ZXJTdHJpbmc7XG4iKTsKICAgICAgICAgfQotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIiAgICBpZiAoVU5MSUtFTFkoZWMpKVxuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0
aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKIAotICAgICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgIlNjcmlwdFN0YXRlIikpIHsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xh
dGUoKSk7XG4iKTsKKyAgICAgICAgaWYgKCRpc051bGxhYmxlKSB7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBpZiAoaXNOdWxsKVxuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZv
LkdldElzb2xhdGUoKSk7XG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgkdXNlRXhjZXB0
aW9ucykgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYg
KFVOTElLRUxZKGVjKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5h
bHMsICIgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgp
KTtcbiIpOworCisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmli
dXRlQ29udGFpbnMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q2FsbFdpdGgifSwgIlNjcmlwdFN0YXRlIikpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudEludGVybmFscywgIiAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpXG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJu
IHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgJHJlc3VsdCA9ICJ2IjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggZDJkYmJhMjlk
MTViZmZhNTAzODIxZGM1YzM1OWQ2ZDMwYmI5OGQyMC4uZjAwMDM1NTVlMDU4YzUyM2I4YWIzOGM5
MGZiZjMzYmY3OTQyNTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExQYXJzZXIucG0KQEAgLTI5MSw2ICsyOTEsMTkgQEAgc3ViIHVucXVvdGVTdHJpbmcKICAgICBk
aWUgIkZhaWxlZCB0byBwYXJzZSBzdHJpbmcgKCIgLiAkcXVvdGVkU3RyaW5nIC4gIikgYXQgIiAu
ICRzZWxmLT57TGluZX07CiB9CiAKK3N1YiB0eXBlSGFzTnVsbGFibGVTdWZmaXgKK3sKKyAgICBt
eSAkdHlwZSA9IHNoaWZ0OworICAgIHJldHVybiAkdHlwZSA9fiAvXD8kLzsKK30KKworc3ViIHR5
cGVSZW1vdmVOdWxsYWJsZVN1ZmZpeAoreworICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgJHR5
cGUgPX4gcy9cPy8vZzsKKyAgICByZXR1cm4gJHR5cGU7Cit9CisKIG15ICRuZXh0QXR0cmlidXRl
T2xkXzEgPSAnXihhdHRyaWJ1dGV8aW5oZXJpdHxyZWFkb25seSkkJzsKIG15ICRuZXh0UHJpbWl0
aXZlVHlwZV8xID0gJ14oaW50fGxvbmd8c2hvcnR8dW5zaWduZWQpJCc7CiBteSAkbmV4dFByaW1p
dGl2ZVR5cGVfMiA9ICdeKGRvdWJsZXxmbG9hdHx1bnJlc3RyaWN0ZWQpJCc7CkBAIC0xMTI3LDcg
KzExNDAsMTQgQEAgc3ViIHBhcnNlQXR0cmlidXRlUmVzdAogICAgICAgICB9CiAgICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiYXR0cmlidXRlIiwgX19M
SU5FX18pOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5l
dygpKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJHNlbGYtPnBhcnNl
VHlwZSgpKTsKKyAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAg
IGlmICh0eXBlSGFzTnVsbGFibGVTdWZmaXgoJHR5cGUpKSB7CisgICAgICAgICAgICAkbmV3RGF0
YU5vZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKDApOworICAgICAgICB9
CisgICAgICAgICMgUmVtb3ZlIGFsbCAiPyIgaW4gdGhlIHR5cGUgZGVjbGFyYXRpb24sIGUuZy4g
ImRvdWJsZT8iIC0+ICJkb3VibGUiLgorICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKICAgICAgICAgbXkgJHRva2Vu
ID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJHRv
a2VuLCBJZGVudGlmaWVyVG9rZW4pOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
bmFtZSgkdG9rZW4tPnZhbHVlKCkpOwpAQCAtMTM5NCwxNCArMTQxNCwxMyBAQCBzdWIgcGFyc2VP
cHRpb25hbE9yUmVxdWlyZWRBcmd1bWVudAogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1
ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIm9wdGlvbmFsIiwgX19MSU5FX18pOwogICAgICAgICBteSAk
dHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKICAgICAgICAgIyBkb21EYXRhTm9kZSBjYW4gb25s
eSBjb25zaWRlciBsYXN0ICI/Ii4KLSAgICAgICAgaWYgKCR0eXBlID1+IC9cPyQvKSB7CisgICAg
ICAgIGlmICh0eXBlSGFzTnVsbGFibGVTdWZmaXgoJHR5cGUpKSB7CiAgICAgICAgICAgICAkcGFy
YW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgxKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKDApOwogICAgICAgICB9CiAgICAgICAgICMgUmVt
b3ZlIGFsbCAiPyIgaWYgZXhpc3RzLCBlLmcuICJvYmplY3Q/W10/IiAtPiAib2JqZWN0W10iLgot
ICAgICAgICAkdHlwZSA9fiBzL1w/Ly9nOwotICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSgk
dHlwZSk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT50eXBlKHR5cGVSZW1vdmVOdWxsYWJsZVN1
ZmZpeCgkdHlwZSkpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+bmFtZSgkc2VsZi0+cGFyc2VB
cmd1bWVudE5hbWUoKSk7CiAgICAgICAgICRzZWxmLT5wYXJzZURlZmF1bHQoKTsKICAgICAgICAg
cmV0dXJuICRwYXJhbURhdGFOb2RlOwpAQCAtMTQwOSwxNCArMTQyOCwxMyBAQCBzdWIgcGFyc2VP
cHRpb25hbE9yUmVxdWlyZWRBcmd1bWVudAogICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50
aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRFeGNlcHRpb25GaWVsZF8xLykg
ewogICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKICAgICAgICAgIyBkb21E
YXRhTm9kZSBjYW4gb25seSBjb25zaWRlciBsYXN0ICI/Ii4KLSAgICAgICAgaWYgKCR0eXBlID1+
IC9cPyQvKSB7CisgICAgICAgIGlmICh0eXBlSGFzTnVsbGFibGVTdWZmaXgoJHR5cGUpKSB7CiAg
ICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgxKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKDApOwogICAgICAgICB9
CiAgICAgICAgICMgUmVtb3ZlIGFsbCAiPyIgaWYgZXhpc3RzLCBlLmcuICJvYmplY3Q/W10/IiAt
PiAib2JqZWN0W10iLgotICAgICAgICAkdHlwZSA9fiBzL1w/Ly9nOwotICAgICAgICAkcGFyYW1E
YXRhTm9kZS0+dHlwZSgkdHlwZSk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT50eXBlKHR5cGVS
ZW1vdmVOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpOwogICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNW
YXJpYWRpYygkc2VsZi0+cGFyc2VFbGxpcHNpcygpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUt
Pm5hbWUoJHNlbGYtPnBhcnNlQXJndW1lbnROYW1lKCkpOwogICAgICAgICByZXR1cm4gJHBhcmFt
RGF0YU5vZGU7CkBAIC0yMzk0LDcgKzI0MTIsMTQgQEAgc3ViIHBhcnNlQXR0cmlidXRlUmVzdE9s
ZAogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgImF0
dHJpYnV0ZSIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9
ICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdEFsbG93RW1wdHkoKTsKICAgICAgICAg
JG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0gICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRzZWxmLT5wYXJzZVR5cGUoKSk7CisgICAgICAg
IG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAgICBpZiAodHlwZUhhc051bGxh
YmxlU3VmZml4KCR0eXBlKSkgeworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUt
PmlzTnVsbGFibGUoMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkbmV3RGF0YU5v
ZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgwKTsKKyAgICAgICAgfQorICAgICAgICAjIFJlbW92
ZSBhbGwgIj8iIGluIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBlLmcuICJkb3VibGU/IiAtPiAiZG91
YmxlIi4KKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUodHlwZVJlbW92ZU51
bGxhYmxlU3VmZml4KCR0eXBlKSk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgIG15ICR0
b2tlbiA9ICRzZWxmLT5nZXRUb2tlbigpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBl
KCR0b2tlbiwgSWRlbnRpZmllclRva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDlmYmJk
NTAyYjdmYTZjYzk2MGVkNDk4ZTJmNjg4MWJlMzBkODQ1NTQuLmYyODM4ZGY4ZWYxNjliZDI0YmQy
Mjc3MWE0MWQ0MWVkNjZhZjc4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtNjY0LDYgKzY2
NCwxMDIgQEAgaW50IFdlYkRPTVRlc3RPYmo6OnJlcGxhY2VhYmxlQXR0cmlidXRlKCkgY29uc3QK
ICAgICByZXR1cm4gaW1wbCgpLT5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpOwogfQogCitkb3VibGUg
V2ViRE9NVGVzdE9iajo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlm
ICghaW1wbCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7
CisgICAgZG91YmxlIHJlc3VsdCA9IGltcGwoKS0+bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNO
dWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2ludCBXZWJET01UZXN0T2JqOjpudWxsYWJsZUxvbmdBdHRyaWJ1dGUoKSBj
b25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGJvb2wg
aXNOdWxsID0gZmFsc2U7CisgICAgaW50IHJlc3VsdCA9IGltcGwoKS0+bnVsbGFibGVMb25nQXR0
cmlidXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitib29sIFdlYkRPTVRlc3RPYmo6Om51bGxhYmxlQm9vbGVh
bkF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgYm9vbCByZXN1bHQgPSBpbXBs
KCktPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpOworICAgIGlmIChpc051bGwpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1dlYkRPTVN0
cmluZyBXZWJET01UZXN0T2JqOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01TdHJpbmcoKTsKKworICAgIGJv
b2wgaXNOdWxsID0gZmFsc2U7CisgICAgV2ViRE9NU3RyaW5nIHJlc3VsdCA9IGltcGwoKS0+bnVs
bGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICBy
ZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV1RG
OjpTdHJpbmcmPihyZXN1bHQpOworfQorCitpbnQgV2ViRE9NVGVzdE9iajo6bnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgaW50IHJlc3VsdCA9IGlt
cGwoKS0+bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNO
dWxsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
V2ViRE9NVGVzdE9iajo6c2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaW50IG5ld051
bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbXBsKCktPnNldE51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRl
KG5ld051bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKTsKK30KKworaW50IFdlYkRPTVRlc3RP
Ymo6Om51bGxhYmxlU3RyaW5nVmFsdWUoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW50IHJlc3VsdCA9IGltcGwoKS0+bnVsbGFibGVT
dHJpbmdWYWx1ZShpc051bGwsIGVjKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHdlYkRPTVJhaXNlRXJyb3Ioc3RhdGljX2Nhc3Q8V2ViRE9NRXhjZXB0aW9uQ29k
ZT4oZWMpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNl
dE51bGxhYmxlU3RyaW5nVmFsdWUoaW50IG5ld051bGxhYmxlU3RyaW5nVmFsdWUpCit7CisgICAg
aWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+c2V0TnVsbGFibGVT
dHJpbmdWYWx1ZShuZXdOdWxsYWJsZVN0cmluZ1ZhbHVlKTsKK30KKwogdm9pZCBXZWJET01UZXN0
T2JqOjp2b2lkTWV0aG9kKCkKIHsKICAgICBpZiAoIWltcGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKaW5k
ZXggZTY3YmE4MzhhN2RiNjRkODQ3NzJjMWM2NzI1MDI3ZjIwZTA0OWE4ZS4uZDgyYjc4MjVhYTNk
ODY0MzY5ODkwZjA3MWI5OWUzOGI3YmMwODc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKQEAgLTE0NSw2
ICsxNDUsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWQoaW50KTsKICAgICBXZWJET01TdHJp
bmcgaGFzaCgpIGNvbnN0OwogICAgIGludCByZXBsYWNlYWJsZUF0dHJpYnV0ZSgpIGNvbnN0Owor
ICAgIGRvdWJsZSBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSgpIGNvbnN0OworICAgIGludCBudWxs
YWJsZUxvbmdBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICBib29sIG51bGxhYmxlQm9vbGVhbkF0dHJp
YnV0ZSgpIGNvbnN0OworICAgIFdlYkRPTVN0cmluZyBudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSgp
IGNvbnN0OworICAgIGludCBudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaW50KTsKKyAgICBpbnQg
bnVsbGFibGVTdHJpbmdWYWx1ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TnVsbGFibGVTdHJpbmdW
YWx1ZShpbnQpOwogCiAgICAgdm9pZCB2b2lkTWV0aG9kKCk7CiAgICAgdm9pZCB2b2lkTWV0aG9k
V2l0aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBX
ZWJET01UZXN0T2JqJiBvYmpBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApp
bmRleCA0ZDQxZDZlMTNiNmM4YzZiNjI4MGE3NmZjZjk4OTE4OTg5MDRlYzI1Li4zZjk4Y2I3ZmJk
N2YwNDdmODRhNTY1M2U5Y2IyZWUyNDhiODA5OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0T2JqLmNwcApAQCAtMTI0LDYgKzEyNCwxMiBAQCBlbnVtIHsKICAgICBQUk9QX0lELAogICAg
IFBST1BfSEFTSCwKICAgICBQUk9QX1JFUExBQ0VBQkxFX0FUVFJJQlVURSwKKyAgICBQUk9QX05V
TExBQkxFX0RPVUJMRV9BVFRSSUJVVEUsCisgICAgUFJPUF9OVUxMQUJMRV9MT05HX0FUVFJJQlVU
RSwKKyAgICBQUk9QX05VTExBQkxFX0JPT0xFQU5fQVRUUklCVVRFLAorICAgIFBST1BfTlVMTEFC
TEVfU1RSSU5HX0FUVFJJQlVURSwKKyAgICBQUk9QX05VTExBQkxFX0xPTkdfU0VUVEFCTEVfQVRU
UklCVVRFLAorICAgIFBST1BfTlVMTEFCTEVfU1RSSU5HX1ZBTFVFLAogfTsKIAogc3RhdGljIHZv
aWQgd2Via2l0X2RvbV90ZXN0X29ial9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCkBAIC0yNjQs
NiArMjcwLDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwKICAgICAgICAgY29yZVNlbGYtPnNl
dElkKChnX3ZhbHVlX2dldF9sb25nKHZhbHVlKSkpOwogICAgICAgICBicmVhazsKICAgICB9Cisg
ICAgY2FzZSBQUk9QX05VTExBQkxFX0xPTkdfU0VUVEFCTEVfQVRUUklCVVRFOiB7CisgICAgICAg
IGNvcmVTZWxmLT5zZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSgoZ192YWx1ZV9nZXRf
bG9uZyh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9OVUxM
QUJMRV9TVFJJTkdfVkFMVUU6IHsKKyAgICAgICAgY29yZVNlbGYtPnNldE51bGxhYmxlU3RyaW5n
VmFsdWUoKGdfdmFsdWVfZ2V0X2xvbmcodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDk5LDYgKzUx
MywzNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsCiAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmco
dmFsdWUsIGNvcmVTZWxmLT5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIGNhc2UgUFJPUF9OVUxMQUJMRV9ET1VCTEVfQVRUUklCVVRFOiB7CisgICAg
ICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1
ZSwgY29yZVNlbGYtPm51bGxhYmxlRG91YmxlQXR0cmlidXRlKGlzTnVsbCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX05VTExBQkxFX0xPTkdfQVRUUklCVVRFOiB7Cisg
ICAgICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFs
dWUsIGNvcmVTZWxmLT5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfTlVMTEFCTEVfQk9PTEVBTl9BVFRSSUJVVEU6IHsK
KyAgICAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgY29yZVNlbGYtPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9OVUxMQUJMRV9TVFJJTkdfQVRUUklC
VVRFOiB7CisgICAgICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgICAgIGdfdmFsdWVfdGFr
ZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPm51bGxhYmxlU3Ry
aW5nQXR0cmlidXRlKGlzTnVsbCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
UFJPUF9OVUxMQUJMRV9MT05HX1NFVFRBQkxFX0FUVFJJQlVURTogeworICAgICAgICBib29sIGlz
TnVsbCA9IGZhbHNlOworICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+
bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIFBST1BfTlVMTEFCTEVfU1RSSU5HX1ZBTFVFOiB7CisgICAgICAgIGJv
b2wgaXNOdWxsID0gZmFsc2U7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgICAgICBnX3ZhbHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+bnVsbGFibGVTdHJp
bmdWYWx1ZShpc051bGwsIGVjKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0
OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
ZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtODg3LDYgKzkzMiw1NiBAQCBHX01B
WExPTkcsIC8qIG1heCAqLwogR19NQVhMT05HLCAvKiBtYXggKi8KIDAsIC8qIGRlZmF1bHQgKi8K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX05VTExBQkxFX0RPVUJMRV9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKCJudWxsYWJsZS1kb3VibGUtYXR0cmli
dXRlIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfbnVsbGFibGUtZG91YmxlLWF0dHJpYnV0ZSIs
IC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLW9ubHkgIGdkb3VibGUgVGVzdE9iai5u
dWxsYWJsZS1kb3VibGUtYXR0cmlidXRlIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21l
IGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1HX01BWERPVUJMRSwgLyogbWluICovCitHX01B
WERPVUJMRSwgLyogbWF4ICovCiswLjAsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURBQkxFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX05VTExBQkxFX0xP
TkdfQVRUUklCVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2xvbmcoIm51bGxhYmxlLWxvbmctYXR0cmlidXRlIiwgLyogbmFtZSAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVz
dF9vYmpfbnVsbGFibGUtbG9uZy1hdHRyaWJ1dGUiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicmVhZC1vbmx5ICBnbG9uZyBUZXN0T2JqLm51bGxhYmxlLWxvbmctYXR0cmlidXRlIiwgLyog
bG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdf
TUlOTE9ORywgLyogbWluICovCitHX01BWExPTkcsIC8qIG1heCAqLworMCwgLyogZGVmYXVsdCAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfTlVMTEFCTEVfQk9PTEVBTl9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigibnVsbGFibGUtYm9vbGVhbi1h
dHRyaWJ1dGUiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9udWxsYWJsZS1ib29sZWFuLWF0dHJp
YnV0ZSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLW9ubHkgIGdib29sZWFuIFRl
c3RPYmoubnVsbGFibGUtYm9vbGVhbi1hdHRyaWJ1dGUiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3
aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsIC8qIGRlZmF1bHQgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX05VTExBQkxFX1NUUklOR19BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJudWxsYWJsZS1zdHJpbmctYXR0cmli
dXRlIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfbnVsbGFibGUtc3RyaW5nLWF0dHJpYnV0ZSIs
IC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLW9ubHkgIGdjaGFyKiBUZXN0T2JqLm51
bGxhYmxlLXN0cmluZy1hdHRyaWJ1dGUiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUg
ZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX05VTExB
QkxFX0xPTkdfU0VUVEFCTEVfQVRUUklCVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2xvbmcoIm51bGxhYmxlLWxvbmctc2V0dGFibGUtYXR0cmli
dXRlIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfbnVsbGFibGUtbG9uZy1zZXR0YWJsZS1hdHRy
aWJ1dGUiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAgZ2xvbmcgVGVz
dE9iai5udWxsYWJsZS1sb25nLXNldHRhYmxlLWF0dHJpYnV0ZSIsIC8qIGxvbmdlciAtIGNvdWxk
IGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01JTkxPTkcsIC8qIG1p
biAqLworR19NQVhMT05HLCAvKiBtYXggKi8KKzAsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURXUklURSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29i
amVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9OVUxM
QUJMRV9TVFJJTkdfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfbG9uZygibnVsbGFibGUtc3RyaW5nLXZhbHVlIiwgLyogbmFtZSAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dGVzdF9vYmpfbnVsbGFibGUtc3RyaW5nLXZhbHVlIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInJlYWQtd3JpdGUgIGdsb25nIFRlc3RPYmoubnVsbGFibGUtc3RyaW5nLXZhbHVlIiwgLyog
bG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdf
TUlOTE9ORywgLyogbWluICovCitHX01BWExPTkcsIC8qIG1heCAqLworMCwgLyogZGVmYXVsdCAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9vYmpfaW5pdChXZWJLaXRET01UZXN0T2JqKiByZXF1ZXN0KQpAQCAtMjMwMywzICsy
Mzk4LDkzIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlcGxhY2VhYmxlX2F0dHJpYnV0ZShX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2dkb3VibGUK
K3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2RvdWJsZV9hdHRyaWJ1dGUoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihz
ZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGdkb3VibGUgcmVzdWx0ID0gaXRlbS0+
bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitnbG9uZword2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfbG9uZ19hdHRyaWJ1dGUo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X09CSihzZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGdsb25nIHJlc3VsdCA9IGl0
ZW0tPm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2dib29sZWFuCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9ib29sZWFuX2F0
dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfT0JKKHNlbGYpLCBGQUxTRSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGdib29s
ZWFuIHJlc3VsdCA9IGl0ZW0tPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2djaGFyKgord2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVs
bGFibGVfc3RyaW5nX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7
CisgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+bnVsbGFibGVT
dHJpbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZ2xvbmcK
K3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2xvbmdfc2V0dGFibGVfYXR0cmlidXRl
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBnbG9uZyByZXN1bHQgPSBp
dGVtLT5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X251bGxhYmxlX2xvbmdf
c2V0dGFibGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZhbHVlKQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0TnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUodmFsdWUpOworfQorCitnbG9uZword2Via2l0X2RvbV90ZXN0
X29ial9nZXRfbnVsbGFibGVfc3RyaW5nX3ZhbHVlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdF
cnJvcioqIGVycm9yKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYp
LCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBib29s
IGlzTnVsbCA9IGZhbHNlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IGdsb25nIHJlc3VsdCA9IGl0ZW0tPm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYyk7Cisg
ICAgaWYgKGVjKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBl
Y2Rlc2MoZWMpOworICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zy
b21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X251bGxhYmxlX3N0cmluZ192YWx1ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1
ZSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPnNldE51bGxh
YmxlU3RyaW5nVmFsdWUodmFsdWUpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgK
aW5kZXggZWYwNmRkZGI5ZjVlNjA0MmUxNjg2Yjc1ZWRhNWExMmE5YjYwZDhlMS4uODM0Y2FmNzBm
NjdiY2JmMjkzMGFhNWE2NjQ1YmVjYWEwYjcxNWEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaApAQCAtMTM4OSw2ICsxMzg5LDg5IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2hh
c2goV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiBXRUJLSVRfQVBJIGdsb25nCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9yZXBsYWNlYWJsZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
Zik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfZG91YmxlX2F0
dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoK
KyAqCisqKi8KK1dFQktJVF9BUEkgZ2RvdWJsZQord2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVs
bGFibGVfZG91YmxlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoqCisg
KiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9sb25nX2F0dHJpYnV0ZToKKyAqIEBz
ZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJ
VF9BUEkgZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2xvbmdfYXR0cmli
dXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9v
YmpfZ2V0X251bGxhYmxlX2Jvb2xlYW5fYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERP
TVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnYm9vbGVhbgor
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfYm9vbGVhbl9hdHRyaWJ1dGUoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVs
bGFibGVfc3RyaW5nX2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisg
KgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2NoYXIqCit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF9udWxsYWJsZV9zdHJpbmdfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2xvbmdfc2V0
dGFibGVfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBS
ZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnbG9uZword2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfbnVsbGFibGVfbG9uZ19zZXR0YWJsZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
Zik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfbnVsbGFibGVfbG9uZ19zZXR0
YWJsZV9hdHRyaWJ1dGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVl
OiBBICNnbG9uZworICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X251bGxhYmxlX2xvbmdfc2V0dGFibGVfYXR0cmlidXRlKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZhbHVlKTsKKworLyoqCisgKiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9zdHJpbmdfdmFsdWU6CisgKiBAc2VsZjogQSAjV2ViS2l0
RE9NVGVzdE9iagorICogQGVycm9yOiAjR0Vycm9yCisgKgorICogUmV0dXJuczoKKyAqCisqKi8K
K1dFQktJVF9BUEkgZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX3N0cmlu
Z192YWx1ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IqKiBlcnJvcik7CisKKy8qKgor
ICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfbnVsbGFibGVfc3RyaW5nX3ZhbHVlOgorICogQHNl
bGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ2xvbmcKKyAqCisgKiBSZXR1
cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9u
dWxsYWJsZV9zdHJpbmdfdmFsdWUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUp
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogV2ViS2l0RE9NVGVzdE9ial9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCmluZGV4IDBhZWZiMDY5NzZiOTFkZGZlNGFiNGM4YWJlOGM4YjRjZjM4NjQ0NzQuLjQ1MjJl
NDM4YzMwZmUwOWVjMDA5NjcxZjNlYWVhM2FjMGRiODZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNDcs
MTEgKzE0NywxNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVW
YWx1ZXNbXSA9CiAgICAgeyAiaWQiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iaklkKSwgKGludHB0cl90KXNldEpT
VGVzdE9iaklkLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImhhc2giLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqSGFzaCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInJlcGxh
Y2VhYmxlQXR0cmlidXRlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZSksIChp
bnRwdHJfdClzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMgfSwK
KyAgICB7ICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIERvbnREZWxldGUgfCBSZWFkT25seSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAor
ICAgIHsgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpO
dWxsYWJsZUxvbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7
ICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVs
bGFibGVCb29sZWFuQXR0cmlidXRlKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAg
eyAibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVs
bGFibGVTdHJpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7
ICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIERvbnREZWxldGUsIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqTnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUsIE5vSW50cmluc2ljIH0sCisgICAgeyAibnVsbGFibGVTdHJpbmdW
YWx1ZSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSksIChpbnRwdHJfdClzZXRK
U1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImNvbnN0
cnVjdG9yIiwgRG9udEVudW0gfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkw
LCBOb0ludHJpbnNpYyB9LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAot
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMTQxLCAxMjcsIEpTVGVz
dE9ialRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialRh
YmxlID0geyAxNDUsIDEyNywgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFi
bGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtOTc2LDYgKzk4Miw4NSBAQCBKU1Zh
bHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydAogfQogCiAKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3Vi
bGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFz
T2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIGJvb2wgaXNO
dWxsID0gZmFsc2U7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+
bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCkpOworICAgIGlm
IChpc051bGwpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCisKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwor
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIFRl
c3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLT5udWxsYWJsZUJvb2xlYW5BdHRy
aWJ1dGUoaXNOdWxsKSk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4o
YXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgYm9vbCBp
c051bGwgPSBmYWxzZTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShleGVjLCBpbXBsLT5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpKTsKKyAgICBp
ZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworCitKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFz
ZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOwor
ICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm51bGxhYmxlTG9uZ1Nl
dHRhYmxlQXR0cmlidXRlKGlzTnVsbCkpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVy
biBqc051bGwoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoaW1wbC0+bnVsbGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVjKSk7CisgICAgaWYg
KGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCiBKU1ZhbHVlIGpzVGVzdE9iakNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdE9iaiogZG9tT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CkBAIC0xNDM1LDYgKzE1MjAsMjQgQEAgdm9pZCBzZXRKU1Rlc3RPYmpS
ZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBKU1YKIH0KIAogCit2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3Rh
dGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaW1wbC0+c2V0TnVs
bGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUodmFsdWUudG9JbnQzMihleGVjKSk7Cit9CisKKwor
dm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
T2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CisgICAgaW1wbC0+c2V0TnVsbGFibGVTdHJpbmdWYWx1ZSh2YWx1ZS50
b0ludDMyKGV4ZWMpKTsKK30KKworCiBKU1ZhbHVlIEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4oZXhlYywganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggNjQxNTRlNDRl
OWVlZjcxYTBlNjU5NGI5OTU4ZGNiZmE1ZWRkMDNkYS4uM2M0NTEzNjllNzYzNzlmYzMwNDliNmRi
ZDk0MTlkZDI2NDY0YzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMzM5LDYgKzMzOSwxNCBAQCB2b2lkIHNldEpT
VGVzdE9iaklkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7
CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqSGFzaChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxl
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CiB2b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
K0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitK
U0M6OkpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RPYmpOdWxs
YWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNW
YWx1ZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIC8vIENvbnN0YW50cwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLmgKaW5kZXggY2ViNWFlOGRiOTJiMTg1ZGRhZTUxMjJjYzc5NjEyZGVkMGEzNDczYy4uMmI4
ZWI4Nzg3MjVmMThhMDI3ODg1Y2U1YjJjMmZmMzExZGNlNjc4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaApAQCAt
MTE1LDYgKzExNSwxMiBAQCBlbnVtIHsKIEBwcm9wZXJ0eSBpbnQgaWROYW1lOwogQHByb3BlcnR5
KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqaGFzaE5hbWU7CiBAcHJvcGVydHkocmVhZG9ubHkp
IGludCByZXBsYWNlYWJsZUF0dHJpYnV0ZTsKK0Bwcm9wZXJ0eShyZWFkb25seSkgZG91YmxlIG51
bGxhYmxlRG91YmxlQXR0cmlidXRlOworQHByb3BlcnR5KHJlYWRvbmx5KSBpbnQgbnVsbGFibGVM
b25nQXR0cmlidXRlOworQHByb3BlcnR5KHJlYWRvbmx5KSBCT09MIG51bGxhYmxlQm9vbGVhbkF0
dHJpYnV0ZTsKK0Bwcm9wZXJ0eShyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm51bGxhYmxlU3Ry
aW5nQXR0cmlidXRlOworQHByb3BlcnR5IGludCBudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZTsKK0Bwcm9wZXJ0eSBpbnQgbnVsbGFibGVTdHJpbmdWYWx1ZTsKIAogLSAodm9pZCl2b2lkTWV0
aG9kOwogLSAodm9pZCl2b2lkTWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNT
dHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0K
aW5kZXggN2RmYmFlODQ5NzYxNDc2ZGZjYzEyYTg1NWMwZjRiNGI5MWEwMWU3MC4uOTg3YjE4ODVh
ZTFiMWQ3NmI5ZmJhMjU5ZGM5YzQwNjcxY2Q5NDViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCkBAIC03MTYs
NiArNzE2LDYzIEBACiAgICAgcmV0dXJuIElNUEwtPnJlcGxhY2VhYmxlQXR0cmlidXRlKCk7CiB9
CiAKKy0gKGRvdWJsZSludWxsYWJsZURvdWJsZUF0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAg
IHJldHVybiBJTVBMLT5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZShpc051bGwpOworfQorCistIChp
bnQpbnVsbGFibGVMb25nQXR0cmlidXRlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgcmV0dXJuIElNUEwt
Pm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwpOworfQorCistIChCT09MKW51bGxhYmxlQm9v
bGVhbkF0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIHJldHVybiBJTVBMLT5udWxsYWJsZUJv
b2xlYW5BdHRyaWJ1dGUoaXNOdWxsKTsKK30KKworLSAoTlNTdHJpbmcgKiludWxsYWJsZVN0cmlu
Z0F0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIHJldHVybiBJTVBMLT5udWxsYWJsZVN0cmlu
Z0F0dHJpYnV0ZShpc051bGwpOworfQorCistIChpbnQpbnVsbGFibGVMb25nU2V0dGFibGVBdHRy
aWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
Ym9vbCBpc051bGwgPSBmYWxzZTsKKyAgICByZXR1cm4gSU1QTC0+bnVsbGFibGVMb25nU2V0dGFi
bGVBdHRyaWJ1dGUoaXNOdWxsKTsKK30KKworLSAodm9pZClzZXROdWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZTooaW50KW5ld051bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNldE51bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKG5ld051bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRl
KTsKK30KKworLSAoaW50KW51bGxhYmxlU3RyaW5nVmFsdWUKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gSU1QTC0+bnVs
bGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJy
b3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKHZvaWQpc2V0TnVsbGFibGVTdHJp
bmdWYWx1ZTooaW50KW5ld051bGxhYmxlU3RyaW5nVmFsdWUKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0TnVsbGFibGVTdHJpbmdWYWx1
ZShuZXdOdWxsYWJsZVN0cmluZ1ZhbHVlKTsKK30KKwogLSAodm9pZCl2b2lkTWV0aG9kCiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDI0YTBlNmMwOWEz
ODZiNmJmYWZkYjBkY2NlYmE5ZDJlZjI1NTY0NzguLjAzMDVkNWI2NmUxMjljNGM0MTRmNzVmOTQ5
Y2RiNDU4MWE4YjAwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwKQEAgLTI3MSw0ICsyNzEsMTUgQEAgZW51bSBUZXN0RW51bVR5cGUg
eyAiIiwgIkVudW1WYWx1ZTEiLCAiRW51bVZhbHVlMiIsICJFbnVtVmFsdWUzIiB9OwogICAgIHZv
aWQgdmFyaWFkaWNTdHJpbmdNZXRob2QoaW4gRE9NU3RyaW5nIGhlYWQsIGluIERPTVN0cmluZy4u
LiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0aG9kKGluIGRvdWJsZSBoZWFkLCBp
biBkb3VibGUuLi4gdGFpbCk7CiAgICAgdm9pZCB2YXJpYWRpY05vZGVNZXRob2QoaW4gTm9kZSBo
ZWFkLCBpbiBOb2RlLi4uIHRhaWwpOworCisgICAgLy8gTnVsbGFibGUgYXR0cmlidXRlcy4KKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlPyBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZTsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVMb25nQXR0cmlidXRlOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuPyBudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGU7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZz8gbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGU7CisK
KyAgICBhdHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGU7CisKKyAg
ICBhdHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVTdHJpbmdWYWx1ZQorICAgICAgICBnZXR0ZXIgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAwYTRjYzMzM2EyOTIyMTM0YzNk
ODUyZmQzMmRkY2U2MjBiZjJjZDE0Li4wMjY0ZDAxNGZmMTBlZTBiNGJkNmZmNzhhZGUwMWVjMjkw
ODc4Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTUzNCw2ICsxNTM0LDEyNSBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2OAogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVwbGFjZWFibGVBdHRy
aWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wgaXNO
dWxsID0gZmFsc2U7CisgICAgZG91YmxlIHYgPSBpbXAtPm51bGxhYmxlRG91YmxlQXR0cmlidXRl
KGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdl
dElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyh2KTsKK30KKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91Ymxl
QXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCBp
c051bGwgPSBmYWxzZTsKKyAgICBpbnQgdiA9IGltcC0+bnVsbGFibGVMb25nQXR0cmlidXRlKGlz
TnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElz
b2xhdGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUoKSk7Cit9
CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nQXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFi
bGVMb25nQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBib29sIHYgPSBpbXAtPm51bGxhYmxlQm9vbGVh
bkF0dHJpYnV0ZShpc051bGwpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51
bGwoaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2OEJvb2xlYW4odiwgaW5mby5HZXRJ
c29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlQm9v
bGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVTdHJpbmdBdHRyaWJ1
dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBTdHJpbmcgdiA9
IGltcC0+bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQor
ICAgICAgICByZXR1cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhT
dHJpbmcodiwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBpbnQgdiA9IGltcC0+bnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1
cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKHYsIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdl
dHRlcihuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQgbnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGlu
dCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0
dHJpYnV0ZSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIG51bGxhYmxlTG9uZ1Nl
dHRhYmxlQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRy
aWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgaW50IHYgPSBp
bXAtPm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYyk7CisgICAgaWYgKGlzTnVsbCkKKyAg
ICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYgKFVOTElLRUxZ
KGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRl
KCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmlu
Z1ZhbHVlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQgbnVsbGFibGVT
dHJpbmdWYWx1ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
aW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldE51bGxhYmxlU3RyaW5nVmFsdWUo
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0
clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUs
IGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFRlc3RPYmpDb25zdHJ1
Y3RvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSA9IGluZm8uRGF0
YSgpOwpAQCAtMjkzNCw2ICszMDUzLDE4IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRp
b246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0T2JqQXR0cnNbXSA9IHsKICAgICB7Imhhc2giLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6aGFzaEF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdyZXBsYWNlYWJsZUF0dHJpYnV0ZScgKFR5cGU6ICdyZWFk
b25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZXBsYWNlYWJsZScpCiAgICAgeyJyZXBsYWNlYWJs
ZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJT
ZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdudWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQorICAgIHsibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVs
bGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVMb25nQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRv
bmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJsZUxvbmdBdHRyaWJ1dGUi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckNhbGxi
YWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlQm9vbGVh
bkF0dHJpYnV0ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAg
IHsibnVsbGFibGVCb29sZWFuQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
Qm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgLy8gQXR0cmlidXRlICdudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZScgKFR5cGU6ICdyZWFkb25s
eSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2Fs
bGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7
Im51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVTdHJpbmdWYWx1ZScgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsibnVsbGFibGVTdHJpbmdWYWx1ZSIs
IFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFj
aywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiB9OwogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9u
OjpCYXRjaGVkTWV0aG9kIFY4VGVzdE9iak1ldGhvZHNbXSA9IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193303</attachid>
            <date>2013-03-15 07:19:08 -0700</date>
            <delta_ts>2013-03-15 07:45:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111728-20130315141503.patch</filename>
            <type>text/plain</type>
            <size>40961</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmViNDczNjAxY2U2YzMw
ZjY3YjNkNzEwNTIyNDgxY2EzOGI4NTg4Yy4uMjUwOTIxOThmYzBjNGQ4YWMzOTNiMmQ3OTk0MzUy
OTRhNzQ4OGM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTE1ICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3IgbnVsbGFibGUgdHlwZXMgaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzI4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHN1cHBvcnQgZm9yIG51bGxhYmxlIHR5cGVzIGluIHRoZSBiaW5kaW5ncworICAgICAgICBnZW5l
cmF0b3IsIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTAuMjIgb2YgV2ViSURMOgorICAgICAg
ICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtbnVsbGFibGUt
dHlwZQorCisgICAgICAgIGludGVyZmFjZSBNeUludGVyZmFjZSB7CisgICAgICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbj8gdmFsdWU7IC8vIHRydWUsIGZhbHNlIG9yIG51bGwuCisg
ICAgICAgIH07CisKKyAgICAgICAgVGhlIElETCBQYXJzZXIgaGFzIGJlZW4gbW9kaWZpZWQgdG8g
cmVjb3JkIHdoZXRoZXIgYXR0cmlidXRlcyBhcmUKKyAgICAgICAgbnVsbGFibGUuIFF1ZXN0aW9u
IG1hcmtzIGZyb20gdGhlIHR5cGUgd2lsbCBhbHdheXMgYmUgc3RyaXBwZWQKKyAgICAgICAgZnJv
bSB0aGUgZG9tQXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZmllbGQuIE9uY2Ugc3VwcG9ydCBm
b3IKKyAgICAgICAgdGhpcyBoYXMgYmVlbiBjb21wbGV0ZWx5IGltcGxlbWVudGVkLCB3ZSdsbCBi
ZSBhYmxlIHRvIHJlbW92ZSBhCisgICAgICAgIGJ1bmNoIG9mIGN1c3RvbSBiaW5kaW5ncywgaS5l
LiB0aG9zZSBvZiBEZXZpY2UgT3JpZW50YXRpb24uCisKKyAgICAgICAgQW55IGdldHRlciBmb3Ig
YW4gYXR0cmlidXRlIHdoaWNoIHJldHVybnMgYSBudWxsYWJsZSB0eXBlIHdpbGwgYmUKKyAgICAg
ICAgY2FsbGVkIHdpdGggYW4gYWRkaXRpb25hbCBhdHRyaWJ1dGUgKHBhc3NlZCBieSByZWZlcmVu
Y2UpIG5hbWVkCisgICAgICAgICJpc051bGwiLiBUaGlzIHdpbGwgYmUgdGhlIGxhc3QgYXJndW1l
bnQgcGFzc2VkIHRvIHRoZSBtZXRob2QsCisgICAgICAgIHVubGVzcyBhbiBleGNlcHRpb24gY29k
ZSAoZWMpIGFyZ3VtZW50IHdpbGwgYmUgcGFzc2VkIGFzIHdlbGwuCisKKyAgICAgICAgVGVzdGVk
IGJ5IGV4aXN0aW5nIGJpbmRpbmcgdGVzdHMgYW5kIHRoZSBuZXcgbnVsbGFibGUgYXR0cmlidXRl
CisgICAgICAgIHRlc3RzIGluIHRoZSBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvIGRpcmVjdG9yeS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAodHlwZUhh
c051bGxhYmxlU3VmZml4KToKKyAgICAgICAgKHR5cGVSZW1vdmVOdWxsYWJsZVN1ZmZpeCk6Cisg
ICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3QpOgorICAgICAgICAocGFyc2VPcHRpb25hbE9yUmVx
dWlyZWRBcmd1bWVudCk6CisgICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3RPbGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRl
cik6CisgICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0
cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
TG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1
dGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxs
YWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxh
YmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFs
dWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1Zh
bHVlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVs
bGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5n
VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6
CisKIDIwMTMtMDMtMTUgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtWOF0gQWRkIG1hY2hpbmVyeSBmb3IgZ2VuZXJhdGluZyBzcGVjaWFsaXplZCBiaW5k
aW5ncyBmb3IgdGhlIG1haW4gd29ybGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNmFkYzk4ODNkNDY2YjcxZmE1MTA3NWY1
YjhkYzliZjI5YTVhOGYzMS4uMTk3OGVhZDU5ZjUwOGU3ZjE0YWRiYWZlMDg4ZTUwNTcyMDE3NzRh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KQEAgLTE4MjcsNiArMTgyNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmli
dXRlc30pIHsKICAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+bmFtZTsKICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZTsKKyAgICAgICAgICAgICAgICBteSAkaXNOdWxsYWJsZSA9ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+aXNOdWxsYWJsZTsKICAgICAgICAgICAgICAgICAkY29kZUdlbmVyYXRvci0+QXNz
ZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsKICAgICAgICAgICAgICAgICBteSAkZ2V0RnVuY3Rp
b25OYW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFt
ZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlvbk5h
bWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkbmFtZSk7CkBAIC0xODg5LDYgKzE4OTAs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoIUB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc30p
IHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpO1xuIikgaWYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNhbGxXaXRoIn07CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKSBpZiAkaXNOdWxsYWJsZTsKIAogICAgICAg
ICAgICAgICAgICAgICBteSAkY2FjaGVJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNoZWRBdHRy
aWJ1dGUifSkgewpAQCAtMTkxMiw2ICsxOTE0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRz
KSA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50
ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBh
cmd1bWVudHMsICJpc051bGwiKSBpZiAkaXNOdWxsYWJsZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50
ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxl
bWVudGVkQnkifTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIk
e2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CkBAIC0xOTMzLDYgKzE5MzYsMTEgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSBy
ZXN1bHQgPSAkanNUeXBlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpc051bGwpXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IGpzTnVsbCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBj
YXN0ZWRUaGlzLT5tXyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7XG4iKSBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pOwpAQCAt
MTk0Miw2ICsxOTUwLDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoImVjIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCRpc051bGxhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpc051bGwiKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50
cywgR2VuZXJhdGVDYWxsV2l0aCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYWxsV2l0aCJ9LCBcQGltcGxDb250ZW50LCAianNVbmRlZmluZWQoKSIpKTsKIAog
ICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlKSB7
CkBAIC0xOTUyLDYgKzE5NjUsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSBy
ZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGlu
dGVyZmFjZU5hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAi
LCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlzTnVsbClc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiBqc051bGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBmMDM4NDA0Mjc4
NmFmODBlYTBhYjRiODcxY2NlOTg0OTdjNDNiOWVjLi4xYjlkMjAzNGUyNzcxMmUxOTg2OWQ2YWUx
MmNkZTNjMjAwZmQwZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTAzMywxNiArMTAzMywyMiBAQCBFTkQKICAgICB9
CiAKICAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNl
cHRpb25zfTsKKyAgICBteSAkaXNOdWxsYWJsZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNO
dWxsYWJsZTsKICAgICBpZiAoJHVzZUV4Y2VwdGlvbnMpIHsKICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkV4Y2VwdGlvbkNvZGUuaCIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAgIH0KIAorICAgIGlmICgk
aXNOdWxsYWJsZSkgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBi
b29sIGlzTnVsbCA9IGZhbHNlO1xuIik7CisgICAgfQorCiAgICAgbXkgJHJldHVyblR5cGUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgbXkgJGdldHRlclN0cmluZzsKIAogICAg
IGlmICgkZ2V0dGVyU3RyaW5nVXNlc0ltcCkgewogICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwg
QGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNs
dWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEBhcmd1bWVu
dHMsICJpc051bGwiKSBpZiAkaXNOdWxsYWJsZTsKICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAi
ZWMiKSBpZiAkdXNlRXhjZXB0aW9uczsKICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAg
bXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CkBAIC0xMDY2LDE4ICsxMDcyLDI2IEBAIEVORAogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7XG4iKTsKICAgICB9CiAKLSAgICBpZiAoJHVzZUV4Y2VwdGlvbnMpIHsKKyAgICBpZiAo
JHVzZUV4Y2VwdGlvbnMgfHwgJGlzTnVsbGFibGUpIHsKICAgICAgICAgaWYgKCRuYXRpdmVUeXBl
ID1+IC9eVjhTdHJpbmdSZXNvdXJjZS8pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCAiICAgICIgLiBDb252ZXJ0VG9WOFN0cmluZ1Jlc291cmNlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgJG5hdGl2ZVR5cGUsICJ2IiwgJGdldHRlclN0cmluZykgLiAiO1xuIik7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywg
IiAgICAkbmF0aXZlVHlwZSB2ID0gJGdldHRlclN0cmluZztcbiIpOwogICAgICAgICB9Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmIChVTkxJS0VMWShlYykpXG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiBz
ZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwogCi0gICAgICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUi
KSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmIChpc051bGwpXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4g
djhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCR1c2VFeGNlcHRpb25zKSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIiAgICBpZiAoVU5MSUtFTFkoZWMpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5H
ZXRJc29sYXRlKCkpO1xuIik7CisKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0
ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkgeworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRl
KCkpO1xuIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAkcmVzdWx0ID0g
InYiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJz
ZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQppbmRl
eCBkMmRiYmEyOWQxNWJmZmE1MDM4MjFkYzVjMzU5ZDZkMzBiYjk4ZDIwLi5mMDAwMzU1NWUwNThj
NTIzYjhhYjM4YzkwZmJmMzNiZjc5NDI1OWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMjkxLDYgKzI5MSwxOSBAQCBzdWIgdW5xdW90ZVN0
cmluZwogICAgIGRpZSAiRmFpbGVkIHRvIHBhcnNlIHN0cmluZyAoIiAuICRxdW90ZWRTdHJpbmcg
LiAiKSBhdCAiIC4gJHNlbGYtPntMaW5lfTsKIH0KIAorc3ViIHR5cGVIYXNOdWxsYWJsZVN1ZmZp
eAoreworICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgcmV0dXJuICR0eXBlID1+IC9cPyQvOwor
fQorCitzdWIgdHlwZVJlbW92ZU51bGxhYmxlU3VmZml4Cit7CisgICAgbXkgJHR5cGUgPSBzaGlm
dDsKKyAgICAkdHlwZSA9fiBzL1w/Ly9nOworICAgIHJldHVybiAkdHlwZTsKK30KKwogbXkgJG5l
eHRBdHRyaWJ1dGVPbGRfMSA9ICdeKGF0dHJpYnV0ZXxpbmhlcml0fHJlYWRvbmx5KSQnOwogbXkg
JG5leHRQcmltaXRpdmVUeXBlXzEgPSAnXihpbnR8bG9uZ3xzaG9ydHx1bnNpZ25lZCkkJzsKIG15
ICRuZXh0UHJpbWl0aXZlVHlwZV8yID0gJ14oZG91YmxlfGZsb2F0fHVucmVzdHJpY3RlZCkkJzsK
QEAgLTExMjcsNyArMTE0MCwxNCBAQCBzdWIgcGFyc2VBdHRyaWJ1dGVSZXN0CiAgICAgICAgIH0K
ICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJhdHRy
aWJ1dGUiLCBfX0xJTkVfXyk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKGRvbVNp
Z25hdHVyZS0+bmV3KCkpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgk
c2VsZi0+cGFyc2VUeXBlKCkpOworICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUo
KTsKKyAgICAgICAgaWYgKHR5cGVIYXNOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpIHsKKyAgICAgICAg
ICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKDEpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUoMCk7
CisgICAgICAgIH0KKyAgICAgICAgIyBSZW1vdmUgYWxsICI/IiBpbiB0aGUgdHlwZSBkZWNsYXJh
dGlvbiwgZS5nLiAiZG91YmxlPyIgLT4gImRvdWJsZSIuCisgICAgICAgICRuZXdEYXRhTm9kZS0+
c2lnbmF0dXJlLT50eXBlKHR5cGVSZW1vdmVOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpOwogICAgICAg
ICBteSAkdG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRv
a2VuVHlwZSgkdG9rZW4sIElkZW50aWZpZXJUb2tlbik7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+
c2lnbmF0dXJlLT5uYW1lKCR0b2tlbi0+dmFsdWUoKSk7CkBAIC0xMzk0LDE0ICsxNDE0LDEzIEBA
IHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAgICAgICRzZWxmLT5hc3Nl
cnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAib3B0aW9uYWwiLCBfX0xJTkVfXyk7CiAg
ICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOwogICAgICAgICAjIGRvbURhdGFO
b2RlIGNhbiBvbmx5IGNvbnNpZGVyIGxhc3QgIj8iLgotICAgICAgICBpZiAoJHR5cGUgPX4gL1w/
JC8pIHsKKyAgICAgICAgaWYgKHR5cGVIYXNOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpIHsKICAgICAg
ICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKDEpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzTnVsbGFibGUoMCk7CiAgICAgICAgIH0KICAg
ICAgICAgIyBSZW1vdmUgYWxsICI/IiBpZiBleGlzdHMsIGUuZy4gIm9iamVjdD9bXT8iIC0+ICJv
YmplY3RbXSIuCi0gICAgICAgICR0eXBlID1+IHMvXD8vL2c7Ci0gICAgICAgICRwYXJhbURhdGFO
b2RlLT50eXBlKCR0eXBlKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUodHlwZVJlbW92
ZU51bGxhYmxlU3VmZml4KCR0eXBlKSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5uYW1lKCRz
ZWxmLT5wYXJzZUFyZ3VtZW50TmFtZSgpKTsKICAgICAgICAgJHNlbGYtPnBhcnNlRGVmYXVsdCgp
OwogICAgICAgICByZXR1cm4gJHBhcmFtRGF0YU5vZGU7CkBAIC0xNDA5LDE0ICsxNDI4LDEzIEBA
IHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAgaWYgKCRuZXh0LT50eXBl
KCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dEV4Y2VwdGlv
bkZpZWxkXzEvKSB7CiAgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOwogICAg
ICAgICAjIGRvbURhdGFOb2RlIGNhbiBvbmx5IGNvbnNpZGVyIGxhc3QgIj8iLgotICAgICAgICBp
ZiAoJHR5cGUgPX4gL1w/JC8pIHsKKyAgICAgICAgaWYgKHR5cGVIYXNOdWxsYWJsZVN1ZmZpeCgk
dHlwZSkpIHsKICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxhYmxlKDEpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzTnVsbGFibGUoMCk7
CiAgICAgICAgIH0KICAgICAgICAgIyBSZW1vdmUgYWxsICI/IiBpZiBleGlzdHMsIGUuZy4gIm9i
amVjdD9bXT8iIC0+ICJvYmplY3RbXSIuCi0gICAgICAgICR0eXBlID1+IHMvXD8vL2c7Ci0gICAg
ICAgICRwYXJhbURhdGFOb2RlLT50eXBlKCR0eXBlKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUt
PnR5cGUodHlwZVJlbW92ZU51bGxhYmxlU3VmZml4KCR0eXBlKSk7CiAgICAgICAgICRwYXJhbURh
dGFOb2RlLT5pc1ZhcmlhZGljKCRzZWxmLT5wYXJzZUVsbGlwc2lzKCkpOwogICAgICAgICAkcGFy
YW1EYXRhTm9kZS0+bmFtZSgkc2VsZi0+cGFyc2VBcmd1bWVudE5hbWUoKSk7CiAgICAgICAgIHJl
dHVybiAkcGFyYW1EYXRhTm9kZTsKQEAgLTIzOTQsNyArMjQxMiwxNCBAQCBzdWIgcGFyc2VBdHRy
aWJ1dGVSZXN0T2xkCiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRU
b2tlbigpLCAiYXR0cmlidXRlIiwgX19MSU5FX18pOwogICAgICAgICBteSAkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0ID0gJHNlbGYtPnBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0QWxsb3dFbXB0eSgp
OwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsK
LSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJHNlbGYtPnBhcnNlVHlwZSgp
KTsKKyAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CisgICAgICAgIGlmICh0
eXBlSGFzTnVsbGFibGVTdWZmaXgoJHR5cGUpKSB7CisgICAgICAgICAgICAkbmV3RGF0YU5vZGUt
PnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKDApOworICAgICAgICB9CisgICAg
ICAgICMgUmVtb3ZlIGFsbCAiPyIgaW4gdGhlIHR5cGUgZGVjbGFyYXRpb24sIGUuZy4gImRvdWJs
ZT8iIC0+ICJkb3VibGUiLgorICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSh0
eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAg
ICAgICAgbXkgJHRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3Nl
cnRUb2tlblR5cGUoJHRva2VuLCBJZGVudGlmaWVyVG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAwYWVm
YjA2OTc2YjkxZGRmZTRhYjRjOGFiZThjOGI0Y2YzODY0NDc0Li40NTIyZTQzOGMzMGZlMDllYzAw
OTY3MWYzZWFlYTNhYzBkYjg2YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTQ3LDExICsxNDcsMTcgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzW10gPQogICAg
IHsgImlkIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpJZCksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpJZCwgTm9J
bnRyaW5zaWMgfSwKICAgICB7ICJoYXNoIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakhhc2gp
LCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJyZXBsYWNlYWJsZUF0dHJpYnV0
ZSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3Qpc2V0SlNU
ZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUsIE5vSW50cmluc2ljIH0sCisgICAgeyAibnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVsbGFibGVEb3Vi
bGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJudWxsYWJs
ZUxvbmdBdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVsbGFibGVMb25nQXR0
cmlidXRlKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAibnVsbGFibGVCb29s
ZWFuQXR0cmlidXRlIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0
dHJpYnV0ZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm51bGxhYmxlU3Ry
aW5nQXR0cmlidXRlIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0
cmlidXRlKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAibnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0
cmlidXRlKSwgKGludHB0cl90KXNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm51bGxhYmxlU3RyaW5nVmFsdWUiLCBEb250RGVs
ZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqTnVsbGFi
bGVTdHJpbmdWYWx1ZSwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRF
bnVtIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMg
fSwKICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPSB7IDE0MSwgMTI3LCBKU1Rlc3RPYmpUYWJsZVZhbHVl
cywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMTQ1LCAx
MjcsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CiAvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1
Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqQ29uc3RydWN0
b3JUYWJsZVZhbHVlc1tdID0KQEAgLTk3Niw2ICs5ODIsODUgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpS
ZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnQKIH0KIAogCitKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFz
ZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOwor
ICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm51bGxhYmxlRG91Ymxl
QXR0cmlidXRlKGlzTnVsbCkpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiBqc051
bGwoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVMb25nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBib29s
IGlzTnVsbCA9IGZhbHNlOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwtPm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwpKTsKKyAgICBpZiAoaXNOdWxsKQorICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVl
IGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC0+bnVsbGFibGVCb29sZWFuQXR0cmlidXRlKGlzTnVsbCkp
OworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7
CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1w
bC0+bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgaWYgKGlzTnVsbCkKKyAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1
ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBUZXN0T2JqKiBp
bXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZShpc051bGwpKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5n
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7
CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYm9vbCBpc051bGwg
PSBmYWxzZTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwt
Pm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYykpOworICAgIGlmIChpc051bGwpCisgICAg
ICAgIHJldHVybiBqc051bGwoKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKKwogSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkp
OwpAQCAtMTQzNSw2ICsxNTIwLDI0IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWCiB9CiAKIAor
dm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RP
YmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGltcGwtPnNldE51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlKHZhbHVlLnRvSW50MzIoZXhlYykpOworfQorCisKK3ZvaWQgc2V0SlNUZXN0
T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAg
VGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OworICAgIGltcGwtPnNldE51bGxhYmxlU3RyaW5nVmFsdWUodmFsdWUudG9JbnQzMihleGVjKSk7
Cit9CisKKwogSlNWYWx1ZSBKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0T2JqQ29uc3RydWN0b3I+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDY0MTU0ZTQ0ZTllZWY3MWEwZTY1OTRi
OTk1OGRjYmZhNWVkZDAzZGEuLjNjNDUxMzY5ZTc2Mzc5ZmMzMDQ5YjZkYmQ5NDE5ZGQyNjQ2NGMz
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKQEAgLTMzOSw2ICszMzksMTQgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJZChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVl
IGpzVGVzdE9iakhhc2goSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRK
U1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91Ymxl
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVTdHJpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0
dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
Owordm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpz
VGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpK
U1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiAvLyBDb25zdGFudHMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDI0YTBlNmMwOWEzODZi
NmJmYWZkYjBkY2NlYmE5ZDJlZjI1NTY0NzguLmY5ZTUwZmFkNjE1MjVjNTZkMmQ4YWQ5Y2E1Y2Yx
N2RkYzFmZDM5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwKQEAgLTI3MSw0ICsyNzEsMTcgQEAgZW51bSBUZXN0RW51bVR5cGUgeyAi
IiwgIkVudW1WYWx1ZTEiLCAiRW51bVZhbHVlMiIsICJFbnVtVmFsdWUzIiB9OwogICAgIHZvaWQg
dmFyaWFkaWNTdHJpbmdNZXRob2QoaW4gRE9NU3RyaW5nIGhlYWQsIGluIERPTVN0cmluZy4uLiB0
YWlsKTsKICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0aG9kKGluIGRvdWJsZSBoZWFkLCBpbiBk
b3VibGUuLi4gdGFpbCk7CiAgICAgdm9pZCB2YXJpYWRpY05vZGVNZXRob2QoaW4gTm9kZSBoZWFk
LCBpbiBOb2RlLi4uIHRhaWwpOworCisjaWYgZGVmaW5lZChURVNUSU5HX1Y4KSB8fCBkZWZpbmVk
KFRFU1RJTkdfSlMpCisgICAgLy8gTnVsbGFibGUgYXR0cmlidXRlcy4KKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgZG91YmxlPyBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZTsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVMb25nQXR0cmlidXRlOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuPyBudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGU7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZz8gbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGU7CisKKyAgICBhdHRyaWJ1
dGUgbG9uZz8gbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGU7CisKKyAgICBhdHRyaWJ1dGUg
bG9uZz8gbnVsbGFibGVTdHJpbmdWYWx1ZQorICAgICAgICBnZXR0ZXIgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDk0ZWQzNjUwNjZmMjYwMjk5MmUwNzRm
ZWU0YjRjZmY2YjU5MzY3ZWEuLmNmYTVhNGVmNzkwNDA1MTM1MDBhNjQxZTEyNjZhNWE1MjFmYmRm
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwCkBAIC0yOTA4LDYgKzI5MDgsMjQ0IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQoCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0
ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
Ym9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBkb3VibGUgdiA9IGltcC0+bnVsbGFibGVEb3VibGVB
dHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gdjhOdWxs
KGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHYpOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgZG91YmxlIHYgPSBpbXAt
Pm51bGxhYmxlRG91YmxlQXR0cmlidXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAg
ICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4OjpOdW1i
ZXI6Ok5ldyh2KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZURv
dWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRlckZv
ck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCBpc051bGwgPSBm
YWxzZTsKKyAgICBpbnQgdiA9IGltcC0+bnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCk7Cisg
ICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7
CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0
cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBpbnQgdiA9IGltcC0+bnVsbGFibGVMb25nQXR0
cmlidXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChp
bmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xh
dGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nQXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJs
ZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsK
KyAgICBib29sIHYgPSBpbXAtPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpOworICAg
IGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpOwor
ICAgIHJldHVybiB2OEJvb2xlYW4odiwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlQm9vbGVh
bkF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgYm9vbCB2ID0gaW1wLT5udWxsYWJs
ZUJvb2xlYW5BdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1
cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhCb29sZWFuKHYsIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxs
YWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wg
aXNOdWxsID0gZmFsc2U7CisgICAgU3RyaW5nIHYgPSBpbXAtPm51bGxhYmxlU3RyaW5nQXR0cmli
dXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZv
LkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKHYsIGluZm8uR2V0SXNvbGF0ZSgp
LCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyKG5h
bWUsIGluZm8pOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3Ry
aW5nQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxsID0g
ZmFsc2U7CisgICAgU3RyaW5nIHYgPSBpbXAtPm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVs
bCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKHYsIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5V
bnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxl
U3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wg
aXNOdWxsID0gZmFsc2U7CisgICAgaW50IHYgPSBpbXAtPm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0
cmlidXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChp
bmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xh
dGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCBpc051bGwg
PSBmYWxzZTsKKyAgICBpbnQgdiA9IGltcC0+bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUo
aXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gdjhOdWxsKGluZm8uR2V0
SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKHYsIGluZm8uR2V0SXNvbGF0ZSgpKTsK
K30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUxvbmdTZXR0YWJsZUF0
dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlckZv
ck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQgbnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXROdWxsYWJsZUxvbmdTZXR0
YWJsZUF0dHJpYnV0ZSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIG51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFi
bGVBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworc3RhdGljIHZv
aWQgbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7
CisgICAgaW1wLT5zZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSh2KTsKKyAgICByZXR1
cm47Cit9CisKK3N0YXRpYyB2b2lkIG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgaW50IHYg
PSBpbXAtPm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYyk7CisgICAgaWYgKGlzTnVsbCkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYgKFVOTElL
RUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5HZXRJc29sYXRlKCkpOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0
cmluZ1ZhbHVlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAg
aW50IHYgPSBpbXAtPm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYyk7CisgICAgaWYgKGlz
TnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYg
KFVOTElLRUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5H
ZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5HZXRJc29sYXRlKCkp
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nVmFsdWVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOElu
dGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBp
bmZvKTsKK30KKworc3RhdGljIHZvaWQgbnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsK
KyAgICBpbXAtPnNldE51bGxhYmxlU3RyaW5nVmFsdWUodik7CisgICAgcmV0dXJuOworfQorCitz
dGF0aWMgdm9pZCBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVT
dHJpbmdWYWx1ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOworfQorCitzdGF0aWMgdm9p
ZCBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+
c2V0TnVsbGFibGVTdHJpbmdWYWx1ZSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk
IG51bGxhYmxlU3RyaW5nVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZVN0cmluZ1ZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVGVzdE9iakNvbnN0cnVjdG9yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhID0gaW5mby5EYXRhKCk7CkBAIC00
MzA4LDYgKzQ1NDYsMTggQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hl
ZEF0dHJpYnV0ZSBWOFRlc3RPYmpBdHRyc1tdID0gewogICAgIHsiaGFzaCIsIFRlc3RPYmpWOElu
dGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAv
LyBBdHRyaWJ1dGUgJ3JlcGxhY2VhYmxlQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJp
YnV0ZScgRXh0QXR0cjogJ1JlcGxhY2VhYmxlJykKICAgICB7InJlcGxhY2VhYmxlQXR0cmlidXRl
IiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlRG91YmxlQXR0
cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJu
dWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZURvdWJs
ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8g
QXR0cmlidXRlICdudWxsYWJsZUxvbmdBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKKyAgICB7Im51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIsIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVCb29sZWFuQXR0cmlidXRl
JyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJs
ZUJvb2xlYW5BdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRy
aWJ1dGUgJ251bGxhYmxlU3RyaW5nQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0
ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIsIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZUxvbmdTZXR0YWJsZUF0
dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsibnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZVN0cmluZ1ZhbHVlJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJsZVN0cmluZ1ZhbHVlIiwgVGVzdE9ialY4
SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKIH07CiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRB
dHRyaWJ1dGUgVjhUZXN0T2JqQXR0cnNGb3JNYWluV29ybGRbXSA9IHsKQEAgLTQ0NDEsNiArNDY5
MSwxOCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRl
IFY4VGVzdE9iakF0dHJzRm9yTWFpbldvcmxkW10gPQogICAgIHsiaGFzaCIsIFRlc3RPYmpWOElu
dGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlcGxhY2VhYmxlQXR0cmlidXRlJyAoVHlwZTogJ3Jl
YWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ1JlcGxhY2VhYmxlJykKICAgICB7InJlcGxhY2Vh
YmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJl
cGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRy
aWJ1dGUgJ251bGxhYmxlRG91YmxlQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0
ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZUxv
bmdBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAg
ICB7Im51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxv
bmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVCb29sZWFuQXR0cmlidXRlJyAoVHlwZTog
J3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJsZUJvb2xlYW5B
dHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBB
dHRyaWJ1dGUgJ251bGxhYmxlU3RyaW5nQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJp
YnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIsIFRlc3RP
YmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdudWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQor
ICAgIHsibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmli
dXRlICdudWxsYWJsZVN0cmluZ1ZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycp
CisgICAgeyJudWxsYWJsZVN0cmluZ1ZhbHVlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
U3RyaW5nVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVy
bmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKIH07CiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJh
dGNoZWRNZXRob2QgVjhUZXN0T2JqTWV0aG9kc1tdID0gewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193306</attachid>
            <date>2013-03-15 07:45:07 -0700</date>
            <delta_ts>2013-03-15 07:47:14 -0700</delta_ts>
            <desc>Rebase</desc>
            <filename>bug-111728-20130315144102.patch</filename>
            <type>text/plain</type>
            <size>33115</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkNGM4ZDM3N2Q0MGU1
MzVmNzQ2MWYwYmQwZWM5YjZjYjFjMGM5MS4uMGZiMWE3YzQ0ODFmNTI0NmE0Y2QyZGQyYmJlYWRj
NjZmY2UxYzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTE1ICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3IgbnVsbGFibGUgdHlwZXMgaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzI4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHN1cHBvcnQgZm9yIG51bGxhYmxlIHR5cGVzIGluIHRoZSBiaW5kaW5ncworICAgICAgICBnZW5l
cmF0b3IsIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTAuMjIgb2YgV2ViSURMOgorICAgICAg
ICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtbnVsbGFibGUt
dHlwZQorCisgICAgICAgIGludGVyZmFjZSBNeUludGVyZmFjZSB7CisgICAgICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbj8gdmFsdWU7IC8vIHRydWUsIGZhbHNlIG9yIG51bGwuCisg
ICAgICAgIH07CisKKyAgICAgICAgVGhlIElETCBQYXJzZXIgaGFzIGJlZW4gbW9kaWZpZWQgdG8g
cmVjb3JkIHdoZXRoZXIgYXR0cmlidXRlcyBhcmUKKyAgICAgICAgbnVsbGFibGUuIFF1ZXN0aW9u
IG1hcmtzIGZyb20gdGhlIHR5cGUgd2lsbCBhbHdheXMgYmUgc3RyaXBwZWQKKyAgICAgICAgZnJv
bSB0aGUgZG9tQXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZmllbGQuIE9uY2Ugc3VwcG9ydCBm
b3IKKyAgICAgICAgdGhpcyBoYXMgYmVlbiBjb21wbGV0ZWx5IGltcGxlbWVudGVkLCB3ZSdsbCBi
ZSBhYmxlIHRvIHJlbW92ZSBhCisgICAgICAgIGJ1bmNoIG9mIGN1c3RvbSBiaW5kaW5ncywgaS5l
LiB0aG9zZSBvZiBEZXZpY2UgT3JpZW50YXRpb24uCisKKyAgICAgICAgQW55IGdldHRlciBmb3Ig
YW4gYXR0cmlidXRlIHdoaWNoIHJldHVybnMgYSBudWxsYWJsZSB0eXBlIHdpbGwgYmUKKyAgICAg
ICAgY2FsbGVkIHdpdGggYW4gYWRkaXRpb25hbCBhdHRyaWJ1dGUgKHBhc3NlZCBieSByZWZlcmVu
Y2UpIG5hbWVkCisgICAgICAgICJpc051bGwiLiBUaGlzIHdpbGwgYmUgdGhlIGxhc3QgYXJndW1l
bnQgcGFzc2VkIHRvIHRoZSBtZXRob2QsCisgICAgICAgIHVubGVzcyBhbiBleGNlcHRpb24gY29k
ZSAoZWMpIGFyZ3VtZW50IHdpbGwgYmUgcGFzc2VkIGFzIHdlbGwuCisKKyAgICAgICAgVGVzdGVk
IGJ5IGV4aXN0aW5nIGJpbmRpbmcgdGVzdHMgYW5kIHRoZSBuZXcgbnVsbGFibGUgYXR0cmlidXRl
CisgICAgICAgIHRlc3RzIGluIHRoZSBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvIGRpcmVjdG9yeS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAodHlwZUhh
c051bGxhYmxlU3VmZml4KToKKyAgICAgICAgKHR5cGVSZW1vdmVOdWxsYWJsZVN1ZmZpeCk6Cisg
ICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3QpOgorICAgICAgICAocGFyc2VPcHRpb25hbE9yUmVx
dWlyZWRBcmd1bWVudCk6CisgICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3RPbGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRl
cik6CisgICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0
cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
TG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1
dGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxs
YWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxh
YmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFs
dWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1Zh
bHVlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVs
bGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5n
VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6
CisKIDIwMTMtMDMtMTUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDU4MDIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZh
ZGM5ODgzZDQ2NmI3MWZhNTEwNzVmNWI4ZGM5YmYyOWE1YThmMzEuLjE5NzhlYWQ1OWY1MDhlN2Yx
NGFkYmFmZTA4OGU1MDU3MjAxNzc0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODI3LDYgKzE4MjcsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRl
IChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgbXkgJG5hbWUg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJHR5cGUg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAgICAgICAgICAgbXkgJGlzTnVs
bGFibGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGU7CiAgICAgICAgICAgICAg
ICAgJGNvZGVHZW5lcmF0b3ItPkFzc2VydE5vdFNlcXVlbmNlVHlwZSgkdHlwZSk7CiAgICAgICAg
ICAgICAgICAgbXkgJGdldEZ1bmN0aW9uTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGlu
dGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIG15
ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJG5h
bWUpOwpAQCAtMTg4OSw2ICsxODkwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCFAeyRhdHRyaWJ1
dGUtPmdldHRlckV4Y2VwdGlvbnN9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpIGlmICEkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYg
JGlzTnVsbGFibGU7CiAKICAgICAgICAgICAgICAgICAgICAgbXkgJGNhY2hlSW5kZXggPSAwOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKQEAgLTE5MTIsNiArMTkxNCw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1
bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lv
bihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiaXNOdWxsIikgaWYgJGlzTnVsbGFibGU7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOwpAQCAtMTkzMyw2
ICsxOTM2LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlwZTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoaXNOdWxsKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBqc051bGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lIC4gIi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQp
O1xuIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
Y2hlZEF0dHJpYnV0ZSJ9KTsKQEAgLTE5NDIsNiArMTk1MCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRzID0gKCJlYyIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDtcbiIpOwogCisgICAgICAgICAgICAgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBpc051
bGwgPSBmYWxzZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1l
bnRzLCAiaXNOdWxsIik7CisgICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAg
ICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwg
ImpzVW5kZWZpbmVkKCkiKSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0
eU9yTGlzdFByb3BlcnR5VHlwZSkgewpAQCAtMTk1Miw2ICsxOTY1LDExIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbC0+JGltcGxHZXR0ZXJGdW5j
dGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikg
LiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICBp
ZiAoJGlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChpc051bGwpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNOdWxsKCk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwogICAgICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KaW5kZXggNzU4ZDc1MTg1MzhmODIxMWZkYjc1YWMxNTZlNmEzOWNkMTZkODgwYS4uOTBh
ZGZhMzQ0MmM0OWI1YjIxZDhkNWUyMzQyODIwZTdmMmRiN2M3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTk5NCwxNiAr
OTk0LDIyIEBAIEVORAogICAgIH0KIAogICAgIG15ICR1c2VFeGNlcHRpb25zID0gMSBpZiBAeyRh
dHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OworICAgIG15ICRpc051bGxhYmxlID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlOwogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewog
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9uQ29kZS5oIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7
CiAgICAgfQogCisgICAgaWYgKCRpc051bGxhYmxlKSB7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50SW50ZXJuYWxzLCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKTsKKyAgICB9CisKICAg
ICBteSAkcmV0dXJuVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICBteSAk
Z2V0dGVyU3RyaW5nOwogCiAgICAgaWYgKCRnZXR0ZXJTdHJpbmdVc2VzSW1wKSB7CiAgICAgICAg
IG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJF
eHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Cisg
ICAgICAgIHB1c2goQGFyZ3VtZW50cywgImlzTnVsbCIpIGlmICRpc051bGxhYmxlOwogICAgICAg
ICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICR1c2VFeGNlcHRpb25zOwogICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRC
eSJ9KSB7CiAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKQEAgLTEwMjcsMTgg
KzEwMzMsMjYgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAg
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTtcbiIpOwogICAgIH0KIAotICAgIGlmICgkdXNlRXhj
ZXB0aW9ucykgeworICAgIGlmICgkdXNlRXhjZXB0aW9ucyB8fCAkaXNOdWxsYWJsZSkgewogICAg
ICAgICBpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFN0cmluZ1Jlc291cmNlLykgewogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4U3RyaW5n
UmVzb3VyY2UoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlwZSwgInYiLCAkZ2V0dGVy
U3RyaW5nKSAuICI7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50SW50ZXJuYWxzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5nO1xu
Iik7CiAgICAgICAgIH0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAg
aWYgKFVOTElLRUxZKGVjKSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIiAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkp
O1xuIik7CiAKLSAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNv
bnRhaW5zKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxX
aXRoIn0sICJTY3JpcHRTdGF0ZSIpKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIiAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpXG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihz
dGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CisgICAgICAgIGlmICgk
aXNOdWxsYWJsZSkgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIg
ICAgaWYgKGlzTnVsbClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5h
bHMsICIgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoJHVzZUV4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmIChVTkxJS0VMWShlYykpXG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4gc2V0RE9N
RXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKKworICAgICAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sICJTY3JpcHRTdGF0ZSIp
KSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlv
bigpLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
CiAgICAgICAgICRyZXN1bHQgPSAidiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMUGFyc2VyLnBtCmluZGV4IGQyZGJiYTI5ZDE1YmZmYTUwMzgyMWRjNWMzNTlkNmQzMGJi
OThkMjAuLmYwMDAzNTU1ZTA1OGM1MjNiOGFiMzhjOTBmYmYzM2JmNzk0MjU5YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0yOTEsNiArMjkx
LDE5IEBAIHN1YiB1bnF1b3RlU3RyaW5nCiAgICAgZGllICJGYWlsZWQgdG8gcGFyc2Ugc3RyaW5n
ICgiIC4gJHF1b3RlZFN0cmluZyAuICIpIGF0ICIgLiAkc2VsZi0+e0xpbmV9OwogfQogCitzdWIg
dHlwZUhhc051bGxhYmxlU3VmZml4Cit7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKyAgICByZXR1
cm4gJHR5cGUgPX4gL1w/JC87Cit9CisKK3N1YiB0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgKK3sK
KyAgICBteSAkdHlwZSA9IHNoaWZ0OworICAgICR0eXBlID1+IHMvXD8vL2c7CisgICAgcmV0dXJu
ICR0eXBlOworfQorCiBteSAkbmV4dEF0dHJpYnV0ZU9sZF8xID0gJ14oYXR0cmlidXRlfGluaGVy
aXR8cmVhZG9ubHkpJCc7CiBteSAkbmV4dFByaW1pdGl2ZVR5cGVfMSA9ICdeKGludHxsb25nfHNo
b3J0fHVuc2lnbmVkKSQnOwogbXkgJG5leHRQcmltaXRpdmVUeXBlXzIgPSAnXihkb3VibGV8Zmxv
YXR8dW5yZXN0cmljdGVkKSQnOwpAQCAtMTEyNyw3ICsxMTQwLDE0IEBAIHN1YiBwYXJzZUF0dHJp
YnV0ZVJlc3QKICAgICAgICAgfQogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2Vs
Zi0+Z2V0VG9rZW4oKSwgImF0dHJpYnV0ZSIsIF9fTElORV9fKTsKICAgICAgICAgJG5ld0RhdGFO
b2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0gICAgICAgICRuZXdEYXRhTm9k
ZS0+c2lnbmF0dXJlLT50eXBlKCRzZWxmLT5wYXJzZVR5cGUoKSk7CisgICAgICAgIG15ICR0eXBl
ID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAgICBpZiAodHlwZUhhc051bGxhYmxlU3VmZml4
KCR0eXBlKSkgeworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlzTnVsbGFi
bGUoMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25h
dHVyZS0+aXNOdWxsYWJsZSgwKTsKKyAgICAgICAgfQorICAgICAgICAjIFJlbW92ZSBhbGwgIj8i
IGluIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBlLmcuICJkb3VibGU/IiAtPiAiZG91YmxlIi4KKyAg
ICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUodHlwZVJlbW92ZU51bGxhYmxlU3Vm
Zml4KCR0eXBlKSk7CiAgICAgICAgIG15ICR0b2tlbiA9ICRzZWxmLT5nZXRUb2tlbigpOwogICAg
ICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCR0b2tlbiwgSWRlbnRpZmllclRva2VuKTsKICAg
ICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUoJHRva2VuLT52YWx1ZSgpKTsKQEAg
LTEzOTQsMTQgKzE0MTQsMTMgQEAgc3ViIHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQK
ICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJvcHRp
b25hbCIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7
CiAgICAgICAgICMgZG9tRGF0YU5vZGUgY2FuIG9ubHkgY29uc2lkZXIgbGFzdCAiPyIuCi0gICAg
ICAgIGlmICgkdHlwZSA9fiAvXD8kLykgeworICAgICAgICBpZiAodHlwZUhhc051bGxhYmxlU3Vm
Zml4KCR0eXBlKSkgewogICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzTnVsbGFibGUoMSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJs
ZSgwKTsKICAgICAgICAgfQogICAgICAgICAjIFJlbW92ZSBhbGwgIj8iIGlmIGV4aXN0cywgZS5n
LiAib2JqZWN0P1tdPyIgLT4gIm9iamVjdFtdIi4KLSAgICAgICAgJHR5cGUgPX4gcy9cPy8vZzsK
LSAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHR5cGUpOworICAgICAgICAkcGFyYW1EYXRh
Tm9kZS0+dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKICAgICAgICAgJHBh
cmFtRGF0YU5vZGUtPm5hbWUoJHNlbGYtPnBhcnNlQXJndW1lbnROYW1lKCkpOwogICAgICAgICAk
c2VsZi0+cGFyc2VEZWZhdWx0KCk7CiAgICAgICAgIHJldHVybiAkcGFyYW1EYXRhTm9kZTsKQEAg
LTE0MDksMTQgKzE0MjgsMTMgQEAgc3ViIHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQK
ICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVl
KCkgPX4gLyRuZXh0RXhjZXB0aW9uRmllbGRfMS8pIHsKICAgICAgICAgbXkgJHR5cGUgPSAkc2Vs
Zi0+cGFyc2VUeXBlKCk7CiAgICAgICAgICMgZG9tRGF0YU5vZGUgY2FuIG9ubHkgY29uc2lkZXIg
bGFzdCAiPyIuCi0gICAgICAgIGlmICgkdHlwZSA9fiAvXD8kLykgeworICAgICAgICBpZiAodHlw
ZUhhc051bGxhYmxlU3VmZml4KCR0eXBlKSkgewogICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUt
PmlzTnVsbGFibGUoMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcGFyYW1EYXRh
Tm9kZS0+aXNOdWxsYWJsZSgwKTsKICAgICAgICAgfQogICAgICAgICAjIFJlbW92ZSBhbGwgIj8i
IGlmIGV4aXN0cywgZS5nLiAib2JqZWN0P1tdPyIgLT4gIm9iamVjdFtdIi4KLSAgICAgICAgJHR5
cGUgPX4gcy9cPy8vZzsKLSAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHR5cGUpOworICAg
ICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUp
KTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzVmFyaWFkaWMoJHNlbGYtPnBhcnNlRWxsaXBz
aXMoKSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5uYW1lKCRzZWxmLT5wYXJzZUFyZ3VtZW50
TmFtZSgpKTsKICAgICAgICAgcmV0dXJuICRwYXJhbURhdGFOb2RlOwpAQCAtMjM5NCw3ICsyNDEy
LDE0IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJlc3RPbGQKICAgICAgICAgJHNlbGYtPmFzc2VydFRv
a2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJhdHRyaWJ1dGUiLCBfX0xJTkVfXyk7CiAgICAg
ICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJp
YnV0ZUxpc3RBbGxvd0VtcHR5KCk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKGRv
bVNpZ25hdHVyZS0+bmV3KCkpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlw
ZSgkc2VsZi0+cGFyc2VUeXBlKCkpOworICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5
cGUoKTsKKyAgICAgICAgaWYgKHR5cGVIYXNOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpIHsKKyAgICAg
ICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKDEpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUo
MCk7CisgICAgICAgIH0KKyAgICAgICAgIyBSZW1vdmUgYWxsICI/IiBpbiB0aGUgdHlwZSBkZWNs
YXJhdGlvbiwgZS5nLiAiZG91YmxlPyIgLT4gImRvdWJsZSIuCisgICAgICAgICRuZXdEYXRhTm9k
ZS0+c2lnbmF0dXJlLT50eXBlKHR5cGVSZW1vdmVOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpOwogICAg
ICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOwogICAgICAgICBteSAkdG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsK
ICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkdG9rZW4sIElkZW50aWZpZXJUb2tlbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IDBhZWZiMDY5NzZiOTFkZGZlNGFiNGM4YWJlOGM4YjRjZjM4NjQ0NzQu
LjQ1MjJlNDM4YzMwZmUwOWVjMDA5NjcxZjNlYWVhM2FjMGRiODZhZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC0xNDcsMTEgKzE0NywxNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2Jq
VGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiaWQiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iaklkKSwgKGludHB0cl90
KXNldEpTVGVzdE9iaklkLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImhhc2giLCBEb250RGVsZXRl
IHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqSGFzaCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsg
InJlcGxhY2VhYmxlQXR0cmlidXRlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0
ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZSwgTm9JbnRyaW5z
aWMgfSwKKyAgICB7ICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIERvbnREZWxldGUgfCBSZWFk
T25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNp
YyB9LAorICAgIHsgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIsIERvbnREZWxldGUgfCBSZWFkT25s
eSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwK
KyAgICB7ICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHks
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0s
CisgICAgeyAibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHks
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwK
KyAgICB7ICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIERvbnREZWxldGUsIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVs
bGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqTnVsbGFi
bGVMb25nU2V0dGFibGVBdHRyaWJ1dGUsIE5vSW50cmluc2ljIH0sCisgICAgeyAibnVsbGFibGVT
dHJpbmdWYWx1ZSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlLCBOb0ludHJpbnNpYyB9LAogICAgIHsg
ImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQog
fTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMTQxLCAxMjcs
IEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVz
dE9ialRhYmxlID0geyAxNDUsIDEyNywgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhh
c2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtOTc2LDYgKzk4Miw4NSBA
QCBKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydAogfQogCiAKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIGJv
b2wgaXNOdWxsID0gZmFsc2U7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RP
YmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC0+bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgaWYgKGlzTnVsbCkK
KyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNW
YWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgVGVzdE9iaiogaW1wbCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCkpOwor
ICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFz
ZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOwor
ICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLT5udWxsYWJsZUJvb2xl
YW5BdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZVN0cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAg
Ym9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCBpbXBsLT5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpKTsK
KyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQorewor
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChz
bG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBib29sIGlzTnVsbCA9IGZh
bHNlOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlKGlzTnVsbCkpOworICAgIGlmIChpc051bGwpCisgICAgICAg
IHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVjKSk7Cisg
ICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCiBKU1ZhbHVlIGpzVGVz
dE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogZG9tT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0xNDM1LDYgKzE1MjAsMjQgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBKU1YKIH0KIAogCit2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBs
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaW1wbC0+
c2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUodmFsdWUudG9JbnQzMihleGVjKSk7Cit9
CisKKwordm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaW1wbC0+c2V0TnVsbGFibGVTdHJpbmdWYWx1ZSh2
YWx1ZS50b0ludDMyKGV4ZWMpKTsKK30KKworCiBKU1ZhbHVlIEpTVGVzdE9iajo6Z2V0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewog
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4oZXhlYywg
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggNjQx
NTRlNDRlOWVlZjcxYTBlNjU5NGI5OTU4ZGNiZmE1ZWRkMDNkYS4uM2M0NTEzNjllNzYzNzlmYzMw
NDliNmRiZDk0MTlkZDI2NDY0YzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMzM5LDYgKzMzOSwxNCBAQCB2b2lk
IHNldEpTVGVzdE9iaklkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNW
YWx1ZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqSGFzaChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlcGxh
Y2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNU
ZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxv
bmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNW
YWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iak51
bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1
ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNWYWx1ZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIC8vIENvbnN0YW50cwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
aW5kZXggMjRhMGU2YzA5YTM4NmI2YmZhZmRiMGRjY2ViYTlkMmVmMjU1NjQ3OC4uZjllNTBmYWQ2
MTUyNWM1NmQyZDhhZDljYTVjZjE3ZGRjMWZkMzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjcxLDQgKzI3MSwxNyBAQCBl
bnVtIFRlc3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwgIkVudW1W
YWx1ZTMiIH07CiAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChpbiBET01TdHJpbmcgaGVh
ZCwgaW4gRE9NU3RyaW5nLi4uIHRhaWwpOwogICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRob2Qo
aW4gZG91YmxlIGhlYWQsIGluIGRvdWJsZS4uLiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljTm9k
ZU1ldGhvZChpbiBOb2RlIGhlYWQsIGluIE5vZGUuLi4gdGFpbCk7CisKKyNpZiBkZWZpbmVkKFRF
U1RJTkdfVjgpIHx8IGRlZmluZWQoVEVTVElOR19KUykKKyAgICAvLyBOdWxsYWJsZSBhdHRyaWJ1
dGVzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGU/IG51bGxhYmxlRG91YmxlQXR0cmli
dXRlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nPyBudWxsYWJsZUxvbmdBdHRyaWJ1dGU7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4/IG51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBudWxsYWJsZVN0cmluZ0F0dHJp
YnV0ZTsKKworICAgIGF0dHJpYnV0ZSBsb25nPyBudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZTsKKworICAgIGF0dHJpYnV0ZSBsb25nPyBudWxsYWJsZVN0cmluZ1ZhbHVlCisgICAgICAgIGdl
dHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggZTcy
ZDE2ZTA0OWM4YzExMTMzZDA5OGJmMzViM2U2NTFiMmMyYjk2NC4uNzRhYjM0ZjdkZDdlZmY2MDhm
ZWQ2YjRjZjc0NTdmZTNjMGYxZGU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTE1MzQsNiArMTUzNCwxMjUg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djgKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGRvdWJsZSB2ID0gaW1wLT5udWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZShpc051bGwpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVy
biB2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXco
dik7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVEb3VibGVBdHRy
aWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgaW50IHYgPSBpbXAtPm51bGxhYmxl
TG9uZ0F0dHJpYnV0ZShpc051bGwpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2
OE51bGwoaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5H
ZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxl
TG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9
CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVCb29sZWFuQXR0cmlidXRl
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgYm9vbCB2ID0gaW1w
LT5udWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAg
ICAgICByZXR1cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhCb29s
ZWFuKHYsIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0
dGVyKG5hbWUsIGluZm8pOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxh
YmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7
CisgICAgU3RyaW5nIHYgPSBpbXAtPm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCk7Cisg
ICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7
CisgICAgcmV0dXJuIHY4U3RyaW5nKHYsIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVI
YW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5n
QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgaW50IHYgPSBp
bXAtPm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVs
bCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJu
IHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkIG51bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0TnVsbGFi
bGVMb25nU2V0dGFibGVBdHRyaWJ1dGUodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9p
ZCBudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNl
OworICAgIGludCB2ID0gaW1wLT5udWxsYWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpOworICAg
IGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpOwor
ICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMs
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKHYsIGluZm8uR2V0SXNv
bGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZVN0cmlu
Z1ZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKK3N0YXRp
YyB2b2lkIG51bGxhYmxlU3RyaW5nVmFsdWVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXROdWxs
YWJsZVN0cmluZ1ZhbHVlKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgbnVsbGFi
bGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyU2V0
dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGRhdGEgPSBpbmZvLkRhdGEoKTsKQEAgLTI5MzQsNiArMzA1MywxOCBAQCBzdGF0aWMgY29uc3Qg
VjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJzW10gPSB7
CiAgICAgeyJoYXNoIiwgVGVzdE9ialY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyQ2FsbGJhY2ss
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVwbGFjZWFibGVBdHRyaWJ1
dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVwbGFjZWFibGUnKQog
ICAgIHsicmVwbGFjZWFibGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVwbGFjZWFi
bGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2Jq
UmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0
dHJpYnV0ZSAnbnVsbGFibGVEb3VibGVBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKKyAgICB7Im51bGxhYmxlRG91YmxlQXR0cmlidXRlIiwgVGVzdE9i
alY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlTG9uZ0F0dHJpYnV0
ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsibnVsbGFi
bGVMb25nQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRl
ICdudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBF
eHRBdHRyOiAnJykKKyAgICB7Im51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIsIFRlc3RPYmpWOElu
dGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUn
IChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7Im51bGxhYmxl
U3RyaW5nQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1
dGUgJ251bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJycpCisgICAgeyJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxl
U3RyaW5nVmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7Im51bGxh
YmxlU3RyaW5nVmFsdWUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAogc3RhdGljIGNvbnN0IFY4
RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RPYmpNZXRob2RzW10gPSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193308</attachid>
            <date>2013-03-15 07:47:18 -0700</date>
            <delta_ts>2013-03-15 08:54:22 -0700</delta_ts>
            <desc>Fix ChangeLog</desc>
            <filename>bug-111728-20130315144313.patch</filename>
            <type>text/plain</type>
            <size>31669</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkNGM4ZDM3N2Q0MGU1
MzVmNzQ2MWYwYmQwZWM5YjZjYjFjMGM5MS4uYjZmOTc0ZDg5ZjVjNTVjNzk4YjI4ZjhlZGEyZGEy
NTg4MTE5MzZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAzLTE1ICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3IgbnVsbGFibGUgdHlwZXMgaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzI4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IHN1cHBvcnQgZm9yIG51bGxhYmxlIHR5cGVzIGluIHRoZSBiaW5kaW5ncworICAgICAgICBnZW5l
cmF0b3IsIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTAuMjIgb2YgV2ViSURMOgorICAgICAg
ICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNpZGwtbnVsbGFibGUt
dHlwZQorCisgICAgICAgIGludGVyZmFjZSBNeUludGVyZmFjZSB7CisgICAgICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbj8gdmFsdWU7IC8vIHRydWUsIGZhbHNlIG9yIG51bGwuCisg
ICAgICAgIH07CisKKyAgICAgICAgVGhlIElETCBQYXJzZXIgaGFzIGJlZW4gbW9kaWZpZWQgdG8g
cmVjb3JkIHdoZXRoZXIgYXR0cmlidXRlcyBhcmUKKyAgICAgICAgbnVsbGFibGUuIFF1ZXN0aW9u
IG1hcmtzIGZyb20gdGhlIHR5cGUgd2lsbCBhbHdheXMgYmUgc3RyaXBwZWQKKyAgICAgICAgZnJv
bSB0aGUgZG9tQXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZmllbGQuIE9uY2Ugc3VwcG9ydCBm
b3IKKyAgICAgICAgdGhpcyBoYXMgYmVlbiBjb21wbGV0ZWx5IGltcGxlbWVudGVkLCB3ZSdsbCBi
ZSBhYmxlIHRvIHJlbW92ZSBhCisgICAgICAgIGJ1bmNoIG9mIGN1c3RvbSBiaW5kaW5ncywgaS5l
LiB0aG9zZSBvZiBEZXZpY2UgT3JpZW50YXRpb24uCisKKyAgICAgICAgQW55IGdldHRlciBmb3Ig
YW4gYXR0cmlidXRlIHdoaWNoIHJldHVybnMgYSBudWxsYWJsZSB0eXBlIHdpbGwgYmUKKyAgICAg
ICAgY2FsbGVkIHdpdGggYW4gYWRkaXRpb25hbCBhdHRyaWJ1dGUgKHBhc3NlZCBieSByZWZlcmVu
Y2UpIG5hbWVkCisgICAgICAgICJpc051bGwiLiBUaGlzIHdpbGwgYmUgdGhlIGxhc3QgYXJndW1l
bnQgcGFzc2VkIHRvIHRoZSBtZXRob2QsCisgICAgICAgIHVubGVzcyBhbiBleGNlcHRpb24gY29k
ZSAoZWMpIGFyZ3VtZW50IHdpbGwgYmUgcGFzc2VkIGFzIHdlbGwuCisKKyAgICAgICAgVGVzdGVk
IGJ5IGV4aXN0aW5nIGJpbmRpbmcgdGVzdHMgYW5kIHRoZSBuZXcgbnVsbGFibGUgYXR0cmlidXRl
CisgICAgICAgIHRlc3RzIGluIHRoZSBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvIGRpcmVjdG9yeS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAodHlwZUhh
c051bGxhYmxlU3VmZml4KToKKyAgICAgICAgKHR5cGVSZW1vdmVOdWxsYWJsZVN1ZmZpeCk6Cisg
ICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3QpOgorICAgICAgICAocGFyc2VPcHRpb25hbE9yUmVx
dWlyZWRBcmd1bWVudCk6CisgICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3RPbGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRl
cik6CisgICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJp
YnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51
bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmlu
Z1ZhbHVlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRy
U2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTMtMDMtMTUgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxNDU4MDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZhZGM5ODgzZDQ2NmI3MWZhNTEwNzVm
NWI4ZGM5YmYyOWE1YThmMzEuLjE5NzhlYWQ1OWY1MDhlN2YxNGFkYmFmZTA4OGU1MDU3MjAxNzc0
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0xODI3LDYgKzE4MjcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJp
YnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGU7CisgICAgICAgICAgICAgICAgbXkgJGlzTnVsbGFibGUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmlzTnVsbGFibGU7CiAgICAgICAgICAgICAgICAgJGNvZGVHZW5lcmF0b3ItPkFz
c2VydE5vdFNlcXVlbmNlVHlwZSgkdHlwZSk7CiAgICAgICAgICAgICAgICAgbXkgJGdldEZ1bmN0
aW9uTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyRnVuY3Rpb25O
YW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJG5hbWUpOwpAQCAtMTg4OSw2ICsxODkw
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCFAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9Q
QVJBTShleGVjKTtcbiIpIGlmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYWxsV2l0aCJ9OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYgJGlzTnVsbGFibGU7CiAKICAgICAg
ICAgICAgICAgICAgICAgbXkgJGNhY2hlSW5kZXggPSAwOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0
cmlidXRlIn0pIHsKQEAgLTE5MTIsNiArMTkxNCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50
cykgPSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGlu
dGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
YXJndW1lbnRzLCAiaXNOdWxsIikgaWYgJGlzTnVsbGFibGU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1w
bGVtZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVu
dGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
JHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOwpAQCAtMTkzMyw2ICsxOTM2LDExIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUg
cmVzdWx0ID0gJGpzVHlwZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaXNOdWxsKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biBqc051bGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Y2FzdGVkVGhpcy0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpO1xuIikgaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KTsKQEAg
LTE5NDIsNiArMTk1MCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICBteSBAYXJndW1lbnRzID0gKCJlYyIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogCisgICAg
ICAgICAgICAgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBpc051bGwgPSBmYWxzZTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaXNOdWxsIik7CisgICAg
ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVu
dHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCkiKSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkg
ewpAQCAtMTk1Miw2ICsxOTY1LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRp
bnRlcmZhY2VOYW1lLCAiaW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwg
IiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpc051bGwp
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4ganNOdWxsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIHJlc3VsdDtcbiIpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNzU4ZDc1MTg1
MzhmODIxMWZkYjc1YWMxNTZlNmEzOWNkMTZkODgwYS4uOTBhZGZhMzQ0MmM0OWI1YjIxZDhkNWUy
MzQyODIwZTdmMmRiN2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTk5NCwxNiArOTk0LDIyIEBAIEVORAogICAgIH0K
IAogICAgIG15ICR1c2VFeGNlcHRpb25zID0gMSBpZiBAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2Vw
dGlvbnN9OworICAgIG15ICRpc051bGxhYmxlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051
bGxhYmxlOwogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewogICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiRXhjZXB0aW9uQ29kZS5oIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJu
YWxzLCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAgICAgfQogCisgICAgaWYgKCRp
c051bGxhYmxlKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGJv
b2wgaXNOdWxsID0gZmFsc2U7XG4iKTsKKyAgICB9CisKICAgICBteSAkcmV0dXJuVHlwZSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICBteSAkZ2V0dGVyU3RyaW5nOwogCiAgICAg
aWYgKCRnZXR0ZXJTdHJpbmdVc2VzSW1wKSB7CiAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBA
YXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1
ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIHB1c2goQGFyZ3VtZW50
cywgImlzTnVsbCIpIGlmICRpc051bGxhYmxlOwogICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJl
YyIpIGlmICR1c2VFeGNlcHRpb25zOwogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICBt
eSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkltcGxlbWVudGVkQnkifTsKQEAgLTEwMjcsMTggKzEwMzMsMjYgQEAgRU5ECiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTtcbiIpOwogICAgIH0KIAotICAgIGlmICgkdXNlRXhjZXB0aW9ucykgeworICAgIGlmICgk
dXNlRXhjZXB0aW9ucyB8fCAkaXNOdWxsYWJsZSkgewogICAgICAgICBpZiAoJG5hdGl2ZVR5cGUg
PX4gL15WOFN0cmluZ1Jlc291cmNlLykgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJ
bnRlcm5hbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4U3RyaW5nUmVzb3VyY2UoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAkbmF0aXZlVHlwZSwgInYiLCAkZ2V0dGVyU3RyaW5nKSAuICI7XG4iKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAi
ICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5nO1xuIik7CiAgICAgICAgIH0KLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKFVOTElLRUxZKGVjKSlcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJuIHNl
dERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CiAKLSAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sICJTY3JpcHRTdGF0ZSIp
KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50
ZXJuYWxzLCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5m
by5HZXRJc29sYXRlKCkpO1xuIik7CisgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgeworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKGlzTnVsbClcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiB2
OE51bGwoaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
JHVzZUV4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxz
LCAiICAgIGlmIChVTkxJS0VMWShlYykpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdl
dElzb2xhdGUoKSk7XG4iKTsKKworICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRl
bmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbGxXaXRoIn0sICJTY3JpcHRTdGF0ZSIpKSB7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUo
KSk7XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgICRyZXN1bHQgPSAi
diI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNl
ci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4
IGQyZGJiYTI5ZDE1YmZmYTUwMzgyMWRjNWMzNTlkNmQzMGJiOThkMjAuLmYwMDAzNTU1ZTA1OGM1
MjNiOGFiMzhjOTBmYmYzM2JmNzk0MjU5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0yOTEsNiArMjkxLDE5IEBAIHN1YiB1bnF1b3RlU3Ry
aW5nCiAgICAgZGllICJGYWlsZWQgdG8gcGFyc2Ugc3RyaW5nICgiIC4gJHF1b3RlZFN0cmluZyAu
ICIpIGF0ICIgLiAkc2VsZi0+e0xpbmV9OwogfQogCitzdWIgdHlwZUhhc051bGxhYmxlU3VmZml4
Cit7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKyAgICByZXR1cm4gJHR5cGUgPX4gL1w/JC87Cit9
CisKK3N1YiB0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgKK3sKKyAgICBteSAkdHlwZSA9IHNoaWZ0
OworICAgICR0eXBlID1+IHMvXD8vL2c7CisgICAgcmV0dXJuICR0eXBlOworfQorCiBteSAkbmV4
dEF0dHJpYnV0ZU9sZF8xID0gJ14oYXR0cmlidXRlfGluaGVyaXR8cmVhZG9ubHkpJCc7CiBteSAk
bmV4dFByaW1pdGl2ZVR5cGVfMSA9ICdeKGludHxsb25nfHNob3J0fHVuc2lnbmVkKSQnOwogbXkg
JG5leHRQcmltaXRpdmVUeXBlXzIgPSAnXihkb3VibGV8ZmxvYXR8dW5yZXN0cmljdGVkKSQnOwpA
QCAtMTEyNyw3ICsxMTQwLDE0IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJlc3QKICAgICAgICAgfQog
ICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgImF0dHJp
YnV0ZSIsIF9fTElORV9fKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2ln
bmF0dXJlLT5uZXcoKSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRz
ZWxmLT5wYXJzZVR5cGUoKSk7CisgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgp
OworICAgICAgICBpZiAodHlwZUhhc051bGxhYmxlU3VmZml4KCR0eXBlKSkgeworICAgICAgICAg
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUoMSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgwKTsK
KyAgICAgICAgfQorICAgICAgICAjIFJlbW92ZSBhbGwgIj8iIGluIHRoZSB0eXBlIGRlY2xhcmF0
aW9uLCBlLmcuICJkb3VibGU/IiAtPiAiZG91YmxlIi4KKyAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUtPnR5cGUodHlwZVJlbW92ZU51bGxhYmxlU3VmZml4KCR0eXBlKSk7CiAgICAgICAg
IG15ICR0b2tlbiA9ICRzZWxmLT5nZXRUb2tlbigpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9r
ZW5UeXBlKCR0b2tlbiwgSWRlbnRpZmllclRva2VuKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUtPm5hbWUoJHRva2VuLT52YWx1ZSgpKTsKQEAgLTEzOTQsMTQgKzE0MTQsMTMgQEAg
c3ViIHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQKICAgICAgICAgJHNlbGYtPmFzc2Vy
dFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJvcHRpb25hbCIsIF9fTElORV9fKTsKICAg
ICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CiAgICAgICAgICMgZG9tRGF0YU5v
ZGUgY2FuIG9ubHkgY29uc2lkZXIgbGFzdCAiPyIuCi0gICAgICAgIGlmICgkdHlwZSA9fiAvXD8k
LykgeworICAgICAgICBpZiAodHlwZUhhc051bGxhYmxlU3VmZml4KCR0eXBlKSkgewogICAgICAg
ICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzTnVsbGFibGUoMSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgwKTsKICAgICAgICAgfQogICAg
ICAgICAjIFJlbW92ZSBhbGwgIj8iIGlmIGV4aXN0cywgZS5nLiAib2JqZWN0P1tdPyIgLT4gIm9i
amVjdFtdIi4KLSAgICAgICAgJHR5cGUgPX4gcy9cPy8vZzsKLSAgICAgICAgJHBhcmFtRGF0YU5v
ZGUtPnR5cGUoJHR5cGUpOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSh0eXBlUmVtb3Zl
TnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPm5hbWUoJHNl
bGYtPnBhcnNlQXJndW1lbnROYW1lKCkpOwogICAgICAgICAkc2VsZi0+cGFyc2VEZWZhdWx0KCk7
CiAgICAgICAgIHJldHVybiAkcGFyYW1EYXRhTm9kZTsKQEAgLTE0MDksMTQgKzE0MjgsMTMgQEAg
c3ViIHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQKICAgICBpZiAoJG5leHQtPnR5cGUo
KSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0RXhjZXB0aW9u
RmllbGRfMS8pIHsKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CiAgICAg
ICAgICMgZG9tRGF0YU5vZGUgY2FuIG9ubHkgY29uc2lkZXIgbGFzdCAiPyIuCi0gICAgICAgIGlm
ICgkdHlwZSA9fiAvXD8kLykgeworICAgICAgICBpZiAodHlwZUhhc051bGxhYmxlU3VmZml4KCR0
eXBlKSkgewogICAgICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzTnVsbGFibGUoMSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgwKTsK
ICAgICAgICAgfQogICAgICAgICAjIFJlbW92ZSBhbGwgIj8iIGlmIGV4aXN0cywgZS5nLiAib2Jq
ZWN0P1tdPyIgLT4gIm9iamVjdFtdIi4KLSAgICAgICAgJHR5cGUgPX4gcy9cPy8vZzsKLSAgICAg
ICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHR5cGUpOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+
dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKICAgICAgICAgJHBhcmFtRGF0
YU5vZGUtPmlzVmFyaWFkaWMoJHNlbGYtPnBhcnNlRWxsaXBzaXMoKSk7CiAgICAgICAgICRwYXJh
bURhdGFOb2RlLT5uYW1lKCRzZWxmLT5wYXJzZUFyZ3VtZW50TmFtZSgpKTsKICAgICAgICAgcmV0
dXJuICRwYXJhbURhdGFOb2RlOwpAQCAtMjM5NCw3ICsyNDEyLDE0IEBAIHN1YiBwYXJzZUF0dHJp
YnV0ZVJlc3RPbGQKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRv
a2VuKCksICJhdHRyaWJ1dGUiLCBfX0xJTkVfXyk7CiAgICAgICAgIG15ICRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QgPSAkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3RBbGxvd0VtcHR5KCk7
CiAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwot
ICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkc2VsZi0+cGFyc2VUeXBlKCkp
OworICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5
cGVIYXNOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpIHsKKyAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+
c2lnbmF0dXJlLT5pc051bGxhYmxlKDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
JG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUoMCk7CisgICAgICAgIH0KKyAgICAg
ICAgIyBSZW1vdmUgYWxsICI/IiBpbiB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgZS5nLiAiZG91Ymxl
PyIgLT4gImRvdWJsZSIuCisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKHR5
cGVSZW1vdmVOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogICAg
ICAgICBteSAkdG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNlbGYtPmFzc2Vy
dFRva2VuVHlwZSgkdG9rZW4sIElkZW50aWZpZXJUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDBhZWZi
MDY5NzZiOTFkZGZlNGFiNGM4YWJlOGM4YjRjZjM4NjQ0NzQuLjQ1MjJlNDM4YzMwZmUwOWVjMDA5
NjcxZjNlYWVhM2FjMGRiODZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNDcsMTEgKzE0NywxNyBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNbXSA9CiAgICAg
eyAiaWQiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iaklkKSwgKGludHB0cl90KXNldEpTVGVzdE9iaklkLCBOb0lu
dHJpbnNpYyB9LAogICAgIHsgImhhc2giLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqSGFzaCks
IChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInJlcGxhY2VhYmxlQXR0cmlidXRl
IiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdClzZXRKU1Rl
c3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJudWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZSIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpOdWxsYWJsZURvdWJs
ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm51bGxhYmxl
TG9uZ0F0dHJpYnV0ZSIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJudWxsYWJsZUJvb2xl
YW5BdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0
cmlidXRlKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAibnVsbGFibGVTdHJp
bmdBdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJudWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRy
aWJ1dGUpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUsIE5vSW50cmluc2ljIH0sCisgICAgeyAibnVsbGFibGVTdHJpbmdWYWx1ZSIsIERvbnREZWxl
dGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpOdWxsYWJs
ZVN0cmluZ1ZhbHVlLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVu
dW0gfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9
LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMTQxLCAxMjcsIEpTVGVzdE9ialRhYmxlVmFsdWVz
LCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialRhYmxlID0geyAxNDUsIDEy
NywgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVj
dG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzW10gPQpAQCAtOTc2LDYgKzk4Miw4NSBAQCBKU1ZhbHVlIGpzVGVzdE9ialJl
cGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydAogfQogCiAKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Cisg
ICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVEb3VibGVB
dHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJs
ZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIGJvb2wg
aXNOdWxsID0gZmFsc2U7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC0+bnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCkpOworICAgIGlmIChpc051bGwpCisgICAg
ICAgIHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIFRlc3RPYmoqIGltcGwgPSBz
dGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQm9vbGVhbihpbXBsLT5udWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoaXNOdWxsKSk7
CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsK
KyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBs
LT5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpKTsKKyAgICBpZiAoaXNOdWxsKQorICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVl
IGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIFRlc3RPYmoqIGlt
cGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRl
KGlzTnVsbCkpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdW
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBib29sIGlzTnVsbCA9
IGZhbHNlOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVk
VGhpcy0+aW1wbCgpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+
bnVsbGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVjKSk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworCiBKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogZG9tT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7
CkBAIC0xNDM1LDYgKzE1MjAsMjQgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1YKIH0KIAogCit2
b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9i
aio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaW1wbC0+c2V0TnVsbGFibGVMb25nU2V0dGFi
bGVBdHRyaWJ1dGUodmFsdWUudG9JbnQzMihleGVjKSk7Cit9CisKKwordm9pZCBzZXRKU1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBU
ZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisgICAgaW1wbC0+c2V0TnVsbGFibGVTdHJpbmdWYWx1ZSh2YWx1ZS50b0ludDMyKGV4ZWMpKTsK
K30KKworCiBKU1ZhbHVlIEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggNjQxNTRlNDRlOWVlZjcxYTBlNjU5NGI5
OTU4ZGNiZmE1ZWRkMDNkYS4uM2M0NTEzNjllNzYzNzlmYzMwNDliNmRiZDk0MTlkZDI2NDY0YzMx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouaApAQCAtMzM5LDYgKzMzOSwxNCBAQCB2b2lkIHNldEpTVGVzdE9iaklkKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiBKU0M6OkpTVmFsdWUg
anNUZXN0T2JqSGFzaChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpT
VGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVj
dCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJs
ZVN0cmluZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Cit2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiBKU0M6OkpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKIC8vIENvbnN0YW50cwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggMjRhMGU2YzA5YTM4NmI2
YmZhZmRiMGRjY2ViYTlkMmVmMjU1NjQ3OC4uZjllNTBmYWQ2MTUyNWM1NmQyZDhhZDljYTVjZjE3
ZGRjMWZkMzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbApAQCAtMjcxLDQgKzI3MSwxNyBAQCBlbnVtIFRlc3RFbnVtVHlwZSB7ICIi
LCAiRW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwgIkVudW1WYWx1ZTMiIH07CiAgICAgdm9pZCB2
YXJpYWRpY1N0cmluZ01ldGhvZChpbiBET01TdHJpbmcgaGVhZCwgaW4gRE9NU3RyaW5nLi4uIHRh
aWwpOwogICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRob2QoaW4gZG91YmxlIGhlYWQsIGluIGRv
dWJsZS4uLiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljTm9kZU1ldGhvZChpbiBOb2RlIGhlYWQs
IGluIE5vZGUuLi4gdGFpbCk7CisKKyNpZiBkZWZpbmVkKFRFU1RJTkdfVjgpIHx8IGRlZmluZWQo
VEVTVElOR19KUykKKyAgICAvLyBOdWxsYWJsZSBhdHRyaWJ1dGVzLgorICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGU/IG51bGxhYmxlRG91YmxlQXR0cmlidXRlOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBsb25nPyBudWxsYWJsZUxvbmdBdHRyaWJ1dGU7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4/IG51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZTsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nPyBudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZTsKKworICAgIGF0dHJpYnV0
ZSBsb25nPyBudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZTsKKworICAgIGF0dHJpYnV0ZSBs
b25nPyBudWxsYWJsZVN0cmluZ1ZhbHVlCisgICAgICAgIGdldHRlciByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggZTcyZDE2ZTA0OWM4YzExMTMzZDA5OGJm
MzViM2U2NTFiMmMyYjk2NC4uNzRhYjM0ZjdkZDdlZmY2MDhmZWQ2YjRjZjc0NTdmZTNjMGYxZGU2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKQEAgLTE1MzQsNiArMTUzNCwxMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djgKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRl
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIGlzTnVsbCA9
IGZhbHNlOworICAgIGRvdWJsZSB2ID0gaW1wLT5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZShpc051
bGwpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcodik7Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZURvdWJsZUF0dHJp
YnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxs
ID0gZmFsc2U7CisgICAgaW50IHYgPSBpbXAtPm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwp
OworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRl
KCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9u
Z0F0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJv
b2wgaXNOdWxsID0gZmFsc2U7CisgICAgYm9vbCB2ID0gaW1wLT5udWxsYWJsZUJvb2xlYW5BdHRy
aWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gdjhOdWxsKGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhCb29sZWFuKHYsIGluZm8uR2V0SXNvbGF0
ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUJvb2xlYW5B
dHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgU3RyaW5nIHYgPSBpbXAt
Pm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAg
ICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5n
KHYsIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdB
dHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgaW50IHYgPSBpbXAtPm51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4
TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdl
dElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIo
bmFtZSwgaW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkIG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9
IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBudWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRl
QXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gbnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGludCB2ID0gaW1wLT5u
dWxsYWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpOworICAgIGlmIChpc051bGwpCisgICAgICAg
IHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpOworICAgIGlmIChVTkxJS0VMWShlYykp
CisgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsK
KyAgICByZXR1cm4gdjhJbnRlZ2VyKHYsIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1
ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkIG51bGxhYmxlU3RyaW5n
VmFsdWVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2
ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXROdWxsYWJsZVN0cmluZ1ZhbHVlKHYpOwor
ICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgbnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZv
KTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBUZXN0T2JqQ29uc3RydWN0b3JH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEgPSBpbmZvLkRhdGEoKTsK
QEAgLTI5MzQsNiArMzA1MywxOCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpC
YXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJzW10gPSB7CiAgICAgeyJoYXNoIiwgVGVzdE9i
alY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAncmVwbGFjZWFibGVBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkg
YXR0cmlidXRlJyBFeHRBdHRyOiAnUmVwbGFjZWFibGUnKQogICAgIHsicmVwbGFjZWFibGVBdHRy
aWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVy
Q2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVEb3Vi
bGVBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAg
ICB7Im51bGxhYmxlRG91YmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
RG91YmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlTG9uZ0F0dHJpYnV0ZScgKFR5cGU6ICdyZWFkb25seSBh
dHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsibnVsbGFibGVMb25nQXR0cmlidXRlIiwgVGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZUJvb2xlYW5BdHRy
aWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7Im51
bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xl
YW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8v
IEF0dHJpYnV0ZSAnbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0
cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7Im51bGxhYmxlU3RyaW5nQXR0cmlidXRlIiwgVGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNr
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlU3RyaW5nVmFsdWUnIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7Im51bGxhYmxlU3RyaW5nVmFsdWUiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0
Y2hlZE1ldGhvZCBWOFRlc3RPYmpNZXRob2RzW10gPSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193318</attachid>
            <date>2013-03-15 08:54:26 -0700</date>
            <delta_ts>2013-03-16 19:34:11 -0700</delta_ts>
            <desc>Full patch</desc>
            <filename>bug-111728-20130315155021.patch</filename>
            <type>text/plain</type>
            <size>58883</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkNGM4ZDM3N2Q0MGU1
MzVmNzQ2MWYwYmQwZWM5YjZjYjFjMGM5MS4uODQ3OTgxOWRkZTY5ODE4OTE5NzRjNjU4NWQxMDk1
YTVlMDE1ZmVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAxMy0wMy0xNSAgUGV0
ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHN1
cHBvcnQgZm9yIG51bGxhYmxlIHR5cGVzIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBudWxsYWJsZSB0eXBlcyBpbiB0aGUgYmluZGluZ3MKKyAgICAgICAgZ2Vu
ZXJhdG9yLCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEwLjIyIG9mIFdlYklETDoKKyAgICAg
ICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBpL1dlYklETC8jaWRsLW51bGxhYmxl
LXR5cGUKKworICAgICAgICBpbnRlcmZhY2UgTXlJbnRlcmZhY2UgeworICAgICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4/IHZhbHVlOyAvLyB0cnVlLCBmYWxzZSBvciBudWxsLgor
ICAgICAgICB9OworCisgICAgICAgIFRoZSBJREwgUGFyc2VyIGhhcyBiZWVuIG1vZGlmaWVkIHRv
IHJlY29yZCB3aGV0aGVyIGF0dHJpYnV0ZXMgYXJlCisgICAgICAgIG51bGxhYmxlLiBRdWVzdGlv
biBtYXJrcyBmcm9tIHRoZSB0eXBlIHdpbGwgYWx3YXlzIGJlIHN0cmlwcGVkCisgICAgICAgIGZy
b20gdGhlIGRvbUF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGZpZWxkLiBPbmNlIHN1cHBvcnQg
Zm9yCisgICAgICAgIHRoaXMgaGFzIGJlZW4gY29tcGxldGVseSBpbXBsZW1lbnRlZCwgd2UnbGwg
YmUgYWJsZSB0byByZW1vdmUgYQorICAgICAgICBidW5jaCBvZiBjdXN0b20gYmluZGluZ3MsIGku
ZS4gdGhvc2Ugb2YgRGV2aWNlIE9yaWVudGF0aW9uLgorCisgICAgICAgIEFueSBnZXR0ZXIgZm9y
IGFuIGF0dHJpYnV0ZSB3aGljaCByZXR1cm5zIGEgbnVsbGFibGUgdHlwZSB3aWxsIGJlCisgICAg
ICAgIGNhbGxlZCB3aXRoIGFuIGFkZGl0aW9uYWwgYXR0cmlidXRlIChwYXNzZWQgYnkgcmVmZXJl
bmNlKSBuYW1lZAorICAgICAgICAiaXNOdWxsIi4gVGhpcyB3aWxsIGJlIHRoZSBsYXN0IGFyZ3Vt
ZW50IHBhc3NlZCB0byB0aGUgbWV0aG9kLAorICAgICAgICB1bmxlc3MgYW4gZXhjZXB0aW9uIGNv
ZGUgKGVjKSBhcmd1bWVudCB3aWxsIGJlIHBhc3NlZCBhcyB3ZWxsLgorCisgICAgICAgIFRoZSBD
UFAsIEdPYmplY3QgYW5kIE9iakMgYmluZGluZ3Mgd2lsbCBub3QgY2hhbmdlIGJlaGF2aW9yIGZv
bGxvd2luZworICAgICAgICB0aGlzIHBhdGNoLCBhbHRob3VnaCB0aGV5IGhhdmUgYmVlbiBtb2Rp
ZmllZCB0byBjYWxsIHRoZSBXZWJDb3JlCisgICAgICAgIG1ldGhvZHMgZm9yIG51bGxhYmxlIGF0
dHJpYnV0ZXMgd2l0aCB0aGUgY29ycmVjdCBzaWduYXR1cmUuIFRoZQorICAgICAgICBWOCBhbmQg
SlMgYmluZGluZyBnZW5lcmF0b3JzIGRvIGhhdmUgbW9kaWZpZWQgYmVoYXZpb3IsIGluIHRoYXQg
dGhleQorICAgICAgICB3aWxsIGFjdHVhbGx5IHJldHVybiB2OE51bGwvanNOdWxsIHdoZW4gaXNO
dWxsID09IHRydWUuCisKKyAgICAgICAgVGVzdGVkIGJ5IGV4aXN0aW5nIGJpbmRpbmcgdGVzdHMg
YW5kIHRoZSBuZXcgbnVsbGFibGUgYXR0cmlidXRlCisgICAgICAgIHRlc3RzIGluIHRoZSBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvIGRpcmVjdG9yeS4KKworICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNQUC5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06Cisg
ICAgICAgIChHZW5lcmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2Vu
ZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBh
cnNlci5wbToKKyAgICAgICAgKHR5cGVIYXNOdWxsYWJsZVN1ZmZpeCk6CisgICAgICAgICh0eXBl
UmVtb3ZlTnVsbGFibGVTdWZmaXgpOgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KToKKyAg
ICAgICAgKHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQpOgorICAgICAgICAocGFyc2VB
dHRyaWJ1dGVSZXN0T2xkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPYmouY3BwOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6bnVsbGFibGVEb3VibGVB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6bnVsbGFibGVMb25nQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJET01UZXN0T2JqOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJET01UZXN0T2JqOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJET01UZXN0T2JqOjpzZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJET01UZXN0T2JqOjpudWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkRP
TVRlc3RPYmo6OnNldE51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X29ial9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2RvdWJsZV9hdHRyaWJ1
dGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfbG9uZ19hdHRy
aWJ1dGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfYm9vbGVh
bl9hdHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVf
c3RyaW5nX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxs
YWJsZV9sb25nX3NldHRhYmxlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF9udWxsYWJsZV9sb25nX3NldHRhYmxlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9zdHJpbmdfdmFsdWUpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X29ial9zZXRfbnVsbGFibGVfc3RyaW5nX3ZhbHVlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmg6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbToKKyAgICAg
ICAgKC1bRE9NVGVzdE9iaiBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZV0pOgorICAgICAgICAoLVtE
T01UZXN0T2JqIG51bGxhYmxlTG9uZ0F0dHJpYnV0ZV0pOgorICAgICAgICAoLVtET01UZXN0T2Jq
IG51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZV0pOgorICAgICAgICAoLVtET01UZXN0T2JqIG51bGxh
YmxlU3RyaW5nQXR0cmlidXRlXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogbnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGVdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXROdWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBudWxsYWJsZVN0
cmluZ1ZhbHVlXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0TnVsbGFibGVTdHJpbmdWYWx1
ZTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0
dGVyKToKKyAgICAgICAgKFRlc3RPYmpWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0
cmlidXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5B
dHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0
dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3Ry
aW5nVmFsdWVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0
dHJTZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMy0wMy0xNSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE0NTgwMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCBjYTBhOTY0YzNjN2YyNjc5OWIz
NzEzM2EyMTdiNzM2ZTQxODNlMmJlLi4zZjlmODRiYmVmNTUyMjE1NGFhMTMwYTE0NWY2ZGRmMjYz
YzY4N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JDUFAucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yQ1BQLnBtCkBAIC02OTcsNiArNjk3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lOwogICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSBHZXRDUFBUeXBlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSwgMCk7CiAgICAgICAgICAgICBteSAkYXR0cmlidXRl
SXNSZWFkb25seSA9ICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKTsKKyAgICAgICAg
ICAgIG15ICRhdHRyaWJ1dGVJc051bGxhYmxlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051
bGxhYmxlOwogCiAgICAgICAgICAgICAkYXR0cmlidXRlTmFtZXN7JGF0dHJpYnV0ZU5hbWV9ID0g
MTsKIApAQCAtNzA0LDYgKzcwNSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBteSAkZ2V0dGVyU2lnID0gIiRhdHRyaWJ1dGVUeXBlICRjbGFzc05hbWVcOlw6JGF0
dHJpYnV0ZU5hbWUoKSBjb25zdFxuIjsKICAgICAgICAgICAgIG15ICRoYXNHZXR0ZXJFeGNlcHRp
b24gPSBAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAgICAgbXkgKCRm
dW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Np
b24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAg
ICAgIHB1c2goQGFyZ3VtZW50cywgImlzTnVsbCIpIGlmICRhdHRyaWJ1dGVJc051bGxhYmxlOwog
ICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBpZiAkaGFzR2V0dGVyRXhjZXB0aW9u
OwogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRl
ZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRCeSJ9OwpAQCAtNzM2LDYgKzczOCwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCBBZGRFYXJseVJldHVyblN0YXRlbWVudCgkYXR0cmlidXRlVHlwZSkp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEBjdXN0b21HZXR0ZXJDb250ZW50KTsK
KworICAgICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHdlIHJldHVybiBhIGRlZmF1bHQgdmFsdWUg
d2hlbiBpc051bGwgPT0gdHJ1ZT8KKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlSXNOdWxsYWJs
ZSkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgaXNOdWxs
ID0gZmFsc2U7XG4iKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCRoYXNHZXR0
ZXJFeGNlcHRpb24pIHsKICAgICAgICAgICAgICAgICAjIERpZmZlcmVudGlhdGVkIGJldHdlZW4g
d2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgYSBwb2ludGVyIGFuZAogICAgICAgICAgICAgICAgICMg
bm90IGZvciB3aGl0ZSBzcGFjZSBpc3N1ZSAoaWUuIEZvbyAqcmVzdWx0IHZzLiBpbnQgcmVzdWx0
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JHT2JqZWN0LnBtCmluZGV4IDA2Y2ZhYTM3ZWU5ZDQwYTA2NWExMWZjZmQxZjE5NDI3ZGYz
MGEwZjcuLjVmYTQ3NDRiY2NmNzE4MTViMDhmN2NlMGYxMDc4NmY2ZTE5MTMwMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3Qu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09i
amVjdC5wbQpAQCAtNDcwLDYgKzQ3MCw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnR5IHsKICAgICAg
ICAgJGdldHRlckZ1bmN0aW9uTmFtZSA9ICJjb3JlU2VsZi0+JGdldHRlckZ1bmN0aW9uTmFtZSI7
CiAgICAgICAgICRzZXR0ZXJGdW5jdGlvbk5hbWUgPSAiY29yZVNlbGYtPiRzZXR0ZXJGdW5jdGlv
bk5hbWUiOwogICAgIH0KKyAgICBwdXNoKEBnZXR0ZXJBcmd1bWVudHMsICJpc051bGwiKSBpZiAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGU7CiAgICAgcHVzaChAZ2V0dGVyQXJndW1l
bnRzLCAiZWMiKSBpZiBAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OwogICAgIHB1c2go
QHNldHRlckFyZ3VtZW50cywgImVjIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25z
fTsKIApAQCAtNDkxLDggKzQ5MiwxMSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0eSB7CiAgICAgcHVz
aChAdHh0R2V0UHJvcHMsICIgICAgY2FzZSAke3Byb3BFbnVtfToge1xuIik7CiAgICAgcHVzaChA
dHh0R2V0UHJvcHMsICIjaWYgJHtwYXJlbnRDb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRwYXJl
bnRDb25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIHB1c2goQHR4dEdl
dFByb3BzLCAiICAgICAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5pc051bGxhYmxlOwogICAgIHB1c2goQHR4dEdldFByb3BzLCAiICAgICAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+Z2V0dGVy
RXhjZXB0aW9uc307CiAKKyAgICAjIEZJWE1FOiBTaG91bGQgd2UgcmV0dXJuIGEgZGVmYXVsdCB2
YWx1ZSB3aGVuIGlzTnVsbCA9PSB0cnVlPworCiAgICAgbXkgJHBvc3RDb252ZXJ0RnVuY3Rpb24g
PSAiIjsKICAgICBteSAkZG9uZSA9IDA7CiAgICAgaWYgKCRndHlwZSBlcSAic3RyaW5nIikgewpA
QCAtMTAwMyw4ICsxMDA3LDE0IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgfQog
ICAgIH0KIAorICAgICMgRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYSBkZWZhdWx0IHZhbHVlIHdo
ZW4gaXNOdWxsID09IHRydWU/CisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5pc051bGxh
YmxlKSB7CisgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4i
KTsKKyAgICAgICAgcHVzaChAY2FsbEltcGxQYXJhbXMsICJpc051bGwiKTsKKyAgICB9CisKICAg
ICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9KSB7Ci0gICAgICAgIHB1c2goQGNC
b2R5LCAiICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgOworICAgICAgICBw
dXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAg
ICAgICBwdXNoKEBjYWxsSW1wbFBhcmFtcywgImVjIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZhZGM5
ODgzZDQ2NmI3MWZhNTEwNzVmNWI4ZGM5YmYyOWE1YThmMzEuLjE5NzhlYWQ1OWY1MDhlN2YxNGFk
YmFmZTA4OGU1MDU3MjAxNzc0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODI3LDYgKzE4MjcsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChA
eyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAgICAgICAgICAgbXkgJGlzTnVsbGFi
bGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGU7CiAgICAgICAgICAgICAgICAg
JGNvZGVHZW5lcmF0b3ItPkFzc2VydE5vdFNlcXVlbmNlVHlwZSgkdHlwZSk7CiAgICAgICAgICAg
ICAgICAgbXkgJGdldEZ1bmN0aW9uTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVy
ZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIG15ICRp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJG5hbWUp
OwpAQCAtMTg4OSw2ICsxODkwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCFAeyRhdHRyaWJ1dGUt
PmdldHRlckV4Y2VwdGlvbnN9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpIGlmICEkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYgJGlz
TnVsbGFibGU7CiAKICAgICAgICAgICAgICAgICAgICAgbXkgJGNhY2hlSW5kZXggPSAwOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKQEAgLTE5MTIsNiArMTkxNCw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0
aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihc
JWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiaXNOdWxsIikgaWYgJGlzTnVsbGFibGU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOwpAQCAtMTkzMyw2ICsx
OTM2LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlwZTtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
aXNOdWxsKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBqc051bGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5uYW1lIC4gIi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpO1xu
IikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hl
ZEF0dHJpYnV0ZSJ9KTsKQEAgLTE5NDIsNiArMTk1MCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRzID0gKCJlYyIpOwogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDtcbiIpOwogCisgICAgICAgICAgICAgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBpc051bGwg
PSBmYWxzZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRz
LCAiaXNOdWxsIik7CisgICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAg
ICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgImpz
VW5kZWZpbmVkKCkiKSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9y
TGlzdFByb3BlcnR5VHlwZSkgewpAQCAtMTk1Miw2ICsxOTY1LDExIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlv
bk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAi
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICBpZiAo
JGlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChpc051bGwpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNOdWxsKCk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwogICAgICAgICAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JP
YmpDLnBtCmluZGV4IDI5NTBhMmE1YjAwNTNkZGExOGZlNDEwZWJjYmIyYzNiMDQ2MjExYWUuLmE0
OGNjYWM0ZTQwYjFhNGJiYjlmMzYyOWQ0MWE1NGIwM2JmYjJhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtNzYs
NiArNzYsNyBAQCBteSAlYmFzZVR5cGVIYXNoID0gKCJPYmplY3QiID0+IDEsICJOb2RlIiA9PiAx
LCAiTm9kZUxpc3QiID0+IDEsICJOYW1lZE5vZGVNYXAiCiAgICAgICAgICAgICAgICAgICAgICJT
VkdTdHJpbmdMaXN0IiA9PiAxLCAiU1ZHVHJhbnNmb3JtIiA9PiAxLCAiU1ZHVHJhbnNmb3JtTGlz
dCIgPT4gMSwgIlNWR1VuaXRUeXBlcyIgPT4gMSk7CiAKICMgQ29uc3RhbnRzCitteSAkbnVsbGFi
bGVJbml0ID0gImJvb2wgaXNOdWxsID0gZmFsc2U7IjsKIG15ICRleGNlcHRpb25Jbml0ID0gIldl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOyI7CiBteSAkanNDb250ZXh0U2V0dGVyID0gIldl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsiOwogbXkgJGV4Y2VwdGlvblJhaXNl
T25FcnJvciA9ICJXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOyI7CkBAIC0xMzM0LDggKzEz
MzUsMTcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgbXkgJGdldHRlckNvbnRlbnQ7Ci0gICAgICAgICAgICBpZiAoJGhhc0dldHRlckV4
Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdldHRlckNvbnRl
bnRIZWFkIC4gKCRnZXR0ZXJDb250ZW50SGVhZCA9fiAvXCgkfCwgJC8gPyAiZWMiIDogIiwgZWMi
KSAuICRnZXR0ZXJDb250ZW50VGFpbDsKKyAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0
aW9uIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSkgeworICAgICAgICAgICAg
ICAgICRnZXR0ZXJDb250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkOworICAgICAgICAgICAgICAg
IG15ICRnZXR0ZXJXaXRob3V0QXR0cmlidXRlcyA9ICRnZXR0ZXJDb250ZW50SGVhZCA9fiAvXCgk
fCwgJC8gPyAiZWMiIDogIiwgZWMiOworICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnQgLj0gJGdldHRlcldpdGhvdXRBdHRyaWJ1dGVzID8gImlzTnVsbCIgOiAiLCBpc051bGwiOwor
ICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyV2l0aG91dEF0dHJpYnV0ZXMgPSAwOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoJGhhc0dldHRlckV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCAuPSAkZ2V0dGVyV2l0aG91dEF0dHJp
YnV0ZXMgPyAiZWMiIDogIiwgZWMiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudCAuPSAkZ2V0dGVyQ29udGVudFRhaWw7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFk
IC4gJGdldHRlckNvbnRlbnRUYWlsOwogICAgICAgICAgICAgfQpAQCAtMTM0Niw2ICsxMzU2LDEy
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGpzQ29u
dGV4dFNldHRlclxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgQGN1c3RvbUdl
dHRlckNvbnRlbnQpOworCisgICAgICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2UgcmV0dXJuIGEg
ZGVmYXVsdCB2YWx1ZSB3aGVuIGlzTnVsbCA9PSB0cnVlPworICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSkgeworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50cywgIiAgICAkbnVsbGFibGVJbml0XG4iKTsKKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRpb24pIHsKICAgICAgICAgICAgICAgICAjIERp
ZmZlcmVudGlhdGVkIGJldHdlZW4gd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgYSBwb2ludGVyIGFu
ZAogICAgICAgICAgICAgICAgICMgbm90IGZvciB3aGl0ZSBzcGFjZSBpc3N1ZSAoaWUuIEZvbyAq
cmVzdWx0IHZzLiBpbnQgcmVzdWx0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNzU4ZDc1MTg1MzhmODIxMWZkYjc1YWMx
NTZlNmEzOWNkMTZkODgwYS4uOTBhZGZhMzQ0MmM0OWI1YjIxZDhkNWUyMzQyODIwZTdmMmRiN2M3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KQEAgLTk5NCwxNiArOTk0LDIyIEBAIEVORAogICAgIH0KIAogICAgIG15ICR1c2VF
eGNlcHRpb25zID0gMSBpZiBAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OworICAgIG15
ICRpc051bGxhYmxlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlOwogICAgIGlm
ICgkdXNlRXhjZXB0aW9ucykgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9u
Q29kZS5oIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwO1xuIik7CiAgICAgfQogCisgICAgaWYgKCRpc051bGxhYmxlKSB7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGJvb2wgaXNOdWxsID0gZmFs
c2U7XG4iKTsKKyAgICB9CisKICAgICBteSAkcmV0dXJuVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZTsKICAgICBteSAkZ2V0dGVyU3RyaW5nOwogCiAgICAgaWYgKCRnZXR0ZXJTdHJp
bmdVc2VzSW1wKSB7CiAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRzKSA9ICRj
b2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNl
TmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImlzTnVsbCIpIGlm
ICRpc051bGxhYmxlOwogICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICR1c2VFeGNl
cHRpb25zOwogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRC
eSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVu
dGVkQnkifTsKQEAgLTEwMjcsMTggKzEwMzMsMjYgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTtcbiIpOwogICAg
IH0KIAotICAgIGlmICgkdXNlRXhjZXB0aW9ucykgeworICAgIGlmICgkdXNlRXhjZXB0aW9ucyB8
fCAkaXNOdWxsYWJsZSkgewogICAgICAgICBpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFN0cmluZ1Jl
c291cmNlLykgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAg
IiAuIENvbnZlcnRUb1Y4U3RyaW5nUmVzb3VyY2UoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0
aXZlVHlwZSwgInYiLCAkZ2V0dGVyU3RyaW5nKSAuICI7XG4iKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICRuYXRpdmVUeXBl
IHYgPSAkZ2V0dGVyU3RyaW5nO1xuIik7CiAgICAgICAgIH0KLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKFVOTElLRUxZKGVjKSlcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihl
YywgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CiAKLSAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sICJTY3JpcHRTdGF0ZSIpKSB7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9u
KCkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkp
O1xuIik7CisgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgeworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKGlzTnVsbClcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJ
c29sYXRlKCkpO1xuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoJHVzZUV4Y2VwdGlvbnMp
IHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmIChVTkxJ
S0VMWShlYykpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAi
ICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7XG4i
KTsKKworICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNv
bnRhaW5zKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxX
aXRoIn0sICJTY3JpcHRTdGF0ZSIpKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnRJbnRlcm5hbHMsICIgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgICRyZXN1bHQgPSAidiI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IGQyZGJiYTI5ZDE1YmZm
YTUwMzgyMWRjNWMzNTlkNmQzMGJiOThkMjAuLmYwMDAzNTU1ZTA1OGM1MjNiOGFiMzhjOTBmYmYz
M2JmNzk0MjU5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFy
c2VyLnBtCkBAIC0yOTEsNiArMjkxLDE5IEBAIHN1YiB1bnF1b3RlU3RyaW5nCiAgICAgZGllICJG
YWlsZWQgdG8gcGFyc2Ugc3RyaW5nICgiIC4gJHF1b3RlZFN0cmluZyAuICIpIGF0ICIgLiAkc2Vs
Zi0+e0xpbmV9OwogfQogCitzdWIgdHlwZUhhc051bGxhYmxlU3VmZml4Cit7CisgICAgbXkgJHR5
cGUgPSBzaGlmdDsKKyAgICByZXR1cm4gJHR5cGUgPX4gL1w/JC87Cit9CisKK3N1YiB0eXBlUmVt
b3ZlTnVsbGFibGVTdWZmaXgKK3sKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworICAgICR0eXBlID1+
IHMvXD8vL2c7CisgICAgcmV0dXJuICR0eXBlOworfQorCiBteSAkbmV4dEF0dHJpYnV0ZU9sZF8x
ID0gJ14oYXR0cmlidXRlfGluaGVyaXR8cmVhZG9ubHkpJCc7CiBteSAkbmV4dFByaW1pdGl2ZVR5
cGVfMSA9ICdeKGludHxsb25nfHNob3J0fHVuc2lnbmVkKSQnOwogbXkgJG5leHRQcmltaXRpdmVU
eXBlXzIgPSAnXihkb3VibGV8ZmxvYXR8dW5yZXN0cmljdGVkKSQnOwpAQCAtMTEyNyw3ICsxMTQw
LDE0IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJlc3QKICAgICAgICAgfQogICAgICAgICAkc2VsZi0+
YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgImF0dHJpYnV0ZSIsIF9fTElORV9f
KTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7
Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCRzZWxmLT5wYXJzZVR5cGUo
KSk7CisgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOworICAgICAgICBpZiAo
dHlwZUhhc051bGxhYmxlU3VmZml4KCR0eXBlKSkgeworICAgICAgICAgICAgJG5ld0RhdGFOb2Rl
LT5zaWduYXR1cmUtPmlzTnVsbGFibGUoMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSgwKTsKKyAgICAgICAgfQorICAg
ICAgICAjIFJlbW92ZSBhbGwgIj8iIGluIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBlLmcuICJkb3Vi
bGU/IiAtPiAiZG91YmxlIi4KKyAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUo
dHlwZVJlbW92ZU51bGxhYmxlU3VmZml4KCR0eXBlKSk7CiAgICAgICAgIG15ICR0b2tlbiA9ICRz
ZWxmLT5nZXRUb2tlbigpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCR0b2tlbiwg
SWRlbnRpZmllclRva2VuKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUo
JHRva2VuLT52YWx1ZSgpKTsKQEAgLTEzOTQsMTQgKzE0MTQsMTMgQEAgc3ViIHBhcnNlT3B0aW9u
YWxPclJlcXVpcmVkQXJndW1lbnQKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNl
bGYtPmdldFRva2VuKCksICJvcHRpb25hbCIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJHR5cGUg
PSAkc2VsZi0+cGFyc2VUeXBlKCk7CiAgICAgICAgICMgZG9tRGF0YU5vZGUgY2FuIG9ubHkgY29u
c2lkZXIgbGFzdCAiPyIuCi0gICAgICAgIGlmICgkdHlwZSA9fiAvXD8kLykgeworICAgICAgICBp
ZiAodHlwZUhhc051bGxhYmxlU3VmZml4KCR0eXBlKSkgewogICAgICAgICAgICAgJHBhcmFtRGF0
YU5vZGUtPmlzTnVsbGFibGUoMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcGFy
YW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgwKTsKICAgICAgICAgfQogICAgICAgICAjIFJlbW92ZSBh
bGwgIj8iIGlmIGV4aXN0cywgZS5nLiAib2JqZWN0P1tdPyIgLT4gIm9iamVjdFtdIi4KLSAgICAg
ICAgJHR5cGUgPX4gcy9cPy8vZzsKLSAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHR5cGUp
OworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgo
JHR5cGUpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPm5hbWUoJHNlbGYtPnBhcnNlQXJndW1l
bnROYW1lKCkpOwogICAgICAgICAkc2VsZi0+cGFyc2VEZWZhdWx0KCk7CiAgICAgICAgIHJldHVy
biAkcGFyYW1EYXRhTm9kZTsKQEAgLTE0MDksMTQgKzE0MjgsMTMgQEAgc3ViIHBhcnNlT3B0aW9u
YWxPclJlcXVpcmVkQXJndW1lbnQKICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVy
VG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0RXhjZXB0aW9uRmllbGRfMS8pIHsKICAg
ICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7CiAgICAgICAgICMgZG9tRGF0YU5v
ZGUgY2FuIG9ubHkgY29uc2lkZXIgbGFzdCAiPyIuCi0gICAgICAgIGlmICgkdHlwZSA9fiAvXD8k
LykgeworICAgICAgICBpZiAodHlwZUhhc051bGxhYmxlU3VmZml4KCR0eXBlKSkgewogICAgICAg
ICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzTnVsbGFibGUoMSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+aXNOdWxsYWJsZSgwKTsKICAgICAgICAgfQogICAg
ICAgICAjIFJlbW92ZSBhbGwgIj8iIGlmIGV4aXN0cywgZS5nLiAib2JqZWN0P1tdPyIgLT4gIm9i
amVjdFtdIi4KLSAgICAgICAgJHR5cGUgPX4gcy9cPy8vZzsKLSAgICAgICAgJHBhcmFtRGF0YU5v
ZGUtPnR5cGUoJHR5cGUpOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSh0eXBlUmVtb3Zl
TnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzVmFyaWFk
aWMoJHNlbGYtPnBhcnNlRWxsaXBzaXMoKSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5uYW1l
KCRzZWxmLT5wYXJzZUFyZ3VtZW50TmFtZSgpKTsKICAgICAgICAgcmV0dXJuICRwYXJhbURhdGFO
b2RlOwpAQCAtMjM5NCw3ICsyNDEyLDE0IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJlc3RPbGQKICAg
ICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJhdHRyaWJ1
dGUiLCBfX0xJTkVfXyk7CiAgICAgICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSAkc2Vs
Zi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3RBbGxvd0VtcHR5KCk7CiAgICAgICAgICRuZXdE
YXRhTm9kZS0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwotICAgICAgICAkbmV3RGF0
YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkc2VsZi0+cGFyc2VUeXBlKCkpOworICAgICAgICBteSAk
dHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5cGVIYXNOdWxsYWJsZVN1
ZmZpeCgkdHlwZSkpIHsKKyAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5pc051
bGxhYmxlKDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUtPmlzTnVsbGFibGUoMCk7CisgICAgICAgIH0KKyAgICAgICAgIyBSZW1vdmUgYWxs
ICI/IiBpbiB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgZS5nLiAiZG91YmxlPyIgLT4gImRvdWJsZSIu
CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKHR5cGVSZW1vdmVOdWxsYWJs
ZVN1ZmZpeCgkdHlwZSkpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgICAgICBteSAkdG9rZW4g
PSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkdG9r
ZW4sIElkZW50aWZpZXJUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAppbmRleCA5ZmJiZDUwMmI3
ZmE2Y2M5NjBlZDQ5OGUyZjY4ODFiZTMwZDg0NTU0Li41ZDA5NWI2NmEzNWM2Nzc2OWU5YTcxYzUz
ZWU4NDRhNjUyMTZkZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTY2NCw2ICs2NjQsNzkg
QEAgaW50IFdlYkRPTVRlc3RPYmo6OnJlcGxhY2VhYmxlQXR0cmlidXRlKCkgY29uc3QKICAgICBy
ZXR1cm4gaW1wbCgpLT5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpOwogfQogCitkb3VibGUgV2ViRE9N
VGVzdE9iajo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlmICghaW1w
bCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAg
cmV0dXJuIGltcGwoKS0+bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKTsKK30KKworaW50
IFdlYkRPTVRlc3RPYmo6Om51bGxhYmxlTG9uZ0F0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgaWYg
KCFpbXBsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsK
KyAgICByZXR1cm4gaW1wbCgpLT5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKTsKK30KKwor
Ym9vbCBXZWJET01UZXN0T2JqOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoKSBjb25zdAorewor
ICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGlzTnVs
bCA9IGZhbHNlOworICAgIHJldHVybiBpbXBsKCktPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShp
c051bGwpOworfQorCitXZWJET01TdHJpbmcgV2ViRE9NVGVzdE9iajo6bnVsbGFibGVTdHJpbmdB
dHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2Vi
RE9NU3RyaW5nKCk7CisKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXVEY6OlN0cmluZyY+KGltcGwoKS0+bnVsbGFibGVTdHJpbmdBdHRyaWJ1
dGUoaXNOdWxsKSk7Cit9CisKK2ludCBXZWJET01UZXN0T2JqOjpudWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICByZXR1cm4gaW1wbCgpLT5udWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6
OnNldE51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKGludCBuZXdOdWxsYWJsZUxvbmdTZXR0
YWJsZUF0dHJpYnV0ZSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW1wbCgpLT5zZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShuZXdOdWxsYWJsZUxv
bmdTZXR0YWJsZUF0dHJpYnV0ZSk7Cit9CisKK2ludCBXZWJET01UZXN0T2JqOjpudWxsYWJsZVN0
cmluZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGludCByZXN1bHQgPSBpbXBsKCktPm51bGxhYmxlU3RyaW5nVmFsdWUoaXNO
dWxsLCBlYyk7CisgICAgd2ViRE9NUmFpc2VFcnJvcihzdGF0aWNfY2FzdDxXZWJET01FeGNlcHRp
b25Db2RlPihlYykpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9i
ajo6c2V0TnVsbGFibGVTdHJpbmdWYWx1ZShpbnQgbmV3TnVsbGFibGVTdHJpbmdWYWx1ZSkKK3sK
KyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5zZXROdWxs
YWJsZVN0cmluZ1ZhbHVlKG5ld051bGxhYmxlU3RyaW5nVmFsdWUpOworfQorCiB2b2lkIFdlYkRP
TVRlc3RPYmo6OnZvaWRNZXRob2QoKQogewogICAgIGlmICghaW1wbCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmou
aAppbmRleCBlNjdiYTgzOGE3ZGI2NGQ4NDc3MmMxYzY3MjUwMjdmMjBlMDQ5YThlLi5kODJiNzgy
NWFhM2Q4NjQzNjk4OTBmMDcxYjk5ZTM4YjdiYzA4NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaApAQCAt
MTQ1LDYgKzE0NSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZChpbnQpOwogICAgIFdlYkRP
TVN0cmluZyBoYXNoKCkgY29uc3Q7CiAgICAgaW50IHJlcGxhY2VhYmxlQXR0cmlidXRlKCkgY29u
c3Q7CisgICAgZG91YmxlIG51bGxhYmxlRG91YmxlQXR0cmlidXRlKCkgY29uc3Q7CisgICAgaW50
IG51bGxhYmxlTG9uZ0F0dHJpYnV0ZSgpIGNvbnN0OworICAgIGJvb2wgbnVsbGFibGVCb29sZWFu
QXR0cmlidXRlKCkgY29uc3Q7CisgICAgV2ViRE9NU3RyaW5nIG51bGxhYmxlU3RyaW5nQXR0cmli
dXRlKCkgY29uc3Q7CisgICAgaW50IG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpbnQpOworICAg
IGludCBudWxsYWJsZVN0cmluZ1ZhbHVlKCkgY29uc3Q7CisgICAgdm9pZCBzZXROdWxsYWJsZVN0
cmluZ1ZhbHVlKGludCk7CiAKICAgICB2b2lkIHZvaWRNZXRob2QoKTsKICAgICB2b2lkIHZvaWRN
ZXRob2RXaXRoQXJncyhpbnQgbG9uZ0FyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNv
bnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmou
Y3BwCmluZGV4IDRkNDFkNmUxM2I2YzhjNmI2MjgwYTc2ZmNmOTg5MTg5ODkwNGVjMjUuLjNmOThj
YjdmYmQ3ZjA0N2Y4NGE1NjUzZTljYjJlZTI0OGI4MDk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPYmouY3BwCkBAIC0xMjQsNiArMTI0LDEyIEBAIGVudW0gewogICAgIFBST1BfSUQs
CiAgICAgUFJPUF9IQVNILAogICAgIFBST1BfUkVQTEFDRUFCTEVfQVRUUklCVVRFLAorICAgIFBS
T1BfTlVMTEFCTEVfRE9VQkxFX0FUVFJJQlVURSwKKyAgICBQUk9QX05VTExBQkxFX0xPTkdfQVRU
UklCVVRFLAorICAgIFBST1BfTlVMTEFCTEVfQk9PTEVBTl9BVFRSSUJVVEUsCisgICAgUFJPUF9O
VUxMQUJMRV9TVFJJTkdfQVRUUklCVVRFLAorICAgIFBST1BfTlVMTEFCTEVfTE9OR19TRVRUQUJM
RV9BVFRSSUJVVEUsCisgICAgUFJPUF9OVUxMQUJMRV9TVFJJTkdfVkFMVUUsCiB9OwogCiBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKQEAg
LTI2NCw2ICsyNzAsMTQgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLAogICAgICAgICBjb3JlU2Vs
Zi0+c2V0SWQoKGdfdmFsdWVfZ2V0X2xvbmcodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KKyAgICBjYXNlIFBST1BfTlVMTEFCTEVfTE9OR19TRVRUQUJMRV9BVFRSSUJVVEU6IHsKKyAg
ICAgICAgY29yZVNlbGYtPnNldE51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKChnX3ZhbHVl
X2dldF9sb25nKHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9Q
X05VTExBQkxFX1NUUklOR19WQUxVRTogeworICAgICAgICBjb3JlU2VsZi0+c2V0TnVsbGFibGVT
dHJpbmdWYWx1ZSgoZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC00OTks
NiArNTEzLDM3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwKICAgICAgICAgZ192YWx1ZV9zZXRf
bG9uZyh2YWx1ZSwgY29yZVNlbGYtPnJlcGxhY2VhYmxlQXR0cmlidXRlKCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgY2FzZSBQUk9QX05VTExBQkxFX0RPVUJMRV9BVFRSSUJVVEU6IHsK
KyAgICAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICAgICAgZ192YWx1ZV9zZXRfZG91Ymxl
KHZhbHVlLCBjb3JlU2VsZi0+bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfTlVMTEFCTEVfTE9OR19BVFRSSUJVVEU6
IHsKKyAgICAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICAgICAgZ192YWx1ZV9zZXRfbG9u
Zyh2YWx1ZSwgY29yZVNlbGYtPm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9OVUxMQUJMRV9CT09MRUFOX0FUVFJJQlVU
RTogeworICAgICAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCBjb3JlU2VsZi0+bnVsbGFibGVCb29sZWFuQXR0cmlidXRlKGlzTnVsbCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX05VTExBQkxFX1NUUklOR19B
VFRSSUJVVEU6IHsKKyAgICAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICAgICAgZ192YWx1
ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3JlU2VsZi0+bnVsbGFi
bGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBQUk9QX05VTExBQkxFX0xPTkdfU0VUVEFCTEVfQVRUUklCVVRFOiB7CisgICAgICAgIGJv
b2wgaXNOdWxsID0gZmFsc2U7CisgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVT
ZWxmLT5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9OVUxMQUJMRV9TVFJJTkdfVkFMVUU6IHsKKyAgICAg
ICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVTZWxmLT5udWxsYWJs
ZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC04ODcsNiArOTMyLDU2IEBA
IEdfTUFYTE9ORywgLyogbWF4ICovCiBHX01BWExPTkcsIC8qIG1heCAqLwogMCwgLyogZGVmYXVs
dCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfTlVMTEFCTEVfRE9VQkxFX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUoIm51bGxhYmxlLWRvdWJsZS1h
dHRyaWJ1dGUiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9udWxsYWJsZS1kb3VibGUtYXR0cmli
dXRlIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtb25seSAgZ2RvdWJsZSBUZXN0
T2JqLm51bGxhYmxlLWRvdWJsZS1hdHRyaWJ1dGUiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRo
IHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLUdfTUFYRE9VQkxFLCAvKiBtaW4gKi8K
K0dfTUFYRE9VQkxFLCAvKiBtYXggKi8KKzAuMCwgLyogZGVmYXVsdCAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmpl
Y3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTlVMTEFC
TEVfTE9OR19BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfbG9uZygibnVsbGFibGUtbG9uZy1hdHRyaWJ1dGUiLCAvKiBuYW1lICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ0ZXN0X29ial9udWxsYWJsZS1sb25nLWF0dHJpYnV0ZSIsIC8qIHNob3J0IGRlc2NyaXB0aW9u
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZWFkLW9ubHkgIGdsb25nIFRlc3RPYmoubnVsbGFibGUtbG9uZy1hdHRyaWJ1dGUi
LCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR19NSU5MT05HLCAvKiBtaW4gKi8KK0dfTUFYTE9ORywgLyogbWF4ICovCiswLCAvKiBkZWZh
dWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9OVUxMQUJMRV9CT09MRUFOX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJudWxsYWJsZS1ib29s
ZWFuLWF0dHJpYnV0ZSIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX251bGxhYmxlLWJvb2xlYW4t
YXR0cmlidXRlIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtb25seSAgZ2Jvb2xl
YW4gVGVzdE9iai5udWxsYWJsZS1ib29sZWFuLWF0dHJpYnV0ZSIsIC8qIGxvbmdlciAtIGNvdWxk
IGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgLyogZGVmYXVs
dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfTlVMTEFCTEVfU1RSSU5HX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoIm51bGxhYmxlLXN0cmluZy1h
dHRyaWJ1dGUiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9udWxsYWJsZS1zdHJpbmctYXR0cmli
dXRlIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtb25seSAgZ2NoYXIqIFRlc3RP
YmoubnVsbGFibGUtc3RyaW5nLWF0dHJpYnV0ZSIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGgg
c29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgLyogZGVmYXVsdCAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBREFCTEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
TlVMTEFCTEVfTE9OR19TRVRUQUJMRV9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfbG9uZygibnVsbGFibGUtbG9uZy1zZXR0YWJsZS1h
dHRyaWJ1dGUiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9udWxsYWJsZS1sb25nLXNldHRhYmxl
LWF0dHJpYnV0ZSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBnbG9u
ZyBUZXN0T2JqLm51bGxhYmxlLWxvbmctc2V0dGFibGUtYXR0cmlidXRlIiwgLyogbG9uZ2VyIC0g
Y291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOTE9ORywg
LyogbWluICovCitHX01BWExPTkcsIC8qIG1heCAqLworMCwgLyogZGVmYXVsdCAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X05VTExBQkxFX1NUUklOR19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19sb25nKCJudWxsYWJsZS1zdHJpbmctdmFsdWUiLCAvKiBuYW1lICov
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0ZXN0X29ial9udWxsYWJsZS1zdHJpbmctdmFsdWUiLCAvKiBzaG9ydCBkZXNjcmlwdGlv
biAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAicmVhZC13cml0ZSAgZ2xvbmcgVGVzdE9iai5udWxsYWJsZS1zdHJpbmctdmFsdWUi
LCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR19NSU5MT05HLCAvKiBtaW4gKi8KK0dfTUFYTE9ORywgLyogbWF4ICovCiswLCAvKiBkZWZh
dWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X29ial9pbml0KFdlYktpdERPTVRlc3RPYmoqIHJlcXVlc3QpCkBAIC0yMzAz
LDMgKzIzOTgsOTMgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVwbGFjZWFibGVfYXR0cmli
dXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorZ2Rv
dWJsZQord2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfZG91YmxlX2F0dHJpYnV0ZShX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1Rf
T0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgZ2RvdWJsZSByZXN1bHQgPSBp
dGVtLT5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZShpc051bGwpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2dsb25nCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9sb25nX2F0dHJp
YnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgZ2xvbmcgcmVzdWx0
ID0gaXRlbS0+bnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworZ2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2Jvb2xl
YW5fYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVEVTVF9PQkooc2VsZiksIEZBTFNFKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAg
Z2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+bnVsbGFibGVCb29sZWFuQXR0cmlidXRlKGlzTnVsbCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF9udWxsYWJsZV9zdHJpbmdfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgYm9vbCBpc051bGwgPSBm
YWxzZTsKKyAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5udWxs
YWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitn
bG9uZword2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfbG9uZ19zZXR0YWJsZV9hdHRy
aWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGdsb25nIHJlc3Vs
dCA9IGl0ZW0tPm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKGlzTnVsbCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfbnVsbGFibGVf
bG9uZ19zZXR0YWJsZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFs
dWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgV2ViQ29y
ZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5zZXROdWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSh2YWx1ZSk7Cit9CisKK2dsb25nCit3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9zdHJpbmdfdmFsdWUoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoo
c2VsZiksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCAw
KTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAg
IGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+bnVsbGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVj
KTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uIGVjZGVzYyhlYyk7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVh
cmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X29i
al9zZXRfbnVsbGFibGVfc3RyaW5nX3ZhbHVlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25n
IHZhbHVlKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIFdl
YkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0
TnVsbGFibGVTdHJpbmdWYWx1ZSh2YWx1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RP
YmouaAppbmRleCBlZjA2ZGRkYjlmNWU2MDQyZTE2ODZiNzVlZGE1YTEyYTliNjBkOGUxLi44MzRj
YWY3MGY2N2JjYmYyOTMwYWE1YTY2NDViZWNhYTBiNzE1YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE9iai5oCkBAIC0xMzg5LDYgKzEzODksODkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfaGFzaChXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIFdFQktJVF9BUEkgZ2xvbmcKIHdlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X3JlcGxhY2VhYmxlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9kb3Vi
bGVfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1
cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF9udWxsYWJsZV9kb3VibGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2xvbmdfYXR0cmlidXRlOgor
ICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwor
V0VCS0lUX0FQSSBnbG9uZword2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfbG9uZ19h
dHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfbnVsbGFibGVfYm9vbGVhbl9hdHRyaWJ1dGU6CisgKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdib29s
ZWFuCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9ib29sZWFuX2F0dHJpYnV0ZShX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF9udWxsYWJsZV9zdHJpbmdfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RP
YmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX3N0cmluZ19hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfbG9u
Z19zZXR0YWJsZV9hdHRyaWJ1dGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoK
KyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdsb25nCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9udWxsYWJsZV9sb25nX3NldHRhYmxlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9udWxsYWJsZV9sb25n
X3NldHRhYmxlX2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBA
dmFsdWU6IEEgI2dsb25nCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfbnVsbGFibGVfbG9uZ19zZXR0YWJsZV9hdHRyaWJ1
dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUpOworCisvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX3N0cmluZ192YWx1ZToKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0T2JqCisgKiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOgorICoK
KyoqLworV0VCS0lUX0FQSSBnbG9uZword2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVf
c3RyaW5nX3ZhbHVlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVycm9yKTsKKwor
LyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9udWxsYWJsZV9zdHJpbmdfdmFsdWU6Cisg
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnbG9uZworICoKKyAq
IFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X251bGxhYmxlX3N0cmluZ192YWx1ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2
YWx1ZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBXZWJLaXRET01UZXN0T2JqX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggMGFlZmIwNjk3NmI5MWRkZmU0YWI0YzhhYmU4YzhiNGNmMzg2NDQ3NC4u
NDUyMmU0MzhjMzBmZTA5ZWMwMDk2NzFmM2VhZWEzYWMwZGI4NmFlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTE0NywxMSArMTQ3LDE3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpU
YWJsZVZhbHVlc1tdID0KICAgICB7ICJpZCIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqSWQpLCAoaW50cHRyX3Qp
c2V0SlNUZXN0T2JqSWQsIE5vSW50cmluc2ljIH0sCiAgICAgeyAiaGFzaCIsIERvbnREZWxldGUg
fCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpIYXNoKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAi
cmVwbGFjZWFibGVBdHRyaWJ1dGUiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRl
KSwgKGludHB0cl90KXNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlLCBOb0ludHJpbnNp
YyB9LAorICAgIHsgIm51bGxhYmxlRG91YmxlQXR0cmlidXRlIiwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKSwgKGludHB0cl90KTAsIE5vSW50cmluc2lj
IH0sCisgICAgeyAibnVsbGFibGVMb25nQXR0cmlidXRlIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAor
ICAgIHsgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIsIERvbnREZWxldGUgfCBSZWFkT25seSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwK
KyAgICB7ICJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIsIERvbnREZWxldGUgfCBSZWFkT25seSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAor
ICAgIHsgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIiwgRG9udERlbGV0ZSwgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpOdWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpOdWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJudWxsYWJsZVN0
cmluZ1ZhbHVlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKSwgKGludHB0cl90
KXNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUsIE5vSW50cmluc2ljIH0sCiAgICAgeyAi
Y29uc3RydWN0b3IiLCBEb250RW51bSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yKSwgKGludHB0
cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9
OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialRhYmxlID0geyAxNDEsIDEyNywg
SlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0
T2JqVGFibGUgPSB7IDE0NSwgMTI3LCBKU1Rlc3RPYmpUYWJsZVZhbHVlcywgMCB9OwogLyogSGFz
aCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC05NzYsNiArOTgyLDg1IEBA
IEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0CiB9CiAKIAorSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgYm9v
bCBpc051bGwgPSBmYWxzZTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9i
aio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLT5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZShpc051bGwpKTsKKyAgICBpZiAoaXNOdWxsKQor
ICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1Zh
bHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLT5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKSk7Cisg
ICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Cisg
ICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwtPm51bGxhYmxlQm9vbGVh
bkF0dHJpYnV0ZShpc051bGwpKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4ganNO
dWxsKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdE9iak51bGxh
YmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBi
b29sIGlzTnVsbCA9IGZhbHNlOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKGV4ZWMsIGltcGwtPm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCkpOwor
ICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7Cisg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIGJvb2wgaXNOdWxsID0gZmFs
c2U7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rl
c3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLT5udWxsYWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpKTsKKyAg
ICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKIEpTVmFsdWUganNUZXN0
T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBkb21PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4o
YXNPYmplY3Qoc2xvdEJhc2UpKTsKQEAgLTE0MzUsNiArMTUyMCwyNCBAQCB2b2lkIHNldEpTVGVz
dE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNP
YmplY3QsIEpTVgogfQogCiAKK3ZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpbXBsLT5z
ZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSh2YWx1ZS50b0ludDMyKGV4ZWMpKTsKK30K
KworCit2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+
KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpbXBsLT5zZXROdWxsYWJsZVN0cmluZ1ZhbHVlKHZh
bHVlLnRvSW50MzIoZXhlYykpOworfQorCisKIEpTVmFsdWUgSlNUZXN0T2JqOjpnZXRDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE9iakNvbnN0cnVjdG9yPihleGVjLCBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCA2NDE1
NGU0NGU5ZWVmNzFhMGU2NTk0Yjk5NThkY2JmYTVlZGQwM2RhLi4zYzQ1MTM2OWU3NjM3OWZjMzA0
OWI2ZGJkOTQxOWRkMjY0NjRjMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC0zMzksNiArMzM5LDE0IEBAIHZvaWQg
c2V0SlNUZXN0T2JqSWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIHZvaWQgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSBqc1Rl
c3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9u
Z0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1Zh
bHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqTnVs
bGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFi
bGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
KTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdE9i
ak51bGxhYmxlU3RyaW5nVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogLy8gQ29uc3RhbnRzCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmouaAppbmRleCBjZWI1YWU4ZGI5MmIxODVkZGFlNTEyMmNjNzk2MTJkZWQwYTM0NzNj
Li4yYjhlYjg3ODcyNWYxOGEwMjc4ODVjZTViMmMyZmYzMTFkY2U2NzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
CkBAIC0xMTUsNiArMTE1LDEyIEBAIGVudW0gewogQHByb3BlcnR5IGludCBpZE5hbWU7CiBAcHJv
cGVydHkocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpoYXNoTmFtZTsKIEBwcm9wZXJ0eShyZWFk
b25seSkgaW50IHJlcGxhY2VhYmxlQXR0cmlidXRlOworQHByb3BlcnR5KHJlYWRvbmx5KSBkb3Vi
bGUgbnVsbGFibGVEb3VibGVBdHRyaWJ1dGU7CitAcHJvcGVydHkocmVhZG9ubHkpIGludCBudWxs
YWJsZUxvbmdBdHRyaWJ1dGU7CitAcHJvcGVydHkocmVhZG9ubHkpIEJPT0wgbnVsbGFibGVCb29s
ZWFuQXR0cmlidXRlOworQHByb3BlcnR5KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbnVsbGFi
bGVTdHJpbmdBdHRyaWJ1dGU7CitAcHJvcGVydHkgaW50IG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0
cmlidXRlOworQHByb3BlcnR5IGludCBudWxsYWJsZVN0cmluZ1ZhbHVlOwogCiAtICh2b2lkKXZv
aWRNZXRob2Q7CiAtICh2b2lkKXZvaWRNZXRob2RXaXRoQXJnczooaW50KWxvbmdBcmcgc3RyQXJn
OihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2Jq
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9i
ai5tbQppbmRleCA3ZGZiYWU4NDk3NjE0NzZkZmNjMTJhODU1YzBmNGI0YjkxYTAxZTcwLi5jODVj
ZGM4Mzc3NzFhNzRjMGFmZGVkYjZlMzY3ZDIyMjk1ZDEwNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAg
LTcxNiw2ICs3MTYsNTcgQEAKICAgICByZXR1cm4gSU1QTC0+cmVwbGFjZWFibGVBdHRyaWJ1dGUo
KTsKIH0KIAorLSAoZG91YmxlKW51bGxhYmxlRG91YmxlQXR0cmlidXRlCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5udWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZShpc051bGwpOworfQorCistIChpbnQpbnVsbGFibGVMb25nQXR0cmli
dXRlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJl
dHVybiBJTVBMLT5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKTsKK30KKworLSAoQk9PTClu
dWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShp
c051bGwpOworfQorCistIChOU1N0cmluZyAqKW51bGxhYmxlU3RyaW5nQXR0cmlidXRlCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBM
LT5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpOworfQorCistIChpbnQpbnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRl
KGlzTnVsbCk7Cit9CisKKy0gKHZvaWQpc2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGU6
KGludCluZXdOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXROdWxsYWJsZUxvbmdTZXR0
YWJsZUF0dHJpYnV0ZShuZXdOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk7Cit9CisKKy0g
KGludCludWxsYWJsZVN0cmluZ1ZhbHVlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlu
dCByZXN1bHQgPSBJTVBMLT5udWxsYWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpOworICAgIFdl
YkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAo
dm9pZClzZXROdWxsYWJsZVN0cmluZ1ZhbHVlOihpbnQpbmV3TnVsbGFibGVTdHJpbmdWYWx1ZQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5z
ZXROdWxsYWJsZVN0cmluZ1ZhbHVlKG5ld051bGxhYmxlU3RyaW5nVmFsdWUpOworfQorCiAtICh2
b2lkKXZvaWRNZXRob2QKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKaW5kZXggMjRhMGU2YzA5YTM4NmI2YmZhZmRiMGRjY2ViYTlkMmVmMjU1NjQ3OC4uMDMwNWQ1
YjY2ZTEyOWM0YzQxNGY3NWY5NDljZGI0NTgxYThiMDA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjcxLDQgKzI3MSwxNSBA
QCBlbnVtIFRlc3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFbnVtVmFsdWUyIiwgIkVu
dW1WYWx1ZTMiIH07CiAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChpbiBET01TdHJpbmcg
aGVhZCwgaW4gRE9NU3RyaW5nLi4uIHRhaWwpOwogICAgIHZvaWQgdmFyaWFkaWNEb3VibGVNZXRo
b2QoaW4gZG91YmxlIGhlYWQsIGluIGRvdWJsZS4uLiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGlj
Tm9kZU1ldGhvZChpbiBOb2RlIGhlYWQsIGluIE5vZGUuLi4gdGFpbCk7CisKKyAgICAvLyBOdWxs
YWJsZSBhdHRyaWJ1dGVzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGU/IG51bGxhYmxl
RG91YmxlQXR0cmlidXRlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nPyBudWxsYWJsZUxv
bmdBdHRyaWJ1dGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4/IG51bGxhYmxlQm9v
bGVhbkF0dHJpYnV0ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBudWxsYWJs
ZVN0cmluZ0F0dHJpYnV0ZTsKKworICAgIGF0dHJpYnV0ZSBsb25nPyBudWxsYWJsZUxvbmdTZXR0
YWJsZUF0dHJpYnV0ZTsKKworICAgIGF0dHJpYnV0ZSBsb25nPyBudWxsYWJsZVN0cmluZ1ZhbHVl
CisgICAgICAgIGdldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4
IGU3MmQxNmUwNDljOGMxMTEzM2QwOThiZjM1YjNlNjUxYjJjMmI5NjQuLjc0YWIzNGY3ZGQ3ZWZm
NjA4ZmVkNmI0Y2Y3NDU3ZmUzYzBmMWRlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0xNTM0LDYgKzE1MzQs
MTI1IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVwbGFjZWFibGVBdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBkb3VibGUgdiA9IGltcC0+bnVs
bGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICBy
ZXR1cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6
TmV3KHYpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlRG91Ymxl
QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGludCB2ID0gaW1wLT5udWxs
YWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1
cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKHYsIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxs
YWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RP
YmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8p
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlQm9vbGVhbkF0dHJp
YnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGJvb2wgdiA9
IGltcC0+bnVsbGFibGVCb29sZWFuQXR0cmlidXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4
Qm9vbGVhbih2LCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gbnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBu
dWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIGlzTnVsbCA9IGZh
bHNlOworICAgIFN0cmluZyB2ID0gaW1wLT5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwp
OworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRl
KCkpOworICAgIHJldHVybiB2OFN0cmluZyh2LCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5z
YWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsK
K30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUxvbmdTZXR0YWJsZUF0
dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNlOworICAgIGludCB2
ID0gaW1wLT5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpOworICAgIGlmIChp
c051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJl
dHVybiB2OEludGVnZXIodiwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCitzdGF0aWMgdm9pZCBu
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldE51
bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGlj
IHZvaWQgbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpudWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nVmFsdWVBdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYm9vbCBpc051bGwgPSBm
YWxzZTsKKyAgICBpbnQgdiA9IGltcC0+bnVsbGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVjKTsK
KyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgp
KTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9u
KGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdl
dElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVT
dHJpbmdWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50
ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCitz
dGF0aWMgdm9pZCBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0
TnVsbGFibGVTdHJpbmdWYWx1ZSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIG51
bGxhYmxlU3RyaW5nVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBkYXRhID0gaW5mby5EYXRhKCk7CkBAIC0yOTM0LDYgKzMwNTMsMTggQEAgc3RhdGljIGNv
bnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RPYmpBdHRyc1td
ID0gewogICAgIHsiaGFzaCIsIFRlc3RPYmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxi
YWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlcGxhY2VhYmxlQXR0
cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ1JlcGxhY2VhYmxl
JykKICAgICB7InJlcGxhY2VhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxh
Y2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVz
dE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAv
LyBBdHRyaWJ1dGUgJ251bGxhYmxlRG91YmxlQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0
dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIFRl
c3RPYmpWOEludGVybmFsOjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZUxvbmdBdHRy
aWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7Im51
bGxhYmxlTG9uZ0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRy
aWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJp
YnV0ZSAnbnVsbGFibGVCb29sZWFuQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0
ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlU3RyaW5nQXR0cmli
dXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJudWxs
YWJsZVN0cmluZ0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ0F0
dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0
cmlidXRlICdudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQorICAgIHsibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0
dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdudWxs
YWJsZVN0cmluZ1ZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJu
dWxsYWJsZVN0cmluZ1ZhbHVlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFs
dWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1Zh
bHVlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKIHN0YXRpYyBjb25z
dCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0T2JqTWV0aG9kc1tdID0g
ewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>