<?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>190997</bug_id>
          
          <creation_ts>2018-10-27 15:39:05 -0700</creation_ts>
          <short_desc>[WebIDL] Support serializing sequences and FrozenArrays of non-interfaces</short_desc>
          <delta_ts>2019-02-08 10:18:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=194439</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472752</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-27 15:39:05 -0700</bug_when>
    <thetext>[WebIDL] Support serializing sequences and FrozenArrays of non-interfaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472753</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-27 15:40:10 -0700</bug_when>
    <thetext>rdar://problem/35983035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472754</commentid>
    <comment_count>2</comment_count>
      <attachid>353247</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-27 15:46:10 -0700</bug_when>
    <thetext>Created attachment 353247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472794</commentid>
    <comment_count>3</comment_count>
      <attachid>353247</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-27 19:14:03 -0700</bug_when>
    <thetext>Comment on attachment 353247
Patch

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

&gt; Source/WebCore/bindings/scripts/test/TestSerialization.idl:42
&gt; +    attribute sequence&lt;TestSerializationInheritFinal&gt; twelthInterfaceSequenceAttribute;

twelth!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472795</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-27 19:38:47 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 353247 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353247&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/TestSerialization.idl:42
&gt; &gt; +    attribute sequence&lt;TestSerializationInheritFinal&gt; twelthInterfaceSequenceAttribute;
&gt; 
&gt; twelth

🤦‍♂️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472809</commentid>
    <comment_count>5</comment_count>
      <attachid>353254</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-28 05:38:14 -0700</bug_when>
    <thetext>Created attachment 353254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473529</commentid>
    <comment_count>6</comment_count>
      <attachid>353254</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-10-30 17:30:34 -0700</bug_when>
    <thetext>Comment on attachment 353254
Patch

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

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp:646
&gt; +    auto tenthFrozenArrayAttributeValue = jsTestSerializationTenthFrozenArrayAttributeGetter(state, thisObject, throwScope);
&gt; +    throwScope.assertNoException();
&gt; +    result-&gt;putDirect(vm, Identifier::fromString(&amp;vm, &quot;tenthFrozenArrayAttribute&quot;), tenthFrozenArrayAttributeValue);
&gt; +
&gt; +    auto eleventhSequenceAttributeValue = jsTestSerializationEleventhSequenceAttributeGetter(state, thisObject, throwScope);
&gt; +    throwScope.assertNoException();
&gt; +    result-&gt;putDirect(vm, Identifier::fromString(&amp;vm, &quot;eleventhSequenceAttribute&quot;), eleventhSequenceAttributeValue);

Is this actually putting the raw array on the serialized object? Should this need to be copied/cloned somewhere?

I&apos;d expect if there is:

    interface TestSerialization {
        attribute sequence&lt;DOMString&gt; seq;
        serializer = { attribute };
    }

That if I have an instance that looked like:

    let instance = new TestSerialization;
    instance.seq = [&quot;one&quot;, &quot;two&quot;];

The toJSON&apos;s seq should be separate from the instance&apos;s seq:

    assert( instance.toJSON().seq !== instance.seq ); // (1)

Such that modifications to the toJSON result should not affect the instance&apos;s:

    let json = instance.toJSON();
    assert( instance.seq.length === 2 );
    json.seq.push(&quot;test&quot;);
    assert( instance.seq.length === 2 ); // (2)

Right now it looks like we are directly putting the value on to the JSON. So I&apos;d think (1) and (2) would fail.

--

Honestly the spec doesn&apos;t seem too clear to me on this. (Note serializer became toJSON a while back):
https://heycam.github.io/webidl/#idl-tojson-operation

It&apos;s example only uses primitives, where getting the underlying value is a copy. It doesn&apos;t show what to do with non-primitives, or I&apos;m missing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473872</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-31 14:08:53 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #6)
&gt; Comment on attachment 353254 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353254&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp:646
&gt; &gt; +    auto tenthFrozenArrayAttributeValue = jsTestSerializationTenthFrozenArrayAttributeGetter(state, thisObject, throwScope);
&gt; &gt; +    throwScope.assertNoException();
&gt; &gt; +    result-&gt;putDirect(vm, Identifier::fromString(&amp;vm, &quot;tenthFrozenArrayAttribute&quot;), tenthFrozenArrayAttributeValue);
&gt; &gt; +
&gt; &gt; +    auto eleventhSequenceAttributeValue = jsTestSerializationEleventhSequenceAttributeGetter(state, thisObject, throwScope);
&gt; &gt; +    throwScope.assertNoException();
&gt; &gt; +    result-&gt;putDirect(vm, Identifier::fromString(&amp;vm, &quot;eleventhSequenceAttribute&quot;), eleventhSequenceAttributeValue);
&gt; 
&gt; Is this actually putting the raw array on the serialized object?
eleventhSequenceAttributeValue (for example) is a newly-created JSValue. jsTestSerializationEleventhSequenceAttributeGetter() calls toJS() on the wrapped object&apos;s Vector, which converts the vector&apos;s items into JSValues in a MarkedArgumentBuffer then creates a new array with JSC::constructArray().

But now that I think about it, we won&apos;t always get a new value if the attribute uses [CachedAttribute], [CustomGetter], or [CustomSetter]. I&apos;ll think about how to handle those.

In the meantime, I wrote a layout test to check your questions:

&gt; I&apos;d expect if there is:
&gt; 
&gt;     interface TestSerialization {
&gt;         attribute sequence&lt;DOMString&gt; seq;
&gt;         serializer = { attribute };
&gt;     }
&gt; 
&gt; That if I have an instance that looked like:
&gt; 
&gt;     let instance = new TestSerialization;
&gt;     instance.seq = [&quot;one&quot;, &quot;two&quot;];
&gt; 
&gt; The toJSON&apos;s seq should be separate from the instance&apos;s seq:
&gt; 
&gt;     assert( instance.toJSON().seq !== instance.seq ); // (1)
This assertion is true (the sequences are separate).

&gt; 
&gt; Such that modifications to the toJSON result should not affect the
&gt; instance&apos;s:
&gt; 
&gt;     let json = instance.toJSON();
&gt;     assert( instance.seq.length === 2 );
&gt;     json.seq.push(&quot;test&quot;);
&gt;     assert( instance.seq.length === 2 ); // (2)
These two assertions are also true (the sequences are separate).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473881</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-10-31 14:43:10 -0700</bug_when>
    <thetext>&gt; &gt; The toJSON&apos;s seq should be separate from the instance&apos;s seq:
&gt; &gt; 
&gt; &gt;     assert( instance.toJSON().seq !== instance.seq ); // (1)
&gt; This assertion is true (the sequences are separate).
&gt; 
&gt; &gt; 
&gt; &gt; Such that modifications to the toJSON result should not affect the
&gt; &gt; instance&apos;s:
&gt; &gt; 
&gt; &gt;     let json = instance.toJSON();
&gt; &gt;     assert( instance.seq.length === 2 );
&gt; &gt;     json.seq.push(&quot;test&quot;);
&gt; &gt;     assert( instance.seq.length === 2 ); // (2)
&gt; These two assertions are also true (the sequences are separate).

Awesome, then this is looking good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503991</commentid>
    <comment_count>9</comment_count>
      <attachid>361462</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-02-07 16:04:56 -0800</bug_when>
    <thetext>Created attachment 361462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504181</commentid>
    <comment_count>10</comment_count>
      <attachid>361462</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-02-08 09:07:14 -0800</bug_when>
    <thetext>Comment on attachment 361462
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:14
&gt; +        left that as a follow-up task, since I don&apos;t see any IDLs that currently need this.

If there are specs that support this idea, I think we should file a Bugzilla now that tracks this, and reference it in your FIXME comment.

But, if no IDL needs this at all I guess we don&apos;t have to track work that isn&apos;t even conceptually needed.

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:957
&gt; +        # FIXME: Teach GenerateSerializerDefinition to serialize sequences of interfaces, then remove this line.

FIXME(Bug), please...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504194</commentid>
    <comment_count>11</comment_count>
      <attachid>361462</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-02-08 09:33:44 -0800</bug_when>
    <thetext>Comment on attachment 361462
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        left that as a follow-up task, since I don&apos;t see any IDLs that currently need this.
&gt; 
&gt; If there are specs that support this idea, I think we should file a Bugzilla now that tracks this, and reference it in your FIXME comment.
&gt; 
&gt; But, if no IDL needs this at all I guess we don&apos;t have to track work that isn&apos;t even conceptually needed.

Filed bug #194439 and will add a comment below.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504195</commentid>
    <comment_count>12</comment_count>
      <attachid>361511</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-02-08 09:41:06 -0800</bug_when>
    <thetext>Created attachment 361511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504206</commentid>
    <comment_count>13</comment_count>
      <attachid>361511</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-08 10:18:33 -0800</bug_when>
    <thetext>Comment on attachment 361511
Patch

Clearing flags on attachment: 361511

Committed r241198: &lt;https://trac.webkit.org/changeset/241198&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504207</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-08 10:18:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353247</attachid>
            <date>2018-10-27 15:46:10 -0700</date>
            <delta_ts>2018-10-28 05:38:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190997-20181028004603.patch</filename>
            <type>text/plain</type>
            <size>18013</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRmNDI0NzcxYTg5MmM1
