<?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>219620</bug_id>
          
          <creation_ts>2020-12-07 16:01:29 -0800</creation_ts>
          <short_desc>Potential crash under [WKRemoteObjectEncoder encodeObject:forKey:] when the object graph contains a cycle</short_desc>
          <delta_ts>2021-02-19 08:14:21 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>222172</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1712649</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-07 16:01:29 -0800</bug_when>
    <thetext>Potential crash under [WKRemoteObjectEncoder encodeObject:forKey:] when the object graph contains a cycle:
Thread 0 Crashed:
0   libsystem_malloc.dylib        	0x00007fff20348dfa _malloc_zone_malloc + 114
1   com.apple.CoreFoundation      	0x00007fff20592f14 __CFStrAllocateMutableContents + 61
2   com.apple.CoreFoundation      	0x00007fff20592678 __CFStringChangeSizeMultiple + 677
3   com.apple.CoreFoundation      	0x00007fff205b248b __CFStringAppendBytes + 584
4   com.apple.CoreFoundation      	0x00007fff205afca9 __CFStringAppendFormatCore + 8684
5   com.apple.CoreFoundation      	0x00007fff206de734 _CFStringCreateWithFormatAndArgumentsReturningMetadata + 159
6   com.apple.CoreFoundation      	0x00007fff205adaaf _CFStringCreateWithFormatAndArgumentsAux2 + 20
7   com.apple.Foundation          	0x00007fff21346eef +[NSString stringWithFormat:] + 153
8   com.apple.Foundation          	0x00007fff213787f5 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1029
9   com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
10  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
11  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
12  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136
13  com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
14  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
15  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
16  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136
17  com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
18  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
19  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
20  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136
21  com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
22  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
23  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
24  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136
25  com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
26  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
27  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
28  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136
29  com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
30  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
31  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
32  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136
33  com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
34  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
35  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
36  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136
37  com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
38  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
39  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
40  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136
41  com.apple.WebKit              	0x0000000114994d06 encodeObject(WKRemoteObjectEncoder*, objc_object*) + 822 (WKRemoteObjectCoder.mm:321)
42  com.apple.WebKit              	0x000000011498f5c1 createEncodedObject(WKRemoteObjectEncoder*, objc_object*) + 161 (WKRemoteObjectCoder.mm:332)
43  com.apple.WebKit              	0x000000011498f3f4 -[WKRemoteObjectEncoder encodeObject:forKey:] + 84 (WKRemoteObjectCoder.mm:430)
44  com.apple.Foundation          	0x00007fff21378860 -[NSDictionary(NSDictionary) encodeWithCoder:] + 1136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712650</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-07 16:01:48 -0800</bug_when>
    <thetext>&lt;rdar://71551776&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712651</commentid>
    <comment_count>2</comment_count>
      <attachid>415598</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-07 16:06:17 -0800</bug_when>
    <thetext>Created attachment 415598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712675</commentid>
    <comment_count>3</comment_count>
      <attachid>415598</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-07 20:20:28 -0800</bug_when>
    <thetext>Comment on attachment 415598
Patch

r=me

Seems OK, but aren&apos;t we just going to keep crashing? (NSException is fatal.)

Maybe a better behavior would be to log an error and skip the recursion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712805</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-08 08:39:19 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 415598 [details]
&gt; Patch
&gt; 
&gt; r=me
&gt; 
&gt; Seems OK, but aren&apos;t we just going to keep crashing? (NSException is fatal.)

It depends if the call sites are dealing with exceptions or not. Exceptions could already be raised by encoder so in theory they should. However, I agree that in practice, this may keep crashing. Hopefully the crash would be more useful though.

&gt; 
&gt; Maybe a better behavior would be to log an error and skip the recursion.


Yes, this is a viable alternative although I am not 100% clear what &quot;skip the recursion&quot; means in practice. We are being asked to encode an object. I guess I could ignore the passed in object and encode NSNull instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712836</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-08 11:02:52 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Geoffrey Garen from comment #3)
&gt; &gt; Comment on attachment 415598 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; Seems OK, but aren&apos;t we just going to keep crashing? (NSException is fatal.)
&gt; 
&gt; It depends if the call sites are dealing with exceptions or not. Exceptions
&gt; could already be raised by encoder so in theory they should. However, I
&gt; agree that in practice, this may keep crashing. Hopefully the crash would be
&gt; more useful though.
&gt; 
&gt; &gt; 
&gt; &gt; Maybe a better behavior would be to log an error and skip the recursion.
&gt; 
&gt; 
&gt; Yes, this is a viable alternative although I am not 100% clear what &quot;skip
&gt; the recursion&quot; means in practice. We are being asked to encode an object. I
&gt; guess I could ignore the passed in object and encode NSNull instead?

I tried encoding NSNull and this caused an exception to be raised later on when decoding instead. NSNull is not part of the allowed class types. Even if it was part of the allowed class types though, there is no guarantee decoding would succeed in general if what we encoded does not match exactly what the decoder expects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712845</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-08 11:21:29 -0800</bug_when>
    <thetext>Maybe encode the container as an empty container, or just skip that specific entry in the container?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712869</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-08 12:33:38 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; Maybe encode the container as an empty container, or just skip that specific
&gt; entry in the container?

We are encoding objects of virtually any type. I happened to use an NSDictionary in my API test for convenience but I don&apos;t think a solution specific to container types is suitable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712888</commentid>
    <comment_count>8</comment_count>
      <attachid>415669</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-08 13:16:24 -0800</bug_when>
    <thetext>Created attachment 415669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712891</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-08 13:17:50 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Created attachment 415669 [details]
&gt; Patch

Here is another iteration that tries to avoid raising an exception when possible. When a cycle is detected, we encode a default-initialized version of the object instead of the object itself. If we fail to default-initialize an object of the same type, we still raise an exception though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712922</commentid>
    <comment_count>10</comment_count>
      <attachid>415669</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-08 14:11:00 -0800</bug_when>
    <thetext>Comment on attachment 415669
Patch

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

&gt; Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm:316
&gt; +            id newObject = [[[object class] alloc] init];

Should we use objectClass here instead?

I think we need an autorelease after the init to avoid a leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712923</commentid>
    <comment_count>11</comment_count>
      <attachid>415669</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-08 14:13:57 -0800</bug_when>
    <thetext>Comment on attachment 415669
Patch

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

&gt;&gt; Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm:316
&gt;&gt; +            id newObject = [[[object class] alloc] init];
&gt; 
&gt; Should we use objectClass here instead?
&gt; 
&gt; I think we need an autorelease after the init to avoid a leak.

objectClass is [object classForCoder], not [object class]. I am trying to create a new object of same class as |object| so I think my code is correct. Using [object classForCoder] means I would potentially create an object of a different type.

Good point about the leaking. I will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712926</commentid>
    <comment_count>12</comment_count>
      <attachid>415677</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-12-08 14:22:31 -0800</bug_when>
    <thetext>Created attachment 415677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712928</commentid>
    <comment_count>13</comment_count>
      <attachid>415677</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-08 14:26:57 -0800</bug_when>
    <thetext>Comment on attachment 415677
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712955</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-08 15:45:48 -0800</bug_when>
    <thetext>Committed r270559: &lt;https://trac.webkit.org/changeset/270559&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415677.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731341</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-19 08:14:21 -0800</bug_when>
    <thetext>This patch did not suffice and I now have a reproduction case. I am following up with Bug 222172.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415598</attachid>
            <date>2020-12-07 16:06:17 -0800</date>
            <delta_ts>2020-12-08 13:16:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219620-20201207160616.patch</filename>
            <type>text/plain</type>
            <size>6904</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2MTdmM2RmNGRhNzFlOGRk
