<?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>222154</bug_id>
          
          <creation_ts>2021-02-18 19:12:18 -0800</creation_ts>
          <short_desc>Add [WebAccessibilityObjectWrapper textMarkerRangeForNSRange] to allow clients to efficiently get a TextMarkerRange from an NSRange.</short_desc>
          <delta_ts>2021-02-21 18:13: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>Accessibility</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mifenton</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731166</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-18 19:12:18 -0800</bug_when>
    <thetext>Add [WebAccessibilityObjectWrapper textMarkerRangeForNSRange] to allow clients to efficiently get a TextMarkerRange from an NSRange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731168</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-18 19:12:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/74505496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731171</commentid>
    <comment_count>2</comment_count>
      <attachid>420906</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-18 19:23:56 -0800</bug_when>
    <thetext>Created attachment 420906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731237</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-02-18 23:38:57 -0800</bug_when>
    <thetext>+CONSOLE MESSAGE: TypeError: axElement.textMarkerRangeForRange is not a function. (In &apos;axElement.textMarkerRangeForRange(0, i)&apos;, &apos;axElement.textMarkerRangeForRange&apos; is undefined)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731239</commentid>
    <comment_count>4</comment_count>
      <attachid>420906</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-02-18 23:41:20 -0800</bug_when>
    <thetext>Comment on attachment 420906
Patch

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

do we need to expose this method through a new attribute?

&gt; Source/WebCore/accessibility/AccessibilityObject.h:829
&gt; +inline bool AccessibilityObject::allowsTextRanges() const { return true; }

is this change necessary?

&gt; Source/WebCore/accessibility/AccessibilityObjectInterface.h:1279
&gt; +#if PLATFORM(MAC)

what&apos;s holding us back to make this a cocoa method?