YmE2N2ZlOThjZjQ2M2Y3MGUzMWU1Yjk3YS4uZjkwODMxYzA1YzMyNDUxYjE5MWMwZjZkZGE3NWVj
MDFlZmMxYzJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTEwLTI3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0IHNl
cmlhbGl6aW5nIHNlcXVlbmNlcyBhbmQgRnJvemVuQXJyYXlzIG9mIG5vbi1pbnRlcmZhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5OTcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgzMDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgc2VyaWFsaXppbmcgc2VxdWVuY2VzIGFu
ZCBGcm96ZW5BcnJheXMgb2YgdHlwZXMgdGhhdCBhcmVuJ3QgaW50ZXJmYWNlcy4gVGhpcyBpcwor
ICAgICAgICBuZWVkZWQgdG8gcHJvcGVybHkgc2VyaWFsaXplIFBheW1lbnRBZGRyZXNzZXMsIHdo
aWNoIGhhdmUgRnJvemVuQXJyYXlzIG9mIERPTVN0cmluZ3MuCisKKyAgICAgICAgV2Ugc2hvdWxk
IHN1cHBvcnQgc2VyaWFsaXppbmcgc2VxdWVuY2VzIG9mIGludGVyZmFjZXMgdG9vLCBidXQgdGhh
dCdzIHNsaWdodGx5IG1vcmUKKyAgICAgICAgY29tcGxpY2F0ZWQgc2luY2UgaXQgaW52b2x2ZXMg
aXRlcmF0aW5nIHRoZSBzZXF1ZW5jZSBhbmQgc2VyaWFsaXppbmcgZWFjaCBpdGVtIGludG8gYSBu
ZXcKKyAgICAgICAgYXJyYXkuIEkgbGVmdCB0aGF0IGFzIGEgZm9sbG93LXVwIHRhc2ssIHNpbmNl
IEkgZG9uJ3Qgc2VlIGFueSBJRExzIHRoYXQgY3VycmVubHkgcmVxdWlyZQorICAgICAgICB0aGlz
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgQWRkZWQgYmluZGluZ3MgdGVzdCBjYXNlcyB0byBU
ZXN0U2VyaWFsaXphdGlvbi5pZGwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG06CisgICAgICAgIChHZXRJbnRlcmZhY2VGb3JUeXBlKToKKyAgICAgICAgKElz
U2VyaWFsaXphYmxlVHlwZSk6CisgICAgICAgIChHZXRJbnRlcmZhY2VGb3JBdHRyaWJ1dGUpOiBE
ZWxldGVkLgorICAgICAgICAoSXNTZXJpYWxpemFibGVBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVTZXJpYWxpemVyRGVmaW5pdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGVHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlB
dHRyaWJ1dGVTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXphdGlv
blRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2Vy
aWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRy
aWJ1dGVTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXphdGlvbkVs
ZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFs
aXphdGlvblR3ZWx0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6YXRpb25Ud2VsdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVHdlbHRoSW50
ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0U2VyaWFsaXphdGlvblR3ZWx0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb246OnNlcmlhbGl6ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemF0aW9uLmlkbDoKKwogMjAxOC0xMC0y
NyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdW0VNRV0gUG9zdCBrZXkgcmVjZWl2ZWQgdG8gYnVzIHNob3VsZCBiZSBk
b25lIGJlZm9yZSB3YWtpbmcgdXAgb3RoZXIgdGhyZWFkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDc1YzE5ZWNkYmE4NjhmNTJk
Mjk4MWRmNzUwZmQ1OTNkNzYyMzg5NDMuLjExMTcxMWY1OWY0OTUwYTNhZTg4MmI0MzIyYjM4ODMw
MmQxMzc1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0KQEAgLTMxNywxMyArMzE3LDEzIEBAIHN1YiBJRExGaWxlRm9ySW50ZXJmYWNl
CiAgICAgcmV0dXJuICRpZGxGaWxlcy0+eyRpbnRlcmZhY2VOYW1lfTsKIH0KIAotc3ViIEdldElu
dGVyZmFjZUZvckF0dHJpYnV0ZQorc3ViIEdldEludGVyZmFjZUZvclR5cGUKIHsKLSAgICBteSAo
JG9iamVjdCwgJGN1cnJlbnRJbnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87CisgICAgbXkgKCRv
YmplY3QsICRjdXJyZW50SW50ZXJmYWNlLCAkdHlwZSkgPSBAXzsKIAotICAgIHJldHVybiB1bmRl
ZiB1bmxlc3MgJG9iamVjdC0+SXNJbnRlcmZhY2VUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOworICAg
IHJldHVybiB1bmRlZiB1bmxlc3MgJG9iamVjdC0+SXNJbnRlcmZhY2VUeXBlKCR0eXBlKTsKIAot
ICAgIHJldHVybiAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkY3VycmVudEludGVyZmFjZSwgJGF0
dHJpYnV0ZS0+dHlwZS0+bmFtZSk7CisgICAgcmV0dXJuICRvYmplY3QtPlBhcnNlSW50ZXJmYWNl
KCRjdXJyZW50SW50ZXJmYWNlLCAkdHlwZS0+bmFtZSk7CiB9CiAKIHN1YiBHZXRBdHRyaWJ1dGVG
cm9tSW50ZXJmYWNlCkBAIC05MzUsMjkgKzkzNSwzNyBAQCBzdWIgSW5oZXJpdHNTZXJpYWxpemFi
bGUKICAgICByZXR1cm4gJGFueVBhcmVudElzU2VyaWFsaXphYmxlOwogfQogCi1zdWIgSXNTZXJp
YWxpemFibGVBdHRyaWJ1dGUKK3N1YiBJc1NlcmlhbGl6YWJsZVR5cGUKIHsKLSAgICBteSAoJG9i
amVjdCwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgPSBAXzsKKyAgICBteSAoJG9iamVjdCwgJGlu
dGVyZmFjZSwgJHR5cGUpID0gQF87CiAKICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI2Rmbi1zZXJpYWxpemFibGUtdHlwZQogCi0gICAgbXkgJHR5cGUgPSAkYXR0cmlidXRl
LT50eXBlOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJib29sZWFuIjsKICAgICBy
ZXR1cm4gMSBpZiAkb2JqZWN0LT5Jc051bWVyaWNUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMSBp
ZiAkb2JqZWN0LT5Jc0VudW1UeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMSBpZiAkb2JqZWN0LT5J
c1N0cmluZ1R5cGUoJHR5cGUpOwogICAgIHJldHVybiAwIGlmICR0eXBlLT5uYW1lIGVxICJFdmVu
dEhhbmRsZXIiOwogCi0gICAgaWYgKCR0eXBlLT5pc1VuaW9uIHx8ICRvYmplY3QtPklzU2VxdWVu
Y2VUeXBlKCR0eXBlKSB8fCAkb2JqZWN0LT5Jc0RpY3Rpb25hcnlUeXBlKCR0eXBlKSkgewotICAg
ICAgICBkaWUgIlNlcmlhbGl6ZXIgZm9yIG5vbi1wcmltaXRpdmUgdHlwZXMgaXMgbm90IGN1cnJl
bnRseSBzdXBwb3J0ZWRcbiI7CisgICAgaWYgKCR0eXBlLT5pc1VuaW9uIHx8ICRvYmplY3QtPklz
RGljdGlvbmFyeVR5cGUoJHR5cGUpKSB7CisgICAgICAgIGRpZSAiU2VyaWFsaXplcnMgZm9yIHVu
aW9uIGFuZCBkaWN0aW9uYXJ5IHR5cGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZFxuIjsK
KyAgICB9CisKKyAgICBpZiAoJG9iamVjdC0+SXNTZXF1ZW5jZU9yRnJvemVuQXJyYXlUeXBlKCR0
eXBlKSkgeworICAgICAgICBteSAkc3VidHlwZSA9IEB7JHR5cGUtPnN1YnR5cGVzfVswXTsKKwor
ICAgICAgICAjIEZJWE1FOiBUZWFjaCBHZW5lcmF0ZVNlcmlhbGl6ZXJEZWZpbml0aW9uIHRvIHNl
cmlhbGl6ZSBzZXF1ZW5jZXMgb2YgaW50ZXJmYWNlcywgdGhlbiByZW1vdmUgdGhpcyBsaW5lLgor
ICAgICAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc0ludGVyZmFjZVR5cGUoJHN1YnR5cGUpOwor
CisgICAgICAgIHJldHVybiAkb2JqZWN0LT5Jc1NlcmlhbGl6YWJsZVR5cGUoJGludGVyZmFjZSwg
JHN1YnR5cGUpOwogICAgIH0KIAogICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc0ludGVyZmFj
ZVR5cGUoJHR5cGUpOwogCi0gICAgbXkgJGludGVyZmFjZUZvckF0dHJpYnV0ZSA9ICRvYmplY3Qt
PkdldEludGVyZmFjZUZvckF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICBp
ZiAoJGludGVyZmFjZUZvckF0dHJpYnV0ZSkgewotICAgICAgICByZXR1cm4gMSBpZiAkaW50ZXJm
YWNlRm9yQXR0cmlidXRlLT5zZXJpYWxpemFibGU7Ci0gICAgICAgIHJldHVybiAkb2JqZWN0LT5J
bmhlcml0c1NlcmlhbGl6YWJsZSgkaW50ZXJmYWNlRm9yQXR0cmlidXRlKTsKKyAgICBteSAkaW50
ZXJmYWNlRm9yVHlwZSA9ICRvYmplY3QtPkdldEludGVyZmFjZUZvclR5cGUoJGludGVyZmFjZSwg
JHR5cGUpOworICAgIGlmICgkaW50ZXJmYWNlRm9yVHlwZSkgeworICAgICAgICByZXR1cm4gMSBp
ZiAkaW50ZXJmYWNlRm9yVHlwZS0+c2VyaWFsaXphYmxlOworICAgICAgICByZXR1cm4gJG9iamVj
dC0+SW5oZXJpdHNTZXJpYWxpemFibGUoJGludGVyZmFjZUZvclR5cGUpOwogICAgIH0KIAogICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCA0OGZjZTdiYzE2YTg4MGQ2M2Y0MzJhMDE4ZjFmZWUyZjY3YmY1
YmRjLi40NDNkYmRkZWQ2ODgzZjg4ZjA2ZjM0YmUzMWZhMWE1MGQzN2U3ZDgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
NTMxMiw3ICs1MzEyLDcgQEAgc3ViIEdlbmVyYXRlU2VyaWFsaXplckRlZmluaXRpb24KICAgICAg
ICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAg
ICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZU5hbWUgZXEgJGF0dHJpYnV0ZS0+bmFtZSkgewogICAg
ICAgICAgICAgICAgICRmb3VuZEF0dHJpYnV0ZSA9IDE7Ci0gICAgICAgICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1NlcmlhbGl6YWJsZUF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmli
dXRlKSkgeworICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTZXJpYWxpemFi
bGVUeXBlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQHNlcmlhbGl6ZWRBdHRyaWJ1dGVzLCAkYXR0cmlidXRlKTsgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICAgfSAgICAgICAg
ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKaW5kZXggZTNjMWNjMjU5
YTFkMjc4NzlhMjY3ZDlmNDQ1OGQ1ZDQ4OWE2ODc5Mi4uZGQyOGFiMzcxNDQ2NDhhYjAwYzEzZGFk
MTdlZTE3YTQ4YTllMDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcApAQCAtMjQs
OSArMjQsMTEgQEAKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgi
CisjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bGxhYmxlLmgiCiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNl
cy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKQEAgLTM5
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtNzQsNiAr
NzcsMTIgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRWlnaHRoSW5k
aXJlY3RseUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSoKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXph
dGlvbkVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0U2VyaWFsaXphdGlvbk5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbk5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlh
bGl6YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0
aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlv
blRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdFNl
cmlhbGl6YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Ud2VsdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
K2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblR3ZWx0aEludGVyZmFjZVNlcXVlbmNlQXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiAKIGNsYXNzIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTEzMSw2ICsxNDAsOSBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQogICAgIHsgInNldmVudGhEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
U2VyaWFsaXphdGlvblNldmVudGhEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dFNlcmlhbGl6YXRpb25TZXZlbnRoRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUpIH0gfSwK
ICAgICB7ICJlaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uRWlnaHRo
SW5kaXJlY3RseUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25FaWdodGhJbmRpcmVjdGx5
QXR0cmlidXRlKSB9IH0sCiAgICAgeyAibmludGhPcHRpb25hbERpcmVjdGx5U2VyaWFsaXphYmxl
QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uTmludGhPcHRpb25hbERpcmVjdGx5U2VyaWFsaXph
YmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2VyaWFsaXphdGlvbk5pbnRoT3B0aW9uYWxEaXJlY3RseVNl
cmlhbGl6YWJsZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgInRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2Vy
aWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJlbGV2ZW50
aFNlcXVlbmNlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJp
YnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlKSB9IH0s
CisgICAgeyAidHdlbHRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6YXRp
b25Ud2VsdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25U
d2VsdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSkgfSB9LAogICAgIHsgInRvSlNPTiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKSwgKGludHB0cl90KSAoMCkg
fSB9LAogfTsKIApAQCAtNDg5LDYgKzUwMSw5OSBAQCBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRp
b25OaW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKgog
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbj46OnNldDxzZXRKU1Rl
c3RTZXJpYWxpemF0aW9uTmludGhPcHRpb25hbERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRl
U2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibmludGhPcHRpb25hbERp
cmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlIik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZUdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRnJvemVuQXJyYXk8SURMQm9vbGVhbj4+KHN0
YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50ZW50aEZy
b3plbkFycmF5QXR0cmlidXRlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbj46OmdldDxqc1Rlc3RT
ZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCB0aGlzVmFsdWUsICJ0ZW50aEZyb3plbkFycmF5
QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0
aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRnJvemVuQXJyYXk8SURMQm9vbGVhbj4+KHN0YXRlLCB2YWx1ZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRUZW50
aEZyb3plbkFycmF5QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96
ZW5BcnJheUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXphdGlvblRlbnRo
RnJvemVuQXJyYXlBdHRyaWJ1dGVTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJ0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZUdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4o
c3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmVsZXZl
bnRoU2VxdWVuY2VBdHRyaWJ1dGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Z2V0PGpzVGVz
dFNlcmlhbGl6YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigqc3RhdGUsIHRoaXNWYWx1ZSwgImVsZXZlbnRoU2VxdWVu
Y2VBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6
YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgdmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0RWxl
dmVudGhTZXF1ZW5jZUF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRo
U2VxdWVuY2VBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6c2V0PHNldEpTVGVzdFNlcmlhbGl6YXRpb25FbGV2
ZW50aFNlcXVlbmNlQXR0cmlidXRlU2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0U2VyaWFsaXphdGlvblR3ZWx0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRl
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3Qs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExTZXF1ZW5jZTxJRExJbnRl
cmZhY2U8VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+Pj4oc3RhdGUsICp0aGlzT2JqZWN0
Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnR3ZWx0aEludGVyZmFjZVNlcXVlbmNl
QXR0cmlidXRlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpz
VGVzdFNlcmlhbGl6YXRpb25Ud2VsdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpnZXQ8anNUZXN0U2Vy
aWFsaXphdGlvblR3ZWx0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigqc3RhdGUsIHRoaXNWYWx1ZSwgInR3ZWx0aEludGVy
ZmFjZVNlcXVlbmNlQXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RTZXJpYWxpemF0aW9uVHdlbHRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXRGaW5hbD4+PihzdGF0ZSwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0VHdlbHRoSW50ZXJm
YWNlU2VxdWVuY2VBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Ud2VsdGhJbnRl
cmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXphdGlv
blR3ZWx0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlU2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAidHdlbHRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUiKTsKK30K
KwogSlNDOjpKU09iamVjdCogSlNUZXN0U2VyaWFsaXphdGlvbjo6c2VyaWFsaXplKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgYXV0byYg
dm0gPSBzdGF0ZS52bSgpOwpAQCAtNTMyLDYgKzYzNywxNCBAQCBKU0M6OkpTT2JqZWN0KiBKU1Rl
c3RTZXJpYWxpemF0aW9uOjpzZXJpYWxpemUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFs
aXphdAogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJuaW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRy
aWJ1dGUiKSwgbmludGhPcHRpb25hbERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlVmFsdWUp
OwogCisgICAgYXV0byB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlVmFsdWUgPSBqc1Rlc3RTZXJp
YWxpemF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZUdldHRlcihzdGF0ZSwgdGhpc09iamVj
dCwgdGhyb3dTY29wZSk7CisgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRlbnRo
RnJvemVuQXJyYXlBdHRyaWJ1dGUiKSwgdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZVZhbHVlKTsK
KworICAgIGF1dG8gZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlID0ganNUZXN0U2VyaWFs
aXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIoc3RhdGUsIHRoaXNPYmplY3Qs
IHRocm93U2NvcGUpOworICAgIHRocm93U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJlbGV2ZW50
aFNlcXVlbmNlQXR0cmlidXRlIiksIGVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVWYWx1ZSk7CisK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6YXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemF0aW9uLmlkbAppbmRleCAwYzcyZTkx
OTYyM2U5NWI5MjE1YTJlNzJlZjQ2M2E1NjU1MzdkNjhmLi41ZmEwOTk4ZGZmNjg2ZTVlZmIxMzVj
MmVhN2E3NTA5ZTMyNzg5NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6YXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFsaXphdGlvbi5pZGwKQEAgLTM3LDUgKzM3LDkg
QEAgaW50ZXJmYWNlIFRlc3RTZXJpYWxpemF0aW9uIHsKICAgICBhdHRyaWJ1dGUgVGVzdFNlcmlh
bGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlIGVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGU7CiAg
ICAgYXR0cmlidXRlIFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsPyBuaW50aE9wdGlvbmFs
RGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGU7CiAKKyAgICBhdHRyaWJ1dGUgRnJvemVuQXJy
YXk8Ym9vbGVhbj4gdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZTsKKyAgICBhdHRyaWJ1dGUgc2Vx
dWVuY2U8RE9NU3RyaW5nPiBlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlOworICAgIGF0dHJpYnV0
ZSBzZXF1ZW5jZTxUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD4gdHdlbHRoSW50ZXJmYWNl
U2VxdWVuY2VBdHRyaWJ1dGU7CisKICAgICBzZXJpYWxpemVyID0geyBhdHRyaWJ1dGUgfTsKIH07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353254</attachid>
            <date>2018-10-28 05:38:14 -0700</date>
            <delta_ts>2019-02-07 16:04:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190997-20181028053812.patch</filename>
            <type>text/plain</type>
            <size>17992</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRmNDI0NzcxYTg5MmM1