MjJiODJiNWZhZGQ5YTZmMjZlMTNhMWQuLjc5MWFhMDhiNmY2NjEyNzFlMGVmNjkyNjA5NWU4NzNm
NzVlY2I1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTItMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQb3RlbnRpYWwgY3Jhc2ggdW5kZXIg
W1dLUmVtb3RlT2JqZWN0RW5jb2RlciBlbmNvZGVPYmplY3Q6Zm9yS2V5Ol0gd2hlbiB0aGUgb2Jq
ZWN0IGdyYXBoIGNvbnRhaW5zIGEgY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTYyMAorICAgICAgICA8cmRhcjovLzcxNTUxNzc2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXS1Jl
bW90ZU9iamVjdEVuY29kZXIgdG8gZGV0ZWN0IGN5Y2xlcyB3aGVuIGVuY29kaW5nIG9iamVjdHMu
IFdoZW4gYSBjeWNsZSBpcyBkZXRlY3RlZCwgd2UKKyAgICAgICAgcmFpc2UgYSBOU0ludmFsaWRB
cmd1bWVudEV4Y2VwdGlvbi4gQmFzZWQgb24gY3Jhc2hlcyBpbiB0aGUgd2lsZCwgd2UgaGF2ZSBl
dmlkZW5jZSB0aGF0IHN1Y2ggY3ljbGVzCisgICAgICAgIGFyZSBvY2N1cmluZyBhbmQgSSBzdXNw
ZWN0IHRoaXMgaXMgY2F1c2VkIGJ5IE5vcnRvbiBTYWZlIFdlYiBleHRlbnNpb24gc29tZWhvdy4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbToKKyAg
ICAgICAgKC1bV0tSZW1vdGVPYmplY3RFbmNvZGVyIGluaXRdKToKKyAgICAgICAgKGVuY29kZU9i
amVjdCk6CisKIDIwMjAtMTItMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHNhbmRib3ggdGVsZW1ldHJ5IGZvciBsaWtlbHkgdW51c2VkIGZlYXR1
cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9i
amVjdENvZGVyLm1tCmluZGV4IDY5NjNmMTkzODRmMTk0YjNkZTFlYWRiZWY4YjY4YjgzYTdiYzAx
ZTcuLjg1OTYyYzNmODJkNDMzMGVjZjQ4YWUxMjYyOTM4MTY5ZGU1ZGJhNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
CkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRl
cm5hbC5oIgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgog
I2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC02MSw2ICs2Miw3IEBAIEBpbXBsZW1l
bnRhdGlvbiBXS1JlbW90ZU9iamVjdEVuY29kZXIgewogICAgIEFQSTo6QXJyYXkqIF9vYmplY3RT
dHJlYW07CiAKICAgICBBUEk6OkRpY3Rpb25hcnkqIF9jdXJyZW50RGljdGlvbmFyeTsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBfb2JqZWN0c0JlaW5nRW5jb2RlZDsgLy8gVXNlZCB0byBk
ZXRlY3QgY3ljbGVzLgogfQogCiAtIChpZClpbml0CkBAIC03MCw2ICs3Miw3IEBAIC0gKGlkKWlu
aXQKIAogICAgIF9yb290RGljdGlvbmFyeSA9IEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKCk7CiAg
ICAgX2N1cnJlbnREaWN0aW9uYXJ5ID0gX3Jvb3REaWN0aW9uYXJ5LmdldCgpOworICAgIF9vYmpl
Y3RzQmVpbmdFbmNvZGVkID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zMDUsNiArMzA4LDE0IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZU9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKmVuY29kZXIsIGlkIG9iamVjdCkKICAg
ICBpZiAoIW9iamVjdENsYXNzKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlk
QXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiLWNsYXNzRm9yQ29kZXIgcmV0dXJuZWQgbmlsIGZv
ciAlQCIsIG9iamVjdF07CiAKKyAgICBpZiAoW2VuY29kZXItPl9vYmplY3RzQmVpbmdFbmNvZGVk
IGNvbnRhaW5zT2JqZWN0Om9iamVjdF0pCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJPYmplY3Qgb2YgdHlwZSAnJXMnIGNvbnRh
aW5zIGEgY3ljbGUiLCBjbGFzc19nZXROYW1lKG9iamVjdENsYXNzKV07CisKKyAgICBbZW5jb2Rl
ci0+X29iamVjdHNCZWluZ0VuY29kZWQgYWRkT2JqZWN0Om9iamVjdF07CisgICAgYXV0byBleGl0
U2NvcGUgPSBtYWtlU2NvcGVFeGl0KFtlbmNvZGVyLCBvYmplY3RdIHsKKyAgICAgICAgW2VuY29k
ZXItPl9vYmplY3RzQmVpbmdFbmNvZGVkIHJlbW92ZU9iamVjdDpvYmplY3RdOworICAgIH0pOwor
CiAgICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5LT5zZXQoY2xhc3NOYW1lS2V5LCBBUEk6
OlN0cmluZzo6Y3JlYXRlKGNsYXNzX2dldE5hbWUob2JqZWN0Q2xhc3MpKSk7CiAKICAgICBpZiAo
W29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0ludm9jYXRpb24gY2xhc3NdXSkgewpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYwY2E4NDY0NzkyYzZk
NDcyYTg1NGM3NTEzOTViMjkxOTIwYjVkMjMuLmVhMzY1YWE4ZTBjODk4ZjFkYjlmMjkzMzhkYmEy
MWVlMDBiNzI0NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFBvdGVudGlhbCBjcmFzaCB1bmRlciBbV0tSZW1vdGVPYmpl
Y3RFbmNvZGVyIGVuY29kZU9iamVjdDpmb3JLZXk6XSB3aGVuIHRoZSBvYmplY3QgZ3JhcGggY29u
dGFpbnMgYSBjeWNsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5NjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tOgorICAgICAgICAoLVtSZW1vdGVPYmplY3RSZWdp
c3RyeVBsdWdJbiB0YWtlRGljdGlvbmFyeTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKwogMjAyMC0x
Mi0wNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkIEFQSSB0ZXN0IGdhcmRlbmluZywgZGlzYWJsZSBmYWlsaW5nIHRlc3RzIG9uIEJpZyBT
dXIuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKaW5kZXggZWYzYWJjOTA0YWIwMjgzMjRlYjYzZThk
ZjYxYmY2MDE1MjU4MDUyNC4uNzdhNjA3YzMyMDlkNDMxMjAzZTg2N2FhMGQ4YzNhYjY2ZGE2ZmY4
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1v
dGVPYmplY3RSZWdpc3RyeS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaApAQCAtNDgsNiArNDgsNyBAQAogLSAodm9pZCl0
YWtlTG9uZ0xvbmc6KGxvbmcgbG9uZyl2YWx1ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
bG9uZyBsb25nIHZhbHVlKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpdGFrZVVuc2lnbmVk
TG9uZzoodW5zaWduZWQgbG9uZyl2YWx1ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodW5z
aWduZWQgbG9uZyB2YWx1ZSkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXRha2VMb25nOihs
b25nKXZhbHVlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShsb25nIHZhbHVlKSljb21wbGV0
aW9uSGFuZGxlcjsKKy0gKHZvaWQpdGFrZURpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKXZhbHVl
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RpY3Rpb25hcnkgKnZhbHVlKSljb21wbGV0
aW9uSGFuZGxlcjsKIC0gKHZvaWQpZG9Ob3RDYWxsQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KCkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IHJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgY2hhbGxlbmdlOihO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGVycm9yOihOU0Vycm9yICop
ZXJyb3IgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMUmVxdWVzdCAqLCBOU1VSTFJl
c3BvbnNlICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpY2FsbFVJUHJvY2Vzc01ldGhvZFdpdGhSZXBseUJsb2Nr
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1v
dGVPYmplY3RSZWdpc3RyeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggZjJlNTExZTJkNmIwODgxZjliN2Y3YmQ2
MWNhZGE3MTQwNmI4Njg2Ny4uMTRhNGZiNzhjNmUwOWY1ZGEyOWY0MDVkYTkwMGE0YjQyNWRlYjcy
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1v
dGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xNTgsNiArMTU4LDE4IEBAIFRFU1Qo
V2ViS2l0LCBSZW1vdGVPYmplY3RSZWdpc3RyeSkKICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7
CiAgICAgICAgIH1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CisgICAgICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgICAgIGJvb2wgZXhjZXB0aW9uS25vd24g
PSBmYWxzZTsKKyAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqY2hpbGQgPSBbTlNNdXRhYmxl
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOkAiZm9vIiwgQCJuYW1lIiwg
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0sIEAidmFsdWUiLCBuaWxdOworICAgICAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5V2l0aEN5Y2xlID0gW05TTXV0YWJsZURpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpAInJvb3QiLCBAIm5hbWUiLCBjaGlsZCwg
QCJjaGlsZCIsIG5pbF07CisgICAgICAgIFtjaGlsZCBzZXRWYWx1ZTpkaWN0aW9uYXJ5V2l0aEN5
Y2xlIGZvcktleTpAInBhcmVudCJdOworICAgICAgICBAdHJ5IHsKKyAgICAgICAgICAgIFtvYmpl
Y3QgdGFrZURpY3Rpb25hcnk6ZGljdGlvbmFyeVdpdGhDeWNsZSBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TRGljdGlvbmFyeSogdmFsdWUpIHsgfV07CisgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlv
biAqZSkgeworICAgICAgICAgICAgZXhjZXB0aW9uS25vd24gPSB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGV4Y2VwdGlvbktub3duKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnlQbHVnSW4ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tCmluZGV4IGQyMWM2MTY5YWE5MDI0ZjliMjQxNTAx
ZDE4YjIwMDA5YzM3ZDY2MDEuLmRkNzBlNGY2MzY3Y2I0NWJjMjNkMDM3NWVlYWJjNTI0ODM2MDA4
ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbQpAQCAtMTA0LDYgKzEw
NCwxMSBAQCAtICh2b2lkKXRha2VMb25nOihsb25nKXZhbHVlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShsb25nIHZhbHVlKSljb21wbGV0aW9uSAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHZh
bHVlKTsKIH0KIAorLSAodm9pZCl0YWtlRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopdmFsdWUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGljdGlvbmFyeSAqdmFsdWUpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIodmFsdWUpOworfQorCiAtICh2b2lk
KWRvTm90Q2FsbENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415669</attachid>
            <date>2020-12-08 13:16:24 -0800</date>
            <delta_ts>2020-12-08 14:22:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219620-20201208131623.patch</filename>
            <type>text/plain</type>
            <size>12332</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2MTdmM2RmNGRhNzFlOGRk