&gt; Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:285
&gt; +    return textMarkerRangeFromVisiblePositions(axObjectCache(),

do we need to validate nsRange parameters coming in?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:4019
&gt; +            auto webRange = makeSimpleRange({ start, end });

will this crash if start or end is nil?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731837</commentid>
    <comment_count>5</comment_count>
      <attachid>421103</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-20 12:41:54 -0800</bug_when>
    <thetext>Created attachment 421103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731846</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-20 13:05:13 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #4)
&gt; Comment on attachment 420906 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420906&amp;action=review
&gt; 
&gt; do we need to expose this method through a new attribute?

Not necessarily, since client can call it directly as we do on iOS accessibility API. I feel reluctant to keep adding attributes to accessibilityAttributeValue, especially when it is a method that doesn&apos;t quite match an object property. In this case this method can involve DOM nodes that the current accessibility object does not represent.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.h:829
&gt; &gt; +inline bool AccessibilityObject::allowsTextRanges() const { return true; }
&gt; 
&gt; is this change necessary?

Yes, since we want to retrieve TextMarkerRanges for more than just text controls.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObjectInterface.h:1279
&gt; &gt; +#if PLATFORM(MAC)
&gt; 
&gt; what&apos;s holding us back to make this a cocoa method?

We need to port to iOS the utility function to convert TextMarkerRanges to/from VisiblePositionRanges, Mac only at the moment.
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:285
&gt; &gt; +    return textMarkerRangeFromVisiblePositions(axObjectCache(),

&gt; 
&gt; do we need to validate nsRange parameters coming in?
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:4019
&gt; &gt; +            auto webRange = makeSimpleRange({ start, end });
&gt; 
&gt; will this crash if start or end is nil?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731888</commentid>
    <comment_count>7</comment_count>
      <attachid>421103</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-20 16:42:13 -0800</bug_when>
    <thetext>Comment on attachment 421103
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObjectInterface.h:1281
&gt; +    virtual AXTextMarkerRangeRef textMarkerRangeForNSRange(const NSRange&amp;) const = 0;

I don’t understand the object lifetime here. Why doesn’t this return RetainPtr&lt;AXTextMarkerRangeRef&gt;? Is this using autorelease?

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:406
&gt; +    AXTextMarkerRangeRef textMarkerRangeForNSRange(const NSRange&amp;) const  override;

Extra space here before override.

&gt; Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:62
&gt; +AXTextMarkerRangeRef AXIsolatedObject::textMarkerRangeForNSRange(const NSRange&amp; nsRange) const

I suggest just naming this range.

&gt; Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:65
&gt; +        auto* axObject = associatedAXObject();

I suggest just naming this object.

&gt; Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:66
&gt; +        return axObject ? axObject-&gt;textMarkerRangeForNSRange(nsRange) : NULL;

Should use nullptr instead of NULL.

&gt; Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:283
&gt; +AXTextMarkerRangeRef AccessibilityObject::textMarkerRangeForNSRange(const NSRange&amp; nsRange) const

Could just name this range.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3466
&gt; +- (AXTextMarkerRangeRef)textMarkerRangeForNSRange:(const NSRange&amp;)nsRange

Could just name this range.

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:1824
&gt; +    NSRange range = NSMakeRange(location, length);
&gt; +    BEGIN_AX_OBJC_EXCEPTIONS
&gt; +    id textMarkerRange = [m_element textMarkerRangeForNSRange:range];
&gt; +    return AccessibilityTextMarkerRange::create(textMarkerRange);

This would work better as a one-liner.

    return AccessibilityTextMarkerRange::create([m_element textMarkerRangeForNSRange:NSMakeRange(location, length)]);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731945</commentid>
    <comment_count>8</comment_count>
      <attachid>421140</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-21 08:21:39 -0800</bug_when>
    <thetext>Created attachment 421140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731951</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-21 08:41:25 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 421103 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421103&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObjectInterface.h:1281
&gt; &gt; +    virtual AXTextMarkerRangeRef textMarkerRangeForNSRange(const NSRange&amp;) const = 0;
&gt; 
&gt; I don’t understand the object lifetime here. Why doesn’t this return
&gt; RetainPtr&lt;AXTextMarkerRangeRef&gt;? Is this using autorelease?

It is using autorelease. It ultimately calls:

    return (AXTextMarkerRangeRef)CFBridgingRelease(AXTextMarkerRangeCreate(kCFAllocatorDefault, startMarker, endMarker));

And 

// Casts a CoreFoundation object to an Objective-C object, transferring ownership to ARC (ie. no need to CFRelease to balance a prior +1 CFRetain count). NS_RETURNS_RETAINED is used to indicate that the Objective-C object returned has +1 retain count.  So the object is &apos;released&apos; as far as CoreFoundation reference counting semantics are concerned, but retained (and in need of releasing) in the view of ARC. This function is intended for use while converting to ARC mode only.
NS_INLINE id _Nullable CFBridgingRelease(CFTypeRef CF_CONSUMED _Nullable X) NS_RETURNS_RETAINED {
    return [(id)CFMakeCollectable(X) autorelease];
}

&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:406
&gt; &gt; +    AXTextMarkerRangeRef textMarkerRangeForNSRange(const NSRange&amp;) const  override;
&gt; 
&gt; Extra space here before override.

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:62
&gt; &gt; +AXTextMarkerRangeRef AXIsolatedObject::textMarkerRangeForNSRange(const NSRange&amp; nsRange) const
&gt; 
&gt; I suggest just naming this range.

Done.
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:65
&gt; &gt; +        auto* axObject = associatedAXObject();
&gt; 
&gt; I suggest just naming this object.

Since in the implementation of AXIsolatedObject we have two kinds of accessibility objet, the isolated objects and the live objects (AccessibilityObject or AXObject for short), I&apos;ve tried to be consistent in naming &quot;object&quot; the AXIsolatedObject instances, and &quot;axObject&quot; the AXObject instances. I believe it makes it clearer what kind of accessibility object we are talking to.

&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:66
&gt; &gt; +        return axObject ? axObject-&gt;textMarkerRangeForNSRange(nsRange) : NULL;
&gt; 
&gt; Should use nullptr instead of NULL.

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:283
&gt; &gt; +AXTextMarkerRangeRef AccessibilityObject::textMarkerRangeForNSRange(const NSRange&amp; nsRange) const
&gt; 
&gt; Could just name this range.

Done.
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3466
&gt; &gt; +- (AXTextMarkerRangeRef)textMarkerRangeForNSRange:(const NSRange&amp;)nsRange
&gt; 
&gt; Could just name this range.

Done.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:1824
&gt; &gt; +    NSRange range = NSMakeRange(location, length);
&gt; &gt; +    BEGIN_AX_OBJC_EXCEPTIONS
&gt; &gt; +    id textMarkerRange = [m_element textMarkerRangeForNSRange:range];
&gt; &gt; +    return AccessibilityTextMarkerRange::create(textMarkerRange);
&gt; 
&gt; This would work better as a one-liner.

Done.
&gt; 
&gt;     return AccessibilityTextMarkerRange::create([m_element
&gt; textMarkerRangeForNSRange:NSMakeRange(location, length)]);

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731956</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-21 09:23:52 -0800</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #9)
&gt; It is using autorelease. It ultimately calls:
&gt; 
&gt;     return
&gt; (AXTextMarkerRangeRef)CFBridgingRelease(AXTextMarkerRangeCreate(kCFAllocatorD
&gt; efault, startMarker, endMarker));
&gt; 
&gt; And 
&gt; 
&gt; // Casts a CoreFoundation object to an Objective-C object, transferring
&gt; ownership to ARC (ie. no need to CFRelease to balance a prior +1 CFRetain
&gt; count). NS_RETURNS_RETAINED is used to indicate that the Objective-C object
&gt; returned has +1 retain count.  So the object is &apos;released&apos; as far as
&gt; CoreFoundation reference counting semantics are concerned, but retained (and
&gt; in need of releasing) in the view of ARC. This function is intended for use
&gt; while converting to ARC mode only.
&gt; NS_INLINE id _Nullable CFBridgingRelease(CFTypeRef CF_CONSUMED _Nullable X)
&gt; NS_RETURNS_RETAINED {
&gt;     return [(id)CFMakeCollectable(X) autorelease];
&gt; }

Despite the fact that CFBridgingRelease is a forward-looking way to convert a CF type into an Objective-C type that works with both ARC and non-ARC, I think the way we are using it in AXObjectCacheMac.mm is a bad pattern for when we actually move WebCore to ARC.

The problem is the typecasting. For ARC it’s important to consider ownership whenever casting from an Objective-C pointer type to a CF type. The AXTextMarkerRangeRef type is not recognized by the compiler as an Objective-C type so this idiom won’t work well. Casting from one to the other changes ownership and can’t simply be done with a cast. It would work fine if the type was actually an Objective-C pointer type or if we used RetainPtr on a CF type, but combining the two like this is not good.

I suggest we move to RetainPtr and adoptCF for this. I know it’s a big change, but it will put us on much better footing for converting to ARC. As a side effect it might help performance by not putting objects into the autorelease pool.

Not for this patch, but important to future maintainability of WebKit.

Chris Dumez, drawing your attention to this, since it’s related to what you’re working on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731958</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-21 09:25:45 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; I suggest we move to RetainPtr and adoptCF for this.

Or, if we want to stick with autorelease, we can use CFAutorelease instead of CFBridgingRelease with a cast to a non-Objective-C type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731959</commentid>
    <comment_count>12</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-21 09:37:21 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; (In reply to Darin Adler from comment #10)
&gt; &gt; I suggest we move to RetainPtr and adoptCF for this.
&gt; 
&gt; Or, if we want to stick with autorelease, we can use CFAutorelease instead
&gt; of CFBridgingRelease with a cast to a non-Objective-C type.

Thanks for the clarification! Will address in a separate patch and copy you and Chris Dumez.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731979</commentid>
    <comment_count>13</comment_count>
      <attachid>421147</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-21 12:27:03 -0800</bug_when>
    <thetext>Created attachment 421147
Patch

Addresses assert crash in accessibility/mac/crash-bounds-for-range.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731984</commentid>
    <comment_count>14</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-02-21 13:22:32 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #4)
&gt; Comment on attachment 420906 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420906&amp;action=review
&gt; 
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:285
&gt; &gt; +    return textMarkerRangeFromVisiblePositions(axObjectCache(),
&gt; 
&gt; do we need to validate nsRange parameters coming in?

visiblePositionForIndexUsingCharacterIterator handles out of range params appropriately. The test includes out of range cases.

&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:4019
&gt; &gt; +            auto webRange = makeSimpleRange({ start, end });
&gt; 
&gt; will this crash if start or end is nil?

It will return WTF::nullopt.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732025</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-21 18:13:18 -0800</bug_when>
    <thetext>Committed r273227: &lt;https://commits.webkit.org/r273227&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421147.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420906</attachid>
            <date>2021-02-18 19:23:56 -0800</date>
            <delta_ts>2021-02-20 12:41:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222154-20210218222355.patch</filename>
            <type>text/plain</type>
            <size>21550</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE5OWE3YjA5NWFkZmE1
MmYwNDE0OGQ1OTY1OWE0MjE3MzM0ZjBlZC4uYWM1ZWNiZjBhZjBjODgyZjg0Njk4OWVlMDhkMzdl
ZjhlY2RiMTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTAyLTE4ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFs
bG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4g
TlNSYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGFjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwK
KworICAgICAgICBDbGllbnRzIGxpa2UgVm9pY2VPdmVyIG9mdGVuIG5lZWQgdGhlIGFiaWxpdHkg
dG8gY29udmVydCBhIHRleHQgcmFuZ2UKKyAgICAgICAgaW50byBhbiBhY2Nlc3NpYmlsaXR5IFRl
eHRNYXJrZXJSYW5nZS4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlXQorICAgICAgICB0byBhbGxv
dyBjbGllbnRzIHRvIGVmZmljaWVudGx5IHBlcmZvcm0gdGhpcyBjb252ZXJzaW9uLgorICAgICAg
ICBUaGlzIGlzIHRoZSBNYWMgaW1wbGVtZW50YXRpb24sIGlPUyBpbXBsZW1lbnRhdGlvbiBpcyBw
ZW5kaW5nLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2Vz
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNv
bGF0ZWRPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp0
ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZSBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5n
ZUZvck5TUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMjEtMDIt
MTcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgYXJpYS1lcnJvcm1lc3NhZ2Ugb24gaU9TLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBmN2FlNjY1ZjFhMzQ5Y2Y1
MmQ5ZjMwYzZiMWUyOGU2YjlhZTAyZTNlLi42Y2MxNDU3ZGUyZTBjOTAxOTI1NWI1ZDEwOWJmOTM3
ZGI1NjZjNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaApAQCAtNTM5LDYgKzUzOSw5IEBAIHB1YmxpYzoKICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclBs
YWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZv
ck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBz
dGF0aWMgU3RyaW5nIHN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblJhbmdlJik7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclJhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MjMsNyArODI2LDcgQEAgaW5saW5lIHZvaWQgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoUGxhdGZvcm1XcmFwcGVyKEFjY2Vzc2liaWxpdHlEZXRh
Y2htZW50VHkKICNlbmRpZgogCiAjaWYgIShFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFU
SykpCi1pbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2VzKCkg
Y29uc3QgeyByZXR1cm4gaXNUZXh0Q29udHJvbCgpOyB9CitpbmxpbmUgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogaW5s
aW5lIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldExlbmd0aEZvclRleHRSYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgKaW5kZXggNjE2MTE0MTQwYjdlYmFmZjAzZjk0ZTAyYjczYTk0MDM5ODMwYzU1MS4u
YzNlYmZmNTIxMThkNGUzZTAwYmNkNzY3YmEzMjM2MjE2MjliNDMxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgKQEAgLTQ5LDYgKzQ5LDggQEAKIE9CSkNfQ0xBU1MgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXI7CiB0eXBlZGVmIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyOwogdHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5nZTsK
K3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQVhUZXh0TWFya2VyKiBBWFRleHRNYXJrZXJSZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlclJhbmdlKiBBWFRleHRNYXJrZXJSYW5n
ZVJlZjsKICNlbGlmIFVTRShBVEspCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZSBX
ZWJLaXRBY2Nlc3NpYmxlOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGUgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI7CkBAIC0xMjc0LDYgKzEyNzYsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNv
bnN0ID0gMDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gRklYTUU6IG1ha2UgdGhpcyBhIENP
Q09BIG1ldGhvZC4KKyAgICB2aXJ0dWFsIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJS
YW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0ID0gMDsKKyNlbmRpZgogCiAgICAg
dmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oCmluZGV4IDk2OWFjYmU1MTE2NmM4NWVlYzNkOGU0YTQzZTVmNTQ4MjIwZGFiMTAuLmY1NzRj
YjE3Mjk0NDE2MDNlNWZjODM5YWI5NjA1NzI0MWE4Y2Y4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgKQEAgLTQwMiw2ICs0MDIsOSBAQCBwcml2YXRlOgogICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBWFRleHRNYXJrZXJS
YW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlKGNvbnN0IE5TUmFuZ2UmKSBjb25zdCAg
b3ZlcnJpZGU7CisjZW5kaWYKICAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICAgICBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgSW50UmVjdCBib3VuZHNGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQppbmRleCA0MjlhZDU1
ZDlmOGE2NWU4NmM5Yzg1NDI3NDg3ZTM0ZGY3YjhiYzJiLi44ZDM0OTBjMTRhMTJhZDY2ZmIzOGFk
MWU1NDJhNzNlZjc4MGQ3ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1h
Yy5tbQpAQCAtNTksNiArNTksMTQgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpkZXRhY2hQbGF0
Zm9ybVdyYXBwZXIoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG0KICAgICBbd3Jh
cHBlcigpIGRldGFjaElzb2xhdGVkT2JqZWN0OmRldGFjaG1lbnRUeXBlXTsKIH0KIAorQVhUZXh0
TWFya2VyUmFuZ2VSZWYgQVhJc29sYXRlZE9iamVjdDo6dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5n
ZShjb25zdCBOU1JhbmdlJiBuc1JhbmdlKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8QVhUZXh0TWFya2VyUmFuZ2VSZWY+KFsm
bnNSYW5nZSwgdGhpc10gKCkgLT4gQVhUZXh0TWFya2VyUmFuZ2VSZWYgeworICAgICAgICBhdXRv
KiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOworICAgICAgICByZXR1cm4gYXhPYmpl
Y3QgPyBheE9iamVjdC0+dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShuc1JhbmdlKSA6IE5VTEw7
CisgICAgfSk7Cit9CisKIH0gLy8gV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFDQ0VTU0lC
SUxJVFlfSVNPTEFURURfVFJFRSkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0K
aW5kZXggMmZmNmNkZWI4MDEzZGQwYmVhYjBhODFiMDdjNzgwNWQ5Yzg2NmIwOS4uOTI1Mzc1YjFh
Yjg0Y2FjYjYwNzJhNjkwNzVjYjQ5MGM0ZjQ0OGYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBA
IC0yODAsNiArMjgwLDEzIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpyb2xlUGxhdGZv
cm1EZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitBWFRleHRN
YXJrZXJSYW5nZVJlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0TWFya2VyUmFuZ2VGb3JOU1Jh
bmdlKGNvbnN0IE5TUmFuZ2UmIG5zUmFuZ2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRleHRNYXJr
ZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKGF4T2JqZWN0Q2FjaGUoKSwKKyAgICAgICAgdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgobnNSYW5nZS5sb2NhdGlvbiksCisgICAgICAgIHZpc2libGVQ
b3NpdGlvbkZvckluZGV4KG5zUmFuZ2UubG9jYXRpb24gKyBuc1JhbmdlLmxlbmd0aCkpOworfQor
CiBuYW1lc3BhY2UgQWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0
Zm9ybVJvbGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRl
eCAwNTdiMWNkZDQwYTJjNmQyMzM1YjcwNzljMTM1ZGExMjJkODczMWIwLi4yZWIwNmRhNjJjZjU2
ZDEyZDRmNjhjMGZhMGMyMjhiNjQ1YWY3MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQpAQCAtMzQ2Myw2ICszNDYzLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgIH0pOwogfQogCistIChBWFRleHRNYXJrZXJSYW5nZVJlZil0
ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlOihjb25zdCBOU1JhbmdlJiluc1JhbmdlCit7CisgICAg
YXV0byogYmFja2luZ09iamVjdCA9IHNlbGYudXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOworICAg
IHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJhbmdlRm9y
TlNSYW5nZShuc1JhbmdlKSA6IG5pbDsKK30KKwogLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhp
cyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb247IGNhbiBnZXQgZG9jdW1lbnQg
ZnJvbSByYW5nZS4KIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJh
bmdlJilyYW5nZQogewpAQCAtNDAwNywxNSArNDAxMywxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90
ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKICAgICAgICAgICAgIGlmICghYmFja2lu
Z09iamVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKLSAgICAgICAgICAg
IGF1dG8qIGNhY2hlID0gYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwotICAgICAgICAg
ICAgaWYgKCFjYWNoZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKLSAgICAg
ICAgICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JJ
bmRleChyYW5nZS5sb2NhdGlvbiwgYmFja2luZ09iamVjdCk7Ci0gICAgICAgICAgICBDaGFyYWN0
ZXJPZmZzZXQgZW5kID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0
aW9uK3JhbmdlLmxlbmd0aCwgYmFja2luZ09iamVjdCk7Ci0gICAgICAgICAgICBhdXRvIHJhbmdl
ID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhzdGFydCwgZW5kKTsK
LSAgICAgICAgICAgIGlmICghcmFuZ2UpCisKKyAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBiYWNr
aW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5nZS5sb2NhdGlvbik7CisgICAg
ICAgICAgICBhdXRvIGVuZCA9IGJhY2tpbmdPYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4
KHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gd2ViUmFu
Z2UgPSBtYWtlU2ltcGxlUmFuZ2UoeyBzdGFydCwgZW5kIH0pOworICAgICAgICAgICAgaWYgKCF3
ZWJSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKLSAgICAgICAgICAg
IGF1dG8gYm91bmRzID0gRmxvYXRSZWN0KGJhY2tpbmdPYmplY3QtPmJvdW5kc0ZvclJhbmdlKCpy
YW5nZSkpOworCisgICAgICAgICAgICBhdXRvIGJvdW5kcyA9IEZsb2F0UmVjdChiYWNraW5nT2Jq
ZWN0LT5ib3VuZHNGb3JSYW5nZSgqd2ViUmFuZ2UpKTsKICAgICAgICAgICAgIHJldHVybiBbcHJv
dGVjdGVkU2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6Ym91bmRzIHNwYWNlOkFjY2Vzc2liaWxpdHlD
b252ZXJzaW9uU3BhY2U6OlNjcmVlbl07CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gW05T
VmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWJkMWQ1ZTQyOWM2ZWE5MzdmNjkxNGUzOWFlYTdjNzE3
Yjk4Y2U0Li41MDU5NjAzMjViNzVmNTVmMDhlMGU5MjEyNmU5NjY5YWFiOGRmNmY4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMjEtMDItMTggIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlclJh
bmdlRm9yTlNSYW5nZV0gdG8gYWxsb3cgY2xpZW50cyB0byBlZmZpY2llbnRseSBnZXQgYSBUZXh0
TWFya2VyUmFuZ2UgZnJvbSBhbiBOU1JhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSk6CisKIDIwMjEtMDItMTcgIERp
ZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBT
REtdIFNjcmlwdCAnd2Via2l0LWZsYXRwYWstcnVuLW5pZ2h0bHknIGV4cGVjdHMgZGlmZmVyZW50
IGZvcm1hdCBmb3IgYSBidWlsdCBwcm9kdWN0IG5hbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwCmluZGV4IDgwMzVlMGZhYTUwNjI5OGM5NzFjODk0YTAwNDUzM2VkNjk3NTIwZGQuLjQ2
ZjRmNjc5N2Q5MTllMmIxYWNlNDRkNjI2MTkzNDQ5NjI0OGJkYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcApAQCAtMTAyLDYgKzEwMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KGludCkgeyByZXR1
cm4KICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJu
IG51bGxwdHI7IH0KIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVzZXRTZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZSgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRCb29sQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYsIGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAppbmRleCBlNzQzNmFhMGU1ODhlYWY5MmEwY2FkYTcwMTVjZjQ4NmRiMWM4ZGYwLi4wZDhjMjM4
YWFlNDUwOGZjOWJkNzRlYzQzZTIzOTYwZThhMjNkYTgwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaApAQCAtMzAyLDYgKzMwMiw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gbWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSogc3RhcnQsIGJvb2wgZm9yd2FyZCk7CiAgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCopOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZvclJh
bmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAg
IHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2wgcmVwbGFjZVRl
eHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKaW5kZXggNTQ3NjM0MGUy
NDNlMTFjOTU2MTE5NDY1OWNiMTZjY2Q0MjdkMjFhNy4uOGIyMjgyZDdhZTExYmU3NTU3YzgzZGJm
MzUxZjA1OGYwYWQwMDVjZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaWRsCkBAIC0yMTksNiArMjE5LDcgQEAKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlIG1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2Ugc3RhcnQsIGJvb2xlYW4gZm9yd2FyZCk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQgZWxlbWVudCk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2VyLCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIpOworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UodW5zaWduZWQgbG9uZyBsb2NhdGlvbiwg
dW5zaWduZWQgbG9uZyBsZW5ndGgpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICB1bmRlZmluZWQgcmVzZXRTZWxlY3RlZFRl
eHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2xlYW4gcmVwbGFjZVRleHRJblJhbmdlKERPTVN0cmlu
ZyBzdHJpbmcsIGxvbmcgcG9zaXRpb24sIGxvbmcgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGVmZGFmOGM1MmU4OWJlYjdjMzE5NmJmNmM4
ZmNlZmY2YTZiMGViYTMuLjg2ZjExY2NjNzMwOWJiYTZhMDdjMzQ2NzExNGJhYTAwYzY1OTQwNzUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtODMsNiAr
ODMsNyBAQCB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBl
bGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLAogLSAoQk9PTClpc0lzb2xhdGVkT2JqZWN0
OwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhU
ZXh0OihOU1N0cmluZyAqKXN0cmluZzsKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUluc2VydFRleHQ6
KE5TU3RyaW5nICopdGV4dDsKKy0gKGlkKXRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2U6KGNvbnN0
IE5TUmFuZ2UmKW5zUmFuZ2U7CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmli
dXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRleCBt
YXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0
eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJh
eUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKQEAgLTE4MTUsNiArMTgxNiwx
NyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTQogICAgIHJldHVybiBudWxscHRyOwogfQogCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0
aCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlclJhbmdl
ID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlOnJhbmdlXTsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjgyZDA0MWEzMDAxNTM3OTlkNGI2MmVjNjNkNDg5ZjM5MzkxYWYwNS4u
Mjk0MmYxOTUxNGYwNmY2MDMyZGJlYzZlYmE3ODU3OTVjZTY1MTVjOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIxLTAyLTE4ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJr
ZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFsbG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEg
VGV4dE1hcmtlclJhbmdlIGZyb20gYW4gTlNSYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1y
YW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sOiBBZGRlZC4KKwogMjAyMS0w
Mi0xNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAg
U3VwcG9ydCBhcmlhLWVycm9ybWVzc2FnZSBvbiBpT1MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1y
YW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RjYzc3YzNjODcxZWJkYThkMWRiY2YxODYx
ZTAzZWVjZmRlYjY2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI5NyBAQAorVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUg
bGFzdCEKKworSGVsbG8gV29ybGQhCitUaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JS
YW5nZSB3b3JrcyBwcm9wZXJseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2Nv
bnRlbnQgbGVuZ3RoOiA2NQorQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0
ZXIgaW4gdGhlIHRleHQ6CiswCisnJworMQorJ1QnCisyCisnVGgnCiszCisnVGhpJworNAorJ1Ro
aW4nCis1CisnVGhpbmsnCis2CisnVGhpbmsgJworNworJ1RoaW5rIGQnCis4CisnVGhpbmsgZGkn
Cis5CisnVGhpbmsgZGlmJworMTAKKydUaGluayBkaWZmJworMTEKKydUaGluayBkaWZmZScKKzEy
CisnVGhpbmsgZGlmZmVyJworMTMKKydUaGluayBkaWZmZXJlJworMTQKKydUaGluayBkaWZmZXJl
bicKKzE1CisnVGhpbmsgZGlmZmVyZW50JworMTYKKydUaGluayBkaWZmZXJlbnQgJworMTcKKydU
aGluayBkaWZmZXJlbnQgQScKKzE4CisnVGhpbmsgZGlmZmVyZW50IEFwJworMTkKKydUaGluayBk
aWZmZXJlbnQgQXBwJworMjAKKydUaGluayBkaWZmZXJlbnQgQXBwbCcKKzIxCisnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlJworMjIKKydUaGluayBkaWZmZXJlbnQgQXBwbGUnCisyMworJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorCisnCisyNAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitiJworMjUK
KydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm8nCisyNgorJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorCitib2wnCisyNworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkJworMjgKKydUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCAnCisyOQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
Citib2xkIGknCiszMAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0JworMzEKKydU
aGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGEnCiszMgorJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorCitib2xkIGl0YWwnCiszMworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0
YWxpJworMzQKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMnCiszNQorJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYworJworMzYKKydUaGluayBkaWZmZXJl
bnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3UnCiszNworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
Citib2xkIGl0YWxpYwordW4nCiszOAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0
YWxpYwordW5kJworMzkKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3Vu
ZGUnCis0MAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXInCis0
MQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsJworNDIKKydU
aGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGknCis0MworJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW4nCis0NAorJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lJworNDUKKydUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSAnCis0NgorJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGwnCis0NworJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhJworNDgKKydUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXMnCis0OQorJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QnCis1MAorJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QhJworNTEKKydU
aGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IScKKzUy
CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEK
Kwor77+8JworNTMKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVy
bGluZSBsYXN0IQorCivvv7xIJworNTQKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBp
dGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZScKKzU1CisnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVsJworNTYKKydUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xI
ZWxsJworNTcKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGlu
ZSBsYXN0IQorCivvv7xIZWxsbycKKzU4CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQg
aXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVsbG8gJworNTkKKydUaGluayBkaWZmZXJl
bnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyBXJwor
NjAKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0
IQorCivvv7xIZWxsbyBXbycKKzYxCisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRh
bGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVsbG8gV29yJworNjIKKydUaGluayBkaWZmZXJl
bnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyBXb3Js
JworNjMKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBs
YXN0IQorCivvv7xIZWxsbyBXb3JsZCcKKzY0CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2Jv
bGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVsbG8gV29ybGQhJworR2V0IHRoZSBy
YW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6CisnQXBwbGUnCitPdXQgb2YgcmFuZ2UgdmFsdWVzOgor
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QhCisK
K++/vEhlbGxvIFdvcmxkIScKKycnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Ux
Y2JmMmVlZmUzYjdjMzAwZGNmZTU1ZjZiNGZlMDIzZDc5ZmQ3NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdl
Lmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgor
Cis8ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91cCI+CisgICAgPHA+VGhpbmsgPGVtPmRpZmZl
cmVudDwvZW0+IDxhIGhyZWY9ImFwcGxlLmNvbSI+QXBwbGU8L2E+PC9wPgorICAgIDxwPjxiPmJv
bGQ8L2I+IDxpPml0YWxpYzwvaT48YnI+PHU+dW5kZXJsaW5lPC91PiA8ZW0+bGFzdCE8L2VtPjwv
cD4KKyAgICA8YnV0dG9uPkhlbGxvIFdvcmxkITwvYnV0dG9uPgorPC9kaXY+CisKKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Cisg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdv
cmtzIHByb3Blcmx5LiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICBheEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgY29udGVudFRleHRNYXJrZXJSYW5n
ZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGF4RWxlbWVudCk7CisgICAg
ICAgIHRleHRMZW5ndGggPSBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGNvbnRl
bnRUZXh0TWFya2VyUmFuZ2UpLmxlbmd0aDsKKyAgICAgICAgZGVidWcoImNvbnRlbnQgbGVuZ3Ro
OiAiICsgdGV4dExlbmd0aCk7CisKKyAgICAgICAgZGVidWcoIkFsbCByYW5nZXMgZnJvbSBpbmRl
eCAwIHRvIGVhY2ggY2hhcmFjdGVyIGluIHRoZSB0ZXh0OiIpOworICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgdGV4dExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBkZWJ1ZyhpKTsKKyAgICAgICAg
ICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgw
LCBpKTsKKyAgICAgICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAgICAgIH0KKworICAgICAgICBk
ZWJ1ZygiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6Iik7CisgICAgICAgIHRleHRN
YXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7Cisg
ICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKSArICInIik7CisKKyAgICAgICAgZGVidWcoIk91dCBvZiByYW5nZSB2YWx1
ZXM6Iik7CisgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFu
Z2VGb3JSYW5nZSgwLCAxMDApOworICAgICAgICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIpOworICAgICAgICB0ZXh0
TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7
CisgICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421103</attachid>
            <date>2021-02-20 12:41:54 -0800</date>
            <delta_ts>2021-02-21 08:21:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222154-20210220154153.patch</filename>
            <type>text/plain</type>
            <size>22354</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE5OWE3YjA5NWFkZmE1
MmYwNDE0OGQ1OTY1OWE0MjE3MzM0ZjBlZC4uYWM1ZWNiZjBhZjBjODgyZjg0Njk4OWVlMDhkMzdl
ZjhlY2RiMTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTAyLTE4ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFs
bG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4g
TlNSYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGFjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwK
KworICAgICAgICBDbGllbnRzIGxpa2UgVm9pY2VPdmVyIG9mdGVuIG5lZWQgdGhlIGFiaWxpdHkg
dG8gY29udmVydCBhIHRleHQgcmFuZ2UKKyAgICAgICAgaW50byBhbiBhY2Nlc3NpYmlsaXR5IFRl
eHRNYXJrZXJSYW5nZS4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlXQorICAgICAgICB0byBhbGxv
dyBjbGllbnRzIHRvIGVmZmljaWVudGx5IHBlcmZvcm0gdGhpcyBjb252ZXJzaW9uLgorICAgICAg
ICBUaGlzIGlzIHRoZSBNYWMgaW1wbGVtZW50YXRpb24sIGlPUyBpbXBsZW1lbnRhdGlvbiBpcyBw
ZW5kaW5nLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2Vz
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNv
bGF0ZWRPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp0
ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZSBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5n
ZUZvck5TUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMjEtMDIt
MTcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgYXJpYS1lcnJvcm1lc3NhZ2Ugb24gaU9TLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBmN2FlNjY1ZjFhMzQ5Y2Y1
MmQ5ZjMwYzZiMWUyOGU2YjlhZTAyZTNlLi42Y2MxNDU3ZGUyZTBjOTAxOTI1NWI1ZDEwOWJmOTM3
ZGI1NjZjNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaApAQCAtNTM5LDYgKzUzOSw5IEBAIHB1YmxpYzoKICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclBs
YWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZv
ck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBz
dGF0aWMgU3RyaW5nIHN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblJhbmdlJik7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclJhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MjMsNyArODI2LDcgQEAgaW5saW5lIHZvaWQgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoUGxhdGZvcm1XcmFwcGVyKEFjY2Vzc2liaWxpdHlEZXRh
Y2htZW50VHkKICNlbmRpZgogCiAjaWYgIShFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFU
SykpCi1pbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2VzKCkg
Y29uc3QgeyByZXR1cm4gaXNUZXh0Q29udHJvbCgpOyB9CitpbmxpbmUgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogaW5s
aW5lIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldExlbmd0aEZvclRleHRSYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgKaW5kZXggNjE2MTE0MTQwYjdlYmFmZjAzZjk0ZTAyYjczYTk0MDM5ODMwYzU1MS4u
YzNlYmZmNTIxMThkNGUzZTAwYmNkNzY3YmEzMjM2MjE2MjliNDMxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgKQEAgLTQ5LDYgKzQ5LDggQEAKIE9CSkNfQ0xBU1MgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXI7CiB0eXBlZGVmIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyOwogdHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5nZTsK
K3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQVhUZXh0TWFya2VyKiBBWFRleHRNYXJrZXJSZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlclJhbmdlKiBBWFRleHRNYXJrZXJSYW5n
ZVJlZjsKICNlbGlmIFVTRShBVEspCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZSBX
ZWJLaXRBY2Nlc3NpYmxlOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGUgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI7CkBAIC0xMjc0LDYgKzEyNzYsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNv
bnN0ID0gMDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gRklYTUU6IG1ha2UgdGhpcyBhIENP
Q09BIG1ldGhvZC4KKyAgICB2aXJ0dWFsIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJS
YW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0ID0gMDsKKyNlbmRpZgogCiAgICAg
dmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oCmluZGV4IDk2OWFjYmU1MTE2NmM4NWVlYzNkOGU0YTQzZTVmNTQ4MjIwZGFiMTAuLmY1NzRj
YjE3Mjk0NDE2MDNlNWZjODM5YWI5NjA1NzI0MWE4Y2Y4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgKQEAgLTQwMiw2ICs0MDIsOSBAQCBwcml2YXRlOgogICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBWFRleHRNYXJrZXJS
YW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlKGNvbnN0IE5TUmFuZ2UmKSBjb25zdCAg
b3ZlcnJpZGU7CisjZW5kaWYKICAgICBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICAgICBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgSW50UmVjdCBib3VuZHNGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQppbmRleCA0MjlhZDU1
ZDlmOGE2NWU4NmM5Yzg1NDI3NDg3ZTM0ZGY3YjhiYzJiLi44ZDM0OTBjMTRhMTJhZDY2ZmIzOGFk
MWU1NDJhNzNlZjc4MGQ3ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1h
Yy5tbQpAQCAtNTksNiArNTksMTQgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpkZXRhY2hQbGF0
Zm9ybVdyYXBwZXIoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG0KICAgICBbd3Jh
cHBlcigpIGRldGFjaElzb2xhdGVkT2JqZWN0OmRldGFjaG1lbnRUeXBlXTsKIH0KIAorQVhUZXh0
TWFya2VyUmFuZ2VSZWYgQVhJc29sYXRlZE9iamVjdDo6dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5n
ZShjb25zdCBOU1JhbmdlJiBuc1JhbmdlKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8QVhUZXh0TWFya2VyUmFuZ2VSZWY+KFsm
bnNSYW5nZSwgdGhpc10gKCkgLT4gQVhUZXh0TWFya2VyUmFuZ2VSZWYgeworICAgICAgICBhdXRv
KiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOworICAgICAgICByZXR1cm4gYXhPYmpl
Y3QgPyBheE9iamVjdC0+dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShuc1JhbmdlKSA6IE5VTEw7
CisgICAgfSk7Cit9CisKIH0gLy8gV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFDQ0VTU0lC
SUxJVFlfSVNPTEFURURfVFJFRSkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0K
aW5kZXggMmZmNmNkZWI4MDEzZGQwYmVhYjBhODFiMDdjNzgwNWQ5Yzg2NmIwOS4uOTI1Mzc1YjFh
Yjg0Y2FjYjYwNzJhNjkwNzVjYjQ5MGM0ZjQ0OGYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBA
IC0yODAsNiArMjgwLDEzIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpyb2xlUGxhdGZv
cm1EZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitBWFRleHRN
YXJrZXJSYW5nZVJlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0TWFya2VyUmFuZ2VGb3JOU1Jh
bmdlKGNvbnN0IE5TUmFuZ2UmIG5zUmFuZ2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRleHRNYXJr
ZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKGF4T2JqZWN0Q2FjaGUoKSwKKyAgICAgICAgdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgobnNSYW5nZS5sb2NhdGlvbiksCisgICAgICAgIHZpc2libGVQ
b3NpdGlvbkZvckluZGV4KG5zUmFuZ2UubG9jYXRpb24gKyBuc1JhbmdlLmxlbmd0aCkpOworfQor
CiBuYW1lc3BhY2UgQWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0
Zm9ybVJvbGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRl
eCAwNTdiMWNkZDQwYTJjNmQyMzM1YjcwNzljMTM1ZGExMjJkODczMWIwLi4yZWIwNmRhNjJjZjU2
ZDEyZDRmNjhjMGZhMGMyMjhiNjQ1YWY3MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQpAQCAtMzQ2Myw2ICszNDYzLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgIH0pOwogfQogCistIChBWFRleHRNYXJrZXJSYW5nZVJlZil0
ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlOihjb25zdCBOU1JhbmdlJiluc1JhbmdlCit7CisgICAg
YXV0byogYmFja2luZ09iamVjdCA9IHNlbGYudXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOworICAg
IHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJhbmdlRm9y
TlNSYW5nZShuc1JhbmdlKSA6IG5pbDsKK30KKwogLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhp
cyB0byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb247IGNhbiBnZXQgZG9jdW1lbnQg
ZnJvbSByYW5nZS4KIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJh
bmdlJilyYW5nZQogewpAQCAtNDAwNywxNSArNDAxMywxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90
ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKICAgICAgICAgICAgIGlmICghYmFja2lu
Z09iamVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKLSAgICAgICAgICAg
IGF1dG8qIGNhY2hlID0gYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwotICAgICAgICAg
ICAgaWYgKCFjYWNoZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKLSAgICAg
ICAgICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JJ
bmRleChyYW5nZS5sb2NhdGlvbiwgYmFja2luZ09iamVjdCk7Ci0gICAgICAgICAgICBDaGFyYWN0
ZXJPZmZzZXQgZW5kID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0
aW9uK3JhbmdlLmxlbmd0aCwgYmFja2luZ09iamVjdCk7Ci0gICAgICAgICAgICBhdXRvIHJhbmdl
ID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhzdGFydCwgZW5kKTsK
LSAgICAgICAgICAgIGlmICghcmFuZ2UpCisKKyAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBiYWNr
aW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5nZS5sb2NhdGlvbik7CisgICAg
ICAgICAgICBhdXRvIGVuZCA9IGJhY2tpbmdPYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4
KHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gd2ViUmFu
Z2UgPSBtYWtlU2ltcGxlUmFuZ2UoeyBzdGFydCwgZW5kIH0pOworICAgICAgICAgICAgaWYgKCF3
ZWJSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKLSAgICAgICAgICAg
IGF1dG8gYm91bmRzID0gRmxvYXRSZWN0KGJhY2tpbmdPYmplY3QtPmJvdW5kc0ZvclJhbmdlKCpy
YW5nZSkpOworCisgICAgICAgICAgICBhdXRvIGJvdW5kcyA9IEZsb2F0UmVjdChiYWNraW5nT2Jq
ZWN0LT5ib3VuZHNGb3JSYW5nZSgqd2ViUmFuZ2UpKTsKICAgICAgICAgICAgIHJldHVybiBbcHJv
dGVjdGVkU2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6Ym91bmRzIHNwYWNlOkFjY2Vzc2liaWxpdHlD
b252ZXJzaW9uU3BhY2U6OlNjcmVlbl07CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gW05T
VmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWJkMWQ1ZTQyOWM2ZWE5MzdmNjkxNGUzOWFlYTdjNzE3
Yjk4Y2U0Li41MDU5NjAzMjViNzVmNTVmMDhlMGU5MjEyNmU5NjY5YWFiOGRmNmY4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMjEtMDItMTggIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlclJh
bmdlRm9yTlNSYW5nZV0gdG8gYWxsb3cgY2xpZW50cyB0byBlZmZpY2llbnRseSBnZXQgYSBUZXh0
TWFya2VyUmFuZ2UgZnJvbSBhbiBOU1JhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSk6CisKIDIwMjEtMDItMTcgIERp
ZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBT
REtdIFNjcmlwdCAnd2Via2l0LWZsYXRwYWstcnVuLW5pZ2h0bHknIGV4cGVjdHMgZGlmZmVyZW50
IGZvcm1hdCBmb3IgYSBidWlsdCBwcm9kdWN0IG5hbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwCmluZGV4IDgwMzVlMGZhYTUwNjI5OGM5NzFjODk0YTAwNDUzM2VkNjk3NTIwZGQuLjQ2
ZjRmNjc5N2Q5MTllMmIxYWNlNDRkNjI2MTkzNDQ5NjI0OGJkYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcApAQCAtMTAyLDYgKzEwMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KGludCkgeyByZXR1
cm4KICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpIHsgcmV0dXJu
IG51bGxwdHI7IH0KIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVzZXRTZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZSgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRCb29sQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYsIGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAppbmRleCBlNzQzNmFhMGU1ODhlYWY5MmEwY2FkYTcwMTVjZjQ4NmRiMWM4ZGYwLi4wZDhjMjM4
YWFlNDUwOGZjOWJkNzRlYzQzZTIzOTYwZThhMjNkYTgwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaApAQCAtMzAyLDYgKzMwMiw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gbWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSogc3RhcnQsIGJvb2wgZm9yd2FyZCk7CiAgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCopOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7CisgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZvclJh
bmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAg
IHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2wgcmVwbGFjZVRl
eHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKaW5kZXggNTQ3NjM0MGUy
NDNlMTFjOTU2MTE5NDY1OWNiMTZjY2Q0MjdkMjFhNy4uOGIyMjgyZDdhZTExYmU3NTU3YzgzZGJm
MzUxZjA1OGYwYWQwMDVjZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaWRsCkBAIC0yMTksNiArMjE5LDcgQEAKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlIG1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2Ugc3RhcnQsIGJvb2xlYW4gZm9yd2FyZCk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQgZWxlbWVudCk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2VyLCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIpOworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UodW5zaWduZWQgbG9uZyBsb2NhdGlvbiwg
dW5zaWduZWQgbG9uZyBsZW5ndGgpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICB1bmRlZmluZWQgcmVzZXRTZWxlY3RlZFRl
eHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2xlYW4gcmVwbGFjZVRleHRJblJhbmdlKERPTVN0cmlu
ZyBzdHJpbmcsIGxvbmcgcG9zaXRpb24sIGxvbmcgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGVmZGFmOGM1MmU4OWJlYjdjMzE5NmJmNmM4
ZmNlZmY2YTZiMGViYTMuLjg2ZjExY2NjNzMwOWJiYTZhMDdjMzQ2NzExNGJhYTAwYzY1OTQwNzUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtODMsNiAr
ODMsNyBAQCB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBl
bGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLAogLSAoQk9PTClpc0lzb2xhdGVkT2JqZWN0
OwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhU
ZXh0OihOU1N0cmluZyAqKXN0cmluZzsKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUluc2VydFRleHQ6
KE5TU3RyaW5nICopdGV4dDsKKy0gKGlkKXRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2U6KGNvbnN0
IE5TUmFuZ2UmKW5zUmFuZ2U7CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmli
dXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRleCBt
YXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0
eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJh
eUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKQEAgLTE4MTUsNiArMTgxNiwx
NyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTQogICAgIHJldHVybiBudWxscHRyOwogfQogCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0
aCk7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlclJhbmdl
ID0gW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlOnJhbmdlXTsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjgyZDA0MWEzMDAxNTM3OTlkNGI2MmVjNjNkNDg5ZjM5MzkxYWYwNS4u
Mjk0MmYxOTUxNGYwNmY2MDMyZGJlYzZlYmE3ODU3OTVjZTY1MTVjOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIxLTAyLTE4ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJr
ZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFsbG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEg
VGV4dE1hcmtlclJhbmdlIGZyb20gYW4gTlNSYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1y
YW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sOiBBZGRlZC4KKwogMjAyMS0w
Mi0xNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAg
U3VwcG9ydCBhcmlhLWVycm9ybWVzc2FnZSBvbiBpT1MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1y
YW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RjYzc3YzNjODcxZWJkYThkMWRiY2YxODYx
ZTAzZWVjZmRlYjY2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI5NyBAQAorVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUg
bGFzdCEKKworSGVsbG8gV29ybGQhCitUaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JS
YW5nZSB3b3JrcyBwcm9wZXJseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2Nv
bnRlbnQgbGVuZ3RoOiA2NQorQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0
ZXIgaW4gdGhlIHRleHQ6CiswCisnJworMQorJ1QnCisyCisnVGgnCiszCisnVGhpJworNAorJ1Ro
aW4nCis1CisnVGhpbmsnCis2CisnVGhpbmsgJworNworJ1RoaW5rIGQnCis4CisnVGhpbmsgZGkn
Cis5CisnVGhpbmsgZGlmJworMTAKKydUaGluayBkaWZmJworMTEKKydUaGluayBkaWZmZScKKzEy
CisnVGhpbmsgZGlmZmVyJworMTMKKydUaGluayBkaWZmZXJlJworMTQKKydUaGluayBkaWZmZXJl
bicKKzE1CisnVGhpbmsgZGlmZmVyZW50JworMTYKKydUaGluayBkaWZmZXJlbnQgJworMTcKKydU
aGluayBkaWZmZXJlbnQgQScKKzE4CisnVGhpbmsgZGlmZmVyZW50IEFwJworMTkKKydUaGluayBk
aWZmZXJlbnQgQXBwJworMjAKKydUaGluayBkaWZmZXJlbnQgQXBwbCcKKzIxCisnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlJworMjIKKydUaGluayBkaWZmZXJlbnQgQXBwbGUnCisyMworJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorCisnCisyNAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitiJworMjUK
KydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm8nCisyNgorJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorCitib2wnCisyNworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkJworMjgKKydUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCAnCisyOQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
Citib2xkIGknCiszMAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0JworMzEKKydU
aGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGEnCiszMgorJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorCitib2xkIGl0YWwnCiszMworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0
YWxpJworMzQKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMnCiszNQorJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYworJworMzYKKydUaGluayBkaWZmZXJl
bnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3UnCiszNworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
Citib2xkIGl0YWxpYwordW4nCiszOAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0
YWxpYwordW5kJworMzkKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3Vu
ZGUnCis0MAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXInCis0
MQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsJworNDIKKydU
aGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGknCis0MworJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW4nCis0NAorJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lJworNDUKKydUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSAnCis0NgorJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGwnCis0NworJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhJworNDgKKydUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXMnCis0OQorJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QnCis1MAorJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QhJworNTEKKydU
aGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IScKKzUy
CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEK
Kwor77+8JworNTMKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVy
bGluZSBsYXN0IQorCivvv7xIJworNTQKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBp
dGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZScKKzU1CisnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVsJworNTYKKydUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xI
ZWxsJworNTcKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGlu
ZSBsYXN0IQorCivvv7xIZWxsbycKKzU4CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQg
aXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVsbG8gJworNTkKKydUaGluayBkaWZmZXJl
bnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyBXJwor
NjAKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0
IQorCivvv7xIZWxsbyBXbycKKzYxCisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRh
bGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVsbG8gV29yJworNjIKKydUaGluayBkaWZmZXJl
bnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyBXb3Js
JworNjMKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBs
YXN0IQorCivvv7xIZWxsbyBXb3JsZCcKKzY0CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2Jv
bGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVsbG8gV29ybGQhJworR2V0IHRoZSBy
YW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6CisnQXBwbGUnCitPdXQgb2YgcmFuZ2UgdmFsdWVzOgor
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QhCisK
K++/vEhlbGxvIFdvcmxkIScKKycnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Ux
Y2JmMmVlZmUzYjdjMzAwZGNmZTU1ZjZiNGZlMDIzZDc5ZmQ3NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdl
Lmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgor
Cis8ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91cCI+CisgICAgPHA+VGhpbmsgPGVtPmRpZmZl
cmVudDwvZW0+IDxhIGhyZWY9ImFwcGxlLmNvbSI+QXBwbGU8L2E+PC9wPgorICAgIDxwPjxiPmJv
bGQ8L2I+IDxpPml0YWxpYzwvaT48YnI+PHU+dW5kZXJsaW5lPC91PiA8ZW0+bGFzdCE8L2VtPjwv
cD4KKyAgICA8YnV0dG9uPkhlbGxvIFdvcmxkITwvYnV0dG9uPgorPC9kaXY+CisKKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Cisg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdv
cmtzIHByb3Blcmx5LiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICBheEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgY29udGVudFRleHRNYXJrZXJSYW5n
ZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGF4RWxlbWVudCk7CisgICAg
ICAgIHRleHRMZW5ndGggPSBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGNvbnRl
bnRUZXh0TWFya2VyUmFuZ2UpLmxlbmd0aDsKKyAgICAgICAgZGVidWcoImNvbnRlbnQgbGVuZ3Ro
OiAiICsgdGV4dExlbmd0aCk7CisKKyAgICAgICAgZGVidWcoIkFsbCByYW5nZXMgZnJvbSBpbmRl
eCAwIHRvIGVhY2ggY2hhcmFjdGVyIGluIHRoZSB0ZXh0OiIpOworICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgdGV4dExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBkZWJ1ZyhpKTsKKyAgICAgICAg
ICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgw
LCBpKTsKKyAgICAgICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAgICAgIH0KKworICAgICAgICBk
ZWJ1ZygiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6Iik7CisgICAgICAgIHRleHRN
YXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7Cisg
ICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKSArICInIik7CisKKyAgICAgICAgZGVidWcoIk91dCBvZiByYW5nZSB2YWx1
ZXM6Iik7CisgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFu
Z2VGb3JSYW5nZSgwLCAxMDApOworICAgICAgICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIpOworICAgICAgICB0ZXh0
TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7
CisgICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNzc4ODgxNTA5Njk5OGU2NDRkNTIzMzM0MjEwNjdkMjFjOGRkMGM3My4uZWZjMjYxMjlmODA3
ODc3Y2MxMDc2ZDllNTI2MTRlMTFiNjE0MDA0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTY2LDYgKzk2Niw3IEBAIHdlYmtpdC5vcmcv
Yi8yMTAxMzQgbWVkaWEvdHJhY2svdHJhY2stY3NzLXVzZXItb3ZlcnJpZGUuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjEwMTk4IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9h
dHRyaWJzL2dsLXZlcnRleGF0dHJpYmlwb2ludGVyLmh0bWwgWyBTbG93IF0KIAogd2Via2l0Lm9y
Zy9iLzIwODQ3NyBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci1mb3ItaW5kZXguaHRtbCBb
IFNraXAgXQorYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRt
bCBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS9tYWMvaXNvbGF0ZWQtdHJlZS1tb2RlLW9uLW9mZi5o
dG1sIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L2FyaWEtY3VycmVudC1zdGF0ZS1jaGFuZ2VkLW5v
dGlmaWNhdGlvbi5odG1sIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L2FyaWEtY3VycmVudC5odG1s
IFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421140</attachid>
            <date>2021-02-21 08:21:39 -0800</date>
            <delta_ts>2021-02-21 12:26:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222154-20210221112138.patch</filename>
            <type>text/plain</type>
            <size>22267</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE5OWE3YjA5NWFkZmE1
MmYwNDE0OGQ1OTY1OWE0MjE3MzM0ZjBlZC4uYWM1ZWNiZjBhZjBjODgyZjg0Njk4OWVlMDhkMzdl
ZjhlY2RiMTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTAyLTE4ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFs
bG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4g
TlNSYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGFjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwK
KworICAgICAgICBDbGllbnRzIGxpa2UgVm9pY2VPdmVyIG9mdGVuIG5lZWQgdGhlIGFiaWxpdHkg
dG8gY29udmVydCBhIHRleHQgcmFuZ2UKKyAgICAgICAgaW50byBhbiBhY2Nlc3NpYmlsaXR5IFRl
eHRNYXJrZXJSYW5nZS4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlXQorICAgICAgICB0byBhbGxv
dyBjbGllbnRzIHRvIGVmZmljaWVudGx5IHBlcmZvcm0gdGhpcyBjb252ZXJzaW9uLgorICAgICAg
ICBUaGlzIGlzIHRoZSBNYWMgaW1wbGVtZW50YXRpb24sIGlPUyBpbXBsZW1lbnRhdGlvbiBpcyBw
ZW5kaW5nLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2Vz
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNv
bGF0ZWRPYmplY3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp0
ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZSBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5n
ZUZvck5TUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMjEtMDIt
MTcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgYXJpYS1lcnJvcm1lc3NhZ2Ugb24gaU9TLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBmN2FlNjY1ZjFhMzQ5Y2Y1
MmQ5ZjMwYzZiMWUyOGU2YjlhZTAyZTNlLi42Y2MxNDU3ZGUyZTBjOTAxOTI1NWI1ZDEwOWJmOTM3
ZGI1NjZjNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaApAQCAtNTM5LDYgKzUzOSw5IEBAIHB1YmxpYzoKICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclBs
YWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZv
ck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBz
dGF0aWMgU3RyaW5nIHN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblJhbmdlJik7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclJhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MjMsNyArODI2LDcgQEAgaW5saW5lIHZvaWQgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoUGxhdGZvcm1XcmFwcGVyKEFjY2Vzc2liaWxpdHlEZXRh
Y2htZW50VHkKICNlbmRpZgogCiAjaWYgIShFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFU
SykpCi1pbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2VzKCkg
Y29uc3QgeyByZXR1cm4gaXNUZXh0Q29udHJvbCgpOyB9CitpbmxpbmUgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogaW5s
aW5lIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldExlbmd0aEZvclRleHRSYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgKaW5kZXggNjE2MTE0MTQwYjdlYmFmZjAzZjk0ZTAyYjczYTk0MDM5ODMwYzU1MS4u
YzNlYmZmNTIxMThkNGUzZTAwYmNkNzY3YmEzMjM2MjE2MjliNDMxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgKQEAgLTQ5LDYgKzQ5LDggQEAKIE9CSkNfQ0xBU1MgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXI7CiB0eXBlZGVmIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyOwogdHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5nZTsK
K3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQVhUZXh0TWFya2VyKiBBWFRleHRNYXJrZXJSZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlclJhbmdlKiBBWFRleHRNYXJrZXJSYW5n
ZVJlZjsKICNlbGlmIFVTRShBVEspCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZSBX
ZWJLaXRBY2Nlc3NpYmxlOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGUgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXI7CkBAIC0xMjc0LDYgKzEyNzYsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNv
bnN0ID0gMDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gRklYTUU6IG1ha2UgdGhpcyBhIENP
Q09BIG1ldGhvZC4KKyAgICB2aXJ0dWFsIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJS
YW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0ID0gMDsKKyNlbmRpZgogCiAgICAg
dmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oCmluZGV4IDk2OWFjYmU1MTE2NmM4NWVlYzNkOGU0YTQzZTVmNTQ4MjIwZGFiMTAuLjI2ZGRl
YzAzZTJjNDk5Y2FlODM0MzdkOWNlNGZmZWE1YzRhODg5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgKQEAgLTQwMiw2ICs0MDIsOSBAQCBwcml2YXRlOgogICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBWFRleHRNYXJrZXJS
YW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlKGNvbnN0IE5TUmFuZ2UmKSBjb25zdCBv
dmVycmlkZTsKKyNlbmRpZgogICAgIFN0cmluZyBzdHJpbmdGb3JSYW5nZShjb25zdCBTaW1wbGVS
YW5nZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIEludFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0
aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICAg
ICBJbnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJikgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4IDQyOWFkNTVk
OWY4YTY1ZTg2YzljODU0Mjc0ODdlMzRkZjdiOGJjMmIuLmMwYmY1OWJlMGI0Njg1NTM0MGMzNzg5
NDgzNTAxOTE3YTAxNTVhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFj
Lm1tCkBAIC01OSw2ICs1OSwxNCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmRldGFjaFBsYXRm
b3JtV3JhcHBlcihBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgZGV0YWNobQogICAgIFt3cmFw
cGVyKCkgZGV0YWNoSXNvbGF0ZWRPYmplY3Q6ZGV0YWNobWVudFR5cGVdOwogfQogCitBWFRleHRN
YXJrZXJSYW5nZVJlZiBBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0TWFya2VyUmFuZ2VGb3JOU1Jhbmdl
KGNvbnN0IE5TUmFuZ2UmIHJhbmdlKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8QVhUZXh0TWFya2VyUmFuZ2VSZWY+KFsmcmFu
Z2UsIHRoaXNdICgpIC0+IEFYVGV4dE1hcmtlclJhbmdlUmVmIHsKKyAgICAgICAgYXV0byogYXhP
YmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0ID8g
YXhPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2UocmFuZ2UpIDogbnVsbHB0cjsKKyAg
ICB9KTsKK30KKwogfSAvLyBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRl
eCAyZmY2Y2RlYjgwMTNkZDBiZWFiMGE4MWIwN2M3ODA1ZDljODY2YjA5Li4yOGUxNTVhMjY2ZjVi
ZWY1ZjM1MzAyM2Y5Y2MzMGJkOWY3NjhmNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KQEAgLTI4
MCw2ICsyODAsMTMgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJvbGVQbGF0Zm9ybURl
c2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK0FYVGV4dE1hcmtl
clJhbmdlUmVmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2Uo
Y29uc3QgTlNSYW5nZSYgcmFuZ2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5n
ZUZyb21WaXNpYmxlUG9zaXRpb25zKGF4T2JqZWN0Q2FjaGUoKSwKKyAgICAgICAgdmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXgocmFuZ2UubG9jYXRpb24pLAorICAgICAgICB2aXNpYmxlUG9zaXRpb25G
b3JJbmRleChyYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCkpOworfQorCiBuYW1lc3BhY2Ug
QWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAwNTdiMWNkZDQw
YTJjNmQyMzM1YjcwNzljMTM1ZGExMjJkODczMWIwLi4wNGJhOTEwZTc5YzQ5ZTNhMGJhOWU3M2M4
Y2MzY2JjOTZjZDM1NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQpAQCAtMzQ2Myw2ICszNDYzLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIH0pOwogfQogCistIChBWFRleHRNYXJrZXJSYW5nZVJlZil0ZXh0TWFya2VyUmFu
Z2VGb3JOU1JhbmdlOihjb25zdCBOU1JhbmdlJilyYW5nZQoreworICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLnVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZTsKKyAgICByZXR1cm4gYmFja2lu
Z09iamVjdCA/IGJhY2tpbmdPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2UocmFuZ2Up
IDogbmlsOworfQorCiAvLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9k
IGluc3RlYWQgb2YgYSBmdW5jdGlvbjsgY2FuIGdldCBkb2N1bWVudCBmcm9tIHJhbmdlLgogLSAo
TlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlCiB7CkBA
IC00MDA3LDE1ICs0MDEzLDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCku
YXhCYWNraW5nT2JqZWN0OwogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAg
ICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwotICAgICAgICAgICAgYXV0byogY2FjaGUgPSBi
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7Ci0gICAgICAgICAgICBpZiAoIWNhY2hlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwotICAgICAgICAgICAgQ2hhcmFjdGVy
T2Zmc2V0IHN0YXJ0ID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0
aW9uLCBiYWNraW5nT2JqZWN0KTsKLSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBlbmQgPSBj
YWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9ySW5kZXgocmFuZ2UubG9jYXRpb24rcmFuZ2UubGVuZ3Ro
LCBiYWNraW5nT2JqZWN0KTsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VG
b3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOwotICAgICAgICAgICAgaWYg
KCFyYW5nZSkKKworICAgICAgICAgICAgYXV0byBzdGFydCA9IGJhY2tpbmdPYmplY3QtPnZpc2li
bGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gZW5k
ID0gYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgocmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGgpOworICAgICAgICAgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VTaW1wbGVS
YW5nZSh7IHN0YXJ0LCBlbmQgfSk7CisgICAgICAgICAgICBpZiAoIXdlYlJhbmdlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwotICAgICAgICAgICAgYXV0byBib3VuZHMgPSBG
bG9hdFJlY3QoYmFja2luZ09iamVjdC0+Ym91bmRzRm9yUmFuZ2UoKnJhbmdlKSk7CisKKyAgICAg
ICAgICAgIGF1dG8gYm91bmRzID0gRmxvYXRSZWN0KGJhY2tpbmdPYmplY3QtPmJvdW5kc0ZvclJh
bmdlKCp3ZWJSYW5nZSkpOwogICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIGNvbnZl
cnRSZWN0VG9TcGFjZTpib3VuZHMgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6
U2NyZWVuXTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhS
ZWN0OnJlY3RdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGI1YmQxZDVlNDI5YzZlYTkzN2Y2OTE0ZTM5YWVhN2M3MTdiOThjZTQuLjUwNTk2MDMy
NWI3NWY1NWYwOGUwZTkyMTI2ZTk2NjlhYWI4ZGY2ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wMi0xOCAg
QW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlXSB0
byBhbGxvdyBjbGllbnRzIHRvIGVmZmljaWVudGx5IGdldCBhIFRleHRNYXJrZXJSYW5nZSBmcm9t
IGFuIE5TUmFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjIxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJr
ZXJSYW5nZUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlKToKKwogMjAyMS0wMi0xNyAgRGllZ28gUGlubyBHYXJjaWEg
IDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gU2NyaXB0ICd3ZWJr
aXQtZmxhdHBhay1ydW4tbmlnaHRseScgZXhwZWN0cyBkaWZmZXJlbnQgZm9ybWF0IGZvciBhIGJ1
aWx0IHByb2R1Y3QgbmFtZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5kZXggODAz
NWUwZmFhNTA2Mjk4Yzk3MWM4OTRhMDA0NTMzZWQ2OTc1MjBkZC4uNDZmNGY2Nzk3ZDkxOWUyYjFh
Y2U0NGQ2MjYxOTM0NDk2MjQ4YmRhYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
CkBAIC0xMDIsNiArMTAyLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZzZXQoaW50KSB7IHJldHVybgogI2VuZGlmCiAKICNp
ZiAhUExBVEZPUk0oTUFDKSB8fCAhSEFWRShBQ0NFU1NJQklMSVRZKQorUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJS
YW5nZUZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkgeyByZXR1cm4gbnVsbHB0cjsgfQogUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkgeyB9CiB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldEJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmlu
Z1JlZiwgYm9vbCkgeyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IGU3NDM2YWEw
ZTU4OGVhZjkyYTBjYWRhNzAxNWNmNDg2ZGIxYzhkZjAuLjBkOGMyMzhhYWU0NTA4ZmM5YmQ3NGVj
NDNlMjM5NjBlOGEyM2RhODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0zMDIs
NiArMzAyLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiBtaXNzcGVsbGluZ1RleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiBzdGFydCwgYm9vbCBmb3J3YXJkKTsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gdGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Kik7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UodW5zaWduZWQgbG9j
YXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U+IHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgdm9pZCByZXNldFNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJp
bmdSZWYsIGludCBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAppbmRleCA1NDc2MzQwZTI0M2UxMWM5NTYxMTk0NjU5
Y2IxNmNjZDQyN2QyMWE3Li44YjIyODJkN2FlMTFiZTc1NTdjODNkYmYzNTFmMDU4ZjBhZDAwNWNm
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKQEAg
LTIxOSw2ICsyMTksNyBAQAogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgbWlzc3Bl
bGxpbmdUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBzdGFydCwg
Ym9vbGVhbiBmb3J3YXJkKTsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50KTsKICAg
ICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIGVuZE1hcmtlcik7CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFy
a2VyUmFuZ2VGb3JSYW5nZSh1bnNpZ25lZCBsb25nIGxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIGxl
bmd0aCk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBzZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZSgpOwogICAgIHVuZGVmaW5lZCByZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7
CiAgICAgYm9vbGVhbiByZXBsYWNlVGV4dEluUmFuZ2UoRE9NU3RyaW5nIHN0cmluZywgbG9uZyBw
b3NpdGlvbiwgbG9uZyBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KaW5kZXggZWZkYWY4YzUyZTg5YmViN2MzMTk2YmY2YzhmY2VmZjZhNmIwZWJhMy4u
MDE3ZmQ4NDkwMGM3YjFlOGYzYWI4NjI3NjhhOTNmOWYzYmRiNDlkZiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC04Myw2ICs4Myw3IEBAIHR5cGVkZWYg
dm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5n
KiBub3RpZmljYXRpb24sCiAtIChCT09MKWlzSXNvbGF0ZWRPYmplY3Q7CiAtIChCT09MKWFjY2Vz
c2liaWxpdHlSZXBsYWNlUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5nICop
c3RyaW5nOwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SW5zZXJ0VGV4dDooTlNTdHJpbmcgKil0ZXh0
OworLSAoaWQpdGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZTooY29uc3QgTlNSYW5nZSYpbnNSYW5n
ZTsKIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3Ry
aW5nICopYXR0cmlidXRlIGluZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRl
Z2VyKW1heENvdW50OwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOihp
ZCljaGlsZDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6
KE5TU3RyaW5nICopYXR0cmlidXRlOwpAQCAtMTgxNSw2ICsxODE2LDE1IEBAIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VGb3JNCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFu
Z2VGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlOjpjcmVhdGUoW21fZWxlbWVudCB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlOk5TTWFr
ZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwor
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjgyZDA0MWEzMDAxNTM3
OTlkNGI2MmVjNjNkNDg5ZjM5MzkxYWYwNS4uMjk0MmYxOTUxNGYwNmY2MDMyZGJlYzZlYmE3ODU3
OTVjZTY1MTVjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAyLTE4ICBBbmRyZXMgR29u
emFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFsbG93IGNs
aWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4gTlNSYW5n
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjE1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1y
YW5nZS5odG1sOiBBZGRlZC4KKwogMjAyMS0wMi0xNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVz
Z18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBhcmlhLWVycm9ybWVzc2FnZSBvbiBp
T1MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2Vy
LXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2RjYzc3YzNjODcxZWJkYThkMWRiY2YxODYxZTAzZWVjZmRlYjY2OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJh
bmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5NyBAQAorVGhpbmsgZGlmZmVyZW50IEFwcGxl
CisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKworSGVsbG8gV29ybGQhCitUaGlzIHRl
c3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2NvbnRlbnQgbGVuZ3RoOiA2NQorQWxsIHJhbmdlcyBm
cm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6CiswCisnJworMQorJ1Qn
CisyCisnVGgnCiszCisnVGhpJworNAorJ1RoaW4nCis1CisnVGhpbmsnCis2CisnVGhpbmsgJwor
NworJ1RoaW5rIGQnCis4CisnVGhpbmsgZGknCis5CisnVGhpbmsgZGlmJworMTAKKydUaGluayBk
aWZmJworMTEKKydUaGluayBkaWZmZScKKzEyCisnVGhpbmsgZGlmZmVyJworMTMKKydUaGluayBk
aWZmZXJlJworMTQKKydUaGluayBkaWZmZXJlbicKKzE1CisnVGhpbmsgZGlmZmVyZW50JworMTYK
KydUaGluayBkaWZmZXJlbnQgJworMTcKKydUaGluayBkaWZmZXJlbnQgQScKKzE4CisnVGhpbmsg
ZGlmZmVyZW50IEFwJworMTkKKydUaGluayBkaWZmZXJlbnQgQXBwJworMjAKKydUaGluayBkaWZm
ZXJlbnQgQXBwbCcKKzIxCisnVGhpbmsgZGlmZmVyZW50IEFwcGxlJworMjIKKydUaGluayBkaWZm
ZXJlbnQgQXBwbGUnCisyMworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCisnCisyNAorJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitiJworMjUKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm8n
CisyNgorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2wnCisyNworJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQorCitib2xkJworMjgKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCAnCisy
OQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGknCiszMAorJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQorCitib2xkIGl0JworMzEKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBp
dGEnCiszMgorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWwnCiszMworJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpJworMzQKKydUaGluayBkaWZmZXJlbnQgQXBw
bGUKKworYm9sZCBpdGFsaWMnCiszNQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0
YWxpYworJworMzYKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3UnCisz
NworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW4nCiszOAorJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kJworMzkKKydUaGluayBkaWZmZXJl
bnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGUnCis0MAorJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorCitib2xkIGl0YWxpYwordW5kZXInCis0MQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCiti
b2xkIGl0YWxpYwordW5kZXJsJworNDIKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBp
dGFsaWMKK3VuZGVybGknCis0MworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxp
YwordW5kZXJsaW4nCis0NAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwor
dW5kZXJsaW5lJworNDUKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3Vu
ZGVybGluZSAnCis0NgorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5k
ZXJsaW5lIGwnCis0NworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5k
ZXJsaW5lIGxhJworNDgKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3Vu
ZGVybGluZSBsYXMnCis0OQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwor
dW5kZXJsaW5lIGxhc3QnCis1MAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxp
YwordW5kZXJsaW5lIGxhc3QhJworNTEKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBp
dGFsaWMKK3VuZGVybGluZSBsYXN0IScKKzUyCisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2Jv
bGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8JworNTMKKydUaGluayBkaWZmZXJlbnQg
QXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIJworNTQKKydUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xI
ZScKKzU1CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUg
bGFzdCEKKwor77+8SGVsJworNTYKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFs
aWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsJworNTcKKydUaGluayBkaWZmZXJlbnQgQXBw
bGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbycKKzU4CisnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8
SGVsbG8gJworNTkKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVy
bGluZSBsYXN0IQorCivvv7xIZWxsbyBXJworNjAKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKwor
Ym9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyBXbycKKzYxCisnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor77+8SGVs
bG8gV29yJworNjIKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVy
bGluZSBsYXN0IQorCivvv7xIZWxsbyBXb3JsJworNjMKKydUaGluayBkaWZmZXJlbnQgQXBwbGUK
KworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyBXb3JsZCcKKzY0Cisn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEKKwor
77+8SGVsbG8gV29ybGQhJworR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6CisnQXBw
bGUnCitPdXQgb2YgcmFuZ2UgdmFsdWVzOgorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xk
IGl0YWxpYwordW5kZXJsaW5lIGxhc3QhCisKK++/vEhlbGxvIFdvcmxkIScKKycnCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9y
LXJhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxY2JmMmVlZmUzYjdjMzAwZGNmZTU1ZjZiNGZlMDIz
ZDc5ZmQ3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91
cCI+CisgICAgPHA+VGhpbmsgPGVtPmRpZmZlcmVudDwvZW0+IDxhIGhyZWY9ImFwcGxlLmNvbSI+
QXBwbGU8L2E+PC9wPgorICAgIDxwPjxiPmJvbGQ8L2I+IDxpPml0YWxpYzwvaT48YnI+PHU+dW5k
ZXJsaW5lPC91PiA8ZW0+bGFzdCE8L2VtPjwvcD4KKyAgICA8YnV0dG9uPkhlbGxvIFdvcmxkITwv
YnV0dG9uPgorPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB0aGF0
IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LiIpOworCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBheEVsZW1lbnQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAg
ICAgICAgY29udGVudFRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VG
b3JFbGVtZW50KGF4RWxlbWVudCk7CisgICAgICAgIHRleHRMZW5ndGggPSBheEVsZW1lbnQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKGNvbnRlbnRUZXh0TWFya2VyUmFuZ2UpLmxlbmd0aDsKKyAg
ICAgICAgZGVidWcoImNvbnRlbnQgbGVuZ3RoOiAiICsgdGV4dExlbmd0aCk7CisKKyAgICAgICAg
ZGVidWcoIkFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hhcmFjdGVyIGluIHRoZSB0
ZXh0OiIpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGV4dExlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICBkZWJ1ZyhpKTsKKyAgICAgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVu
dC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCBpKTsKKyAgICAgICAgICAgIGRlYnVnKCInIiAr
IGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICIn
Iik7CisgICAgICAgIH0KKworICAgICAgICBkZWJ1ZygiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdv
cmQgQXBwbGU6Iik7CisgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFy
a2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7CisgICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisKKyAgICAg
ICAgZGVidWcoIk91dCBvZiByYW5nZSB2YWx1ZXM6Iik7CisgICAgICAgIHRleHRNYXJrZXJSYW5n
ZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCAxMDApOworICAgICAgICBk
ZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSkgKyAiJyIpOworICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1h
cmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7CisgICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVu
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAg
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzc4ODgxNTA5Njk5OGU2NDRkNTIzMzM0MjEw
NjdkMjFjOGRkMGM3My4uZWZjMjYxMjlmODA3ODc3Y2MxMDc2ZDllNTI2MTRlMTFiNjE0MDA0OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
OTY2LDYgKzk2Niw3IEBAIHdlYmtpdC5vcmcvYi8yMTAxMzQgbWVkaWEvdHJhY2svdHJhY2stY3Nz
LXVzZXItb3ZlcnJpZGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjEwMTk4
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9hdHRyaWJzL2dsLXZlcnRleGF0dHJpYmlwb2ludGVy
Lmh0bWwgWyBTbG93IF0KIAogd2Via2l0Lm9yZy9iLzIwODQ3NyBhY2Nlc3NpYmlsaXR5L21hYy90
ZXh0LW1hcmtlci1mb3ItaW5kZXguaHRtbCBbIFNraXAgXQorYWNjZXNzaWJpbGl0eS9tYWMvdGV4
dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbCBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS9tYWMv
aXNvbGF0ZWQtdHJlZS1tb2RlLW9uLW9mZi5odG1sIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtY3VycmVudC1zdGF0ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sIFsgU2tpcCBdCiBhY2Nl
c3NpYmlsaXR5L2FyaWEtY3VycmVudC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421147</attachid>
            <date>2021-02-21 12:27:03 -0800</date>
            <delta_ts>2021-02-21 18:13:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222154-20210221152701.patch</filename>
            <type>text/plain</type>
            <size>23217</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE5OWE3YjA5NWFkZmE1
MmYwNDE0OGQ1OTY1OWE0MjE3MzM0ZjBlZC4uMDEzZGI1ODI4MGI5YTQ5NTFhYzcwMmM1ZGVjMzYw
MzYyMmE5OGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAyLTE4ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFs
bG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4g
TlNSYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoIGFuZCBEYXJpbiBB
ZGxlci4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdl
LWZvci1yYW5nZS5odG1sCisKKyAgICAgICAgQ2xpZW50cyBsaWtlIFZvaWNlT3ZlciBvZnRlbiBu
ZWVkIHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgYSB0ZXh0IHJhbmdlCisgICAgICAgIGludG8gYW4g
YWNjZXNzaWJpbGl0eSBUZXh0TWFya2VyUmFuZ2UuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBb
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZV0K
KyAgICAgICAgdG8gYWxsb3cgY2xpZW50cyB0byBlZmZpY2llbnRseSBwZXJmb3JtIHRoaXMgY29u
dmVyc2lvbi4KKyAgICAgICAgVGhpcyBpcyB0aGUgTWFjIGltcGxlbWVudGF0aW9uLCBpT1MgaW1w
bGVtZW50YXRpb24gaXMgcGVuZGluZy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YWxsb3dzVGV4dFJhbmdlcyBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZSBjb25zdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2Ug
Y29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVy
Ol0pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2
aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IpOgorICAgICAgICBP
bmx5IGFkdmFuY2UgdGhlIENoYXJhY3Rlckl0ZXJhdG9yIGlmIG5vdCBhdEVuZCB5ZXQuCisKIDIw
MjEtMDItMTcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN1cHBvcnQgYXJpYS1lcnJvcm1lc3NhZ2Ugb24gaU9TLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBmN2FlNjY1ZjFh
MzQ5Y2Y1MmQ5ZjMwYzZiMWUyOGU2YjlhZTAyZTNlLi42Y2MxNDU3ZGUyZTBjOTAxOTI1NWI1ZDEw
OWJmOTM3ZGI1NjZjNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNTM5LDYgKzUzOSw5IEBAIHB1YmxpYzoKICAgICBW
aXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJS
YW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAK
ICAgICBzdGF0aWMgU3RyaW5nIHN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQb3NpdGlvblJhbmdlJik7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclJhbmdlKGNvbnN0IFNp
bXBsZVJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MjMsNyArODI2LDcgQEAgaW5saW5lIHZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoUGxhdGZvcm1XcmFwcGVyKEFjY2Vzc2liaWxp
dHlEZXRhY2htZW50VHkKICNlbmRpZgogCiAjaWYgIShFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYg
VVNFKEFUSykpCi1pbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gaXNUZXh0Q29udHJvbCgpOyB9CitpbmxpbmUgYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogaW5saW5lIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldExlbmd0aEZvclRleHRS
YW5nZSgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmgKaW5kZXggNjE2MTE0MTQwYjdlYmFmZjAzZjk0ZTAyYjczYTk0MDM5ODMw
YzU1MS4uYzNlYmZmNTIxMThkNGUzZTAwYmNkNzY3YmEzMjM2MjE2MjliNDMxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmgKQEAgLTQ5LDYgKzQ5LDggQEAKIE9CSkNfQ0xBU1MgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXI7CiB0eXBlZGVmIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOwogdHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNS
YW5nZTsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQVhUZXh0TWFya2VyKiBBWFRleHRNYXJrZXJS
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlclJhbmdlKiBBWFRleHRNYXJr
ZXJSYW5nZVJlZjsKICNlbGlmIFVTRShBVEspCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QWNjZXNz
aWJsZSBXZWJLaXRBY2Nlc3NpYmxlOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGUg
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI7CkBAIC0xMjc0LDYgKzEyNzYsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpIGNvbnN0ID0gMDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gRklYTUU6IG1ha2UgdGhp
cyBhIENPQ09BIG1ldGhvZC4KKyAgICB2aXJ0dWFsIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRN
YXJrZXJSYW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0ID0gMDsKKyNlbmRpZgog
CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oCmluZGV4IDk2OWFjYmU1MTE2NmM4NWVlYzNkOGU0YTQzZTVmNTQ4MjIwZGFiMTAu
LjI2ZGRlYzAzZTJjNDk5Y2FlODM0MzdkOWNlNGZmZWE1YzRhODg5NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgKQEAgLTQwMiw2ICs0MDIsOSBAQCBwcml2YXRlOgogICAgIFZpc2libGVQb3Np
dGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFu
Z2UmKSBjb25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VG
b3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKICAgICBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBWFRleHRN
YXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlKGNvbnN0IE5TUmFuZ2UmKSBj
b25zdCBvdmVycmlkZTsKKyNlbmRpZgogICAgIFN0cmluZyBzdHJpbmdGb3JSYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIEludFJlY3QgYm91bmRzRm9yVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlk
ZTsKICAgICBJbnRSZWN0IGJvdW5kc0ZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJikgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4IDQy
OWFkNTVkOWY4YTY1ZTg2YzljODU0Mjc0ODdlMzRkZjdiOGJjMmIuLmMwYmY1OWJlMGI0Njg1NTM0
MGMzNzg5NDgzNTAxOTE3YTAxNTVhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2Jq
ZWN0TWFjLm1tCkBAIC01OSw2ICs1OSwxNCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmRldGFj
aFBsYXRmb3JtV3JhcHBlcihBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgZGV0YWNobQogICAg
IFt3cmFwcGVyKCkgZGV0YWNoSXNvbGF0ZWRPYmplY3Q6ZGV0YWNobWVudFR5cGVdOwogfQogCitB
WFRleHRNYXJrZXJSYW5nZVJlZiBBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0TWFya2VyUmFuZ2VGb3JO
U1JhbmdlKGNvbnN0IE5TUmFuZ2UmIHJhbmdlKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8QVhUZXh0TWFya2VyUmFuZ2VSZWY+
KFsmcmFuZ2UsIHRoaXNdICgpIC0+IEFYVGV4dE1hcmtlclJhbmdlUmVmIHsKKyAgICAgICAgYXV0
byogYXhPYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0ID8gYXhPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2UocmFuZ2UpIDogbnVsbHB0
cjsKKyAgICB9KTsKK30KKwogfSAvLyBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQUNDRVNT
SUJJTElUWV9JU09MQVRFRF9UUkVFKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5t
bQppbmRleCAyZmY2Y2RlYjgwMTNkZDBiZWFiMGE4MWIwN2M3ODA1ZDljODY2YjA5Li4yOGUxNTVh
MjY2ZjViZWY1ZjM1MzAyM2Y5Y2MzMGJkOWY3NjhmNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0K
QEAgLTI4MCw2ICsyODAsMTMgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJvbGVQbGF0
Zm9ybURlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK0FYVGV4
dE1hcmtlclJhbmdlUmVmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHRNYXJrZXJSYW5nZUZvck5T
UmFuZ2UoY29uc3QgTlNSYW5nZSYgcmFuZ2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRleHRNYXJr
ZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKGF4T2JqZWN0Q2FjaGUoKSwKKyAgICAgICAgdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgocmFuZ2UubG9jYXRpb24pLAorICAgICAgICB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleChyYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCkpOworfQorCiBuYW1l
c3BhY2UgQWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJv
bGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAwNTdi
MWNkZDQwYTJjNmQyMzM1YjcwNzljMTM1ZGExMjJkODczMWIwLi4wNGJhOTEwZTc5YzQ5ZTNhMGJh
OWU3M2M4Y2MzY2JjOTZjZDM1NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQpAQCAtMzQ2Myw2ICszNDYzLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgIH0pOwogfQogCistIChBWFRleHRNYXJrZXJSYW5nZVJlZil0ZXh0TWFy
a2VyUmFuZ2VGb3JOU1JhbmdlOihjb25zdCBOU1JhbmdlJilyYW5nZQoreworICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLnVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZTsKKyAgICByZXR1cm4g
YmFja2luZ09iamVjdCA/IGJhY2tpbmdPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2Uo
cmFuZ2UpIDogbmlsOworfQorCiAvLyBGSVhNRTogTm8gcmVhc29uIGZvciB0aGlzIHRvIGJlIGEg
bWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbjsgY2FuIGdldCBkb2N1bWVudCBmcm9tIHJhbmdl
LgogLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdl
CiB7CkBAIC00MDA3LDE1ICs0MDEzLDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYu
Z2V0KCkuYXhCYWNraW5nT2JqZWN0OwogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQog
ICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwotICAgICAgICAgICAgYXV0byogY2Fj
aGUgPSBiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7Ci0gICAgICAgICAgICBpZiAoIWNh
Y2hlKQotICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwotICAgICAgICAgICAgQ2hh
cmFjdGVyT2Zmc2V0IHN0YXJ0ID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdl
LmxvY2F0aW9uLCBiYWNraW5nT2JqZWN0KTsKLSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBl
bmQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9ySW5kZXgocmFuZ2UubG9jYXRpb24rcmFuZ2Uu
bGVuZ3RoLCBiYWNraW5nT2JqZWN0KTsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+
cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOwotICAgICAgICAg
ICAgaWYgKCFyYW5nZSkKKworICAgICAgICAgICAgYXV0byBzdGFydCA9IGJhY2tpbmdPYmplY3Qt
PnZpc2libGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGF1
dG8gZW5kID0gYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgocmFuZ2UubG9j
YXRpb24gKyByYW5nZS5sZW5ndGgpOworICAgICAgICAgICAgYXV0byB3ZWJSYW5nZSA9IG1ha2VT
aW1wbGVSYW5nZSh7IHN0YXJ0LCBlbmQgfSk7CisgICAgICAgICAgICBpZiAoIXdlYlJhbmdlKQog
ICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwotICAgICAgICAgICAgYXV0byBib3Vu
ZHMgPSBGbG9hdFJlY3QoYmFja2luZ09iamVjdC0+Ym91bmRzRm9yUmFuZ2UoKnJhbmdlKSk7CisK
KyAgICAgICAgICAgIGF1dG8gYm91bmRzID0gRmxvYXRSZWN0KGJhY2tpbmdPYmplY3QtPmJvdW5k
c0ZvclJhbmdlKCp3ZWJSYW5nZSkpOwogICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxm
IGNvbnZlcnRSZWN0VG9TcGFjZTpib3VuZHMgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25T
cGFjZTo6U2NyZWVuXTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1
ZVdpdGhSZWN0OnJlY3RdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggZjk3Yjlm
MTdiN2I2YjMzMTkwM2Y3YjQ0OTg0MWJmZjNlZDE0OTAwZi4uZTk3YTE3Yjg1NTU2MDIwMjEzMDA3
MDQ0YTQxNWYzM2QxMWE1ZjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0x
MTAxLDcgKzExMDEsOCBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhV
c2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmIG5vZGUsIGludCBpbgogCiAgICAgYXV0byByYW5n
ZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhub2RlKTsKICAgICBDaGFyYWN0ZXJJ
dGVyYXRvciBpdChyYW5nZSk7Ci0gICAgaXQuYWR2YW5jZShpbmRleCAtIDEpOworICAgIGlmICgh
aXQuYXRFbmQoKSkKKyAgICAgICAgaXQuYWR2YW5jZShpbmRleCAtIDEpOwogCiAgICAgaWYgKCFp
dC5hdEVuZCgpICYmIGl0LnRleHQoKS5sZW5ndGgoKSA9PSAxICYmIGl0LnRleHQoKVswXSA9PSAn
XG4nKSB7CiAgICAgICAgIC8vIEZJWE1FOiB3b3JrYXJvdW5kIGZvciBjb2xsYXBzZWQgcmFuZ2Ug
KHdoZXJlIG9ubHkgc3RhcnQgcG9zaXRpb24gaXMgY29ycmVjdCkgZW1pdHRlZCBmb3Igc29tZSBl
bWl0dGVkIG5ld2xpbmVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGI1YmQxZDVlNDI5YzZlYTkzN2Y2OTE0ZTM5YWVhN2M3MTdiOThjZTQuLjYw
NmNmNjQ3Nzk4Nzc2NjU1ZTJhNjJjNWFjZWYwZWRmZDI1NjUxN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0w
Mi0xOCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIFtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VGb3JOU1Jh
bmdlXSB0byBhbGxvdyBjbGllbnRzIHRvIGVmZmljaWVudGx5IGdldCBhIFRleHRNYXJrZXJSYW5n
ZSBmcm9tIGFuIE5TUmFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjIxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaCBh
bmQgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSk6CisKIDIwMjEtMDIt
MTcgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxh
dHBhayBTREtdIFNjcmlwdCAnd2Via2l0LWZsYXRwYWstcnVuLW5pZ2h0bHknIGV4cGVjdHMgZGlm
ZmVyZW50IGZvcm1hdCBmb3IgYSBidWlsdCBwcm9kdWN0IG5hbWUKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwCmluZGV4IDgwMzVlMGZhYTUwNjI5OGM5NzFjODk0YTAwNDUzM2VkNjk3NTIw
ZGQuLjQ2ZjRmNjc5N2Q5MTllMmIxYWNlNDRkNjI2MTkzNDQ5NjI0OGJkYWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtMTAyLDYgKzEwMiw3IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KGludCkg
eyByZXR1cm4KICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwgIUhBVkUoQUNDRVNTSUJJ
TElUWSkKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpIHsg
cmV0dXJuIG51bGxwdHI7IH0KIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVzZXRTZWxlY3RlZFRl
eHRNYXJrZXJSYW5nZSgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRCb29s
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYsIGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaAppbmRleCBlNzQzNmFhMGU1ODhlYWY5MmEwY2FkYTcwMTVjZjQ4NmRiMWM4ZGYwLi4w
ZDhjMjM4YWFlNDUwOGZjOWJkNzRlYzQzZTIzOTYwZThhMjNkYTgwIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaApAQCAtMzAyLDYgKzMwMiw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gbWlzc3BlbGxpbmdUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogc3RhcnQsIGJvb2wgZm9yd2FyZCk7CiAgICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5nZUZvckVsZW1l
bnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7
CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJSYW5n
ZUZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgp
OwogICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2wgcmVw
bGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKaW5kZXggNTQ3
NjM0MGUyNDNlMTFjOTU2MTE5NDY1OWNiMTZjY2Q0MjdkMjFhNy4uOGIyMjgyZDdhZTExYmU3NTU3
YzgzZGJmMzUxZjA1OGYwYWQwMDVjZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaWRsCkBAIC0yMTksNiArMjE5LDcgQEAKICAgICBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIG1pc3NwZWxsaW5nVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2Ugc3RhcnQsIGJvb2xlYW4gZm9yd2FyZCk7CiAgICAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgZWxlbWVudCk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2Vy
LCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIpOworICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UodW5zaWduZWQgbG9uZyBsb2Nh
dGlvbiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2Ugc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICB1bmRlZmluZWQgcmVzZXRTZWxl
Y3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2xlYW4gcmVwbGFjZVRleHRJblJhbmdlKERP
TVN0cmluZyBzdHJpbmcsIGxvbmcgcG9zaXRpb24sIGxvbmcgbGVuZ3RoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGVmZGFmOGM1MmU4OWJlYjdjMzE5
NmJmNmM4ZmNlZmY2YTZiMGViYTMuLjAxN2ZkODQ5MDBjN2IxZThmM2FiODYyNzY4YTkzZjlmM2Jk
YjQ5ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAt
ODMsNiArODMsNyBAQCB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNr
KShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLAogLSAoQk9PTClpc0lzb2xhdGVk
T2JqZWN0OwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJhbmdl
IHdpdGhUZXh0OihOU1N0cmluZyAqKXN0cmluZzsKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUluc2Vy
dFRleHQ6KE5TU3RyaW5nICopdGV4dDsKKy0gKGlkKXRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2U6
KGNvbnN0IE5TUmFuZ2UmKW5zUmFuZ2U7CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5
QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilp
bmRleCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKE5TVUludGVnZXIpYWNjZXNz
aWJpbGl0eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxp
dHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKQEAgLTE4MTUsNiAr
MTgxNiwxNSBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTQogICAgIHJldHVybiBudWxscHRyOwog
fQogCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKFttX2VsZW1lbnQgdGV4dE1hcmtl
clJhbmdlRm9yTlNSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV0pOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiBudWxscHRyOworfQorCiBSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGY4MmQwNDFhMzAwMTUzNzk5ZDRiNjJlYzYzZDQ4OWYzOTM5MWFmMDUuLjRmZGIzZjdk
OTI3ZDI4ZTgwN2VmZDY5MDFjNGYwYjM5NjQwMDZlMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0wMi0xOCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIFtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VG
b3JOU1JhbmdlXSB0byBhbGxvdyBjbGllbnRzIHRvIGVmZmljaWVudGx5IGdldCBhIFRleHRNYXJr
ZXJSYW5nZSBmcm9tIGFuIE5TUmFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVp
emFjaCBhbmQgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0
bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWw6IEFkZGVkLgor
CiAyMDIxLTAyLTE3ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdXBwb3J0IGFyaWEtZXJyb3JtZXNzYWdlIG9uIGlPUy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFu
Z2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGNjNzdjM2M4NzFlYmRhOGQx
ZGJjZjE4NjFlMDNlZWNmZGViNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjk3IEBACitUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3Vu
ZGVybGluZSBsYXN0IQorCitIZWxsbyBXb3JsZCEKK1RoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJS
YW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworY29udGVudCBsZW5ndGg6IDY1CitBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNo
IGNoYXJhY3RlciBpbiB0aGUgdGV4dDoKKzAKKycnCisxCisnVCcKKzIKKydUaCcKKzMKKydUaGkn
Cis0CisnVGhpbicKKzUKKydUaGluaycKKzYKKydUaGluayAnCis3CisnVGhpbmsgZCcKKzgKKydU
aGluayBkaScKKzkKKydUaGluayBkaWYnCisxMAorJ1RoaW5rIGRpZmYnCisxMQorJ1RoaW5rIGRp
ZmZlJworMTIKKydUaGluayBkaWZmZXInCisxMworJ1RoaW5rIGRpZmZlcmUnCisxNAorJ1RoaW5r
IGRpZmZlcmVuJworMTUKKydUaGluayBkaWZmZXJlbnQnCisxNgorJ1RoaW5rIGRpZmZlcmVudCAn
CisxNworJ1RoaW5rIGRpZmZlcmVudCBBJworMTgKKydUaGluayBkaWZmZXJlbnQgQXAnCisxOQor
J1RoaW5rIGRpZmZlcmVudCBBcHAnCisyMAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsJworMjEKKydU
aGluayBkaWZmZXJlbnQgQXBwbGUnCisyMgorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKKzIzCisn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCisKKycKKzI0CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisK
K2InCisyNQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitibycKKzI2CisnVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCisKK2JvbCcKKzI3CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQnCisy
OAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkICcKKzI5CisnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCisKK2JvbGQgaScKKzMwCisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXQn
CiszMQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YScKKzMyCisnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbCcKKzMzCisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisK
K2JvbGQgaXRhbGknCiszNAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYycK
KzM1CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCisnCiszNgorJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordScKKzM3CisnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bicKKzM4CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisK
K2JvbGQgaXRhbGljCit1bmQnCiszOQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0
YWxpYwordW5kZScKKzQwCisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1
bmRlcicKKzQxCisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmwn
Cis0MgorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaScKKzQz
CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbicKKzQ0Cisn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUnCis0NQorJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lICcKKzQ2CisnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbCcKKzQ3CisnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGEnCis0OAorJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhcycKKzQ5Cisn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCcKKzUw
CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUgbGFzdCEn
Cis1MQorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxh
c3QhJworNTIKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGlu
ZSBsYXN0IQorCivvv7wnCis1MworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxp
YwordW5kZXJsaW5lIGxhc3QhCisKK++/vEgnCis1NAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
Citib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QhCisKK++/vEhlJworNTUKKydUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWwnCis1
NgorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3Qh
CisKK++/vEhlbGwnCis1NworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwor
dW5kZXJsaW5lIGxhc3QhCisKK++/vEhlbGxvJworNTgKKydUaGluayBkaWZmZXJlbnQgQXBwbGUK
KworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyAnCis1OQorJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QhCisKK++/vEhl
bGxvIFcnCis2MAorJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJs
aW5lIGxhc3QhCisKK++/vEhlbGxvIFdvJworNjEKKydUaGluayBkaWZmZXJlbnQgQXBwbGUKKwor
Ym9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyBXb3InCis2MgorJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5kZXJsaW5lIGxhc3QhCisKK++/vEhl
bGxvIFdvcmwnCis2MworJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorCitib2xkIGl0YWxpYwordW5k
ZXJsaW5lIGxhc3QhCisKK++/vEhlbGxvIFdvcmxkJworNjQKKydUaGluayBkaWZmZXJlbnQgQXBw
bGUKKworYm9sZCBpdGFsaWMKK3VuZGVybGluZSBsYXN0IQorCivvv7xIZWxsbyBXb3JsZCEnCitH
ZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZToKKydBcHBsZScKK091dCBvZiByYW5nZSB2
YWx1ZXM6CisnVGhpbmsgZGlmZmVyZW50IEFwcGxlCisKK2JvbGQgaXRhbGljCit1bmRlcmxpbmUg
bGFzdCEKKwor77+8SGVsbG8gV29ybGQhJworJycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZTFjYmYyZWVmZTNiN2MzMDBkY2ZlNTVmNmI0ZmUwMjNkNzlmZDc0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1m
b3ItcmFuZ2UuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0i
Ym9keSI+CisKKzxkaXYgaWQ9ImNvbnRlbnQiIHJvbGU9Imdyb3VwIj4KKyAgICA8cD5UaGluayA8
ZW0+ZGlmZmVyZW50PC9lbT4gPGEgaHJlZj0iYXBwbGUuY29tIj5BcHBsZTwvYT48L3A+CisgICAg
PHA+PGI+Ym9sZDwvYj4gPGk+aXRhbGljPC9pPjxicj48dT51bmRlcmxpbmU8L3U+IDxlbT5sYXN0
ITwvZW0+PC9wPgorICAgIDxidXR0b24+SGVsbG8gV29ybGQhPC9idXR0b24+Cis8L2Rpdj4KKwor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtlclJhbmdlRm9y
UmFuZ2Ugd29ya3MgcHJvcGVybHkuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgICAgIGF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICBjb250ZW50VGV4dE1h
cmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoYXhFbGVtZW50
KTsKKyAgICAgICAgdGV4dExlbmd0aCA9IGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UoY29udGVudFRleHRNYXJrZXJSYW5nZSkubGVuZ3RoOworICAgICAgICBkZWJ1ZygiY29udGVu
dCBsZW5ndGg6ICIgKyB0ZXh0TGVuZ3RoKTsKKworICAgICAgICBkZWJ1ZygiQWxsIHJhbmdlcyBm
cm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6Iik7CisgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCB0ZXh0TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGRlYnVnKGkpOwor
ICAgICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZv
clJhbmdlKDAsIGkpOworICAgICAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGRlYnVnKCJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZToiKTsKKyAgICAg
ICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2
LCA1KTsKKyAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKworICAgICAgICBkZWJ1ZygiT3V0IG9mIHJh
bmdlIHZhbHVlczoiKTsKKyAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRN
YXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7CisgICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVu
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAg
ICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3
MCwgMTAwKTsKKyAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA3Nzg4ODE1MDk2OTk4ZTY0NGQ1MjMzMzQyMTA2N2QyMWM4ZGQwYzczLi5lZmMy
NjEyOWY4MDc4NzdjYzEwNzZkOWU1MjYxNGUxMWI2MTQwMDQ4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC05NjYsNiArOTY2LDcgQEAgd2Vi
a2l0Lm9yZy9iLzIxMDEzNCBtZWRpYS90cmFjay90cmFjay1jc3MtdXNlci1vdmVycmlkZS5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTAxOTggd2ViZ2wvMi4wLjAvY29uZm9y
bWFuY2UyL2F0dHJpYnMvZ2wtdmVydGV4YXR0cmliaXBvaW50ZXIuaHRtbCBbIFNsb3cgXQogCiB3
ZWJraXQub3JnL2IvMjA4NDc3IGFjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLWZvci1pbmRl
eC5odG1sIFsgU2tpcCBdCithY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1y
YW5nZS5odG1sIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L21hYy9pc29sYXRlZC10cmVlLW1vZGUt
b24tb2ZmLmh0bWwgWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvYXJpYS1jdXJyZW50LXN0YXRlLWNo
YW5nZWQtbm90aWZpY2F0aW9uLmh0bWwgWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvYXJpYS1jdXJy
ZW50Lmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>