YmE2N2ZlOThjZjQ2M2Y3MGUzMWU1Yjk3YS4uMWI2ZTRkMWEwZDJlNWQzMWM0NDMwMjlmNzE0NGJl
MTJiNTVkZTQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTEwLTI3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0IHNl
cmlhbGl6aW5nIHNlcXVlbmNlcyBhbmQgRnJvemVuQXJyYXlzIG9mIG5vbi1pbnRlcmZhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5OTcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgzMDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgc2VyaWFsaXppbmcgc2VxdWVuY2VzIGFu
ZCBGcm96ZW5BcnJheXMgb2YgdHlwZXMgdGhhdCBhcmVuJ3QgaW50ZXJmYWNlcy4gVGhpcyBpcwor
ICAgICAgICBuZWVkZWQgdG8gcHJvcGVybHkgc2VyaWFsaXplIFBheW1lbnRBZGRyZXNzLCB3aGlj
aCBoYXMgYSBGcm96ZW5BcnJheSBvZiBET01TdHJpbmdzLgorCisgICAgICAgIFdlIHNob3VsZCBz
dXBwb3J0IHNlcmlhbGl6aW5nIHNlcXVlbmNlcyBvZiBpbnRlcmZhY2VzIHRvbywgYnV0IHRoYXQn
cyBzbGlnaHRseSBtb3JlCisgICAgICAgIGNvbXBsaWNhdGVkIHNpbmNlIGl0IGludm9sdmVzIGl0
ZXJhdGluZyB0aGUgc2VxdWVuY2UgYW5kIHNlcmlhbGl6aW5nIGVhY2ggb2YgaXRzIGl0ZW1zLiBJ
CisgICAgICAgIGxlZnQgdGhhdCBhcyBhIGZvbGxvdy11cCB0YXNrLCBzaW5jZSBJIGRvbid0IHNl
ZSBhbnkgSURMcyB0aGF0IGN1cnJlbmx5IG5lZWQgdGhpcy4KKworICAgICAgICBBZGRlZCBiaW5k
aW5ncyB0ZXN0IGNhc2VzIHRvIFRlc3RTZXJpYWxpemF0aW9uLmlkbC4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldEludGVyZmFjZUZv
clR5cGUpOgorICAgICAgICAoSXNTZXJpYWxpemFibGVUeXBlKToKKyAgICAgICAgKEdldEludGVy
ZmFjZUZvckF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChJc1NlcmlhbGl6YWJsZUF0dHJp
YnV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgIChHZW5lcmF0ZVNlcmlhbGl6ZXJEZWZpbml0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0
ZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96
ZW5BcnJheUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0
aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZUdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1
ZW5jZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0aW9u
RWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemF0aW9uVHdlbHRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1
dGVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXphdGlvblR3ZWx0aElu
dGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNl
cmlhbGl6YXRpb25Ud2VsdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZVNldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVHdlbHRoSW50ZXJmYWNlU2VxdWVu
Y2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXphdGlvbjo6c2Vy
aWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6YXRp
b24uaWRsOgorCiAyMDE4LTEwLTI3ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bRU1FXSBQb3N0IGtleSByZWNlaXZl
ZCB0byBidXMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHdha2luZyB1cCBvdGhlciB0aHJlYWRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5k
ZXggNzVjMTllY2RiYTg2OGY1MmQyOTgxZGY3NTBmZDU5M2Q3NjIzODk0My4uMTExNzExZjU5ZjQ5
NTBhM2FlODgyYjQzMjJiMzg4MzAyZDEzNzVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMzE3LDEzICszMTcsMTMgQEAgc3Vi
IElETEZpbGVGb3JJbnRlcmZhY2UKICAgICByZXR1cm4gJGlkbEZpbGVzLT57JGludGVyZmFjZU5h
bWV9OwogfQogCi1zdWIgR2V0SW50ZXJmYWNlRm9yQXR0cmlidXRlCitzdWIgR2V0SW50ZXJmYWNl
Rm9yVHlwZQogewotICAgIG15ICgkb2JqZWN0LCAkY3VycmVudEludGVyZmFjZSwgJGF0dHJpYnV0
ZSkgPSBAXzsKKyAgICBteSAoJG9iamVjdCwgJGN1cnJlbnRJbnRlcmZhY2UsICR0eXBlKSA9IEBf
OwogCi0gICAgcmV0dXJuIHVuZGVmIHVubGVzcyAkb2JqZWN0LT5Jc0ludGVyZmFjZVR5cGUoJGF0
dHJpYnV0ZS0+dHlwZSk7CisgICAgcmV0dXJuIHVuZGVmIHVubGVzcyAkb2JqZWN0LT5Jc0ludGVy
ZmFjZVR5cGUoJHR5cGUpOwogCi0gICAgcmV0dXJuICRvYmplY3QtPlBhcnNlSW50ZXJmYWNlKCRj
dXJyZW50SW50ZXJmYWNlLCAkYXR0cmlidXRlLT50eXBlLT5uYW1lKTsKKyAgICByZXR1cm4gJG9i
amVjdC0+UGFyc2VJbnRlcmZhY2UoJGN1cnJlbnRJbnRlcmZhY2UsICR0eXBlLT5uYW1lKTsKIH0K
IAogc3ViIEdldEF0dHJpYnV0ZUZyb21JbnRlcmZhY2UKQEAgLTkzNSwyOSArOTM1LDM3IEBAIHN1
YiBJbmhlcml0c1NlcmlhbGl6YWJsZQogICAgIHJldHVybiAkYW55UGFyZW50SXNTZXJpYWxpemFi
bGU7CiB9CiAKLXN1YiBJc1NlcmlhbGl6YWJsZUF0dHJpYnV0ZQorc3ViIElzU2VyaWFsaXphYmxl
VHlwZQogewotICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOwor
ICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkdHlwZSkgPSBAXzsKIAogICAgICMgaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLXNlcmlhbGl6YWJsZS10eXBlCiAKLSAgICBt
eSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGU7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUg
ZXEgImJvb2xlYW4iOwogICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzTnVtZXJpY1R5cGUoJHR5
cGUpOwogICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzRW51bVR5cGUoJHR5cGUpOwogICAgIHJl
dHVybiAxIGlmICRvYmplY3QtPklzU3RyaW5nVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDAgaWYg
JHR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciI7CiAKLSAgICBpZiAoJHR5cGUtPmlzVW5pb24g
fHwgJG9iamVjdC0+SXNTZXF1ZW5jZVR5cGUoJHR5cGUpIHx8ICRvYmplY3QtPklzRGljdGlvbmFy
eVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgIGRpZSAiU2VyaWFsaXplciBmb3Igbm9uLXByaW1pdGl2
ZSB0eXBlcyBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZFxuIjsKKyAgICBpZiAoJHR5cGUtPmlz
VW5pb24gfHwgJG9iamVjdC0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSkpIHsKKyAgICAgICAgZGll
ICJTZXJpYWxpemVycyBmb3IgdW5pb24gYW5kIGRpY3Rpb25hcnkgdHlwZXMgYXJlIG5vdCBjdXJy
ZW50bHkgc3VwcG9ydGVkXG4iOworICAgIH0KKworICAgIGlmICgkb2JqZWN0LT5Jc1NlcXVlbmNl
T3JGcm96ZW5BcnJheVR5cGUoJHR5cGUpKSB7CisgICAgICAgIG15ICRzdWJ0eXBlID0gQHskdHlw
ZS0+c3VidHlwZXN9WzBdOworCisgICAgICAgICMgRklYTUU6IFRlYWNoIEdlbmVyYXRlU2VyaWFs
aXplckRlZmluaXRpb24gdG8gc2VyaWFsaXplIHNlcXVlbmNlcyBvZiBpbnRlcmZhY2VzLCB0aGVu
IHJlbW92ZSB0aGlzIGxpbmUuCisgICAgICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzSW50ZXJm
YWNlVHlwZSgkc3VidHlwZSk7CisKKyAgICAgICAgcmV0dXJuICRvYmplY3QtPklzU2VyaWFsaXph
YmxlVHlwZSgkaW50ZXJmYWNlLCAkc3VidHlwZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIDAgaWYg
ISRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CiAKLSAgICBteSAkaW50ZXJmYWNlRm9y
QXR0cmlidXRlID0gJG9iamVjdC0+R2V0SW50ZXJmYWNlRm9yQXR0cmlidXRlKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpOwotICAgIGlmICgkaW50ZXJmYWNlRm9yQXR0cmlidXRlKSB7Ci0gICAgICAg
IHJldHVybiAxIGlmICRpbnRlcmZhY2VGb3JBdHRyaWJ1dGUtPnNlcmlhbGl6YWJsZTsKLSAgICAg
ICAgcmV0dXJuICRvYmplY3QtPkluaGVyaXRzU2VyaWFsaXphYmxlKCRpbnRlcmZhY2VGb3JBdHRy
aWJ1dGUpOworICAgIG15ICRpbnRlcmZhY2VGb3JUeXBlID0gJG9iamVjdC0+R2V0SW50ZXJmYWNl
Rm9yVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgaWYgKCRpbnRlcmZhY2VGb3JUeXBlKSB7
CisgICAgICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VGb3JUeXBlLT5zZXJpYWxpemFibGU7Cisg
ICAgICAgIHJldHVybiAkb2JqZWN0LT5Jbmhlcml0c1NlcmlhbGl6YWJsZSgkaW50ZXJmYWNlRm9y
VHlwZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDQ4ZmNlN2JjMTZhODgwZDYz
ZjQzMmEwMThmMWZlZTJmNjdiZjViZGMuLjQ0M2RiZGRlZDY4ODNmODhmMDZmMzRiZTMxZmExYTUw
ZDM3ZTdkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC01MzEyLDcgKzUzMTIsNyBAQCBzdWIgR2VuZXJhdGVTZXJpYWxp
emVyRGVmaW5pdGlvbgogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFj
ZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlTmFtZSBlcSAkYXR0
cmlidXRlLT5uYW1lKSB7CiAgICAgICAgICAgICAgICAgJGZvdW5kQXR0cmlidXRlID0gMTsKLSAg
ICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU2VyaWFsaXphYmxlQXR0cmlidXRl
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc1NlcmlhbGl6YWJsZVR5cGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSkp
IHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAc2VyaWFsaXplZEF0dHJpYnV0ZXMsICRhdHRy
aWJ1dGUpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAg
ICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
LmNwcAppbmRleCBlM2MxY2MyNTlhMWQyNzg3OWEyNjdkOWY0NDU4ZDVkNDg5YTY4NzkyLi4zYzZh
MWM4NDg2MzBiZTcwOGRjYjU2ODBmZjJiMWQ1N2IyMzI4MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb24uY3BwCkBAIC0yNCw5ICsyNCwxMSBAQAogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRl
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0
TnVsbGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAi
SlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5o
IgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdC5oIgpAQCAtMzksNiArNDEsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQXJyYXkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CkBAIC03NCw2ICs3NywxMiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6YXRpb25FaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKgogYm9v
bCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uTmludGhPcHRpb25hbERpcmVjdGx5
U2VyaWFsaXphYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uTmludGhP
cHRpb25hbERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBz
ZXRKU1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvblR3ZWxmdGhJbnRlcmZh
Y2VTZXF1ZW5jZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblR3ZWxmdGhJ
bnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RTZXJpYWxpemF0aW9u
UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CkBAIC0x
MzEsNiArMTQwLDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFNlcmlhbGl6
YXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJzZXZlbnRoRGlyZWN0bHlTZXJp
YWxpemFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6YXRpb25TZXZlbnRoRGlyZWN0bHlTZXJpYWxp
emFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0aW9uU2V2ZW50aERpcmVjdGx5U2VyaWFs
aXphYmxlQXR0cmlidXRlKSB9IH0sCiAgICAgeyAiZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0U2VyaWFsaXphdGlvbkVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxp
emF0aW9uRWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSkgfSB9LAogICAgIHsgIm5pbnRoT3B0aW9u
YWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXphdGlvbk5pbnRoT3B0
aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25O
aW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJ0
ZW50aEZyb3plbkFycmF5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJh
eUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmlidXRl
KSB9IH0sCisgICAgeyAiZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXphdGlv
bkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhT
ZXF1ZW5jZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgInR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0
dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0U2VyaWFsaXphdGlvblR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdFNlcmlhbGl6YXRpb25Ud2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUp
IH0gfSwKICAgICB7ICJ0b0pTT04iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlv
blRvSlNPTiksIChpbnRwdHJfdCkgKDApIH0gfSwKIH07CiAKQEAgLTQ4OSw2ICs1MDEsOTkgQEAg
Ym9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uTmludGhPcHRpb25hbERpcmVjdGx5U2VyaWFsaXph
YmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNl
cmlhbGl6YXRpb24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXphdGlvbk5pbnRoT3B0aW9uYWxEaXJl
Y3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIm5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSIpOwog
fQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVu
QXJyYXlBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlv
biYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEZy
b3plbkFycmF5PElETEJvb2xlYW4+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwudGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uVGVudGhG
cm96ZW5BcnJheUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNl
cmlhbGl6YXRpb24+OjpnZXQ8anNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlBdHRy
aWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGVTZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEZyb3plbkFycmF5PElETEJvb2xlYW4+Pihz
dGF0ZSwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OworICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAg
ICAgICAgcmV0dXJuIGltcGwuc2V0VGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZShXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgc2V0SlNU
ZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Cit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6c2V0PHNl
dEpTVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmlidXRlU2V0dGVyPigqc3Rh
dGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSIp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRo
U2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXph
dGlvbiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3Qo
KSwgdGhyb3dTY29wZSwgaW1wbC5lbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlKCkpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25FbGV2
ZW50aFNlcXVlbmNlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
U2VyaWFsaXphdGlvbj46OmdldDxqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0
dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCB0
aGlzVmFsdWUsICJlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVNl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Cisg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4o
c3RhdGUsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7Cisg
ICAgICAgIHJldHVybiBpbXBsLnNldEVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIHNldEpT
VGVzdFNlcmlhbGl6YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbj46OnNldDxz
ZXRKU1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVNldHRlcj4oKnN0
YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUi
KTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Ud2VsZnRo
SW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRG
aW5hbD4+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwudHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlKCkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Ud2VsZnRoSW50ZXJm
YWNlU2VxdWVuY2VBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RT
ZXJpYWxpemF0aW9uPjo6Z2V0PGpzVGVzdFNlcmlhbGl6YXRpb25Ud2VsZnRoSW50ZXJmYWNlU2Vx
dWVuY2VBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpz
dGF0ZSwgdGhpc1ZhbHVlLCAidHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlIik7Cit9
CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVHdlbGZ0aEludGVy
ZmFjZVNlcXVlbmNlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlh
bGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExT
ZXF1ZW5jZTxJRExJbnRlcmZhY2U8VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+Pj4oc3Rh
dGUsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
KyAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAg
ICAgIHJldHVybiBpbXBsLnNldFR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZShXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
c2V0SlNUZXN0U2VyaWFsaXphdGlvblR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6
YXRpb24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXphdGlvblR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5j
ZUF0dHJpYnV0ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInR3ZWxm
dGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSIpOworfQorCiBKU0M6OkpTT2JqZWN0KiBKU1Rl
c3RTZXJpYWxpemF0aW9uOjpzZXJpYWxpemUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFs
aXphdGlvbiYgdGhpc09iamVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7CkBAIC01
MzIsNiArNjM3LDE0IEBAIEpTQzo6SlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6YXRpb246OnNlcmlh
bGl6ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0CiAgICAgfSBlbHNlCiAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm5p
bnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSIpLCBuaW50aE9wdGlvbmFs
RGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGVWYWx1ZSk7CiAKKyAgICBhdXRvIHRlbnRoRnJv
emVuQXJyYXlBdHRyaWJ1dGVWYWx1ZSA9IGpzVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFy
cmF5QXR0cmlidXRlR2V0dGVyKHN0YXRlLCB0aGlzT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICB0
aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSIp
LCB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlVmFsdWUpOworCisgICAgYXV0byBlbGV2ZW50aFNl
cXVlbmNlQXR0cmlidXRlVmFsdWUgPSBqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5j
ZUF0dHJpYnV0ZUdldHRlcihzdGF0ZSwgdGhpc09iamVjdCwgdGhyb3dTY29wZSk7CisgICAgdGhy
b3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUiKSwg
ZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlKTsKKwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
U2VyaWFsaXphdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdFNlcmlhbGl6YXRpb24uaWRsCmluZGV4IDBjNzJlOTE5NjIzZTk1YjkyMTVhMmU3MmVmNDYz
YTU2NTUzN2Q2OGYuLjQxZWI3YjkzYWE5ZGQyM2Q3ZjczZDBjYTBmYTE3NGEzZjZjMzRlMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFs
aXphdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RTZXJpYWxpemF0aW9uLmlkbApAQCAtMzcsNSArMzcsOSBAQCBpbnRlcmZhY2UgVGVzdFNlcmlh
bGl6YXRpb24gewogICAgIGF0dHJpYnV0ZSBUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJp
dGFuY2UgZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZTsKICAgICBhdHRyaWJ1dGUgVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWw/IG5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0
dHJpYnV0ZTsKIAorICAgIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxib29sZWFuPiB0ZW50aEZyb3pl
bkFycmF5QXR0cmlidXRlOworICAgIGF0dHJpYnV0ZSBzZXF1ZW5jZTxET01TdHJpbmc+IGVsZXZl
bnRoU2VxdWVuY2VBdHRyaWJ1dGU7CisgICAgYXR0cmlidXRlIHNlcXVlbmNlPFRlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsPiB0d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGU7CisK
ICAgICBzZXJpYWxpemVyID0geyBhdHRyaWJ1dGUgfTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361462</attachid>
            <date>2019-02-07 16:04:56 -0800</date>
            <delta_ts>2019-02-08 09:41:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190997-20190207160455.patch</filename>
            <type>text/plain</type>
            <size>20333</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA4NDBjNjBkYWZhNzA2