MjJiODJiNWZhZGQ5YTZmMjZlMTNhMWQuLjA5MGQ4YWEwYjM1NzMxMGRhODg5OTg4OTMzMjcyZTFj
ZWQ1ZjA4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMTItMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQb3RlbnRpYWwgY3Jhc2ggdW5kZXIg
W1dLUmVtb3RlT2JqZWN0RW5jb2RlciBlbmNvZGVPYmplY3Q6Zm9yS2V5Ol0gd2hlbiB0aGUgb2Jq
ZWN0IGdyYXBoIGNvbnRhaW5zIGEgY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTYyMAorICAgICAgICA8cmRhcjovLzcxNTUxNzc2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXS1Jl
bW90ZU9iamVjdEVuY29kZXIgdG8gZGV0ZWN0IGN5Y2xlcyB3aGVuIGVuY29kaW5nIG9iamVjdHMu
IFdoZW4gYSBjeWNsZSBpcyBkZXRlY3RlZCwgd2UKKyAgICAgICAgZmlyc3QgYXR0ZW1wdCB0byBl
bmNvZGUgYSBkZWZhdWx0LWluaXRpYWxpemVkIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGluc3Rl
YWQuIElmIHRoYXQgZmFpbHMsIHdlCisgICAgICAgIHJhaXNlIGEgTlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24uCisKKyAgICAgICAgQmFzZWQgb24gY3Jhc2hlcyBpbiB0aGUgd2lsZCwgd2UgaGF2
ZSBldmlkZW5jZSB0aGF0IHN1Y2ggY3ljbGVzIGFyZSBvY2N1cmluZyBhbmQgSSBzdXNwZWN0IHRo
aXMgaXMKKyAgICAgICAgY2F1c2VkIGJ5IE5vcnRvbiBTYWZlIFdlYiBleHRlbnNpb24gc29tZWhv
dy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbToK
KyAgICAgICAgKC1bV0tSZW1vdGVPYmplY3RFbmNvZGVyIGluaXRdKToKKyAgICAgICAgKGVuY29k
ZU9iamVjdCk6CisKIDIwMjAtMTItMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHNhbmRib3ggdGVsZW1ldHJ5IGZvciBsaWtlbHkgdW51c2VkIGZl
YXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90
ZU9iamVjdENvZGVyLm1tCmluZGV4IDY5NjNmMTkzODRmMTk0YjNkZTFlYWRiZWY4YjY4YjgzYTdi
YzAxZTcuLjc2ZTRlOWQ0MGMyZGViNjRlMWJhN2VhOWEzYmJiYTNmOTAyMzY3MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tCkBAIC0zMSwxMCArMzEsMTIgQEAKICNpbXBvcnQgIkFQSURpY3Rpb25hcnkuaCIKICNpbXBv
cnQgIkFQSU51bWJlci5oIgogI2ltcG9ydCAiQVBJU3RyaW5nLmgiCisjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0ICJOU0ludm9jYXRpb25TUEkuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVj
dEludGVyZmFjZUludGVybmFsLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTYxLDYgKzYz
LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLUmVtb3RlT2JqZWN0RW5jb2RlciB7CiAgICAgQVBJOjpB
cnJheSogX29iamVjdFN0cmVhbTsKIAogICAgIEFQSTo6RGljdGlvbmFyeSogX2N1cnJlbnREaWN0
aW9uYXJ5OworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IF9vYmplY3RzQmVpbmdFbmNvZGVk
OyAvLyBVc2VkIHRvIGRldGVjdCBjeWNsZXMuCiB9CiAKIC0gKGlkKWluaXQKQEAgLTcwLDYgKzcz
LDcgQEAgLSAoaWQpaW5pdAogCiAgICAgX3Jvb3REaWN0aW9uYXJ5ID0gQVBJOjpEaWN0aW9uYXJ5
OjpjcmVhdGUoKTsKICAgICBfY3VycmVudERpY3Rpb25hcnkgPSBfcm9vdERpY3Rpb25hcnkuZ2V0
KCk7CisgICAgX29iamVjdHNCZWluZ0VuY29kZWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFs
bG9jXSBpbml0XSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTMwNSw2ICszMDksMjIgQEAg
c3RhdGljIHZvaWQgZW5jb2RlT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2Rlciwg
aWQgb2JqZWN0KQogICAgIGlmICghb2JqZWN0Q2xhc3MpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCItY2xhc3NGb3JDb2RlciBy
ZXR1cm5lZCBuaWwgZm9yICVAIiwgb2JqZWN0XTsKIAorICAgIGlmIChbZW5jb2Rlci0+X29iamVj
dHNCZWluZ0VuY29kZWQgY29udGFpbnNPYmplY3Q6b2JqZWN0XSkgeworICAgICAgICBSRUxFQVNF
X0xPR19GQVVMVChJUEMsICJXS1JlbW90ZU9iamVjdENvZGU6OmVuY29kZU9iamVjdDogT2JqZWN0
IG9mIHR5cGUgJyV7cHJpdmF0ZX1zJyBjb250YWlucyBhIGN5Y2xlIiwgY2xhc3NfZ2V0TmFtZShv
YmplY3RDbGFzcykpOworICAgICAgICBAdHJ5IHsKKyAgICAgICAgICAgIC8vIFRyeSB0byBlbmNv
ZGUgYSBuZXdseSBpbml0aWFsaXplZCBvYmplY3QgaW5zdGVhZC4KKyAgICAgICAgICAgIGlkIG5l
d09iamVjdCA9IFtbW29iamVjdCBjbGFzc10gYWxsb2NdIGluaXRdOworICAgICAgICAgICAgb2Jq
ZWN0ID0gbmV3T2JqZWN0OworICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKKyAg
ICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBm
b3JtYXQ6QCJPYmplY3Qgb2YgdHlwZSAnJXMnIGNvbnRhaW5zIGEgY3ljbGUiLCBjbGFzc19nZXRO
YW1lKG9iamVjdENsYXNzKV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBbZW5jb2Rlci0+X29i
amVjdHNCZWluZ0VuY29kZWQgYWRkT2JqZWN0Om9iamVjdF07CisgICAgYXV0byBleGl0U2NvcGUg
PSBtYWtlU2NvcGVFeGl0KFtlbmNvZGVyLCBvYmplY3RdIHsKKyAgICAgICAgW2VuY29kZXItPl9v
YmplY3RzQmVpbmdFbmNvZGVkIHJlbW92ZU9iamVjdDpvYmplY3RdOworICAgIH0pOworCiAgICAg
ZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5LT5zZXQoY2xhc3NOYW1lS2V5LCBBUEk6OlN0cmlu
Zzo6Y3JlYXRlKGNsYXNzX2dldE5hbWUob2JqZWN0Q2xhc3MpKSk7CiAKICAgICBpZiAoW29iamVj
dCBpc0tpbmRPZkNsYXNzOltOU0ludm9jYXRpb24gY2xhc3NdXSkgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYwY2E4NDY0NzkyYzZkNDcyYTg1
NGM3NTEzOTViMjkxOTIwYjVkMjMuLmVhMzY1YWE4ZTBjODk4ZjFkYjlmMjkzMzhkYmEyMWVlMDBi
NzI0NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFBvdGVudGlhbCBjcmFzaCB1bmRlciBbV0tSZW1vdGVPYmplY3RFbmNv
ZGVyIGVuY29kZU9iamVjdDpmb3JLZXk6XSB3aGVuIHRoZSBvYmplY3QgZ3JhcGggY29udGFpbnMg
YSBjeWNsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5NjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgIChU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5UGx1Z0luLm1tOgorICAgICAgICAoLVtSZW1vdGVPYmplY3RSZWdpc3RyeVBs
dWdJbiB0YWtlRGljdGlvbmFyeTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKwogMjAyMC0xMi0wNCAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IEFQSSB0ZXN0IGdhcmRlbmluZywgZGlzYWJsZSBmYWlsaW5nIHRlc3RzIG9uIEJpZyBTdXIuCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5LmgKaW5kZXggZWYzYWJjOTA0YWIwMjgzMjRlYjYzZThkZjYxYmY2
MDE1MjU4MDUyNC4uNzdhNjA3YzMyMDlkNDMxMjAzZTg2N2FhMGQ4YzNhYjY2ZGE2ZmY4OCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaApAQCAtNDgsNiArNDgsNyBAQAogLSAodm9pZCl0YWtlTG9u
Z0xvbmc6KGxvbmcgbG9uZyl2YWx1ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikobG9uZyBs
b25nIHZhbHVlKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpdGFrZVVuc2lnbmVkTG9uZzoo
dW5zaWduZWQgbG9uZyl2YWx1ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodW5zaWduZWQg
bG9uZyB2YWx1ZSkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXRha2VMb25nOihsb25nKXZh
bHVlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShsb25nIHZhbHVlKSljb21wbGV0aW9uSGFu
ZGxlcjsKKy0gKHZvaWQpdGFrZURpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKXZhbHVlIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RpY3Rpb25hcnkgKnZhbHVlKSljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpZG9Ob3RDYWxsQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29t
cGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IHJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgY2hhbGxlbmdlOihOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGVycm9yOihOU0Vycm9yICopZXJyb3Ig
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMUmVxdWVzdCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9u
SGFuZGxlcjsKIC0gKHZvaWQpY2FsbFVJUHJvY2Vzc01ldGhvZFdpdGhSZXBseUJsb2NrOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmpl
Y3RSZWdpc3RyeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggZjJlNTExZTJkNmIwODgxZjliN2Y3YmQ2MWNhZGE3
MTQwNmI4Njg2Ny4uYWZlMjQ4NjllNGQ0NGMyY2Q4NTYwYWZkNWU2Y2MzZGMyYTMxMzgwNyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmpl
Y3RSZWdpc3RyeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMjYsNiArMTI2LDUxIEBAIFRFU1QoV2ViS2l0
LCBSZW1vdGVPYmplY3RSZWdpc3RyeSkKIAogICAgICAgICBpc0RvbmUgPSBmYWxzZTsKIAorICAg
ICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXTsKKyAgICAgICAg
TlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJd
IHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAeyBA
InRlc3RGaWVsZE5hbWUiIDogQCJ0ZXN0RmllbGRWYWx1ZSIgfV0gYXV0b3JlbGVhc2VdOworICAg
ICAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAInRlc3REb21h
aW4iIGNvZGU6MTIzIHVzZXJJbmZvOkB7QCJhIjpAImIifV07CisgICAgICAgIE5TVVJMUHJvdGVj
dGlvblNwYWNlICpwcm90ZWN0aW9uU3BhY2UgPSBbW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxv
Y10gaW5pdFdpdGhIb3N0OkAidGVzdEhvc3QiIHBvcnQ6ODAgcHJvdG9jb2w6QCJ0ZXN0UHJvdG9j
b2wiIHJlYWxtOkAidGVzdFJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1dGhlbnRp
Y2F0aW9uTWV0aG9kSFRUUERpZ2VzdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBOU1VSTENyZWRl
bnRpYWwgKmNyZWRlbnRpYWwgPSBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxXaXRoVXNlcjpA
InRlc3RVc2VyIiBwYXNzd29yZDpAInRlc3RQYXNzd29yZCIgcGVyc2lzdGVuY2U6TlNVUkxDcmVk
ZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uXTsKKyAgICAgICAgaWQ8TlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlcj4gc2VuZGVyID0gbmlsOworICAgICAgICBOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UgPSBbW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGFsbG9jXSBpbml0V2l0aFByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UgcHJvcG9z
ZWRDcmVkZW50aWFsOmNyZWRlbnRpYWwgcHJldmlvdXNGYWlsdXJlQ291bnQ6NDIgZmFpbHVyZVJl
c3BvbnNlOnJlc3BvbnNlIGVycm9yOmVycm9yIHNlbmRlcjpzZW5kZXJdIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgW29iamVjdCBzZW5kUmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGNo
YWxsZW5nZTpjaGFsbGVuZ2UgZXJyb3I6ZXJyb3IgY29tcGxldGlvbkhhbmRsZXI6XihOU1VSTFJl
cXVlc3QgKmRlc2VyaWFsaXplZFJlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKmRlc2VyaWFsaXplZFJl
c3BvbnNlLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpkZXNlcmlhbGl6ZWRDaGFsbGVu
Z2UsIE5TRXJyb3IgKmRlc2VyaWFsaXplZEVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZGVzZXJpYWxpemVkUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsICJodHRwczovL3dl
YmtpdC5vcmcvIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoWyhOU0hUVFBVUkxSZXNw
b25zZSAqKWRlc2VyaWFsaXplZFJlc3BvbnNlIGFsbEhlYWRlckZpZWxkc11bQCJ0ZXN0RmllbGRO
YW1lIl0sICJ0ZXN0RmllbGRWYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRl
c2VyaWFsaXplZENoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UucmVhbG0sICJ0ZXN0UmVhbG0iKTsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXNlcmlhbGl6ZWRFcnJvci5kb21haW4sICJ0
ZXN0RG9tYWluIik7CisgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgICAgIGlzRG9u
ZSA9IGZhbHNlOworCisgICAgICAgIGJvb2wgZXhjZXB0aW9uVGhyb3duID0gZmFsc2U7CisgICAg
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmNoaWxkID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpAImZvbyIsIEAibmFtZSIsIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OjFdLCBAInZhbHVlIiwgbmlsXTsKKyAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqZGljdGlvbmFyeVdpdGhDeWNsZSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0c0FuZEtleXM6QCJyb290IiwgQCJuYW1lIiwgY2hpbGQsIEAiY2hpbGQiLCBuaWxd
OworICAgICAgICBbY2hpbGQgc2V0VmFsdWU6ZGljdGlvbmFyeVdpdGhDeWNsZSBmb3JLZXk6QCJw
YXJlbnQiXTsgLy8gQ3JlYXRlcyBhIGN5Y2xlLgorICAgICAgICBAdHJ5IHsKKyAgICAgICAgICAg
IFtvYmplY3QgdGFrZURpY3Rpb25hcnk6ZGljdGlvbmFyeVdpdGhDeWNsZSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TRGljdGlvbmFyeSogdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBOU1N0cmluZyAq
bmFtZSA9IFt2YWx1ZSBvYmplY3RGb3JLZXk6QCJuYW1lIl07CisgICAgICAgICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKEAicm9vdCIsIG5hbWUpOworICAgICAgICAgICAgICAgIE5TRGljdGlvbmFy
eSAqY2hpbGQgPSBbdmFsdWUgb2JqZWN0Rm9yS2V5OkAiY2hpbGQiXTsKKyAgICAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRSghIWNoaWxkKTsKKyAgICAgICAgICAgICAgICBOU1N0cmluZyogY2hpbGRO
YW1lID0gW2NoaWxkIG9iamVjdEZvcktleTpAIm5hbWUiXTsKKyAgICAgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJmb28iLCBjaGlsZE5hbWUpOworICAgICAgICAgICAgICAgIE5TTnVtYmVy
ICpjaGlsZFZhbHVlID0gW2NoaWxkIG9iamVjdEZvcktleTpAInZhbHVlIl07CisgICAgICAgICAg
ICAgICAgRVhQRUNUX0VRKDEsIFtjaGlsZFZhbHVlIGludGVnZXJWYWx1ZV0pOworICAgICAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBoYXZlIGVuY29kZWQgcGFyZW50IGFzIGFuIGVtcHR5IE5TRGlj
dGlvbmFyeS4KKyAgICAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmNoaWxkUGFyZW50ID0gW2No
aWxkIG9iamVjdEZvcktleTpAInBhcmVudCJdOworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KCEhY2hpbGRQYXJlbnQpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUSgwVSwgW2NoaWxkUGFy
ZW50IGNvdW50XSk7CisgICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgICAg
IH1dOworICAgICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAg
ICAgICAgICAgaXNEb25lID0gZmFsc2U7CisgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAq
ZSkgeworICAgICAgICAgICAgZXhjZXB0aW9uVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBFWFBFQ1RfRkFMU0UoZXhjZXB0aW9uVGhyb3duKTsKKwogICAgICAgICBjbGFzcyBEb25l
V2hlbkRlc3Ryb3llZCA6IHB1YmxpYyBSZWZDb3VudGVkPERvbmVXaGVuRGVzdHJveWVkPiB7CiAg
ICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIERvbmVXaGVuRGVzdHJveWVkKGJvb2wmIGlzRG9u
ZSkKQEAgLTE0MiwyMiArMTg3LDYgQEAgVEVTVChXZWJLaXQsIFJlbW90ZU9iamVjdFJlZ2lzdHJ5
KQogICAgICAgICB9CiAKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwotCi0gICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOwot
ICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW1tOU0hUVFBVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtp
dC5vcmcvIl0gc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmll
bGRzOkB7IEAidGVzdEZpZWxkTmFtZSIgOiBAInRlc3RGaWVsZFZhbHVlIiB9XSBhdXRvcmVsZWFz
ZV07Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAi
dGVzdERvbWFpbiIgY29kZToxMjMgdXNlckluZm86QHtAImEiOkAiYiJ9XTsKLSAgICAgICAgTlNV
UkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSA9IFtbW05TVVJMUHJvdGVjdGlvblNw
YWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCJ0ZXN0SG9zdCIgcG9ydDo4MCBwcm90b2NvbDpAInRl
c3RQcm90b2NvbCIgcmVhbG06QCJ0ZXN0UmVhbG0iIGF1dGhlbnRpY2F0aW9uTWV0aG9kOk5TVVJM
QXV0aGVudGljYXRpb25NZXRob2RIVFRQRGlnZXN0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIE5T
VVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdp
dGhVc2VyOkAidGVzdFVzZXIiIHBhc3N3b3JkOkAidGVzdFBhc3N3b3JkIiBwZXJzaXN0ZW5jZTpO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dOwotICAgICAgICBpZDxOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPiBzZW5kZXIgPSBuaWw7Ci0gICAgICAgIE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSA9IFtbW05TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRoUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFj
ZSBwcm9wb3NlZENyZWRlbnRpYWw6Y3JlZGVudGlhbCBwcmV2aW91c0ZhaWx1cmVDb3VudDo0MiBm
YWlsdXJlUmVzcG9uc2U6cmVzcG9uc2UgZXJyb3I6ZXJyb3Igc2VuZGVyOnNlbmRlcl0gYXV0b3Jl
bGVhc2VdOwotICAgICAgICBbb2JqZWN0IHNlbmRSZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVz
cG9uc2UgY2hhbGxlbmdlOmNoYWxsZW5nZSBlcnJvcjplcnJvciBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TVVJMUmVxdWVzdCAqZGVzZXJpYWxpemVkUmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqZGVzZXJp
YWxpemVkUmVzcG9uc2UsIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmRlc2VyaWFsaXpl
ZENoYWxsZW5nZSwgTlNFcnJvciAqZGVzZXJpYWxpemVkRXJyb3IpIHsKLSAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShkZXNlcmlhbGl6ZWRSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgImh0
dHBzOi8vd2Via2l0Lm9yZy8iKTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShbKE5TSFRU
UFVSTFJlc3BvbnNlICopZGVzZXJpYWxpemVkUmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXVtAInRl
c3RGaWVsZE5hbWUiXSwgInRlc3RGaWVsZFZhbHVlIik7Ci0gICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZGVzZXJpYWxpemVkQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5yZWFsbSwgInRlc3RS
ZWFsbSIpOwotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRlc2VyaWFsaXplZEVycm9yLmRv
bWFpbiwgInRlc3REb21haW4iKTsKLSAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgICAg
IH1dOwotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbQppbmRleCBkMjFjNjE2OWFh
OTAyNGY5YjI0MTUwMWQxOGIyMDAwOWMzN2Q2NjAxLi5kZDcwZTRmNjM2N2NiNDViYzIzZDAzNzVl
ZWFiYzUyNDgzNjAwOGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0K
QEAgLTEwNCw2ICsxMDQsMTEgQEAgLSAodm9pZCl0YWtlTG9uZzoobG9uZyl2YWx1ZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikobG9uZyB2YWx1ZSkpY29tcGxldGlvbkgKICAgICBjb21wbGV0
aW9uSGFuZGxlcih2YWx1ZSk7CiB9CiAKKy0gKHZvaWQpdGFrZURpY3Rpb25hcnk6KE5TRGljdGlv
bmFyeSAqKXZhbHVlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RpY3Rpb25hcnkgKnZh
bHVlKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHZhbHVlKTsK
K30KKwogLSAodm9pZClkb05vdENhbGxDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21w
bGV0aW9uSGFuZGxlcgogewogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415677</attachid>
            <date>2020-12-08 14:22:31 -0800</date>
            <delta_ts>2020-12-08 15:45:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219620-20201208142230.patch</filename>
            <type>text/plain</type>
            <size>12370</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2MTdmM2RmNGRhNzFlOGRk
