<?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>231819</bug_id>
          
          <creation_ts>2021-10-15 10:53:39 -0700</creation_ts>
          <short_desc>Add tests for WTF::OSObjectPtr/adoptOSObject in Cocoa with and without ARC</short_desc>
          <delta_ts>2021-10-17 16:09:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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=231251</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231817</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="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1804902</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-15 10:53:39 -0700</bug_when>
    <thetext>Add tests for WTF::OSObjectPtr/adoptOSObject in Cocoa with and without ARC.

While fixing Bug 231817, I decided to add tests for WTF::OSObjectPtr/adoptOSObject in Cocoa sources with and without ARC.

The interesting thing about the xpc_object_t type is that it behaves like a CFTypeRef in C/C++ code, like a CFTypeRef/NSObject in Cocoa without ARC (MRR), and like an NSObject in Cocoa with ARC (since ARC manages the lifetime of all xpc_object_t objects).

I suspect that WTF::OSObjectPtr/adoptOSObject probably leaks objects under ARC (and there is at least one using of it in an Objective-C++ source file in WTF), but I can&apos;t quite nail down a failing test.  (I think the test may be flakey based on whether MRR or ARC code is kept during linking.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804912</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-15 11:08:03 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #0)
&gt; I suspect that WTF::OSObjectPtr/adoptOSObject probably leaks objects under
&gt; ARC (and there is at least one using of it in an Objective-C++ source file
&gt; in WTF), but I can&apos;t quite nail down a failing test.  (I think the test may
&gt; be flakey based on whether MRR or ARC code is kept during linking.)

Actually, because WTF::OSObjectPtr uses the correct type to store the object (and doesn&apos;t type-pun to CFTypeRef), we might not leak.  The only issue may be some ref-churn when using adoptOSObject().

And doing this:

#define adoptOSObject adoptOSObjectArc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804960</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-15 12:31:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/84312692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804975</commentid>
    <comment_count>3</comment_count>
      <attachid>441418</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-15 13:20:55 -0700</bug_when>
    <thetext>Created attachment 441418
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804976</commentid>
    <comment_count>4</comment_count>
      <attachid>441418</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-15 13:22:52 -0700</bug_when>
    <thetext>Comment on attachment 441418
Patch v1

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

NOTE: Need to test Debug builds before marking cq+.

&gt; Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp:37
&gt; +#ifdef __OBJC__
&gt; +#define bridge_cf_cast(object) ((__bridge CFTypeRef)object)
&gt; +#else
&gt; +#define bridge_cf_cast(object) ((CFTypeRef)object)
&gt; +#endif

Need to check whether this is strictly necessary below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804984</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-15 13:31:37 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #1)
&gt; because WTF::OSObjectPtr uses the correct type to store the object
&gt; (and doesn&apos;t type-pun to CFTypeRef), we might not leak.

Need to test all 3 cases:

Objective-C++ with ARC on
Objective-C++ with ARC off
C++ where we can do things like copy, move, or destroy the RetainPtr but can’t actually use the pointer beyond that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804985</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-15 13:35:42 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #1)
&gt; &gt; because WTF::OSObjectPtr uses the correct type to store the object
&gt; &gt; (and doesn&apos;t type-pun to CFTypeRef), we might not leak.
&gt; 
&gt; Need to test all 3 cases:
&gt; 
&gt; Objective-C++ with ARC on
&gt; Objective-C++ with ARC off
&gt; C++ where we can do things like copy, move, or destroy the RetainPtr but
&gt; can’t actually use the pointer beyond that

Right.  This patch does that.  Am I missing something?

    Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp
    Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtrCocoa.mm
    Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtrCocoaARC.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804987</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-15 13:41:09 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; Right.  This patch does that.

Great; hadn’t looked at the patch yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805012</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-15 14:22:14 -0700</bug_when>
    <thetext>Another concern I had (that&apos;s more of a thought experiment than a writing-a-test experiment) is that the code for WTF::OSObjectPtr&lt;T&gt; in C/C++ and non-ARC Cocoa will behave _differently_ (but have the same signatures as) WTF::OSObjectPtr&lt;T&gt; in ARC-enabled Cocoa.

I&apos;m not sure how to fix that, unless we ban the use of WTF::OSObjectPtr&lt;T&gt; in Cocoa (or in ARC-enabled Cocoa) and use RetainPtr&lt;&gt; instead (which should work perfectly fine).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805016</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-15 14:24:08 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #8)
&gt; Another concern I had (that&apos;s more of a thought experiment than a
&gt; writing-a-test experiment) ....

And I say this because the bad behavior occurs at link time, but the linker is non-deterministic in that it can choose either the ARC implementation or a non-ARC implementation to keep, so these would show up as flakey tests.

So I think it&apos;s better to think through whether this is an issue or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805059</commentid>
    <comment_count>10</comment_count>
      <attachid>441418</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-15 15:20:28 -0700</bug_when>
    <thetext>Comment on attachment 441418
Patch v1

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

&gt; Source/WTF/wtf/OSObjectPtr.h:42
&gt; +template&lt;typename T&gt; OSObjectPtr&lt;T&gt; adoptOSObject(T) WARN_UNUSED_RETURN;

Not sure how I feel about adding this.

Typically we use WARN_UNUSED_RETURN when it’s a programming error to not use the return value. Especially when it’s a particularly dangerous one. We haven’t done this for adoptRef, although we have done for adoptCF and adoptNS. A little funny to use it on the much less used functions and not on the nearly-ubiquitous adoptRef.

And to be super-pedantic, I don’t think it is guaranteed to be an error. For example, if a function has a side effect and also returns an allocated object, you might need to call adoptOSObject on it and it would be OK to not use the result, and let it get destroyed. Another way to write the release.

Anyway, I suppose I am OK with it for now.

&gt; Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp:66
&gt; +    EXPECT_EQ(1, CFGetRetainCount((CFTypeRef)fooPtr));

In non-ARC cases, doesn’t this test leak a dispatch queue? Doesn’t seem like a new issue, but also doesn&apos;t seem great.

Seems like we’d fix it by adding another WTF::releaseOSObject(foo).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805262</commentid>
    <comment_count>11</comment_count>
      <attachid>441418</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-16 08:27:57 -0700</bug_when>
    <thetext>Comment on attachment 441418
Patch v1

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

&gt;&gt; Source/WTF/wtf/OSObjectPtr.h:42
&gt;&gt; +template&lt;typename T&gt; OSObjectPtr&lt;T&gt; adoptOSObject(T) WARN_UNUSED_RETURN;
&gt; 
&gt; Not sure how I feel about adding this.
&gt; 
&gt; Typically we use WARN_UNUSED_RETURN when it’s a programming error to not use the return value. Especially when it’s a particularly dangerous one. We haven’t done this for adoptRef, although we have done for adoptCF and adoptNS. A little funny to use it on the much less used functions and not on the nearly-ubiquitous adoptRef.
&gt; 
&gt; And to be super-pedantic, I don’t think it is guaranteed to be an error. For example, if a function has a side effect and also returns an allocated object, you might need to call adoptOSObject on it and it would be OK to not use the result, and let it get destroyed. Another way to write the release.
&gt; 
&gt; Anyway, I suppose I am OK with it for now.

&gt; you might need to call adoptOSObject on it and it would be OK to not use the result, and let it get destroyed.

I&apos;ll keep this in mind, but this pattern doesn&apos;t seem to be used in WebKit at the moment.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp:37
&gt;&gt; +#endif
&gt; 
&gt; Need to check whether this is strictly necessary below.

This wasn&apos;t needed so I removed it, but for Debug builds, some @autoreleasepool { } blocks are needed, just like TypeCastsCocoa.mm.

I&apos;ll post a follow-up patch.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp:66
&gt;&gt; +    EXPECT_EQ(1, CFGetRetainCount((CFTypeRef)fooPtr));
&gt; 
&gt; In non-ARC cases, doesn’t this test leak a dispatch queue? Doesn’t seem like a new issue, but also doesn&apos;t seem great.
&gt; 
&gt; Seems like we’d fix it by adding another WTF::releaseOSObject(foo).

Good catch!  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805264</commentid>
    <comment_count>12</comment_count>
      <attachid>441493</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-16 08:35:32 -0700</bug_when>
    <thetext>Created attachment 441493
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805410</commentid>
    <comment_count>13</comment_count>
      <attachid>441493</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-17 13:14:40 -0700</bug_when>
    <thetext>Comment on attachment 441493
Patch for landing

Adding cq+ since jsc-armv7-tests are not impacted (and aren&apos;t done yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805412</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-17 13:46:51 -0700</bug_when>
    <thetext>Committed r284340 (243134@main): &lt;https://commits.webkit.org/243134@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441493.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805442</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-17 16:09:57 -0700</bug_when>
    <thetext>Checking API test results:

&lt;https://results.webkit.org/?suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;test=TestWTF.OSObjectPtr.AdoptOSObject&amp;test=TestWTF.OSObjectPtr.LeakRef&amp;test=TestWTF.OSObjectPtr.RetainRelease&amp;test=TestWTF.OSObjectPtrCocoa.AdoptOSObject&amp;test=TestWTF.OSObjectPtrCocoa.LeakRef&amp;test=TestWTF.OSObjectPtrCocoa.RetainRelease&amp;test=TestWTF.OSObjectPtrCocoaARC.AdoptOSObject&amp;test=TestWTF.OSObjectPtrCocoaARC.LeakRef&amp;test=TestWTF.OSObjectPtrCocoaARC.RetainRelease&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441418</attachid>
            <date>2021-10-15 13:20:55 -0700</date>
            <delta_ts>2021-10-15 15:20:28 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-231819-20211015132054.patch</filename>
            <type>text/plain</type>
            <size>14224</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBjNjBkMTlhYTE1ZTg1ODJmMDEyMjE4
ZWY5ZGRjYTIzMzhhZDBjNDYuLmZiNTY2YmIyMGFkNzY1ZjZiYmNmNjVjMjVhZmI1YTJiMWQzMDQ3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTAtMTUgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFdURjo6T1NPYmplY3RQdHIv
YWRvcHRPU09iamVjdCBpbiBDb2NvYSB3aXRoIGFuZCB3aXRob3V0IEFSQworICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMjMxODE5PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQzMTI2
OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvT1NPYmplY3RQdHIuaDoKKyAgICAgICAgKFdURjo6YWRvcHRPU09iamVjdCk6CisgICAgICAg
IC0gUmVuYW1lIHdoZW4gYnVpbGRpbmcgd2l0aCBBUkMgZW5hYmxlZCB0byBwcmV2ZW50IGxlYWtz
IG9yCisgICAgICAgICAgb3Zlci1yZWxlYXNlcyB3aGVuIGxpbmtpbmcgQVJDIGFuZCBub24tQVJD
IGNvZGUuCisgICAgICAgIC0gQWRkIFdBUk5fVU5VU0VEX1JFVFVSTiBhdHRyaWJ1dGUgdG8gbWF0
Y2ggV1RGOjphZG9wdE5TKCkuCisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ugc3RkOjp2YXJpYW50IGluc3RlYWQg
b2YgV1RGOjpWYXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU09iamVjdFB0ci5o
IGIvU291cmNlL1dURi93dGYvT1NPYmplY3RQdHIuaAppbmRleCAyMDU3NDg4N2UzODc2MTZhMGEx
MTFkM2VlNWYwMjM0ZDEwODhkM2MzLi40MTJmZmExMTQ0ODMzODdmZTdkYWUxOTBjYzU2NDM1ZGFk
ZmE1NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PU09iamVjdFB0ci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL09TT2JqZWN0UHRyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAvLyBCZWNhdXNl
IEFSQyBlbmFibGVtZW50IGlzIGEgY29tcGlsZS10aW1lIGNob2ljZSwgYW5kIHdlIGNvbXBpbGUg
dGhpcyBoZWFkZXIKIC8vIGJvdGggd2F5cywgd2UgbmVlZCBhIHNlcGFyYXRlIGNvcHkgb2Ygb3Vy
IGNvZGUgd2hlbiBBUkMgaXMgZW5hYmxlZC4KICNpZiBfX2hhc19mZWF0dXJlKG9iamNfYXJjKQor
I2RlZmluZSBhZG9wdE9TT2JqZWN0IGFkb3B0T1NPYmplY3RBcmMKICNkZWZpbmUgcmV0YWluT1NP
YmplY3QgcmV0YWluT1NPYmplY3RBcmMKICNkZWZpbmUgcmVsZWFzZU9TT2JqZWN0IHJlbGVhc2VP
U09iamVjdEFyYwogI2VuZGlmCkBAIC0zOCw3ICszOSw3IEBACiBuYW1lc3BhY2UgV1RGIHsKIAog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIE9TT2JqZWN0UHRyOwotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gT1NPYmplY3RQdHI8VD4gYWRvcHRPU09iamVjdChUKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IE9TT2JqZWN0UHRyPFQ+IGFkb3B0T1NPYmplY3QoVCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIHZvaWQgcmV0YWluT1NPYmplY3QoVCBw
dHIpCiB7CkBAIC0xMzUsNyArMTM2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjpl
eGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CiAgICAgfQogCi0gICAgZnJpZW5kIE9TT2JqZWN0UHRy
IGFkb3B0T1NPYmplY3Q8VD4oVCk7CisgICAgZnJpZW5kIE9TT2JqZWN0UHRyIGFkb3B0T1NPYmpl
Y3Q8VD4oVCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBZG9w
dE9TT2JqZWN0IHsgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA4N2FhM2M3ODUyYWUwMDBkMDQyYjgzNzAyMmFhMzQ3ZThmNzRiZWZlLi5mNTMz
ZjI5OTA3YzMyYjczYjIwYjIzZjllMzFiZTA2ZWY5ODc0MjZmIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTAt
MTUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGVz
dHMgZm9yIFdURjo6T1NPYmplY3RQdHIvYWRvcHRPU09iamVjdCBpbiBDb2NvYSB3aXRoIGFuZCB3
aXRob3V0IEFSQworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjMxODE5PgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODQzMTI2OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBBZGQgT1NPYmplY3RQdHJDb2NvYS5tbSBh
bmQgT1NPYmplY3RQdHJDb2NvYUFSQy5tbSBzb3VyY2UKKyAgICAgICAgICBmaWxlcyB0byB0aGUg
cHJvamVjdC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vT1NPYmpl
Y3RQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIC0gTWFr
ZSBjb2RlIHdvcmsgd2hlbiBjb21waWxlZCB3aXRoIEFSQyBlbmFibGVkLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL2Rhcndpbi9PU09iamVjdFB0ckNvY29hLm1tOiBBZGQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZGFyd2luL09TT2JqZWN0UHRyQ29jb2FB
UkMubW06IEFkZC4KKyAgICAgICAgLSBBZGQgdGVzdCBmaWxlcyB0aGF0ICNpbmNsdWRlIE9TT2Jq
ZWN0UHRyLmNwcC4KKwogMjAyMS0xMC0xMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0FwcGxlU2lsaWNvbl0gU3VwcG9ydCBuYXRpdmUgc2ltdWxhdG9y
IHRlc3RpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODAxZTQ3NDA1ODcyZTgwOTA1OGQw
NDNkMmE2ZGY3MzVmMGNlYjc4Ni4uNDEwNDQ2NzQ1ZjU4NjJlZGI3OThlZWU1NTFhYzAwZDk0ZTk2
M2IxZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2NCw2ICsyNjQsOCBAQAogCQk0MUU2
N0E4NTI1RDE2RTgzMDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nVGVzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU2N0E4NDI1RDE2RTgz
MDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nVGVzdC5jcHAgKi87IH07CiAJCTQ0MDc3QkIx
MjMxNDRCNTAwMDE3OUUyRCAvKiBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MDc3QkIwMjMxNDQ5RDIwMDE3OUUy
RCAvKiBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbSAqLzsgfTsKIAkJNDQzM0EzOTYyMDgwNDQxNDAw
OTFFRDU3IC8qIFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzM0EzOTUyMDgwNDQxMzAwOTFFRDU3IC8qIFN5
bmNocm9ub3VzVGltZW91dFRlc3RzLm1tICovOyB9OworCQk0NDQ0OURDMTI3MThCNEI3MDBFODIx
QjUgLyogT1NPYmplY3RQdHJDb2NvYUFSQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NDQ5REJGMjcxOEI0QjYwMEU4MjFCNSAvKiBPU09iamVjdFB0
ckNvY29hQVJDLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm9iamMtYXJj
IjsgfTsgfTsKKwkJNDQ0NDlEQzIyNzE4QjRCNzAwRTgyMUI1IC8qIE9TT2JqZWN0UHRyQ29jb2Eu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDQ0OURD
MDI3MThCNEI3MDBFODIxQjUgLyogT1NPYmplY3RQdHJDb2NvYS5tbSAqLzsgfTsKIAkJNDQ2NTJD
QjcyNkZDRDQwNTAwNUVDMjcyIC8qIFR5cGVDYXN0c0NvY29hQVJDLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ2NTJDQjYyNkZDRDQwNTAwNUVDMjcy
IC8qIFR5cGVDYXN0c0NvY29hQVJDLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9
ICItZm9iamMtYXJjIjsgfTsgfTsKIAkJNDQ4MTEwQzIyNTNGNDAzMDAwOTdGQzMzIC8qIFdlYlBy
ZWZlcmVuY2VzVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0ODExMEMxMjUzRjQwMjQwMDk3RkMzMyAvKiBXZWJQcmVmZXJlbmNlc1Rlc3QubW0g
Ki87IH07CiAJCTQ0ODE3QTJGMUYwNDg2QkYwMDAwMzgxMCAvKiBXS1JlcXVlc3RBY3RpdmF0ZWRF
bGVtZW50SW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0ODE3QTJFMUYwNDg2QkYwMDAwMzgxMCAvKiBXS1JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50
SW5mby5tbSAqLzsgfTsKQEAgLTIxMTMsNiArMjExNSw4IEBACiAJCTQ0MDc3QkIwMjMxNDQ5RDIw
MDE3OUUyRCAvKiBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyogUmVmTG9nZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkxvZ2dlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzNBMzk1MjA4MDQ0MTMwMDkxRUQ1NyAvKiBT
eW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NDQ0OURCRjI3MThCNEI2MDBFODIxQjUgLyogT1NPYmplY3RQdHJDb2NvYUFS
Qy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9TT2JqZWN0UHRy
Q29jb2FBUkMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0NDQ5REMwMjcxOEI0
QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gT1NPYmplY3RQdHJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDQ2NTJDQjYyNkZDRDQwNTAwNUVDMjcyIC8qIFR5cGVDYXN0c0NvY29hQVJD
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVHlwZUNhc3RzQ29j
b2FBUkMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0ODExMEMxMjUzRjQwMjQw
MDk3RkMzMyAvKiBXZWJQcmVmZXJlbmNlc1Rlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJQcmVmZXJlbmNlc1Rlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0ODE3
QTJFMUYwNDg2QkYwMDAwMzgxMCAvKiBXS1JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLUmVxdWVzdEFjdGl2YXRl
ZEVsZW1lbnRJbmZvLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk3Myw2ICsz
OTc3LDggQEAKIAkJCQkzN0M3Q0MyRTFFQTQxNzAyMDA3QkQ5NTYgLyogbGliVGVzdFdURkFsd2F5
c01pc3NpbmctbWFjT1MtdjIudGJkICovLAogCQkJCTM3QzdDQzM1MUVBNDFFQzgwMDdCRDk1NiAv
KiBsaWJUZXN0V1RGQWx3YXlzTWlzc2luZy1tYWNPUy50YmQgKi8sCiAJCQkJN0NCQkEwNzYxOUJC
OEE5MTAwQkJGMDI1IC8qIE9TT2JqZWN0UHRyLmNwcCAqLywKKwkJCQk0NDQ0OURDMDI3MThCNEI3
MDBFODIxQjUgLyogT1NPYmplY3RQdHJDb2NvYS5tbSAqLywKKwkJCQk0NDQ0OURCRjI3MThCNEI2
MDBFODIxQjUgLyogT1NPYmplY3RQdHJDb2NvYUFSQy5tbSAqLywKIAkJCQkzN0M3Q0MyQjFFQTQx
NDZCMDA3QkQ5NTYgLyogV2Vha0xpbmtpbmcuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBkYXJ3
aW47CkBAIC01MzM3LDYgKzUzNDMsOCBAQAogCQkJCUNENDhBODczMjRDOEE2NkYwMEY1ODAwQyAv
KiBPYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc3QkFBMzFEOUFGRkZDMDA1RkM1
NjggLyogT3B0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjAyMUQwQTU5MEMw
MEZFQkNGMyAvKiBPU09iamVjdFB0ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NDQ0OURDMjI3
MThCNEI3MDBFODIxQjUgLyogT1NPYmplY3RQdHJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTQ0NDQ5REMxMjcxOEI0QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNvY29hQVJDLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTMyQjU0OTIyMjgxMEFDNDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEQ2NUNCMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRS
ZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9kYXJ3aW4vT1NPYmplY3RQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvZGFyd2luL09TT2JqZWN0UHRyLmNwcAppbmRleCA1Mzg5ZGNiYzg0ODA1NzNjMDRi
OTU5YWViY2M0ZDcyNGVhYzc2OWI2Li5kNzZjN2E3YmY5ZDE2MmQ1ODQzYzE2YmQ4NDBkYmRmOGFm
ZDM5ODA0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4v
T1NPYmplY3RQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2Rhcndp
bi9PU09iamVjdFB0ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzAsMzUgKzMwLDUxIEBACiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlz
cGF0Y2guaD4KICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCisj
aWZkZWYgX19PQkpDX18KKyNkZWZpbmUgYnJpZGdlX2NmX2Nhc3Qob2JqZWN0KSAoKF9fYnJpZGdl
IENGVHlwZVJlZilvYmplY3QpCisjZWxzZQorI2RlZmluZSBicmlkZ2VfY2ZfY2FzdChvYmplY3Qp
ICgoQ0ZUeXBlUmVmKW9iamVjdCkKKyNlbmRpZgorCisjaWZuZGVmIE9TX09CSkVDVF9QVFJfVEVT
VF9OQU1FCisjZGVmaW5lIE9TX09CSkVDVF9QVFJfVEVTVF9OQU1FIE9TT2JqZWN0UHRyCisjZW5k
aWYKKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1URVNUKE9TT2JqZWN0UHRyLCBBZG9w
dE9TT2JqZWN0KQorVEVTVChPU19PQkpFQ1RfUFRSX1RFU1RfTkFNRSwgQWRvcHRPU09iamVjdCkK
IHsKICAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBmb28gPSBhZG9wdE9TT2JqZWN0
KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgwLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKLQotICAg
IEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KGZvby5nZXQoKSkpOworICAgIGF1dG8gZm9v
UHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZvby5nZXQoKSk7CisgICAgRVhQRUNU
X0VRKDEsIENGR2V0UmV0YWluQ291bnQoKENGVHlwZVJlZilmb29QdHIpKTsKIH0KIAotVEVTVChP
U09iamVjdFB0ciwgUmV0YWluUmVsZWFzZSkKK1RFU1QoT1NfT0JKRUNUX1BUUl9URVNUX05BTUUs
IFJldGFpblJlbGVhc2UpCiB7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBmb28gPSBkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoMCwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKLSAgICBFWFBFQ1RfRVEoMSwg
Q0ZHZXRSZXRhaW5Db3VudChmb28pKTsKKyAgICBhdXRvIGZvb1B0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihicmlkZ2VfY2ZfY2FzdChmb28pKTsKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZH
ZXRSZXRhaW5Db3VudCgoQ0ZUeXBlUmVmKWZvb1B0cikpOwogCi0gICAgV1RGOjpyZXRhaW5PU09i
amVjdChmb28pOwotICAgIEVYUEVDVF9FUSgyLCBDRkdldFJldGFpbkNvdW50KGZvbykpOworICAg
IFdURjo6cmV0YWluT1NPYmplY3QoZm9vKTsgLy8gRG9lcyBub3RoaW5nIHVuZGVyIEFSQy4KKyNp
ZiBfX2hhc19mZWF0dXJlKG9iamNfYXJjKQorICAgIEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNv
dW50KChDRlR5cGVSZWYpZm9vUHRyKSk7CisjZWxzZQorICAgIEVYUEVDVF9FUSgyLCBDRkdldFJl
dGFpbkNvdW50KChDRlR5cGVSZWYpZm9vUHRyKSk7CisjZW5kaWYKIAotICAgIFdURjo6cmVsZWFz
ZU9TT2JqZWN0KGZvbyk7Ci0gICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQoZm9vKSk7
CisgICAgV1RGOjpyZWxlYXNlT1NPYmplY3QoZm9vKTsgLy8gRG9lcyBub3RoaW5nIHVuZGVyIEFS
Qy4KKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudCgoQ0ZUeXBlUmVmKWZvb1B0cikp
OwogfQogCi1URVNUKE9TT2JqZWN0UHRyLCBMZWFrUmVmKQorVEVTVChPU19PQkpFQ1RfUFRSX1RF
U1RfTkFNRSwgTGVha1JlZikKIHsKICAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBm
b28gPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgwLCBESVNQQVRDSF9RVUVV
RV9TRVJJQUwpKTsKLSAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChmb28uZ2V0KCkp
KTsKKyAgICBhdXRvIGZvb1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihmb28uZ2V0
KCkpOworICAgIEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KChDRlR5cGVSZWYpZm9vUHRy
KSk7CiAKICAgICBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlID0gZm9vLmxlYWtSZWYoKTsKICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgZm9vLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRh
aW5Db3VudChxdWV1ZSkpOworICAgIEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KChDRlR5
cGVSZWYpZm9vUHRyKSk7CiAKICAgICBXVEY6OnJlbGVhc2VPU09iamVjdChxdWV1ZSk7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vT1NPYmplY3RQ
dHJDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2Rhcndpbi9PU09iamVj
dFB0ckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyOWJmNWEzOTlhZDkyZjAzMjI2YjQxYTU4ODk2MjNk
ZjQ2NjdlOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9kYXJ3aW4vT1NPYmplY3RQdHJDb2NvYS5tbQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgX19oYXNfZmVhdHVyZShvYmpjX2FyYykKKyNlcnJvciBUaGlzIHRlc3RzIE9T
T2JqZWN0UHRyLmggd2l0aCBBUkMgZGlzYWJsZWQuCisjZW5kaWYKKworI2RlZmluZSBPU19PQkpF
Q1RfUFRSX1RFU1RfTkFNRSBPU09iamVjdFB0ckNvY29hCisjaW5jbHVkZSAiT1NPYmplY3RQdHIu
Y3BwIgorI3VuZGVmIE9TX09CSkVDVF9QVFJfVEVTVF9OQU1FCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vT1NPYmplY3RQdHJDb2NvYUFSQy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2Rhcndpbi9PU09iamVjdFB0ckNvY29hQVJDLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIwMDMxNGI1MjZlYzMyMmFlMmQwYjczMzBiNDI4OGY5NTljZGI3NzgKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vT1NP
YmplY3RQdHJDb2NvYUFSQy5tbQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgIV9faGFzX2ZlYXR1cmUob2JqY19hcmMpCisjZXJyb3IgVGhpcyB0ZXN0cyBPU09iamVjdFB0
ci5oIHdpdGggQVJDIGVuYWJsZWQuCisjZW5kaWYKKworI2RlZmluZSBPU19PQkpFQ1RfUFRSX1RF
U1RfTkFNRSBPU09iamVjdFB0ckNvY29hQVJDCisjaW5jbHVkZSAiT1NPYmplY3RQdHIuY3BwIgor
I3VuZGVmIE9TX09CSkVDVF9QVFJfVEVTVF9OQU1FCg==
</data>
<flag name="review"
          id="465675"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441493</attachid>
            <date>2021-10-16 08:35:32 -0700</date>
            <delta_ts>2021-10-17 13:46:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231819-20211016083531.patch</filename>
            <type>text/plain</type>
            <size>14867</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBjNjBkMTlhYTE1ZTg1ODJmMDEyMjE4
ZWY5ZGRjYTIzMzhhZDBjNDYuLmU5YTkwZjU3ODZiMjA0NjRkYjUyZjNmNjAwMjc4MjZmNzBkMGM0
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTAtMTYgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFdURjo6T1NPYmplY3RQdHIv
YWRvcHRPU09iamVjdCBpbiBDb2NvYSB3aXRoIGFuZCB3aXRob3V0IEFSQworICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMjMxODE5PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQzMTI2
OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiB3dGYv
T1NPYmplY3RQdHIuaDoKKyAgICAgICAgKFdURjo6YWRvcHRPU09iamVjdCk6CisgICAgICAgIC0g
UmVuYW1lIHdoZW4gYnVpbGRpbmcgd2l0aCBBUkMgZW5hYmxlZCB0byBwcmV2ZW50IGxlYWtzIG9y
CisgICAgICAgICAgb3Zlci1yZWxlYXNlcyB3aGVuIGxpbmtpbmcgQVJDIGFuZCBub24tQVJDIGNv
ZGUuCisgICAgICAgIC0gQWRkIFdBUk5fVU5VU0VEX1JFVFVSTiBhdHRyaWJ1dGUgdG8gbWF0Y2gg
V1RGOjphZG9wdE5TKCkuCisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ugc3RkOjp2YXJpYW50IGluc3RlYWQgb2Yg
V1RGOjpWYXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU09iamVjdFB0ci5oIGIv
U291cmNlL1dURi93dGYvT1NPYmplY3RQdHIuaAppbmRleCAyMDU3NDg4N2UzODc2MTZhMGExMTFk
M2VlNWYwMjM0ZDEwODhkM2MzLi40MTJmZmExMTQ0ODMzODdmZTdkYWUxOTBjYzU2NDM1ZGFkZmE1
NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PU09iamVjdFB0ci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL09TT2JqZWN0UHRyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAvLyBCZWNhdXNlIEFS
QyBlbmFibGVtZW50IGlzIGEgY29tcGlsZS10aW1lIGNob2ljZSwgYW5kIHdlIGNvbXBpbGUgdGhp
cyBoZWFkZXIKIC8vIGJvdGggd2F5cywgd2UgbmVlZCBhIHNlcGFyYXRlIGNvcHkgb2Ygb3VyIGNv
ZGUgd2hlbiBBUkMgaXMgZW5hYmxlZC4KICNpZiBfX2hhc19mZWF0dXJlKG9iamNfYXJjKQorI2Rl
ZmluZSBhZG9wdE9TT2JqZWN0IGFkb3B0T1NPYmplY3RBcmMKICNkZWZpbmUgcmV0YWluT1NPYmpl
Y3QgcmV0YWluT1NPYmplY3RBcmMKICNkZWZpbmUgcmVsZWFzZU9TT2JqZWN0IHJlbGVhc2VPU09i
amVjdEFyYwogI2VuZGlmCkBAIC0zOCw3ICszOSw3IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIE9TT2JqZWN0UHRyOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
T1NPYmplY3RQdHI8VD4gYWRvcHRPU09iamVjdChUKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IE9T
T2JqZWN0UHRyPFQ+IGFkb3B0T1NPYmplY3QoVCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIHZvaWQgcmV0YWluT1NPYmplY3QoVCBwdHIp
CiB7CkBAIC0xMzUsNyArMTM2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjpleGNo
YW5nZShtX3B0ciwgbnVsbHB0cik7CiAgICAgfQogCi0gICAgZnJpZW5kIE9TT2JqZWN0UHRyIGFk
b3B0T1NPYmplY3Q8VD4oVCk7CisgICAgZnJpZW5kIE9TT2JqZWN0UHRyIGFkb3B0T1NPYmplY3Q8
VD4oVCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBZG9wdE9T
T2JqZWN0IHsgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA4N2FhM2M3ODUyYWUwMDBkMDQyYjgzNzAyMmFhMzQ3ZThmNzRiZWZlLi45ODJmNTUx
YTg3ZjlmZDZiZmUxNjhjYjYxZTg0M2ZjZTQ2MTUzZjVkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMTAtMTYg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGVzdHMg
Zm9yIFdURjo6T1NPYmplY3RQdHIvYWRvcHRPU09iamVjdCBpbiBDb2NvYSB3aXRoIGFuZCB3aXRo
b3V0IEFSQworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjMxODE5PgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODQzMTI2OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBBZGQgT1NPYmplY3RQdHJDb2NvYS5tbSBhbmQgT1NP
YmplY3RQdHJDb2NvYUFSQy5tbSBzb3VyY2UKKyAgICAgICAgICBmaWxlcyB0byB0aGUgcHJvamVj
dC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vT1NPYmplY3RQdHIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIC0gTWFrZSBjb2Rl
IHdvcmsgd2hlbiBjb21waWxlZCB3aXRoIEFSQyBlbmFibGVkLgorICAgICAgICAtIEZpeCBhIHBy
ZS1leGlzdGluZyBsZWFrIG9mIGRpc3BhdGNoX3F1ZXVlX3QgaW4gUmV0YWluUmVsZWFzZQorICAg
ICAgICAgIHRlc3QuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZGFyd2luL09T
T2JqZWN0UHRyQ29jb2EubW06IEFkZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9kYXJ3aW4vT1NPYmplY3RQdHJDb2NvYUFSQy5tbTogQWRkLgorICAgICAgICAtIEFkZCB0ZXN0
IGZpbGVzIHRoYXQgI2luY2x1ZGUgT1NPYmplY3RQdHIuY3BwLgorCiAyMDIxLTEwLTEyICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGVTaWxpY29u
XSBTdXBwb3J0IG5hdGl2ZSBzaW11bGF0b3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA4MDFlNDc0MDU4NzJlODA5MDU4ZDA0M2QyYTZkZjczNWYwY2ViNzg2Li40MTA0NDY3NDVm
NTg2MmVkYjc5OGVlZTU1MWFjMDBkOTRlOTYzYjFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjY0LDYgKzI2NCw4IEBACiAJCTQxRTY3QTg1MjVEMTZFODMwMDdCMEE0QyAvKiBTVFVOTWVz
c2FnZVBhcnNpbmdUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRTY3QTg0MjVEMTZFODMwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmdU
ZXN0LmNwcCAqLzsgfTsKIAkJNDQwNzdCQjEyMzE0NEI1MDAwMTc5RTJEIC8qIERhdGFEZXRlY3Rv
cnNUZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDQwNzdCQjAyMzE0NDlEMjAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tICov
OyB9OwogCQk0NDMzQTM5NjIwODA0NDE0MDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVz
dHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDMz
QTM5NTIwODA0NDEzMDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0gKi87IH07
CisJCTQ0NDQ5REMxMjcxOEI0QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNvY29hQVJDLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ0NDlEQkYyNzE4
QjRCNjAwRTgyMUI1IC8qIE9TT2JqZWN0UHRyQ29jb2FBUkMubW0gKi87IHNldHRpbmdzID0ge0NP
TVBJTEVSX0ZMQUdTID0gIi1mb2JqYy1hcmMiOyB9OyB9OworCQk0NDQ0OURDMjI3MThCNEI3MDBF
ODIxQjUgLyogT1NPYmplY3RQdHJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NDQ5REMwMjcxOEI0QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0
ckNvY29hLm1tICovOyB9OwogCQk0NDY1MkNCNzI2RkNENDA1MDA1RUMyNzIgLyogVHlwZUNhc3Rz
Q29jb2FBUkMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NDY1MkNCNjI2RkNENDA1MDA1RUMyNzIgLyogVHlwZUNhc3RzQ29jb2FBUkMubW0gKi87IHNl
dHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mb2JqYy1hcmMiOyB9OyB9OwogCQk0NDgxMTBD
MjI1M0Y0MDMwMDA5N0ZDMzMgLyogV2ViUHJlZmVyZW5jZXNUZXN0Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4MTEwQzEyNTNGNDAyNDAwOTdGQzMz
IC8qIFdlYlByZWZlcmVuY2VzVGVzdC5tbSAqLzsgfTsKIAkJNDQ4MTdBMkYxRjA0ODZCRjAwMDAz
ODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4MTdBMkUxRjA0ODZCRjAwMDAzODEwIC8q
IFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovOyB9OwpAQCAtMjExMyw2ICsyMTE1
LDggQEAKIAkJNDQwNzdCQjAyMzE0NDlEMjAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9y
c1Rlc3RJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MkJCRjY4MUM5MUNB
RDkwMDE3MDg3RiAvKiBSZWZMb2dnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVmTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQz
M0EzOTUyMDgwNDQxMzAwOTFFRDU3IC8qIFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3luY2hyb25vdXNUaW1lb3V0VGVz
dHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0NDQ5REJGMjcxOEI0QjYwMEU4
MjFCNSAvKiBPU09iamVjdFB0ckNvY29hQVJDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gT1NPYmplY3RQdHJDb2NvYUFSQy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDQ0NDlEQzAyNzE4QjRCNzAwRTgyMUI1IC8qIE9TT2JqZWN0UHRyQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPU09iamVjdFB0ckNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDY1MkNCNjI2RkNENDA1MDA1
RUMyNzIgLyogVHlwZUNhc3RzQ29jb2FBUkMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBUeXBlQ2FzdHNDb2NvYUFSQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDQ4MTEwQzEyNTNGNDAyNDAwOTdGQzMzIC8qIFdlYlByZWZlcmVuY2VzVGVzdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzVGVzdC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4MTdBMkUxRjA0ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVz
dEFjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tSZXF1ZXN0QWN0aXZhdGVkRWxlbWVudEluZm8ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zOTczLDYgKzM5NzcsOCBAQAogCQkJCTM3QzdDQzJFMUVBNDE3MDIw
MDdCRDk1NiAvKiBsaWJUZXN0V1RGQWx3YXlzTWlzc2luZy1tYWNPUy12Mi50YmQgKi8sCiAJCQkJ
MzdDN0NDMzUxRUE0MUVDODAwN0JEOTU2IC8qIGxpYlRlc3RXVEZBbHdheXNNaXNzaW5nLW1hY09T
LnRiZCAqLywKIAkJCQk3Q0JCQTA3NjE5QkI4QTkxMDBCQkYwMjUgLyogT1NPYmplY3RQdHIuY3Bw
ICovLAorCQkJCTQ0NDQ5REMwMjcxOEI0QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNvY29hLm1t
ICovLAorCQkJCTQ0NDQ5REJGMjcxOEI0QjYwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNvY29hQVJD
Lm1tICovLAogCQkJCTM3QzdDQzJCMUVBNDE0NkIwMDdCRDk1NiAvKiBXZWFrTGlua2luZy5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGRhcndpbjsKQEAgLTUzMzcsNiArNTM0Myw4IEBACiAJCQkJ
Q0Q0OEE4NzMyNEM4QTY2RjAwRjU4MDBDIC8qIE9ic2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNzdCQUEzMUQ5QUZGRkMwMDVGQzU2OCAvKiBPcHRpb25TZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0RGMDIxRDBBNTkwQzAwRkVCQ0YzIC8qIE9TT2JqZWN0UHRyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTQ0NDQ5REMyMjcxOEI0QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDQ0NDlEQzEyNzE4QjRCNzAwRTgyMUI1IC8qIE9T
T2JqZWN0UHRyQ29jb2FBUkMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMzJCNTQ5MjIyODEwQUM0
MDA4QUQ3MDIgLyogUGFja2VkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEQ2NUNBMjNBNDVG
QUEwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4RDY1Q0Iy
M0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2Rhcndpbi9PU09iamVjdFB0ci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vT1NPYmplY3RQdHIuY3Bw
CmluZGV4IDUzODlkY2JjODQ4MDU3M2MwNGI5NTlhZWJjYzRkNzI0ZWFjNzY5YjYuLjNlNTI4MzUy
MzBkYTkwMWNjYWYzN2JlODg2YzM1ODQ0NzZmODM1NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL2Rhcndpbi9PU09iamVjdFB0ci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvZGFyd2luL09TT2JqZWN0UHRyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzOCArMjcsNjgg
QEAKIAogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogCi0jaW5jbHVkZSA8ZGlzcGF0Y2gv
ZGlzcGF0Y2guaD4KICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgor
I2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisKKyNpZiBfX2hhc19mZWF0dXJlKG9iamNf
YXJjKSAmJiAhZGVmaW5lZChOREVCVUcpCisvLyBEZWJ1ZyBidWlsZHMgd2l0aCBBUkMgZW5hYmxl
ZCBjYXVzZSBvYmplY3RzIHRvIGJlIGF1dG9yZWxlYXNlZAorLy8gd2hlbiBhc3NpZ25pbmcgYWRv
cHROUygpIHJlc3VsdCB0byBhIGRpZmZlcmVudCBSZXRhaW5QdHI8PiB0eXBlLAorLy8gYW5kIHdo
ZW4gY2FsbGluZyBSZXRhaW5QdHI8Pjo6Z2V0KCkuCisjZGVmaW5lIEFVVE9SRUxFQVNFUE9PTF9G
T1JfQVJDX0RFQlVHIEBhdXRvcmVsZWFzZXBvb2wKKyNlbHNlCisjZGVmaW5lIEFVVE9SRUxFQVNF
UE9PTF9GT1JfQVJDX0RFQlVHCisjZW5kaWYKKworI2lmbmRlZiBPU19PQkpFQ1RfUFRSX1RFU1Rf
TkFNRQorI2RlZmluZSBPU19PQkpFQ1RfUFRSX1RFU1RfTkFNRSBPU09iamVjdFB0cgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotVEVTVChPU09iamVjdFB0ciwgQWRvcHRP
U09iamVjdCkKK1RFU1QoT1NfT0JKRUNUX1BUUl9URVNUX05BTUUsIEFkb3B0T1NPYmplY3QpCiB7
CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gZm9vID0gYWRvcHRPU09iamVjdChk
aXNwYXRjaF9xdWV1ZV9jcmVhdGUoMCwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7Ci0KLSAgICBF
WFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChmb28uZ2V0KCkpKTsKKyAgICB1aW50cHRyX3Qg
Zm9vUHRyOworICAgIEFVVE9SRUxFQVNFUE9PTF9GT1JfQVJDX0RFQlVHIHsKKyAgICAgICAgZm9v
UHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZvby5nZXQoKSk7CisgICAgfQorICAg
IEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KChDRlR5cGVSZWYpZm9vUHRyKSk7CiB9CiAK
LVRFU1QoT1NPYmplY3RQdHIsIFJldGFpblJlbGVhc2UpCitURVNUKE9TX09CSkVDVF9QVFJfVEVT
VF9OQU1FLCBSZXRhaW5SZWxlYXNlKQogewogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZm9vID0gZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKDAsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgRVhQRUNU
X0VRKDEsIENGR2V0UmV0YWluQ291bnQoZm9vKSk7CisgICAgYXV0byBmb29QdHIgPSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oZm9vKTsKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5D
b3VudCgoQ0ZUeXBlUmVmKWZvb1B0cikpOworCisgICAgV1RGOjpyZXRhaW5PU09iamVjdChmb28p
OyAvLyBEb2VzIG5vdGhpbmcgdW5kZXIgQVJDLgorI2lmIF9faGFzX2ZlYXR1cmUob2JqY19hcmMp
CisgICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQoKENGVHlwZVJlZilmb29QdHIpKTsK
KyNlbHNlCisgICAgRVhQRUNUX0VRKDIsIENGR2V0UmV0YWluQ291bnQoKENGVHlwZVJlZilmb29Q
dHIpKTsKKyNlbmRpZgogCi0gICAgV1RGOjpyZXRhaW5PU09iamVjdChmb28pOwotICAgIEVYUEVD
VF9FUSgyLCBDRkdldFJldGFpbkNvdW50KGZvbykpOworICAgIFdURjo6cmVsZWFzZU9TT2JqZWN0
KGZvbyk7IC8vIERvZXMgbm90aGluZyB1bmRlciBBUkMuCisgICAgRVhQRUNUX0VRKDEsIENGR2V0
UmV0YWluQ291bnQoKENGVHlwZVJlZilmb29QdHIpKTsKIAotICAgIFdURjo6cmVsZWFzZU9TT2Jq
ZWN0KGZvbyk7Ci0gICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQoZm9vKSk7CisgICAg
V1RGOjpyZWxlYXNlT1NPYmplY3QoZm9vKTsgLy8gQmFsYW5jZSBkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoKSB3aXRob3V0IEFSQy4KIH0KIAotVEVTVChPU09iamVjdFB0ciwgTGVha1JlZikKK1RFU1Qo
T1NfT0JKRUNUX1BUUl9URVNUX05BTUUsIExlYWtSZWYpCiB7CiAgICAgT1NPYmplY3RQdHI8ZGlz
cGF0Y2hfcXVldWVfdD4gZm9vID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUo
MCwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7Ci0gICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWlu
Q291bnQoZm9vLmdldCgpKSk7CisgICAgdWludHB0cl90IGZvb1B0cjsKKyAgICBBVVRPUkVMRUFT
RVBPT0xfRk9SX0FSQ19ERUJVRyB7CisgICAgICAgIGZvb1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihmb28uZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRh
aW5Db3VudCgoQ0ZUeXBlUmVmKWZvb1B0cikpOwogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1
ZSA9IGZvby5sZWFrUmVmKCk7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZTsKKyAgICBBVVRP
UkVMRUFTRVBPT0xfRk9SX0FSQ19ERUJVRyB7CisgICAgICAgIHF1ZXVlID0gZm9vLmxlYWtSZWYo
KTsKKyAgICB9CiAgICAgRVhQRUNUX0VRKG51bGxwdHIsIGZvby5nZXQoKSk7Ci0gICAgRVhQRUNU
X0VRKDEsIENGR2V0UmV0YWluQ291bnQocXVldWUpKTsKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRS
ZXRhaW5Db3VudCgoQ0ZUeXBlUmVmKWZvb1B0cikpOwogCiAgICAgV1RGOjpyZWxlYXNlT1NPYmpl
Y3QocXVldWUpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
ZGFyd2luL09TT2JqZWN0UHRyQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9kYXJ3aW4vT1NPYmplY3RQdHJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjliZjVhMzk5YWQ5MmYw
MzIyNmI0MWE1ODg5NjIzZGY0NjY3ZTkyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvZGFyd2luL09TT2JqZWN0UHRyQ29jb2EubW0KQEAgLTAsMCArMSwz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIF9faGFzX2ZlYXR1cmUob2JqY19hcmMpCisjZXJy
b3IgVGhpcyB0ZXN0cyBPU09iamVjdFB0ci5oIHdpdGggQVJDIGRpc2FibGVkLgorI2VuZGlmCisK
KyNkZWZpbmUgT1NfT0JKRUNUX1BUUl9URVNUX05BTUUgT1NPYmplY3RQdHJDb2NvYQorI2luY2x1
ZGUgIk9TT2JqZWN0UHRyLmNwcCIKKyN1bmRlZiBPU19PQkpFQ1RfUFRSX1RFU1RfTkFNRQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZGFyd2luL09TT2JqZWN0UHRy
Q29jb2FBUkMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9kYXJ3aW4vT1NPYmpl
Y3RQdHJDb2NvYUFSQy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDAzMTRiNTI2ZWMzMjJhZTJkMGI3MzMwYjQy
ODhmOTU5Y2RiNzc4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvZGFyd2luL09TT2JqZWN0UHRyQ29jb2FBUkMubW0KQEAgLTAsMCArMSwzMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmICFfX2hhc19mZWF0dXJlKG9iamNfYXJjKQorI2Vycm9yIFRoaXMg
dGVzdHMgT1NPYmplY3RQdHIuaCB3aXRoIEFSQyBlbmFibGVkLgorI2VuZGlmCisKKyNkZWZpbmUg
T1NfT0JKRUNUX1BUUl9URVNUX05BTUUgT1NPYmplY3RQdHJDb2NvYUFSQworI2luY2x1ZGUgIk9T
T2JqZWN0UHRyLmNwcCIKKyN1bmRlZiBPU19PQkpFQ1RfUFRSX1RFU1RfTkFNRQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>