ZDUxNDU1MDgxZmM2MTg5NGY5MGZjZmM3OS4uOGY3ZmFmZTZmNGVmMmZmMzg5YTljYTNlMzE3MjA3
ODBlMzQ3ZjVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTAyLTA3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0IHNl
cmlhbGl6aW5nIHNlcXVlbmNlcyBhbmQgRnJvemVuQXJyYXlzIG9mIG5vbi1pbnRlcmZhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5OTcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgzMDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgc2VyaWFsaXppbmcgc2VxdWVuY2VzIGFu
ZCBGcm96ZW5BcnJheXMgb2YgdHlwZXMgdGhhdCBhcmVuJ3QgaW50ZXJmYWNlcy4gVGhpcyBpcwor
ICAgICAgICBuZWVkZWQgdG8gcHJvcGVybHkgc2VyaWFsaXplIFBheW1lbnRBZGRyZXNzLCB3aGlj
aCBoYXMgYSBGcm96ZW5BcnJheSBvZiBET01TdHJpbmdzLgorCisgICAgICAgIFdlIHNob3VsZCBz
dXBwb3J0IHNlcmlhbGl6aW5nIHNlcXVlbmNlcyBvZiBpbnRlcmZhY2VzIHRvbywgYnV0IHRoYXQn
cyBzbGlnaHRseSBtb3JlCisgICAgICAgIGNvbXBsaWNhdGVkIHNpbmNlIGl0IGludm9sdmVzIGl0
ZXJhdGluZyB0aGUgc2VxdWVuY2UgYW5kIHNlcmlhbGl6aW5nIGVhY2ggb2YgaXRzIGl0ZW1zLiBJ
CisgICAgICAgIGxlZnQgdGhhdCBhcyBhIGZvbGxvdy11cCB0YXNrLCBzaW5jZSBJIGRvbid0IHNl
ZSBhbnkgSURMcyB0aGF0IGN1cnJlbnRseSBuZWVkIHRoaXMuCisKKyAgICAgICAgV2UgYWxzbyBk
b24ndCBzdXBwb3J0IHNlcmlhbGl6aW5nIHNlcXVlbmNlcyB3aXRoIHRoZSBDYWNoZWRBdHRyaWJ1
dGUgb3IgQ3VzdG9tR2V0dGVyCisgICAgICAgIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGJlY2F1c2Ug
V2ViSURMIHNwZWNpZmllcyB0aGF0IGEgbmV3IGFycmF5IHNob3VsZCBiZSBjcmVhdGVkIHdoZW4K
KyAgICAgICAgY29udmVydGluZyBhbiBJREwgc2VxdWVuY2UgaW50byBhbiBFQ01BU2NyaXB0IHZh
bHVlLgorCisgICAgICAgIEFkZGVkIGJpbmRpbmdzIHRlc3QgY2FzZXMgdG8gVGVzdFNlcmlhbGl6
YXRpb24uaWRsIGFuZCBQYXltZW50QWRkcmVzcyB0ZXN0IGNhc2VzIHRvCisgICAgICAgIGh0dHAv
dGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNP
Ti1tZXRob2QuaHR0cHMuaHRtbC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbToKKyAgICAgICAgKEdldEludGVyZmFjZUZvclR5cGUpOiBSZW5hbWVkIGZyb20g
R2V0SW50ZXJmYWNlRm9yQXR0cmlidXRlLgorICAgICAgICAoSXNTZXJpYWxpemFibGVUeXBlKTog
TW9kaWZpZWQgdG8gYWxsb3cgc2VxdWVuY2VzIGFuZCBGcm96ZW5BcnJheXMgb2Ygbm9uLWludGVy
ZmFjZSB0eXBlcy4KKyAgICAgICAgKGhhc0NhY2hlZEF0dHJpYnV0ZU9yQ3VzdG9tR2V0dGVyRXh0
ZW5kZWRBdHRyaWJ1dGUpOiBBZGRlZCBhIGhlbHBlciB0byBkZXRlcm1pbmUgaWYgYW4KKyAgICAg
ICAgYXR0cmlidXRlIGhhcyB0aGUgQ2FjaGVkQXR0cmlidXRlIG9yIEN1c3RvbUdldHRlciBleHRl
bmRlZCBhdHRyaWJ1dGVzLgorICAgICAgICAoSXNTZXJpYWxpemFibGVBdHRyaWJ1dGUpOiBDaGVj
a2VkIGZvciBzZXF1ZW5jZXMgd2l0aCB0aGUgQ2FjaGVkQXR0cmlidXRlIG9yIEN1c3RvbUdldHRl
cgorICAgICAgICBleHRlbmRlZCBhdHRyaWJ1dGVzIGJlZm9yZSBjYWxsaW5nIElzU2VyaWFsaXph
YmxlVHlwZS4KKyAgICAgICAgKEdldEludGVyZmFjZUZvckF0dHJpYnV0ZSk6IFJlbmFtZWQgdG8g
R2V0SW50ZXJmYWNlRm9yVHlwZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RTZXJpYWxpemF0aW9uLmlkbDoKKwogMjAxOS0wMi0wNiAgSm9obiBXaWxhbmRlciAgPHdp
bGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIEFkIENsaWNrIEF0dHJpYnV0aW9u
IGRhdGEgZnJvbSBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soKSB0byBXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0KaW5kZXggNzVjMTllY2RiYTg2OGY1MmQyOTgxZGY3NTBmZDU5M2Q3
NjIzODk0My4uMjE2NGZiODFhM2NiOGY0NmUwZTRhNDNhOWFmZjA3ZWI4NjQ5Mjg3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAt
MzE3LDEzICszMTcsMTMgQEAgc3ViIElETEZpbGVGb3JJbnRlcmZhY2UKICAgICByZXR1cm4gJGlk
bEZpbGVzLT57JGludGVyZmFjZU5hbWV9OwogfQogCi1zdWIgR2V0SW50ZXJmYWNlRm9yQXR0cmli
dXRlCitzdWIgR2V0SW50ZXJmYWNlRm9yVHlwZQogewotICAgIG15ICgkb2JqZWN0LCAkY3VycmVu
dEludGVyZmFjZSwgJGF0dHJpYnV0ZSkgPSBAXzsKKyAgICBteSAoJG9iamVjdCwgJGN1cnJlbnRJ
bnRlcmZhY2UsICR0eXBlKSA9IEBfOwogCi0gICAgcmV0dXJuIHVuZGVmIHVubGVzcyAkb2JqZWN0
LT5Jc0ludGVyZmFjZVR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CisgICAgcmV0dXJuIHVuZGVmIHVu
bGVzcyAkb2JqZWN0LT5Jc0ludGVyZmFjZVR5cGUoJHR5cGUpOwogCi0gICAgcmV0dXJuICRvYmpl
Y3QtPlBhcnNlSW50ZXJmYWNlKCRjdXJyZW50SW50ZXJmYWNlLCAkYXR0cmlidXRlLT50eXBlLT5u
YW1lKTsKKyAgICByZXR1cm4gJG9iamVjdC0+UGFyc2VJbnRlcmZhY2UoJGN1cnJlbnRJbnRlcmZh
Y2UsICR0eXBlLT5uYW1lKTsKIH0KIAogc3ViIEdldEF0dHJpYnV0ZUZyb21JbnRlcmZhY2UKQEAg
LTkzNSwzNCArOTM1LDU5IEBAIHN1YiBJbmhlcml0c1NlcmlhbGl6YWJsZQogICAgIHJldHVybiAk
YW55UGFyZW50SXNTZXJpYWxpemFibGU7CiB9CiAKLXN1YiBJc1NlcmlhbGl6YWJsZUF0dHJpYnV0
ZQorc3ViIElzU2VyaWFsaXphYmxlVHlwZQogewotICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNl
LCAkYXR0cmlidXRlKSA9IEBfOworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkdHlwZSkg
PSBAXzsKIAogICAgICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLXNlcmlh
bGl6YWJsZS10eXBlCiAKLSAgICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGU7CiAgICAgcmV0
dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgImJvb2xlYW4iOwogICAgIHJldHVybiAxIGlmICRvYmpl
Y3QtPklzTnVtZXJpY1R5cGUoJHR5cGUpOwogICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzRW51
bVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzU3RyaW5nVHlwZSgkdHlw
ZSk7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciI7CiAKLSAg
ICBpZiAoJHR5cGUtPmlzVW5pb24gfHwgJG9iamVjdC0+SXNTZXF1ZW5jZVR5cGUoJHR5cGUpIHx8
ICRvYmplY3QtPklzRGljdGlvbmFyeVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgIGRpZSAiU2VyaWFs
aXplciBmb3Igbm9uLXByaW1pdGl2ZSB0eXBlcyBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZFxu
IjsKKyAgICBpZiAoJHR5cGUtPmlzVW5pb24gfHwgJG9iamVjdC0+SXNEaWN0aW9uYXJ5VHlwZSgk
dHlwZSkpIHsKKyAgICAgICAgZGllICJTZXJpYWxpemVycyBmb3IgdW5pb24gYW5kIGRpY3Rpb25h
cnkgdHlwZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLlxuIjsKKyAgICB9CisKKyAgICBp
ZiAoJG9iamVjdC0+SXNTZXF1ZW5jZU9yRnJvemVuQXJyYXlUeXBlKCR0eXBlKSkgeworICAgICAg
ICBteSAkc3VidHlwZSA9IEB7JHR5cGUtPnN1YnR5cGVzfVswXTsKKworICAgICAgICAjIEZJWE1F
OiBUZWFjaCBHZW5lcmF0ZVNlcmlhbGl6ZXJEZWZpbml0aW9uIHRvIHNlcmlhbGl6ZSBzZXF1ZW5j
ZXMgb2YgaW50ZXJmYWNlcywgdGhlbiByZW1vdmUgdGhpcyBsaW5lLgorICAgICAgICByZXR1cm4g
MCBpZiAkb2JqZWN0LT5Jc0ludGVyZmFjZVR5cGUoJHN1YnR5cGUpOworCisgICAgICAgIHJldHVy
biAkb2JqZWN0LT5Jc1NlcmlhbGl6YWJsZVR5cGUoJGludGVyZmFjZSwgJHN1YnR5cGUpOwogICAg
IH0KIAogICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc0ludGVyZmFjZVR5cGUoJHR5cGUpOwog
Ci0gICAgbXkgJGludGVyZmFjZUZvckF0dHJpYnV0ZSA9ICRvYmplY3QtPkdldEludGVyZmFjZUZv
ckF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICBpZiAoJGludGVyZmFjZUZv
ckF0dHJpYnV0ZSkgewotICAgICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlRm9yQXR0cmlidXRl
LT5zZXJpYWxpemFibGU7Ci0gICAgICAgIHJldHVybiAkb2JqZWN0LT5Jbmhlcml0c1NlcmlhbGl6
YWJsZSgkaW50ZXJmYWNlRm9yQXR0cmlidXRlKTsKKyAgICBteSAkaW50ZXJmYWNlRm9yVHlwZSA9
ICRvYmplY3QtPkdldEludGVyZmFjZUZvclR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIGlm
ICgkaW50ZXJmYWNlRm9yVHlwZSkgeworICAgICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlRm9y
VHlwZS0+c2VyaWFsaXphYmxlOworICAgICAgICByZXR1cm4gJG9iamVjdC0+SW5oZXJpdHNTZXJp
YWxpemFibGUoJGludGVyZmFjZUZvclR5cGUpOwogICAgIH0KIAogICAgIHJldHVybiAwOwogfQog
CitzdWIgaGFzQ2FjaGVkQXR0cmlidXRlT3JDdXN0b21HZXR0ZXJFeHRlbmRlZEF0dHJpYnV0ZQor
eworICAgIG15ICgkYXR0cmlidXRlKSA9IEBfOworICAgIHJldHVybiAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9IHx8ICRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0N1c3RvbUdldHRlcn07Cit9CisKK3N1YiBJc1NlcmlhbGl6YWJsZUF0dHJp
YnV0ZQoreworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOwor
CisgICAgaWYgKCRvYmplY3QtPklzU2VxdWVuY2VUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpICYmIGhh
c0NhY2hlZEF0dHJpYnV0ZU9yQ3VzdG9tR2V0dGVyRXh0ZW5kZWRBdHRyaWJ1dGUoJGF0dHJpYnV0
ZSkpIHsKKyAgICAgICAgZGllICJTZXJpYWxpemVycyBmb3Igc2VxdWVuY2UgdHlwZXMgd2l0aCBD
YWNoZWRBdHRyaWJ1dGUgb3IgQ3VzdG9tR2V0dGVyIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5v
dCBjdXJyZW50bHkgc3VwcG9ydGVkLlxuIjsKKyAgICB9CisKKyAgICByZXR1cm4gJG9iamVjdC0+
SXNTZXJpYWxpemFibGVUeXBlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnR5cGUpOworfQorCiBz
dWIgR2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbU5hbWUKIHsKICAgICAjIEZJWE1F
OiBJdCdzIGJhZCB0byBoYXZlIGEgZnVuY3Rpb24gbGlrZSB0aGlzIHRoYXQgb3BlbnMgYW5vdGhl
ciBJREwgZmlsZSB0byBhbnN3ZXIgYSBxdWVzdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
LmNwcAppbmRleCBlYWY1N2Y4YTgxMzcyZTAxYzNmZjE5NWFiZDUyNGI3Mjk0ZDE3MDlkLi45NjU2
MzRhZGYxYTM1ZTIwNDdmZDJkYjRhZjg3NThkYjM1NGY3NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb24uY3BwCkBAIC0yNCw5ICsyNCwxMSBAQAogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRl
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0
TnVsbGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAi
SlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5o
IgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdC5oIgpAQCAtMzgsNiArNDAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtNzQsNiArNzcsMTIgQEAgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSoKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkVpZ2h0aEluZGlyZWN0
bHlBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbk5p
bnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0
U2VyaWFsaXphdGlvbk5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJh
eUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkVsZXZl
bnRoU2VxdWVuY2VBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25FbGV2ZW50
aFNlcXVlbmNlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
YXRpb25Ud2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdFNl
cmlhbGl6YXRpb25Ud2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogY2xhc3Mg
SlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgpAQCAtMTMxLDYgKzE0MCw5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAi
c2V2ZW50aERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uU2V2
ZW50aERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2VyaWFsaXphdGlvblNl
dmVudGhEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSkgfSB9LAogICAgIHsgImVpZ2h0aElu
ZGlyZWN0bHlBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6YXRpb25FaWdodGhJbmRpcmVjdGx5QXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0U2VyaWFsaXphdGlvbkVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUpIH0gfSwK
ICAgICB7ICJuaW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNl
cmlhbGl6YXRpb25OaW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RTZXJpYWxpemF0aW9uTmludGhPcHRpb25hbERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmli
dXRlKSB9IH0sCisgICAgeyAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXph
dGlvblRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVGVudGhG
cm96ZW5BcnJheUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgImVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdFNlcmlhbGl6YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U2Vy
aWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJ0d2VsZnRo
SW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6YXRpb25Ud2VsZnRoSW50ZXJm
YWNlU2VxdWVuY2VBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVHdlbGZ0aEludGVyZmFj
ZVNlcXVlbmNlQXR0cmlidXRlKSB9IH0sCiAgICAgeyAidG9KU09OIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXJpYWxpemF0
aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04pLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwogCkBA
IC00ODksNiArNTAxLDk5IEBAIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbk5pbnRoT3B0aW9u
YWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqCiAgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6c2V0PHNldEpTVGVzdFNlcmlhbGl6YXRp
b25OaW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGVTZXR0ZXI+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJuaW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxp
emFibGVBdHRyaWJ1dGUiKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlh
bGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
Cit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUzxJRExGcm96ZW5BcnJheTxJRExCb29sZWFuPj4oc3RhdGUsICp0aGlzT2Jq
ZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlbnRoRnJvemVuQXJyYXlBdHRy
aWJ1dGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Z2V0PGpzVGVzdFNlcmlhbGl6YXRpb25U
ZW50aEZyb3plbkFycmF5QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0Pigqc3RhdGUsIHRoaXNWYWx1ZSwgInRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUiKTsK
K30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3pl
bkFycmF5QXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExGcm96ZW5B
cnJheTxJRExCb29sZWFuPj4oc3RhdGUsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwoc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFRlbnRoRnJvemVuQXJyYXlB
dHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2Vy
aWFsaXphdGlvbj46OnNldDxzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJheUF0
dHJpYnV0ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRlbnRoRnJv
emVuQXJyYXlBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgKnRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZWxldmVudGhTZXF1ZW5jZUF0
dHJpYnV0ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpnZXQ8anNUZXN0U2VyaWFsaXphdGlv
bkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRo
U2VxdWVuY2VBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXph
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFNlcXVl
bmNlPElETERPTVN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKHN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRFbGV2ZW50aFNlcXVlbmNl
QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNl
cmlhbGl6YXRpb24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VB
dHRyaWJ1dGVTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlbGV2ZW50
aFNlcXVlbmNlQXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RT
ZXJpYWxpemF0aW9uVHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8VGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0RmluYWw+Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBpbXBsLnR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSgp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxp
emF0aW9uVHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbj46OmdldDxqc1Rlc3RTZXJpYWxpemF0aW9u
VHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0Pigqc3RhdGUsIHRoaXNWYWx1ZSwgInR3ZWxmdGhJbnRlcmZhY2VTZXF1
ZW5jZUF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFs
aXphdGlvblR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPFRlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsPj4+KHN0YXRlLCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKHN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRUd2VsZnRoSW50ZXJmYWNlU2Vx
dWVuY2VBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Ud2VsZnRoSW50ZXJmYWNl
U2VxdWVuY2VBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6c2V0PHNldEpTVGVzdFNlcmlhbGl6YXRpb25Ud2Vs
ZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ0d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUiKTsKK30KKwog
SlNDOjpKU09iamVjdCogSlNUZXN0U2VyaWFsaXphdGlvbjo6c2VyaWFsaXplKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgYXV0byYgdm0g
PSBzdGF0ZS52bSgpOwpAQCAtNTMyLDYgKzYzNywxNCBAQCBKU0M6OkpTT2JqZWN0KiBKU1Rlc3RT
ZXJpYWxpemF0aW9uOjpzZXJpYWxpemUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXph
dAogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJuaW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1
dGUiKSwgbmludGhPcHRpb25hbERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlVmFsdWUpOwog
CisgICAgYXV0byB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlVmFsdWUgPSBqc1Rlc3RTZXJpYWxp
emF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZUdldHRlcihzdGF0ZSwgdGhpc09iamVjdCwg
dGhyb3dTY29wZSk7CisgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRlbnRoRnJv
emVuQXJyYXlBdHRyaWJ1dGUiKSwgdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZVZhbHVlKTsKKwor
ICAgIGF1dG8gZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlID0ganNUZXN0U2VyaWFsaXph
dGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIoc3RhdGUsIHRoaXNPYmplY3QsIHRo
cm93U2NvcGUpOworICAgIHRocm93U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJlbGV2ZW50aFNl
cXVlbmNlQXR0cmlidXRlIiksIGVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVWYWx1ZSk7CisKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6YXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTZXJpYWxpemF0aW9uLmlkbAppbmRleCAwYzcyZTkxOTYy
M2U5NWI5MjE1YTJlNzJlZjQ2M2E1NjU1MzdkNjhmLi40MWViN2I5M2FhOWRkMjNkN2Y3M2QwY2Ew
ZmExNzRhM2Y2YzM0ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdFNlcmlhbGl6YXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0U2VyaWFsaXphdGlvbi5pZGwKQEAgLTM3LDUgKzM3LDkgQEAg
aW50ZXJmYWNlIFRlc3RTZXJpYWxpemF0aW9uIHsKICAgICBhdHRyaWJ1dGUgVGVzdFNlcmlhbGl6
YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlIGVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGU7CiAgICAg
YXR0cmlidXRlIFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsPyBuaW50aE9wdGlvbmFsRGly
ZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGU7CiAKKyAgICBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8
Ym9vbGVhbj4gdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZTsKKyAgICBhdHRyaWJ1dGUgc2VxdWVu
Y2U8RE9NU3RyaW5nPiBlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlOworICAgIGF0dHJpYnV0ZSBz
ZXF1ZW5jZTxUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD4gdHdlbGZ0aEludGVyZmFjZVNl
cXVlbmNlQXR0cmlidXRlOworCiAgICAgc2VyaWFsaXplciA9IHsgYXR0cmlidXRlIH07CiB9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGQ4YTM5NzRmYTZlNmZlNzAzNmRiODYwNjQ2Njk5ZTk0ODBmMjhmYjMuLjNjNTk3ZWMw
NDVmMzQxODk3OTkyYWUzMjZhMDFhOTRhNDlmZGI0ODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0wMi0wNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dl
YklETF0gU3VwcG9ydCBzZXJpYWxpemluZyBzZXF1ZW5jZXMgYW5kIEZyb3plbkFycmF5cyBvZiBu
b24taW50ZXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwOTk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTk4MzAzNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcGF5
bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2Qu
aHR0cHMuaHRtbDoKKwogMjAxOS0wMi0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWIgR1BVXSBJbXBsZW1lbnQgc3VwcG9ydGluZyBkaWN0aW9uYXJp
ZXMgZm9yIEdQVVRleHR1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5
bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2Qu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVu
dC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbAppbmRleCA3
MGE0MzNmNmJkODU2ZDY3NjYyZjdlODRmYmE1ZWY5NGE1Y2Q1OWM2Li5jNjAzOWI1MzBjZWY3MmZl
OGIxZWNhZDk1ZWEzZTJhNzRmYjMzNWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04t
bWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5o
dG1sCkBAIC0zOCw3ICszOCw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoYnV0dG9uLCBleHBlY3RlZCA9
IHt9KSB7CiAgICAgICB9LAogICAgICAgIkFycmF5IG11c3QgYmUgZnJvemVuIgogICAgICk7Ci0g
ICAgZm9yIChsZXQgW2F0dHIsIGV4cGVjdGVkVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGV4cGVj
dGVkKSkgeworICAgIGNvbnN0IGV4cGVjdGVkRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGV4cGVj
dGVkKTsKKyAgICBmb3IgKGxldCBbYXR0ciwgZXhwZWN0ZWRWYWx1ZV0gb2YgZXhwZWN0ZWRFbnRy
aWVzKSB7CiAgICAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShhZGRyLCBhdHRyKTsKICAgICAgIGNv
bnN0IG1zZyA9IGBFeHBlY3RlZCBwYXltZW50QWRkcmVzcy4ke2F0dHJ9IHRvIGVxdWFsICR7ZXhw
ZWN0ZWRWYWx1ZX0uYDsKICAgICAgIC8vLnRvU3RyaW5nKCkgZmxhdHRlbnMgYXJyYXkgYWRkcmVz
c0xpbmUsCkBAIC00OCwxMiArNDksMjIgQEAgZnVuY3Rpb24gcnVuVGVzdChidXR0b24sIGV4cGVj
dGVkID0ge30pIHsKICAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFsVmFsdWUsIGV4cGVjdGVkVmFs
dWUsIG1zZyk7CiAgICAgfQogICAgIC8vIENoZWNrIHRvSlNPTiByZXN1bHQKLSAgICBmb3IgKGxl
dCBbcHJvcCwganNvblZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhZGRyLnRvSlNPTigpKSkgewor
ICAgIGNvbnN0IGpzb25BZGRyZXNzID0gYWRkci50b0pTT04oKTsKKyAgICBjb25zdCBqc29uQWRk
cmVzc0VudHJpZXMgPSBPYmplY3QuZW50cmllcyhqc29uQWRkcmVzcyk7CisgICAgZm9yIChsZXQg
W3Byb3AsIGpzb25WYWx1ZV0gb2YganNvbkFkZHJlc3NFbnRyaWVzKSB7CiAgICAgICBjb25zdCBh
Y3R1YWxWYWx1ZSA9IGpzb25WYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7CiAgICAgICBj
b25zdCBleHBlY3RlZFZhbHVlID0gZXhwZWN0ZWRbcHJvcF0udG9TdHJpbmcoKS50b0xvd2VyQ2Fz
ZSgpOwogICAgICAgY29uc3QgbXNnID0gYEV4cGVjdGVkIEpTT04gJHtwcm9wfSB0byBiZSAke2V4
cGVjdGVkVmFsdWV9YDsKICAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFsVmFsdWUsIGV4cGVjdGVk
VmFsdWUsIG1zZyk7CiAgICAgfQorICAgIGFzc2VydF9lcXVhbHMoanNvbkFkZHJlc3NFbnRyaWVz
Lmxlbmd0aCwgZXhwZWN0ZWRFbnRyaWVzLmxlbmd0aCk7CisgICAgLy8gQ2hlY2sgdGhhdCAudG9K
U09OKCkgY3JlYXRlZCBhIGZyb3plbiBhcnJheQorICAgIGFzc2VydF90aHJvd3MoCisgICAgICBu
ZXcgVHlwZUVycm9yKCksCisgICAgICAoKSA9PiB7CisgICAgICAgIGpzb25BZGRyZXNzLmFkZHJl
c3NMaW5lLnB1c2goInRoaXMgbXVzdCB0aHJvdyIpOworICAgICAgfSwKKyAgICApOwogICB9LCBi
dXR0b24udGV4dENvbnRlbnQudHJpbSgpKTsKICAgZG9uZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361511</attachid>
            <date>2019-02-08 09:41:06 -0800</date>
            <delta_ts>2019-02-08 10:18:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190997-20190208094105.patch</filename>
            <type>text/plain</type>
            <size>20325</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA4NDBjNjBkYWZhNzA2