MjJiODJiNWZhZGQ5YTZmMjZlMTNhMWQuLjA5MGQ4YWEwYjM1NzMxMGRhODg5OTg4OTMzMjcyZTFj
ZWQ1ZjA4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMTItMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQb3RlbnRpYWwgY3Jhc2ggdW5kZXIg
W1dLUmVtb3RlT2JqZWN0RW5jb2RlciBlbmNvZGVPYmplY3Q6Zm9yS2V5Ol0gd2hlbiB0aGUgb2Jq
ZWN0IGdyYXBoIGNvbnRhaW5zIGEgY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTYyMAorICAgICAgICA8cmRhcjovLzcxNTUxNzc2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXS1Jl
bW90ZU9iamVjdEVuY29kZXIgdG8gZGV0ZWN0IGN5Y2xlcyB3aGVuIGVuY29kaW5nIG9iamVjdHMu
IFdoZW4gYSBjeWNsZSBpcyBkZXRlY3RlZCwgd2UKKyAgICAgICAgZmlyc3QgYXR0ZW1wdCB0byBl
bmNvZGUgYSBkZWZhdWx0LWluaXRpYWxpemVkIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGluc3Rl
YWQuIElmIHRoYXQgZmFpbHMsIHdlCisgICAgICAgIHJhaXNlIGEgTlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24uCisKKyAgICAgICAgQmFzZWQgb24gY3Jhc2hlcyBpbiB0aGUgd2lsZCwgd2UgaGF2
ZSBldmlkZW5jZSB0aGF0IHN1Y2ggY3ljbGVzIGFyZSBvY2N1cmluZyBhbmQgSSBzdXNwZWN0IHRo
aXMgaXMKKyAgICAgICAgY2F1c2VkIGJ5IE5vcnRvbiBTYWZlIFdlYiBleHRlbnNpb24gc29tZWhv
dy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbToK
KyAgICAgICAgKC1bV0tSZW1vdGVPYmplY3RFbmNvZGVyIGluaXRdKToKKyAgICAgICAgKGVuY29k
ZU9iamVjdCk6CisKIDIwMjAtMTItMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHNhbmRib3ggdGVsZW1ldHJ5IGZvciBsaWtlbHkgdW51c2VkIGZl
YXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90
ZU9iamVjdENvZGVyLm1tCmluZGV4IDY5NjNmMTkzODRmMTk0YjNkZTFlYWRiZWY4YjY4YjgzYTdi
YzAxZTcuLjhiZDI0NDg1ZTA2MmY3M2IxYjY4NjJjMDU1MzA3NGZlZDkxMDUzMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tCkBAIC0zMSwxMCArMzEsMTIgQEAKICNpbXBvcnQgIkFQSURpY3Rpb25hcnkuaCIKICNpbXBv
cnQgIkFQSU51bWJlci5oIgogI2ltcG9ydCAiQVBJU3RyaW5nLmgiCisjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0ICJOU0ludm9jYXRpb25TUEkuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVj
dEludGVyZmFjZUludGVybmFsLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTYxLDYgKzYz
LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLUmVtb3RlT2JqZWN0RW5jb2RlciB7CiAgICAgQVBJOjpB
cnJheSogX29iamVjdFN0cmVhbTsKIAogICAgIEFQSTo6RGljdGlvbmFyeSogX2N1cnJlbnREaWN0
aW9uYXJ5OworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IF9vYmplY3RzQmVpbmdFbmNvZGVk
OyAvLyBVc2VkIHRvIGRldGVjdCBjeWNsZXMuCiB9CiAKIC0gKGlkKWluaXQKQEAgLTcwLDYgKzcz
LDcgQEAgLSAoaWQpaW5pdAogCiAgICAgX3Jvb3REaWN0aW9uYXJ5ID0gQVBJOjpEaWN0aW9uYXJ5
OjpjcmVhdGUoKTsKICAgICBfY3VycmVudERpY3Rpb25hcnkgPSBfcm9vdERpY3Rpb25hcnkuZ2V0
KCk7CisgICAgX29iamVjdHNCZWluZ0VuY29kZWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFs
bG9jXSBpbml0XSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTMwNSw2ICszMDksMjIgQEAg
c3RhdGljIHZvaWQgZW5jb2RlT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2Rlciwg
aWQgb2JqZWN0KQogICAgIGlmICghb2JqZWN0Q2xhc3MpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCItY2xhc3NGb3JDb2RlciBy
ZXR1cm5lZCBuaWwgZm9yICVAIiwgb2JqZWN0XTsKIAorICAgIGlmIChbZW5jb2Rlci0+X29iamVj
dHNCZWluZ0VuY29kZWQgY29udGFpbnNPYmplY3Q6b2JqZWN0XSkgeworICAgICAgICBSRUxFQVNF
X0xPR19GQVVMVChJUEMsICJXS1JlbW90ZU9iamVjdENvZGU6OmVuY29kZU9iamVjdDogT2JqZWN0
IG9mIHR5cGUgJyV7cHJpdmF0ZX1zJyBjb250YWlucyBhIGN5Y2xlIiwgY2xhc3NfZ2V0TmFtZShv
YmplY3RfZ2V0Q2xhc3Mob2JqZWN0KSkpOworICAgICAgICBAdHJ5IHsKKyAgICAgICAgICAgIC8v
IFRyeSB0byBlbmNvZGUgYSBuZXdseSBpbml0aWFsaXplZCBvYmplY3QgaW5zdGVhZC4KKyAgICAg
ICAgICAgIGlkIG5ld09iamVjdCA9IFtbW1tvYmplY3QgY2xhc3NdIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07CisgICAgICAgICAgICBvYmplY3QgPSBuZXdPYmplY3Q7CisgICAgICAgIH0gQGNh
dGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIk9iamVjdCBvZiB0eXBlICclcycgY29u
dGFpbnMgYSBjeWNsZSIsIGNsYXNzX2dldE5hbWUob2JqZWN0X2dldENsYXNzKG9iamVjdCkpXTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIFtlbmNvZGVyLT5fb2JqZWN0c0JlaW5nRW5jb2RlZCBh
ZGRPYmplY3Q6b2JqZWN0XTsKKyAgICBhdXRvIGV4aXRTY29wZSA9IG1ha2VTY29wZUV4aXQoW2Vu
Y29kZXIsIG9iamVjdF0geworICAgICAgICBbZW5jb2Rlci0+X29iamVjdHNCZWluZ0VuY29kZWQg
cmVtb3ZlT2JqZWN0Om9iamVjdF07CisgICAgfSk7CisKICAgICBlbmNvZGVyLT5fY3VycmVudERp
Y3Rpb25hcnktPnNldChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoY2xhc3NfZ2V0
TmFtZShvYmplY3RDbGFzcykpKTsKIAogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05T
SW52b2NhdGlvbiBjbGFzc11dKSB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZjBjYTg0NjQ3OTJjNmQ0NzJhODU0Yzc1MTM5NWIyOTE5MjBiNWQy
My4uZWEzNjVhYThlMGM4OThmMWRiOWYyOTMzOGRiYTIxZWUwMGI3MjQ3MyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDIwLTEyLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG90
ZW50aWFsIGNyYXNoIHVuZGVyIFtXS1JlbW90ZU9iamVjdEVuY29kZXIgZW5jb2RlT2JqZWN0OmZv
cktleTpdIHdoZW4gdGhlIG9iamVjdCBncmFwaCBjb250YWlucyBhIGN5Y2xlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJh
Z2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4u
bW06CisgICAgICAgICgtW1JlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luIHRha2VEaWN0aW9uYXJ5
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCiAyMDIwLTEyLTA0ICBSeWFuIEhhZGRhZCAgPHJ5YW5o
YWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQVBJIHRlc3QgZ2FyZGVuaW5n
LCBkaXNhYmxlIGZhaWxpbmcgdGVzdHMgb24gQmlnIFN1ci4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnku
aAppbmRleCBlZjNhYmM5MDRhYjAyODMyNGViNjNlOGRmNjFiZjYwMTUyNTgwNTI0Li43N2E2MDdj
MzIwOWQ0MzEyMDNlODY3YWEwZDhjM2FiNjZkYTZmZjg4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3Ry
eS5oCkBAIC00OCw2ICs0OCw3IEBACiAtICh2b2lkKXRha2VMb25nTG9uZzoobG9uZyBsb25nKXZh
bHVlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShsb25nIGxvbmcgdmFsdWUpKWNvbXBsZXRp
b25IYW5kbGVyOwogLSAodm9pZCl0YWtlVW5zaWduZWRMb25nOih1bnNpZ25lZCBsb25nKXZhbHVl
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh1bnNpZ25lZCBsb25nIHZhbHVlKSljb21wbGV0
aW9uSGFuZGxlcjsKIC0gKHZvaWQpdGFrZUxvbmc6KGxvbmcpdmFsdWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKGxvbmcgdmFsdWUpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZCl0YWtl
RGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopdmFsdWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGljdGlvbmFyeSAqdmFsdWUpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClkb05v
dENhbGxDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKIC0g
KHZvaWQpc2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2U6KE5TVVJM
UmVzcG9uc2UgKilyZXNwb25zZSBjaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UgZXJyb3I6KE5TRXJyb3IgKillcnJvciBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoTlNVUkxSZXF1ZXN0ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClj
YWxsVUlQcm9jZXNzTWV0aG9kV2l0aFJlcGx5QmxvY2s7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5t
bQppbmRleCBmMmU1MTFlMmQ2YjA4ODFmOWI3ZjdiZDYxY2FkYTcxNDA2Yjg2ODY3Li5hZmUyNDg2
OWU0ZDQ0YzJjZDg1NjBhZmQ1ZTZjYzNkYzJhMzEzODA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0KQEAgLTEyNiw2ICsxMjYsNTEgQEAgVEVTVChXZWJLaXQsIFJlbW90ZU9iamVjdFJlZ2lz
dHJ5KQogCiAgICAgICAgIGlzRG9uZSA9IGZhbHNlOwogCisgICAgICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAq
cmVzcG9uc2UgPSBbW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gc3RhdHVzQ29kZToyMDAgSFRU
UFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7IEAidGVzdEZpZWxkTmFtZSIgOiBA
InRlc3RGaWVsZFZhbHVlIiB9XSBhdXRvcmVsZWFzZV07CisgICAgICAgIE5TRXJyb3IgKmVycm9y
ID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAidGVzdERvbWFpbiIgY29kZToxMjMgdXNlcklu
Zm86QHtAImEiOkAiYiJ9XTsKKyAgICAgICAgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rp
b25TcGFjZSA9IFtbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCJ0
ZXN0SG9zdCIgcG9ydDo4MCBwcm90b2NvbDpAInRlc3RQcm90b2NvbCIgcmVhbG06QCJ0ZXN0UmVh
bG0iIGF1dGhlbnRpY2F0aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQRGln
ZXN0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhVc2VyOkAidGVzdFVzZXIiIHBhc3N3b3Jk
OkAidGVzdFBhc3N3b3JkIiBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZv
clNlc3Npb25dOworICAgICAgICBpZDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
PiBzZW5kZXIgPSBuaWw7CisgICAgICAgIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNo
YWxsZW5nZSA9IFtbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRo
UHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZSBwcm9wb3NlZENyZWRlbnRpYWw6Y3JlZGVu
dGlhbCBwcmV2aW91c0ZhaWx1cmVDb3VudDo0MiBmYWlsdXJlUmVzcG9uc2U6cmVzcG9uc2UgZXJy
b3I6ZXJyb3Igc2VuZGVyOnNlbmRlcl0gYXV0b3JlbGVhc2VdOworICAgICAgICBbb2JqZWN0IHNl
bmRSZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVzcG9uc2UgY2hhbGxlbmdlOmNoYWxsZW5nZSBl
cnJvcjplcnJvciBjb21wbGV0aW9uSGFuZGxlcjpeKE5TVVJMUmVxdWVzdCAqZGVzZXJpYWxpemVk
UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqZGVzZXJpYWxpemVkUmVzcG9uc2UsIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKmRlc2VyaWFsaXplZENoYWxsZW5nZSwgTlNFcnJvciAqZGVzZXJp
YWxpemVkRXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXNlcmlhbGl6ZWRS
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgImh0dHBzOi8vd2Via2l0Lm9yZy8iKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShbKE5TSFRUUFVSTFJlc3BvbnNlICopZGVzZXJpYWxpemVk
UmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXVtAInRlc3RGaWVsZE5hbWUiXSwgInRlc3RGaWVsZFZh
bHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzZXJpYWxpemVkQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZS5yZWFsbSwgInRlc3RSZWFsbSIpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGRlc2VyaWFsaXplZEVycm9yLmRvbWFpbiwgInRlc3REb21haW4iKTsKKyAgICAg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAg
ICAgYm9vbCBleGNlcHRpb25UaHJvd24gPSBmYWxzZTsKKyAgICAgICAgTlNNdXRhYmxlRGljdGlv
bmFyeSAqY2hpbGQgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOkAiZm9vIiwgQCJuYW1lIiwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0sIEAidmFs
dWUiLCBuaWxdOworICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5V2l0aEN5
Y2xlID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpA
InJvb3QiLCBAIm5hbWUiLCBjaGlsZCwgQCJjaGlsZCIsIG5pbF07CisgICAgICAgIFtjaGlsZCBz
ZXRWYWx1ZTpkaWN0aW9uYXJ5V2l0aEN5Y2xlIGZvcktleTpAInBhcmVudCJdOyAvLyBDcmVhdGVz
IGEgY3ljbGUuCisgICAgICAgIEB0cnkgeworICAgICAgICAgICAgW29iamVjdCB0YWtlRGljdGlv
bmFyeTpkaWN0aW9uYXJ5V2l0aEN5Y2xlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEaWN0aW9uYXJ5
KiB2YWx1ZSkgeworICAgICAgICAgICAgICAgIE5TU3RyaW5nICpuYW1lID0gW3ZhbHVlIG9iamVj
dEZvcktleTpAIm5hbWUiXTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyb290
IiwgbmFtZSk7CisgICAgICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpjaGlsZCA9IFt2YWx1ZSBv
YmplY3RGb3JLZXk6QCJjaGlsZCJdOworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKCEhY2hp
bGQpOworICAgICAgICAgICAgICAgIE5TU3RyaW5nKiBjaGlsZE5hbWUgPSBbY2hpbGQgb2JqZWN0
Rm9yS2V5OkAibmFtZSJdOworICAgICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShAImZvbyIs
IGNoaWxkTmFtZSk7CisgICAgICAgICAgICAgICAgTlNOdW1iZXIgKmNoaWxkVmFsdWUgPSBbY2hp
bGQgb2JqZWN0Rm9yS2V5OkAidmFsdWUiXTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoMSwg
W2NoaWxkVmFsdWUgaW50ZWdlclZhbHVlXSk7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IGhhdmUgZW5jb2RlZCBwYXJlbnQgYXMgYW4gZW1wdHkgTlNEaWN0aW9uYXJ5LgorICAgICAgICAg
ICAgICAgIE5TRGljdGlvbmFyeSAqY2hpbGRQYXJlbnQgPSBbY2hpbGQgb2JqZWN0Rm9yS2V5OkAi
cGFyZW50Il07CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoISFjaGlsZFBhcmVudCk7Cisg
ICAgICAgICAgICAgICAgRVhQRUNUX0VRKDBVLCBbY2hpbGRQYXJlbnQgY291bnRdKTsKKyAgICAg
ICAgICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICAgICAgfV07CisgICAgICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgICAgICAgICBpc0RvbmUgPSBm
YWxzZTsKKyAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgICAgICBl
eGNlcHRpb25UaHJvd24gPSB0cnVlOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9GQUxTRShl
eGNlcHRpb25UaHJvd24pOworCiAgICAgICAgIGNsYXNzIERvbmVXaGVuRGVzdHJveWVkIDogcHVi
bGljIFJlZkNvdW50ZWQ8RG9uZVdoZW5EZXN0cm95ZWQ+IHsKICAgICAgICAgcHVibGljOgogICAg
ICAgICAgICAgRG9uZVdoZW5EZXN0cm95ZWQoYm9vbCYgaXNEb25lKQpAQCAtMTQyLDIyICsxODcs
NiBAQCBURVNUKFdlYktpdCwgUmVtb3RlT2JqZWN0UmVnaXN0cnkpCiAgICAgICAgIH0KIAogICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICAgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07Ci0gICAgICAgIE5TSFRUUFVSTFJl
c3BvbnNlICpyZXNwb25zZSA9IFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXSBzdGF0dXNDb2Rl
OjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6QHsgQCJ0ZXN0RmllbGRO
YW1lIiA6IEAidGVzdEZpZWxkVmFsdWUiIH1dIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgTlNFcnJv
ciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJ0ZXN0RG9tYWluIiBjb2RlOjEy
MyB1c2VySW5mbzpAe0AiYSI6QCJiIn1dOwotICAgICAgICBOU1VSTFByb3RlY3Rpb25TcGFjZSAq
cHJvdGVjdGlvblNwYWNlID0gW1tbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRo
SG9zdDpAInRlc3RIb3N0IiBwb3J0OjgwIHByb3RvY29sOkAidGVzdFByb3RvY29sIiByZWFsbTpA
InRlc3RSZWFsbSIgYXV0aGVudGljYXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhv
ZEhUVFBEaWdlc3RdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVk
ZW50aWFsID0gW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsV2l0aFVzZXI6QCJ0ZXN0VXNlciIg
cGFzc3dvcmQ6QCJ0ZXN0UGFzc3dvcmQiIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNp
c3RlbmNlRm9yU2Vzc2lvbl07Ci0gICAgICAgIGlkPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXI+IHNlbmRlciA9IG5pbDsKLSAgICAgICAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqY2hhbGxlbmdlID0gW1tbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhbGxvY10g
aW5pdFdpdGhQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlIHByb3Bvc2VkQ3JlZGVudGlh
bDpjcmVkZW50aWFsIHByZXZpb3VzRmFpbHVyZUNvdW50OjQyIGZhaWx1cmVSZXNwb25zZTpyZXNw
b25zZSBlcnJvcjplcnJvciBzZW5kZXI6c2VuZGVyXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFtv
YmplY3Qgc2VuZFJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBjaGFsbGVuZ2U6Y2hh
bGxlbmdlIGVycm9yOmVycm9yIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNVUkxSZXF1ZXN0ICpkZXNl
cmlhbGl6ZWRSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpkZXNlcmlhbGl6ZWRSZXNwb25zZSwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqZGVzZXJpYWxpemVkQ2hhbGxlbmdlLCBOU0Vycm9y
ICpkZXNlcmlhbGl6ZWRFcnJvcikgewotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRlc2Vy
aWFsaXplZFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIp
OwotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFsoTlNIVFRQVVJMUmVzcG9uc2UgKilkZXNl
cmlhbGl6ZWRSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdW0AidGVzdEZpZWxkTmFtZSJdLCAidGVz
dEZpZWxkVmFsdWUiKTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXNlcmlhbGl6ZWRD
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnJlYWxtLCAidGVzdFJlYWxtIik7Ci0gICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZGVzZXJpYWxpemVkRXJyb3IuZG9tYWluLCAidGVzdERvbWFpbiIp
OwotICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICAgICAgfV07Ci0gICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnlQ
bHVnSW4ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5UGx1Z0luLm1tCmluZGV4IGQyMWM2MTY5YWE5MDI0ZjliMjQxNTAxZDE4YjIw
MDA5YzM3ZDY2MDEuLmRkNzBlNGY2MzY3Y2I0NWJjMjNkMDM3NWVlYWJjNTI0ODM2MDA4ZWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2Jq
ZWN0UmVnaXN0cnlQbHVnSW4ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbQpAQCAtMTA0LDYgKzEwNCwxMSBA
QCAtICh2b2lkKXRha2VMb25nOihsb25nKXZhbHVlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShsb25nIHZhbHVlKSljb21wbGV0aW9uSAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHZhbHVlKTsK
IH0KIAorLSAodm9pZCl0YWtlRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopdmFsdWUgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGljdGlvbmFyeSAqdmFsdWUpKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIodmFsdWUpOworfQorCiAtICh2b2lkKWRvTm90
Q2FsbENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>