ZDUxNDU1MDgxZmM2MTg5NGY5MGZjZmM3OS4uY2U0OGFiMzJiYTcyYzFmM2ViYTQwNmNkZjRmN2Mw
NjM2MzEyYzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTAyLTA3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0IHNl
cmlhbGl6aW5nIHNlcXVlbmNlcyBhbmQgRnJvemVuQXJyYXlzIG9mIG5vbi1pbnRlcmZhY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5OTcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgzMDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJy
ZW50IEZ1bGdoYW0uCisKKyAgICAgICAgU3VwcG9ydCBzZXJpYWxpemluZyBzZXF1ZW5jZXMgYW5k
IEZyb3plbkFycmF5cyBvZiB0eXBlcyB0aGF0IGFyZW4ndCBpbnRlcmZhY2VzLiBUaGlzIGlzCisg
ICAgICAgIG5lZWRlZCB0byBwcm9wZXJseSBzZXJpYWxpemUgUGF5bWVudEFkZHJlc3MsIHdoaWNo
IGhhcyBhIEZyb3plbkFycmF5IG9mIERPTVN0cmluZ3MuCisKKyAgICAgICAgV2Ugc2hvdWxkIHN1
cHBvcnQgc2VyaWFsaXppbmcgc2VxdWVuY2VzIG9mIGludGVyZmFjZXMgdG9vLCBidXQgdGhhdCdz
IHNsaWdodGx5IG1vcmUKKyAgICAgICAgY29tcGxpY2F0ZWQgc2luY2UgaXQgaW52b2x2ZXMgaXRl
cmF0aW5nIHRoZSBzZXF1ZW5jZSBhbmQgc2VyaWFsaXppbmcgZWFjaCBvZiBpdHMgaXRlbXMuIEkK
KyAgICAgICAgbGVmdCB0aGF0IGFzIGEgZm9sbG93LXVwIHRhc2ssIHNpbmNlIEkgZG9uJ3Qgc2Vl
IGFueSBJRExzIHRoYXQgY3VycmVudGx5IG5lZWQgdGhpcy4KKworICAgICAgICBXZSBhbHNvIGRv
bid0IHN1cHBvcnQgc2VyaWFsaXppbmcgc2VxdWVuY2VzIHdpdGggdGhlIENhY2hlZEF0dHJpYnV0
ZSBvciBDdXN0b21HZXR0ZXIKKyAgICAgICAgZXh0ZW5kZWQgYXR0cmlidXRlcywgYmVjYXVzZSBX
ZWJJREwgc3BlY2lmaWVzIHRoYXQgYSBuZXcgYXJyYXkgc2hvdWxkIGJlIGNyZWF0ZWQgd2hlbgor
ICAgICAgICBjb252ZXJ0aW5nIGFuIElETCBzZXF1ZW5jZSBpbnRvIGFuIEVDTUFTY3JpcHQgdmFs
dWUuCisKKyAgICAgICAgQWRkZWQgYmluZGluZ3MgdGVzdCBjYXNlcyB0byBUZXN0U2VyaWFsaXph
dGlvbi5pZGwgYW5kIFBheW1lbnRBZGRyZXNzIHRlc3QgY2FzZXMgdG8KKyAgICAgICAgaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09O
LW1ldGhvZC5odHRwcy5odG1sLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtOgorICAgICAgICAoR2V0SW50ZXJmYWNlRm9yVHlwZSk6IFJlbmFtZWQgZnJvbSBH
ZXRJbnRlcmZhY2VGb3JBdHRyaWJ1dGUuCisgICAgICAgIChJc1NlcmlhbGl6YWJsZVR5cGUpOiBN
b2RpZmllZCB0byBhbGxvdyBzZXF1ZW5jZXMgYW5kIEZyb3plbkFycmF5cyBvZiBub24taW50ZXJm
YWNlIHR5cGVzLgorICAgICAgICAoaGFzQ2FjaGVkQXR0cmlidXRlT3JDdXN0b21HZXR0ZXJFeHRl
bmRlZEF0dHJpYnV0ZSk6IEFkZGVkIGEgaGVscGVyIHRvIGRldGVybWluZSBpZiBhbgorICAgICAg
ICBhdHRyaWJ1dGUgaGFzIHRoZSBDYWNoZWRBdHRyaWJ1dGUgb3IgQ3VzdG9tR2V0dGVyIGV4dGVu
ZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgIChJc1NlcmlhbGl6YWJsZUF0dHJpYnV0ZSk6IENoZWNr
ZWQgZm9yIHNlcXVlbmNlcyB3aXRoIHRoZSBDYWNoZWRBdHRyaWJ1dGUgb3IgQ3VzdG9tR2V0dGVy
CisgICAgICAgIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYmVmb3JlIGNhbGxpbmcgSXNTZXJpYWxpemFi
bGVUeXBlLgorICAgICAgICAoR2V0SW50ZXJmYWNlRm9yQXR0cmlidXRlKTogUmVuYW1lZCB0byBH
ZXRJbnRlcmZhY2VGb3JUeXBlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdFNlcmlhbGl6YXRpb24uaWRsOgorCiAyMDE5LTAyLTA2ICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZvcndhcmQgQWQgQ2xpY2sgQXR0cmlidXRpb24g
ZGF0YSBmcm9tIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljaygpIHRvIFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvci5wbQppbmRleCA3NWMxOWVjZGJhODY4ZjUyZDI5ODFkZjc1MGZkNTkzZDc2
MjM4OTQzLi5iNTEyMjY0MTdkZDQ0Y2FmMjMyMzc0NDdjZDJiNTQ2NjE1MDcxODRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC0z
MTcsMTMgKzMxNywxMyBAQCBzdWIgSURMRmlsZUZvckludGVyZmFjZQogICAgIHJldHVybiAkaWRs
RmlsZXMtPnskaW50ZXJmYWNlTmFtZX07CiB9CiAKLXN1YiBHZXRJbnRlcmZhY2VGb3JBdHRyaWJ1
dGUKK3N1YiBHZXRJbnRlcmZhY2VGb3JUeXBlCiB7Ci0gICAgbXkgKCRvYmplY3QsICRjdXJyZW50
SW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOworICAgIG15ICgkb2JqZWN0LCAkY3VycmVudElu
dGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICByZXR1cm4gdW5kZWYgdW5sZXNzICRvYmplY3Qt
PklzSW50ZXJmYWNlVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKKyAgICByZXR1cm4gdW5kZWYgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CiAKLSAgICByZXR1cm4gJG9iamVj
dC0+UGFyc2VJbnRlcmZhY2UoJGN1cnJlbnRJbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnR5cGUtPm5h
bWUpOworICAgIHJldHVybiAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkY3VycmVudEludGVyZmFj
ZSwgJHR5cGUtPm5hbWUpOwogfQogCiBzdWIgR2V0QXR0cmlidXRlRnJvbUludGVyZmFjZQpAQCAt
OTM1LDM0ICs5MzUsNTkgQEAgc3ViIEluaGVyaXRzU2VyaWFsaXphYmxlCiAgICAgcmV0dXJuICRh
bnlQYXJlbnRJc1NlcmlhbGl6YWJsZTsKIH0KIAotc3ViIElzU2VyaWFsaXphYmxlQXR0cmlidXRl
CitzdWIgSXNTZXJpYWxpemFibGVUeXBlCiB7Ci0gICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpID0gQF87CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICR0eXBlKSA9
IEBfOwogCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tc2VyaWFs
aXphYmxlLXR5cGUKIAotICAgIG15ICR0eXBlID0gJGF0dHJpYnV0ZS0+dHlwZTsKICAgICByZXR1
cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiYm9vbGVhbiI7CiAgICAgcmV0dXJuIDEgaWYgJG9iamVj
dC0+SXNOdW1lcmljVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNFbnVt
VHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNTdHJpbmdUeXBlKCR0eXBl
KTsKICAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBlcSAiRXZlbnRIYW5kbGVyIjsKIAotICAg
IGlmICgkdHlwZS0+aXNVbmlvbiB8fCAkb2JqZWN0LT5Jc1NlcXVlbmNlVHlwZSgkdHlwZSkgfHwg
JG9iamVjdC0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgZGllICJTZXJpYWxp
emVyIGZvciBub24tcHJpbWl0aXZlIHR5cGVzIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkXG4i
OworICAgIGlmICgkdHlwZS0+aXNVbmlvbiB8fCAkb2JqZWN0LT5Jc0RpY3Rpb25hcnlUeXBlKCR0
eXBlKSkgeworICAgICAgICBkaWUgIlNlcmlhbGl6ZXJzIGZvciB1bmlvbiBhbmQgZGljdGlvbmFy
eSB0eXBlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuXG4iOworICAgIH0KKworICAgIGlm
ICgkb2JqZWN0LT5Jc1NlcXVlbmNlT3JGcm96ZW5BcnJheVR5cGUoJHR5cGUpKSB7CisgICAgICAg
IG15ICRzdWJ0eXBlID0gQHskdHlwZS0+c3VidHlwZXN9WzBdOworCisgICAgICAgICMgRklYTUU6
IHdlYmtpdC5vcmcvYi8xOTQ0MzkgW1dlYklETF0gU3VwcG9ydCBzZXJpYWxpemluZyBzZXF1ZW5j
ZXMgYW5kIEZyb3plbkFycmF5cyBvZiBpbnRlcmZhY2VzCisgICAgICAgIHJldHVybiAwIGlmICRv
YmplY3QtPklzSW50ZXJmYWNlVHlwZSgkc3VidHlwZSk7CisKKyAgICAgICAgcmV0dXJuICRvYmpl
Y3QtPklzU2VyaWFsaXphYmxlVHlwZSgkaW50ZXJmYWNlLCAkc3VidHlwZSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIDAgaWYgISRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CiAKLSAgICBt
eSAkaW50ZXJmYWNlRm9yQXR0cmlidXRlID0gJG9iamVjdC0+R2V0SW50ZXJmYWNlRm9yQXR0cmli
dXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAgIGlmICgkaW50ZXJmYWNlRm9yQXR0cmli
dXRlKSB7Ci0gICAgICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VGb3JBdHRyaWJ1dGUtPnNlcmlh
bGl6YWJsZTsKLSAgICAgICAgcmV0dXJuICRvYmplY3QtPkluaGVyaXRzU2VyaWFsaXphYmxlKCRp
bnRlcmZhY2VGb3JBdHRyaWJ1dGUpOworICAgIG15ICRpbnRlcmZhY2VGb3JUeXBlID0gJG9iamVj
dC0+R2V0SW50ZXJmYWNlRm9yVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgaWYgKCRpbnRl
cmZhY2VGb3JUeXBlKSB7CisgICAgICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VGb3JUeXBlLT5z
ZXJpYWxpemFibGU7CisgICAgICAgIHJldHVybiAkb2JqZWN0LT5Jbmhlcml0c1NlcmlhbGl6YWJs
ZSgkaW50ZXJmYWNlRm9yVHlwZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N1YiBo
YXNDYWNoZWRBdHRyaWJ1dGVPckN1c3RvbUdldHRlckV4dGVuZGVkQXR0cmlidXRlCit7CisgICAg
bXkgKCRhdHRyaWJ1dGUpID0gQF87CisgICAgcmV0dXJuICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX0gfHwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q3VzdG9tR2V0dGVyfTsKK30KKworc3ViIElzU2VyaWFsaXphYmxlQXR0cmlidXRlCit7
CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87CisKKyAgICBp
ZiAoJG9iamVjdC0+SXNTZXF1ZW5jZVR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkgJiYgaGFzQ2FjaGVk
QXR0cmlidXRlT3JDdXN0b21HZXR0ZXJFeHRlbmRlZEF0dHJpYnV0ZSgkYXR0cmlidXRlKSkgewor
ICAgICAgICBkaWUgIlNlcmlhbGl6ZXJzIGZvciBzZXF1ZW5jZSB0eXBlcyB3aXRoIENhY2hlZEF0
dHJpYnV0ZSBvciBDdXN0b21HZXR0ZXIgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IGN1cnJl
bnRseSBzdXBwb3J0ZWQuXG4iOworICAgIH0KKworICAgIHJldHVybiAkb2JqZWN0LT5Jc1Nlcmlh
bGl6YWJsZVR5cGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSk7Cit9CisKIHN1YiBHZXRJ
bnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tTmFtZQogewogICAgICMgRklYTUU6IEl0J3Mg
YmFkIHRvIGhhdmUgYSBmdW5jdGlvbiBsaWtlIHRoaXMgdGhhdCBvcGVucyBhbm90aGVyIElETCBm
aWxlIHRvIGFuc3dlciBhIHF1ZXN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCmlu
ZGV4IGVhZjU3ZjhhODEzNzJlMDFjM2ZmMTk1YWJkNTI0YjcyOTRkMTcwOWQuLjk2NTYzNGFkZjFh
MzVlMjA0N2ZkMmRiNGFmODc1OGRiMzU0Zjc1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bi5jcHAKQEAgLTI0LDkgKzI0LDExIEBACiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdWxsYWJs
ZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKKyNpbmNsdWRlICJKU0RPTUNv
bnZlcnRTZXF1ZW5jZXMuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0LmgiCkBAIC0zOCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CkBAIC03NCw2ICs3NywxMiBAQCBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6YXRpb25FaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKgogYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRWlnaHRoSW5kaXJlY3RseUF0dHJp
YnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uTmludGhPcHRp
b25hbERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RTZXJpYWxp
emF0aW9uTmludGhPcHRpb25hbERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1
ZW5jZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkVsZXZlbnRoU2VxdWVu
Y2VBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvblR3
ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXph
dGlvblR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCiBjbGFzcyBKU1Rlc3RT
ZXJpYWxpemF0aW9uUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CkBAIC0xMzEsNiArMTQwLDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJzZXZlbnRo
RGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFNlcmlhbGl6YXRpb25TZXZlbnRoRGly
ZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0aW9uU2V2ZW50aERp
cmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKSB9IH0sCiAgICAgeyAiZWlnaHRoSW5kaXJlY3Rs
eUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0U2VyaWFsaXphdGlvbkVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RTZXJpYWxpemF0aW9uRWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSkgfSB9LAogICAgIHsg
Im5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXph
dGlvbk5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNl
cmlhbGl6YXRpb25OaW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUpIH0g
fSwKKyAgICB7ICJ0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemF0aW9uVGVu
dGhGcm96ZW5BcnJheUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFy
cmF5QXR0cmlidXRlKSB9IH0sCisgICAgeyAiZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
U2VyaWFsaXphdGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemF0
aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgInR3ZWxmdGhJbnRlcmZh
Y2VTZXF1ZW5jZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXphdGlvblR3ZWxmdGhJbnRlcmZhY2VTZXF1
ZW5jZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNlcmlhbGl6YXRpb25Ud2VsZnRoSW50ZXJmYWNlU2VxdWVu
Y2VBdHRyaWJ1dGUpIH0gfSwKICAgICB7ICJ0b0pTT04iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90
b3R5cGVGdW5jdGlvblRvSlNPTiksIChpbnRwdHJfdCkgKDApIH0gfSwKIH07CiAKQEAgLTQ4OSw2
ICs1MDEsOTkgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uTmludGhPcHRpb25hbERpcmVj
dGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSoKICAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXphdGlvbk5pbnRo
T3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZVNldHRlcj4oKnN0YXRlLCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIm5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0
dHJpYnV0ZSIpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlv
blRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETEZyb3plbkFycmF5PElETEJvb2xlYW4+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwudGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSgp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxp
emF0aW9uVGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpnZXQ8anNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJv
emVuQXJyYXlBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSIpOworfQorCitz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlB
dHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEZyb3plbkFycmF5PElE
TEJvb2xlYW4+PihzdGF0ZSwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0VGVudGhGcm96ZW5BcnJheUF0dHJpYnV0
ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0
aW9uPjo6c2V0PHNldEpTVGVzdFNlcmlhbGl6YXRpb25UZW50aEZyb3plbkFycmF5QXR0cmlidXRl
U2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGVudGhGcm96ZW5BcnJh
eUF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXph
dGlvbkVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCAqdGhpc09iamVjdC5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5lbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRl
KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlh
bGl6YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbj46OmdldDxqc1Rlc3RTZXJpYWxpemF0aW9uRWxldmVu
dGhTZXF1ZW5jZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKnN0YXRlLCB0aGlzVmFsdWUsICJlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5j
ZUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURM
RE9NU3RyaW5nPj4oc3RhdGUsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwoc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldEVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1
dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25FbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXph
dGlvbj46OnNldDxzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0
ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVsZXZlbnRoU2VxdWVu
Y2VBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
YXRpb25Ud2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTPElETFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXRGaW5hbD4+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIGltcGwudHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlKCkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25U
d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Z2V0PGpzVGVzdFNlcmlhbGl6YXRpb25Ud2VsZnRo
SW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0
cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9u
VHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWw+Pj4oc3RhdGUsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwoc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0
dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5j
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdFNlcmlhbGl6YXRpb24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXphdGlvblR3ZWxmdGhJbnRl
cmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSIpOworfQorCiBKU0M6OkpT
T2JqZWN0KiBKU1Rlc3RTZXJpYWxpemF0aW9uOjpzZXJpYWxpemUoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBhdXRvJiB2bSA9IHN0YXRl
LnZtKCk7CkBAIC01MzIsNiArNjM3LDE0IEBAIEpTQzo6SlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6
YXRpb246OnNlcmlhbGl6ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0CiAgICAg
fSBlbHNlCiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgIm5pbnRoT3B0aW9uYWxEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSIpLCBu
aW50aE9wdGlvbmFsRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGVWYWx1ZSk7CiAKKyAgICBh
dXRvIHRlbnRoRnJvemVuQXJyYXlBdHRyaWJ1dGVWYWx1ZSA9IGpzVGVzdFNlcmlhbGl6YXRpb25U
ZW50aEZyb3plbkFycmF5QXR0cmlidXRlR2V0dGVyKHN0YXRlLCB0aGlzT2JqZWN0LCB0aHJvd1Nj
b3BlKTsKKyAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGVudGhGcm96ZW5BcnJh
eUF0dHJpYnV0ZSIpLCB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlVmFsdWUpOworCisgICAgYXV0
byBlbGV2ZW50aFNlcXVlbmNlQXR0cmlidXRlVmFsdWUgPSBqc1Rlc3RTZXJpYWxpemF0aW9uRWxl
dmVudGhTZXF1ZW5jZUF0dHJpYnV0ZUdldHRlcihzdGF0ZSwgdGhpc09iamVjdCwgdGhyb3dTY29w
ZSk7CisgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImVsZXZlbnRoU2VxdWVuY2VB
dHRyaWJ1dGUiKSwgZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZVZhbHVlKTsKKwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0U2VyaWFsaXphdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6YXRpb24uaWRsCmluZGV4IDBjNzJlOTE5NjIzZTk1Yjky
MTVhMmU3MmVmNDYzYTU2NTUzN2Q2OGYuLjQxZWI3YjkzYWE5ZGQyM2Q3ZjczZDBjYTBmYTE3NGEz
ZjZjMzRlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0U2VyaWFsaXphdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RTZXJpYWxpemF0aW9uLmlkbApAQCAtMzcsNSArMzcsOSBAQCBpbnRlcmZh
Y2UgVGVzdFNlcmlhbGl6YXRpb24gewogICAgIGF0dHJpYnV0ZSBUZXN0U2VyaWFsaXphdGlvbklu
ZGlyZWN0SW5oZXJpdGFuY2UgZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZTsKICAgICBhdHRyaWJ1
dGUgVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw/IG5pbnRoT3B0aW9uYWxEaXJlY3RseVNl
cmlhbGl6YWJsZUF0dHJpYnV0ZTsKIAorICAgIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxib29sZWFu
PiB0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlOworICAgIGF0dHJpYnV0ZSBzZXF1ZW5jZTxET01T
dHJpbmc+IGVsZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGU7CisgICAgYXR0cmlidXRlIHNlcXVlbmNl
PFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsPiB0d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VB
dHRyaWJ1dGU7CisKICAgICBzZXJpYWxpemVyID0geyBhdHRyaWJ1dGUgfTsKIH07CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZDhhMzk3NGZhNmU2ZmU3MDM2ZGI4NjA2NDY2OTllOTQ4MGYyOGZiMy4uNGUxZDZlZmY0OWZlNmY2
YzQyYWZiNGZiZWM0N2FjYzQ3MzViYTIwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAy
LTA3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBT
dXBwb3J0IHNlcmlhbGl6aW5nIHNlcXVlbmNlcyBhbmQgRnJvemVuQXJyYXlzIG9mIG5vbi1pbnRl
cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTA5OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgzMDM1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0
bWw6CisKIDIwMTktMDItMDYgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViIEdQVV0gSW1wbGVtZW50IHN1cHBvcnRpbmcgZGljdGlvbmFyaWVzIGZvciBH
UFVUZXh0dXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRkcmVz
cy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwKaW5kZXggNzBhNDMzZjZi
ZDg1NmQ2NzY2MmY3ZTg0ZmJhNWVmOTRhNWNkNTljNi4uYzYwMzliNTMwY2VmNzJmZThiMWVjYWQ5
NWVhM2UyYTc0ZmIzMzViZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXlt
ZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5
bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbApAQCAt
MzgsNyArMzgsOCBAQCBmdW5jdGlvbiBydW5UZXN0KGJ1dHRvbiwgZXhwZWN0ZWQgPSB7fSkgewog
ICAgICAgfSwKICAgICAgICJBcnJheSBtdXN0IGJlIGZyb3plbiIKICAgICApOwotICAgIGZvciAo
bGV0IFthdHRyLCBleHBlY3RlZFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhleHBlY3RlZCkpIHsK
KyAgICBjb25zdCBleHBlY3RlZEVudHJpZXMgPSBPYmplY3QuZW50cmllcyhleHBlY3RlZCk7Cisg
ICAgZm9yIChsZXQgW2F0dHIsIGV4cGVjdGVkVmFsdWVdIG9mIGV4cGVjdGVkRW50cmllcykgewog
ICAgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoYWRkciwgYXR0cik7CiAgICAgICBjb25zdCBtc2cg
PSBgRXhwZWN0ZWQgcGF5bWVudEFkZHJlc3MuJHthdHRyfSB0byBlcXVhbCAke2V4cGVjdGVkVmFs
dWV9LmA7CiAgICAgICAvLy50b1N0cmluZygpIGZsYXR0ZW5zIGFycmF5IGFkZHJlc3NMaW5lLApA
QCAtNDgsMTIgKzQ5LDIyIEBAIGZ1bmN0aW9uIHJ1blRlc3QoYnV0dG9uLCBleHBlY3RlZCA9IHt9
KSB7CiAgICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlLCBtc2cp
OwogICAgIH0KICAgICAvLyBDaGVjayB0b0pTT04gcmVzdWx0Ci0gICAgZm9yIChsZXQgW3Byb3As
IGpzb25WYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYWRkci50b0pTT04oKSkpIHsKKyAgICBjb25z
dCBqc29uQWRkcmVzcyA9IGFkZHIudG9KU09OKCk7CisgICAgY29uc3QganNvbkFkZHJlc3NFbnRy
aWVzID0gT2JqZWN0LmVudHJpZXMoanNvbkFkZHJlc3MpOworICAgIGZvciAobGV0IFtwcm9wLCBq
c29uVmFsdWVdIG9mIGpzb25BZGRyZXNzRW50cmllcykgewogICAgICAgY29uc3QgYWN0dWFsVmFs
dWUgPSBqc29uVmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpOwogICAgICAgY29uc3QgZXhw
ZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkW3Byb3BdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTsKICAg
ICAgIGNvbnN0IG1zZyA9IGBFeHBlY3RlZCBKU09OICR7cHJvcH0gdG8gYmUgJHtleHBlY3RlZFZh
bHVlfWA7CiAgICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlLCBt
c2cpOwogICAgIH0KKyAgICBhc3NlcnRfZXF1YWxzKGpzb25BZGRyZXNzRW50cmllcy5sZW5ndGgs
IGV4cGVjdGVkRW50cmllcy5sZW5ndGgpOworICAgIC8vIENoZWNrIHRoYXQgLnRvSlNPTigpIGNy
ZWF0ZWQgYSBmcm96ZW4gYXJyYXkKKyAgICBhc3NlcnRfdGhyb3dzKAorICAgICAgbmV3IFR5cGVF
cnJvcigpLAorICAgICAgKCkgPT4geworICAgICAgICBqc29uQWRkcmVzcy5hZGRyZXNzTGluZS5w
dXNoKCJ0aGlzIG11c3QgdGhyb3ciKTsKKyAgICAgIH0sCisgICAgKTsKICAgfSwgYnV0dG9uLnRl
eHRDb250ZW50LnRyaW0oKSk7CiAgIGRvbmUoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>