<?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>232841</bug_id>
          
          <creation_ts>2021-11-08 13:12:25 -0800</creation_ts>
          <short_desc>[GPU Process] [Filters 19/23] Remove the dependency from FilterEffect to its inputs</short_desc>
          <delta_ts>2022-01-11 12:31:32 -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>Layout and Rendering</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>
          
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1812786</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-08 13:12:25 -0800</bug_when>
    <thetext>The Filter will pass the input FilterImages to the FilterEffect::apply() and will receive the result FilterImage. There is no actual need for aFilterEffect to access the input FilterEffects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815193</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-15 13:13:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/85425930&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829628</commentid>
    <comment_count>2</comment_count>
      <attachid>448798</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-10 13:55:58 -0800</bug_when>
    <thetext>Created attachment 448798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829633</commentid>
    <comment_count>3</comment_count>
      <attachid>448798</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-10 14:16:32 -0800</bug_when>
    <thetext>Comment on attachment 448798
Patch

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

Looks good, assuming tests are all passing.

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:62
&gt; +    std::optional&lt;FilterEffectVector&gt; namedEffects(const Vector&lt;AtomString&gt;&amp;) const;

I’d suggest Span&lt;AtomString&gt; instead as the argument type here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829694</commentid>
    <comment_count>4</comment_count>
      <attachid>448820</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-10 17:45:37 -0800</bug_when>
    <thetext>Created attachment 448820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829696</commentid>
    <comment_count>5</comment_count>
      <attachid>448798</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-10 17:48:49 -0800</bug_when>
    <thetext>Comment on attachment 448798
Patch

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

&gt;&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:62
&gt;&gt; +    std::optional&lt;FilterEffectVector&gt; namedEffects(const Vector&lt;AtomString&gt;&amp;) const;
&gt; 
&gt; I’d suggest Span&lt;AtomString&gt; instead as the argument type here.

All FilterEffects, except FEMerge, have fixed number of inputs. FEMerge can have variable number of inputs. So I think Span can&apos;t be used in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829707</commentid>
    <comment_count>6</comment_count>
      <attachid>448798</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-10 18:10:37 -0800</bug_when>
    <thetext>Comment on attachment 448798
Patch

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

&gt;&gt;&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:62
&gt;&gt;&gt; +    std::optional&lt;FilterEffectVector&gt; namedEffects(const Vector&lt;AtomString&gt;&amp;) const;
&gt;&gt; 
&gt;&gt; I’d suggest Span&lt;AtomString&gt; instead as the argument type here.
&gt; 
&gt; All FilterEffects, except FEMerge, have fixed number of inputs. FEMerge can have variable number of inputs. So I think Span can&apos;t be used in this case.

Not sure why you say that. Span can have a fixed number, but I am suggesting a Span with a variable number.

Span *definitely* can be used. And what it does is allow a caller to call this without constructing a Vector, or call with a Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829858</commentid>
    <comment_count>7</comment_count>
      <attachid>448857</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-11 10:57:24 -0800</bug_when>
    <thetext>Created attachment 448857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829876</commentid>
    <comment_count>8</comment_count>
      <attachid>448798</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-11 11:59:07 -0800</bug_when>
    <thetext>Comment on attachment 448798
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:62
&gt;&gt;&gt;&gt; +    std::optional&lt;FilterEffectVector&gt; namedEffects(const Vector&lt;AtomString&gt;&amp;) const;
&gt;&gt;&gt; 
&gt;&gt;&gt; I’d suggest Span&lt;AtomString&gt; instead as the argument type here.
&gt;&gt; 
&gt;&gt; All FilterEffects, except FEMerge, have fixed number of inputs. FEMerge can have variable number of inputs. So I think Span can&apos;t be used in this case.
&gt; 
&gt; Not sure why you say that. Span can have a fixed number, but I am suggesting a Span with a variable number.
&gt; 
&gt; Span *definitely* can be used. And what it does is allow a caller to call this without constructing a Vector, or call with a Vector.

Sorry I misunderstood your suggestion. I thought you suggest changing the functions filterEffectInputsNames() also to return Span&lt;AtomString&gt;. Fixed in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829886</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-11 12:31:27 -0800</bug_when>
    <thetext>Committed r287892 (245930@main): &lt;https://commits.webkit.org/245930@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448857.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448798</attachid>
            <date>2022-01-10 13:55:58 -0800</date>
            <delta_ts>2022-01-10 14:16:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232841-20220110135557.patch</filename>
            <type>text/plain</type>
            <size>88808</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ4MzUyOWE5NWQxNDg4
ZWE2NWJkMDgwYTFiYzYwMTA1Mjg5N2UxOS4uNGI4ZjU4YzY0ZTNhZmJiYzIxYTFiMzEzNjMwOWYz
MzBjY2VjY2ExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAyMi0wMS0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFJlbW92ZSB0aGUgZGVwZW5kZW5jeSBmcm9tIEZpbHRlckVmZmVjdCB0byBpdHMgaW5wdXRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDEKKyAg
ICAgICAgcmRhcjovLzg1NDI1OTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgbGFzdCBjbGVhbi11cCBpbiB0aGUgRmlsdGVyRWZm
ZWN0IGNvZGUuIEl0IHdpbGwgbWFrZSB0aGUgCisgICAgICAgIEZpbHRlckVmZmVjdCBvYmplY3Rz
IGluIHRoZSBHUFVQcm9jZXNzIHJlc2VtYmxlIGV4YWN0bHkgdGhlaXIgY291bnRlcnBhcnQKKyAg
ICAgICAgb25lcyBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIG5vdyBvbi4KKworICAgICAgICBGb3Ig
Q1NTRmlsdGVyLCB3ZSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGlucHV0IGVmZmVjdHMgYmVjYXVz
ZSBldmVyeQorICAgICAgICBGaWx0ZXJGdW5jdGlvbiBpcyB0aGUgaW5wdXQgb2YgaXRzIHN1Y2Nl
c3Nvci4gUGFzc2luZyB0aGUgcHJldmlvdXMgcmVzdWx0CisgICAgICAgIEZpbHRlckltYWdlIHRv
IHRoZSBhcHBseSgpIG1ldGhvZCBvZiB0aGUgY3VycmVudCBGaWx0ZXJGdW5jdGlvbiBpcyBlbm91
Z2gKKyAgICAgICAgdG8gZ2V0IHRoZSBmaWx0ZXIgYXBwbGllZCBjb3JyZWN0bHkuCisKKyAgICAg
ICAgRm9yIFNWR0ZpbHRlciwgd2UgbmVlZCB0aGUgZmlsdGVyIGVmZmVjdCBpbnB1dHMgb25seSB3
aGVuIGJ1aWxkaW5nIHRoZQorICAgICAgICBTVkdGaWx0ZXJFeHByZXNzaW9uLiBTbyB3ZSBjYW4g
YnVpbGQgYSBIYXNoTWFwIGluIFNWR0ZpbHRlckJ1aWxkZXIgd2hpY2gKKyAgICAgICAgbWFwcyBh
IEZpbHRlckVmZmVjdCB0byBpdHMgaW5wdXQgRmlsdGVyRWZmZWN0VmVjdG9yLiBUbyBtYWtlIHRo
ZSBjaGFuZ2UKKyAgICAgICAgY2xlYXJlciwgdGhlIFNWR0ZFeHh4RWxlbWVudCBjbGFzc2VzIHdp
bGwgaW1wbGVtZW50IHR3byBtZXRob2RzOgorICAgICAgICAxLiBmaWx0ZXJFZmZlY3RJbnB1dHNO
YW1lcygpIHdoaWNoIHJldHVybnMgdGhlIG5hbWVzIG9mIHRoZSBpbnB1dCBGaWx0ZXJFZmZlY3Rz
LgorICAgICAgICAyLiBmaWx0ZXJFZmZlY3QoKSB3aGljaCByZXR1cm5zIHRoZSBGaWx0ZXJFZmZl
Y3QgcmVwcmVzZW50aW5nIHRoaXMgZWxlbWVudC4KKyAgICAgICAgU1ZHRmlsdGVyQnVpbGRlcjo6
YnVpbGRGaWx0ZXJFZmZlY3RzKCkgY29udmVydHMgdGhlIG5hbWVzIHRvIEZpbHRlckVmZmVjdHMu
CisKKyAgICAgICAgTm8gbmVlZCB0byBpbml0aWFsaXplIHRoZSBTb3VyY2VHcmFwaGljIG9mIHRo
ZSByZWZlcmVuY2VkIFNWR0ZpbHRlciB3aXRoCisgICAgICAgIHRoZSBGaWx0ZXJFZmZlY3Qgb2Yg
aXRzIHByZXZpb3VzIEZpbHRlckZ1bmN0aW9uLiBUaGUgcmVmZXJlbmNlZCBTVkdGaWx0ZXIKKyAg
ICAgICAgd2lsbCBjcmVhdGUgaXRzIG93biBuYXRpdmUgU291cmNlR3JhcGhpYy4gVGhpcyBTb3Vy
Y2VHcmFwaGljIHdpbGwgY29weQorICAgICAgICB0aGUgaW5wdXQgRmlsdGVySW1hZ2UgdG8gdGhl
IHJlc3VsdCBGaWx0ZXJJbWFnZS4gVGhpcyBoYXMgbm8gZWZmZWN0IG9uCisgICAgICAgIHRoZSBm
aWx0ZXIgYXBwbHlpbmcgd29ya2Zsb3cgYnV0IGl0IGlzIGNsZWFuZXIuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OmlucHV0RWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjppbnB1dEVmZmVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQWxwaGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6
U291cmNlQWxwaGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
QWxwaGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVNWR0ZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmJ1
aWxkRmlsdGVyRnVuY3Rpb25zKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29tcG9zaXRlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
aXN0YW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NW
R0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmZp
bHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0ZXJF
ZmZlY3RJbnB1dHNOYW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlRWxl
bWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VF
bGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVPZmZzZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVBvaW50TGlnaHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ6OmxpZ2h0
U291cmNlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWls
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UgY29uc3QpOgor
ICAgICAgICAqIHN2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6
YnVpbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsdGVyRWZmZWN0SW5w
dXRzTmFtZXMgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXJCdWlsZGVyOjpzZXR1cEJ1aWx0aW5FZmZlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRWZmZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJCdWlsZGVyOjpzb3VyY2VHcmFwaGljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlckJ1aWxkZXI6OnNvdXJjZUFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlckJ1aWxkZXI6OmFkZE5hbWVkRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlckJ1aWxkZXI6Om5hbWVkRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlckJ1aWxkZXI6Om5hbWVkRWZmZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJCdWlsZGVyOjpzZXRFZmZlY3RJbnB1dHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyQnVpbGRlcjo6YnVpbGRFZmZlY3RFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisKIDIwMjItMDEtMTAg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgQ29sb3IgNF0g
Q1NTIGNvbG9yKCkgZnVuY3Rpb24gc2hvdWxkIG5vdCBjbGFtcCBjaGFubmVscyB0byB0aGUgMC0x
IHJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggMTA2OWRmMmU5OGVhYmUwMGNkMWY3MGJhNDBh
YzllOTkwYjk1YzVkMi4uODI0NTAxNzgyYmIwMzdiYjY2MjZiOGM3YjRlM2U1NDM1YWMzYmYyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTQ5LDEyICsxNDksNiBAQCBSZWZQdHI8RmlsdGVySW1h
Z2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRl
ckltYWdlVgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUZpbHRlckVmZmVjdCYgRmlsdGVyRWZm
ZWN0OjppbnB1dEVmZmVjdCh1bnNpZ25lZCBudW1iZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04obnVtYmVyIDwgbV9pbnB1dEVmZmVjdHMuc2l6ZSgpKTsK
LSAgICByZXR1cm4gbV9pbnB1dEVmZmVjdHMuYXQobnVtYmVyKTsKLX0KLQogVGV4dFN0cmVhbSYg
RmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBGaWx0
ZXJSZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbikgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGR1bXAgdGhlIHN1YlJlZ2lvbnMgb2YgdGhlIGZpbHRlciBwcmltaXRpdmVzIGhl
cmUgbGF0ZXIuIFRoaXMgaXNuJ3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IGYzODgzMTBlMjNiYmVlYmE1
NGZiNmQwOTBlMWJkMjI1ODk5OTY0YTEuLmM4ZmMyYTBiMWM2MmZhODc3ZGY2MjEwMTRhODU5MzI4
MDQyMzI0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNDMsMTYgKzQzLDEyIEBAIGNsYXNzIEZpbHRl
ckVmZmVjdCA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiAgICAgdXNpbmcgRmlsdGVyRnVuY3Rp
b246OmFwcGx5OwogCiBwdWJsaWM6Ci0gICAgRmlsdGVySW1hZ2VWZWN0b3IgdGFrZUltYWdlSW5w
dXRzKEZpbHRlckltYWdlVmVjdG9yJiBzdGFjaykgY29uc3Q7Ci0KLSAgICBGaWx0ZXJFZmZlY3RW
ZWN0b3ImIGlucHV0RWZmZWN0cygpIHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzOyB9Ci0gICAgRmls
dGVyRWZmZWN0JiBpbnB1dEVmZmVjdCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8Rmls
dGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBp
bnB1dHMsIEZpbHRlclJlc3VsdHMmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZpbHRlckVmZmVjdEdl
b21ldHJ5PiYgPSBzdGQ6Om51bGxvcHQpOwotCiAgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBvcGVyYXRpbmdDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xv
clNwYWNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFj
ZSA9IGNvbG9yU3BhY2U7IH0KIAorICAgIEZpbHRlckltYWdlVmVjdG9yIHRha2VJbWFnZUlucHV0
cyhGaWx0ZXJJbWFnZVZlY3RvciYgc3RhY2spIGNvbnN0OworICAgIFJlZlB0cjxGaWx0ZXJJbWFn
ZT4gYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywg
RmlsdGVyUmVzdWx0cyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0R2VvbWV0cnk+
JiA9IHN0ZDo6bnVsbG9wdCk7CisKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgRmlsdGVyUmVwcmVzZW50YXRpb24pIGNvbnN0IG92
ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CkBAIC04MCw4ICs3Niw2IEBAIHByb3RlY3RlZDoKIAogICAg
IFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoY29uc3QgRmlsdGVyJiwgRmlsdGVySW1hZ2UmIGlu
cHV0LCBGaWx0ZXJSZXN1bHRzJikgb3ZlcnJpZGU7CiAKLSAgICBGaWx0ZXJFZmZlY3RWZWN0b3Ig
bV9pbnB1dEVmZmVjdHM7Ci0KICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdD
b2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHAKaW5kZXggOGFlNWJjMzBhYTA0MDY5YTg1ZDFjN2RkZmQ1ZDQ0NDkxNzU2ZGE4OC4u
YTAxMmNmMjI4YzU4NDA1ODhjZjU1MGVjMTk5NzE0NmM2NzhkYzZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6
ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSwzMiArMjEs
MjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgogCi0j
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VBbHBoYVNvZnR3YXJlQXBw
bGllci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8U291cmNlQWxwaGE+IFNvdXJjZUFscGhhOjpjcmVhdGUoKQorUmVmPFNv
dXJjZUFscGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VBbHBoYSgp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VBbHBoYShjb2xvclNwYWNlKSk7CiB9
CiAKLVJlZjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZShGaWx0ZXJFZmZlY3QmIHNv
dXJjZUVmZmVjdCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VBbHBoYShzb3Vy
Y2VFZmZlY3QpKTsKLX0KLQotU291cmNlQWxwaGE6OlNvdXJjZUFscGhhKCkKLSAgICA6IEZpbHRl
ckVmZmVjdChGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKQotewotfQotCi1Tb3VyY2VB
bHBoYTo6U291cmNlQWxwaGEoRmlsdGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCitTb3VyY2VBbHBo
YTo6U291cmNlQWxwaGEoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQog
ICAgIDogRmlsdGVyRWZmZWN0KEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGEpCiB7Ci0g
ICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShzb3VyY2VFZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFj
ZSgpKTsKLSAgICBpbnB1dEVmZmVjdHMoKS5hcHBlbmQoc291cmNlRWZmZWN0KTsKKyAgICBzZXRP
cGVyYXRpbmdDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rmls
dGVyRWZmZWN0QXBwbGllcj4gU291cmNlQWxwaGE6OmNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVy
JikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuaAppbmRleCA3YjdkNzdmNGZkNzkyYTkzMThkY2I0NmY5Mjg0MDYy
ZmIxNDljMjRjLi45ZjlhOTA0MTE4NWViMmE4ZGNmZmQzODMwMWQ3ZmVjZDgzN2VmNDhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5oCkBAIC0yNiwxNCArMjYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTb3VyY2VBbHBoYSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U291cmNlQWxwaGE+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBS
ZWY8U291cmNlQWxwaGE+IGNyZWF0ZShGaWx0ZXJFZmZlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNvdXJjZUFscGhhPiBjcmVhdGUoY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKIAogICAgIHN0YXRpYyBBdG9t
U3RyaW5nIGVmZmVjdE5hbWUoKSB7IHJldHVybiBGaWx0ZXJFZmZlY3Q6OnNvdXJjZUFscGhhTmFt
ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU291cmNlQWxwaGEoKTsKLSAgICBleHBsaWNpdCBTb3Vy
Y2VBbHBoYShGaWx0ZXJFZmZlY3QmKTsKKyAgICBleHBsaWNpdCBTb3VyY2VBbHBoYShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZl
Y3RBcHBsaWVyPiBjcmVhdGVBcHBsaWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IGYzMjI5NjY4NWFmM2Uy
YThiZTExNWUyZGE4MGE4ZjBlNGMyMTI3ODUuLmEwMGJlMGIwNzljMjBkYThmMzk3MDRiOWMxMjkz
MDk3NjI0YzZhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0y
MTgsNyArMjE4LDcgQEAgc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZVNlcGlhRWZm
ZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXQKICAgICByZXR1cm4gRkVDb2xv
ck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIFdURk1vdmUoaW5wdXRQ
YXJhbWV0ZXJzKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGVTVkdGaWx0
ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgZmls
dGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCkKK3N0YXRpYyBS
ZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKIHsKICAgICBh
dXRvJiByZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gcmVuZGVyZXIuZW5zdXJlUmVmZXJlbmNlZFNW
R1Jlc291cmNlcygpOwogICAgIGF1dG8qIGZpbHRlckVsZW1lbnQgPSByZWZlcmVuY2VkU1ZHUmVz
b3VyY2VzLnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KHJlbmRlcmVyLmRvY3VtZW50KCksIGZpbHRl
ck9wZXJhdGlvbik7CkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+
IGNyZWF0ZVNWR0ZpbHRlcihDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgUmVmZXJlbmNlRmlsdGUK
ICAgICB9CiAKICAgICBTVkdGaWx0ZXJCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgcmV0dXJuIFNWR0Zp
bHRlcjo6Y3JlYXRlKCpmaWx0ZXJFbGVtZW50LCBidWlsZGVyLCBmaWx0ZXIucmVuZGVyaW5nTW9k
ZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwgZmlsdGVyLmNsaXBPcGVyYXRpb24oKSwgdGFyZ2V0
Qm91bmRpbmdCb3gsIHByZXZpb3VzRWZmZWN0KTsKKyAgICByZXR1cm4gU1ZHRmlsdGVyOjpjcmVh
dGUoKmZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIGZpbHRl
ci5maWx0ZXJTY2FsZSgpLCBmaWx0ZXIuY2xpcE9wZXJhdGlvbigpLCB0YXJnZXRCb3VuZGluZ0Jv
eCk7CiB9CiAKIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKQEAgLTI0MCw3ICsyNDAsNiBAQCBib29sIENT
U0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IEZpbHRlck9wZXJhdAogICAgIG1fZnVuY3Rpb25zLmNsZWFyKCk7CiAgICAgbV9vdXRzZXRz
ID0geyB9OwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3QgPSBTb3Vy
Y2VHcmFwaGljOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8U1ZHRmlsdGVyPiBmaWx0ZXI7CiAgICAg
CiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKSkgewpA
QCAtMjkyLDcgKzI5MSw3IEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgotICAgICAg
ICAgICAgZmlsdGVyID0gY3JlYXRlU1ZHRmlsdGVyKCp0aGlzLCBkb3duY2FzdDxSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLCByZW5kZXJlciwgdGFyZ2V0Qm91bmRpbmdCb3gs
ICpwcmV2aW91c0VmZmVjdCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVTVkdGaWx0ZXIo
KnRoaXMsIGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbiksIHJl
bmRlcmVyLCB0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgICAgICAgICBlZmZlY3QgPSBudWxscHRy
OwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTMwMCwyNCArMjk5LDE5IEBAIGJvb2wgQ1NTRmls
dGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3Qg
RmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICgoZmlsdGVyIHx8IGVmZmVjdCkgJiYgbV9mdW5jdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQocHJldmlvdXNFZmZlY3QtPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OlNvdXJjZUdyYXBoaWMpOwotICAgICAgICAgICAgbV9mdW5jdGlvbnMuYXBwZW5kKHsg
KnByZXZpb3VzRWZmZWN0IH0pOwotICAgICAgICB9CisgICAgICAgIGlmICgoZmlsdGVyIHx8IGVm
ZmVjdCkgJiYgbV9mdW5jdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9mdW5jdGlvbnMu
YXBwZW5kKFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChm
aWx0ZXIpIHsKICAgICAgICAgICAgIGVmZmVjdCA9IGZpbHRlci0+bGFzdEVmZmVjdCgpOwogICAg
ICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKICAgICAgICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZChmaWx0ZXIucmVs
ZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9IFdURk1vdmUoZWZm
ZWN0KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGVm
ZmVjdCkgewogICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICAgICAgICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkgPSB7IHByZXZpb3VzRWZmZWN0LnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICAgICAgICAg
IG1fZnVuY3Rpb25zLmFwcGVuZCh7ICplZmZlY3QgfSk7Ci0gICAgICAgICAgICBwcmV2aW91c0Vm
ZmVjdCA9IFdURk1vdmUoZWZmZWN0KTsKKyAgICAgICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZChl
ZmZlY3QucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IGVjMjY0ZGZkZTk0Nzk4ZGQ0ZGQyMDA0
MTAzZGI5NTY1YTgwOTMwNTcuLmUxY2M4MzM1YzMyMGQ5ZWZlNWMyNDM4NDMwZmM4Mzk3NDhlNzZm
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtMiw3ICsy
LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0yNCw4ICsyNCw2IEBACiAjaW5jbHVkZSAiU1ZHRkVCbGVuZEVsZW1lbnQu
aCIKIAogI2luY2x1ZGUgIkZFQmxlbmQuaCIKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNp
bmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0xMDAsMTcgKzk4LDkgQEAgdm9pZCBT
VkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikg
Y29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNv
bnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwotICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMigp
KTsKLQotICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgYXV0byBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUobW9kZSgpKTsKLSAgICBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSwgaW5wdXQyLnJl
bGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBGRUJsZW5k
OjpjcmVhdGUobW9kZSgpKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAppbmRleCBlYmE5YWJiNTgzMjhmNGRhYmYzNDI4
YjZiMTdkYmY1ODIzNzY4NDA4Li45ZTdhZWMwMGNmNTMyYmUyOTdhMWFmYjk5ZjJmY2Y5NDcyMWQz
MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaApAQCAtMiw3ICsyLDcg
QEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC02OSw4ICs2OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZm
ZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOworICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHsgaW4xKCksIGluMigpIH07IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0
ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdB
bmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmOGI2M2JhNjhiNzcxMjM2YjQyODEzMDc5
OTdiOWUwMDM1NmI0MTliLi42OWY5MWRjMGU1MDk2N2NmYzY3Y2NhYWZmMDBmZDE0YTNkODU2N2M0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAK
QEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIyLDggKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
Ci0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgorI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXgu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKQEAgLTEwMCwxMyArOTksOCBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25z
dCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsK
LSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0K
LSAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBWZWN0b3I8
ZmxvYXQ+IGZpbHRlclZhbHVlczsKICAgICBDb2xvck1hdHJpeFR5cGUgZmlsdGVyVHlwZSA9IHR5
cGUoKTsKIApAQCAtMTM2LDE0ICsxMzAsMTIgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWwKICAg
ICAgICAgICAgIHx8IChmaWx0ZXJUeXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUg
JiYgc2l6ZSAhPSAxKQogICAgICAgICAgICAgfHwgKGZpbHRlclR5cGUgPT0gRkVDT0xPUk1BVFJJ
WF9UWVBFX1NBVFVSQVRFICYmIHNpemUgIT0gMSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgCisKICAgICAgICAgZmlsdGVyVmFsdWVzID0gdmFsdWVzKCk7CiAgICAgICAg
IGZpbHRlclZhbHVlcy5zaHJpbmtUb0ZpdCgpOwogICAgIH0KIAotICAgIGF1dG8gZWZmZWN0ID0g
RkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlclR5cGUsIFdURk1vdmUoZmlsdGVyVmFsdWVzKSk7
Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkg
fTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUo
ZmlsdGVyVHlwZSwgV1RGTW92ZShmaWx0ZXJWYWx1ZXMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaApp
bmRleCA5NzAxMWEwNDFlNDlhMTdmYjQ5OGExZjg0NmY4ODBkYmRkNjk1MjQwLi4zMzRkOTUxMTk0
MGQ1ZmI3NTBkMWI4YTIyYmNkMjMzMWIxMjZlZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODYsNyArODYsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHsgaW4xKCkgfTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVj
dChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVk
U3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDFhNWU4ZTdhM2E2OTNiMjNiZmRh
MzI3YzBlMWZiMzQ3NTc3NGE2ZDEuLjlhNzViNDYyODdmYzA2OTQwOTIyZWMzOTUxMzE3M2VlZjI0
MDMzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMTMgKzIzLDEyIEBACiAjaW5jbHVkZSAiU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNm
ZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKICNpbmNsdWRlICJTVkdG
RUZ1bmNBRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZFRnVuY0JFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRkVGdW5jR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGRUZ1bmNSRWxlbWVudC5oIgot
I2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTYzLDEzICs2Miw4IEBAIHZvaWQg
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
JiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwg
Y29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgCi0gICAgaWYgKCFpbnB1dDEp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biByZWQ7CiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBncmVlbjsKICAgICBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIGJsdWU7CkBAIC04Niw5ICs4MCw3IEBAIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyJiBmaWx0CiAgICAgICAgICAgICBhbHBoYSA9IGRvd25jYXN0PFNWR0ZFRnVuY0FFbGVtZW50
PihjaGlsZCkudHJhbnNmZXJGdW5jdGlvbigpOwogICAgIH0KIAotICAgIGF1dG8gZWZmZWN0ID0g
RkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAg
ICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSB9Owot
ICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0
ZShyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmgKaW5kZXggNjAxNzEwZjdkMzUzNWExNDFhMTU3ODg1NGFmMmIwMzUxMTI5ZTk4Mi4uNjRm
N2I5YWU4OTFhYjkzMTI3ZDk5MGY0NDdlZTRkZjI2NDU1OGIxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTIsNyArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDcgKzQzLDgg
QEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21T
dHJpbmcmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmls
dGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07
IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVy
QnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJl
ZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRo
aXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmlu
ZGV4IDYwNDQ0OTIxN2VmYTBhNzFkZGU5MWJjM2JlNWU5NmFmMDgwYTY5OTkuLjQ1OWVkYWI4NTk3
YmEyNzk2Yzc3OTJmOWZlZTU3OGM5ODM4ZGFhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw4ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgiCiAKLSNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisj
aW5jbHVkZSAiRkVDb21wb3NpdGUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTEzMSwxNyArMTMwLDkgQEAgdm9pZCBTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWls
ZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwotICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RC
eUlkKGluMigpKTsKLSAgICAKLSAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShz
dmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKLSAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSwgaW5wdXQyLnJlbGVhc2VOb25O
dWxsKCkgfTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBGRUNvbXBvc2l0ZTo6Y3Jl
YXRlKHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwogfQogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmgKaW5kZXggNzRkODE0YzNjMjBlMGZkMzdlYjZhOGI1M2FmZjU2OWQ4ZDExZGNhMy4uMDBl
MDE3Yzk5NDI5M2RkZWY0ZTQ2OWYwYzViNmMyZThmMjczY2IwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA5LDcgKzEwOSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
VmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4geyBpbjEoKSwgaW4yKCkgfTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7
IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDYzN2FhNzE5ZTgzYjJh
MWVhMTI0OTg0YWYxOTI5MDMyYTNkZjg0NjQuLjAyYmMzN2I2ZDRhM2JjMjhkYThhZWQzNjNhZTE3
NDk3ZjYxOWY3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTIxLDExICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgot
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUg
IkludFNpemUuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisjaW5jbHVkZSAiRkVD
b252b2x2ZU1hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFy
c2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTE5
MSwxMyArMTg3LDggQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmEKICAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwog
fQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0gICAg
YXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotCi0gICAg
aWYgKCFpbnB1dDEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgaW50IG9yZGVyWFZh
bHVlID0gb3JkZXJYKCk7CiAgICAgaW50IG9yZGVyWVZhbHVlID0gb3JkZXJZKCk7CiAgICAgaWYg
KCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6Om9yZGVyQXR0cikpIHsKQEAgLTIwNyw2ICsxOTgsNyBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQgogICAgIC8vIFNwZWMgc2F5cyBvcmRlciBtdXN0IGJl
ID4gMC4gQmFpbCBpZiBpdCBpcyBub3QuCiAgICAgaWYgKG9yZGVyWFZhbHVlIDwgMSB8fCBvcmRl
cllWYWx1ZSA8IDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgYXV0byYga2VybmVs
TWF0cml4ID0gdGhpcy0+a2VybmVsTWF0cml4KCk7CiAgICAgaW50IGtlcm5lbE1hdHJpeFNpemUg
PSBrZXJuZWxNYXRyaXguaXRlbXMoKS5zaXplKCk7CiAgICAgLy8gVGhlIHNwZWMgc2F5cyB0aGlz
IGlzIGEgcmVxdWlyZW1lbnQsIGFuZCBzaG91bGQgYmFpbCBvdXQgaWYgZmFpbHMKQEAgLTIxNywx
MSArMjA5LDEzIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCCiAgICAgaW50IHRhcmdldFlWYWx1
ZSA9IHRhcmdldFkoKTsKICAgICBpZiAoaGFzQXR0cmlidXRlKFNWR05hbWVzOjp0YXJnZXRYQXR0
cikgJiYgKHRhcmdldFhWYWx1ZSA8IDAgfHwgdGFyZ2V0WFZhbHVlID49IG9yZGVyWFZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBUaGUgc3BlYyBzYXlzIHRoZSBkZWZh
dWx0IHZhbHVlIGlzOiB0YXJnZXRYID0gZmxvb3IgKCBvcmRlclggLyAyICkpCiAgICAgaWYgKCFo
YXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRhcmdldFhBdHRyKSkKICAgICAgICAgdGFyZ2V0WFZhbHVl
ID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob3JkZXJYVmFsdWUgLyAyKSk7CiAgICAgaWYgKGhh
c0F0dHJpYnV0ZShTVkdOYW1lczo6dGFyZ2V0WUF0dHIpICYmICh0YXJnZXRZVmFsdWUgPCAwIHx8
IHRhcmdldFlWYWx1ZSA+PSBvcmRlcllWYWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwor
CiAgICAgLy8gVGhlIHNwZWMgc2F5cyB0aGUgZGVmYXVsdCB2YWx1ZSBpczogdGFyZ2V0WSA9IGZs
b29yICggb3JkZXJZIC8gMiApKQogICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjp0YXJn
ZXRZQXR0cikpCiAgICAgICAgIHRhcmdldFlWYWx1ZSA9IHN0YXRpY19jYXN0PGludD4oZmxvb3Jm
KG9yZGVyWVZhbHVlIC8gMikpOwpAQCAtMjM5LDYgKzIzMyw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBm
aWx0ZXJCCiAgICAgZmxvYXQgZGl2aXNvclZhbHVlID0gZGl2aXNvcigpOwogICAgIGlmIChoYXNB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmRpdmlzb3JBdHRyKSAmJiAhZGl2aXNvclZhbHVlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpkaXZp
c29yQXR0cikpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrZXJuZWxNYXRyaXhTaXpl
OyArK2kpCiAgICAgICAgICAgICBkaXZpc29yVmFsdWUgKz0ga2VybmVsTWF0cml4Lml0ZW1zKClb
aV0tPnZhbHVlKCk7CkBAIC0yNDYsOSArMjQxLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckIK
ICAgICAgICAgICAgIGRpdmlzb3JWYWx1ZSA9IDE7CiAgICAgfQogCi0gICAgYXV0byBlZmZlY3Qg
PSBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoSW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFs
dWUpLCBkaXZpc29yVmFsdWUsIGJpYXMoKSwgSW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZ
VmFsdWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtl
cm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7Ci0g
ICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkgfTsK
LSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUo
SW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFsdWUpLCBkaXZpc29yVmFsdWUsIGJpYXMoKSwg
SW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFsdWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBv
aW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVz
ZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKaW5k
ZXggMzk2NzBmZTYyZmZiZTZhYmExY2NjNjI0Nzk0MDQ1ZGZiNmMyYzViNy4uMWY1OWFlYzJhYWE1
MTQ4MDAzM2Y0ZTAyZjc4OWIzZmM3NTcyODlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0xMDMsNyArMTAzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmls
dGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07
IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVy
QnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJl
ZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRo
aXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwCmluZGV4IGQ3ZTNiODk5ZGM5NTY5YzIwM2JlNzllMDdjMzE5MjdiNWNjODMxOGEu
Ljk2ODRmYWI4MDBjYzA1NmE4MzRiNzQ3ZWNmMmQ3M2RiYWYwZmM2OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1
ZGVudC5jYW50ZXJidXJ5LmFjLm56PgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsMTAgKzIy
LDggQEAKICNpbmNsdWRlICJTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkZFRGlmZnVzZUxpZ2h0aW5nLmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdGRUxpZ2h0RWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1
ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CkBAIC0xNTEsMTMgKzE0OSw4IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZFTGlnaHRFCiAgICAgcHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYg
ZmlsdGVyQnVpbGRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRl
ckJ1aWxkZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0gICAgYXV0byBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotCi0gICAgaWYgKCFp
bnB1dDEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgUmVmUHRyIGxpZ2h0RWxlbWVu
dCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRoaXMpOwogICAgIGlmICgh
bGlnaHRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MCw5ICsxNjMsNyBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlcgogCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+
c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdT
dHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxp
Z2h0aW5nOjpjcmVhdGUoY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwg
a2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNv
dXJjZSkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MS5yZWxlYXNlTm9u
TnVsbCgpIH07Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gRkVEaWZmdXNlTGlnaHRp
bmc6OmNyZWF0ZShjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJu
ZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNl
KSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAppbmRleCBiMmFhYzhiMDNlZDI0ZDIx
ZDk4YjUxOWZiYThlNWY5NDVjYTMwODBkLi5jODVjYzhjYmIxMGI1MjZkODlmNTQ5YzExMjhjNDMy
ZjZlM2Y2M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC01OCw3ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVj
dElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXIm
LCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3Bl
cnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5p
bWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNw
cAppbmRleCAwOWJkOWE4MmI0ZmM3OTA2MWI5MzEwMWVmZDk4ZDU1OTQ2MDU2YTZiLi5iNjJjNDY0
OWJlMTM5OTZjMTgxZTNhOTg2ZTBmOWMzYzNkNTNkYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29t
PgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw4ICsyMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgiCiAKLSNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisj
aW5jbHVkZSAiRkVEaXNwbGFjZW1lbnRNYXAuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTExNSwxNyArMTE0LDkgQEAgdm9p
ZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck4KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwg
Y29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgYXV0byBpbnB1dDIgPSBmaWx0
ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4yKCkpOwotICAgIAotICAgIGlmICghaW5wdXQxIHx8
ICFpbnB1dDIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBlZmZlY3QgPSBG
RURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxl
Y3RvcigpLCBzY2FsZSgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEu
cmVsZWFzZU5vbk51bGwoKSwgaW5wdXQyLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4g
ZWZmZWN0OworICAgIHJldHVybiBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKHhDaGFubmVsU2Vs
ZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKIH0KIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oCmluZGV4IGYyYzZkMGIxOGY4NWM5NGYzODRmNWJkMWJlZmMzNTllZGU4MjNl
NmEuLjJiZTZhYzQyMmYzNTQxZWYzMTk4YTRkN2E4NWVmMTU2NmQ1NzQ0NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvbGl2ZXJAbmVy
Z2V0LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTEsNyArOTEsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCksIGluMigpIH07IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVm
ZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9p
bjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCmluZGV4IGE2ODZiYjhmYTM4ZDlk
ZGZhMjhlMDJhZWQ5NWU0MWIwOGEzNmYyZjcuLjkxNmYwM2MwZjkxNTdlYzgyOGM5MmU5OWI2M2Jk
NjIyZTk1MjZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRM
aWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdo
dEVsZW1lbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIFJlZjxTVkdGRURpc3RhbnRMaWdodEVsZW1l
bnQ+IFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7CiB9CiAKLVJlZjxMaWdodFNvdXJjZT4gU1ZHRkVEaXN0YW50TGlnaHRFbGVt
ZW50OjpsaWdodFNvdXJjZShTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QKK1JlZjxMaWdodFNvdXJj
ZT4gU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJC
dWlsZGVyJikgY29uc3QKIHsKICAgICByZXR1cm4gRGlzdGFudExpZ2h0U291cmNlOjpjcmVhdGUo
YXppbXV0aCgpLCBlbGV2YXRpb24oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXN0YW50TGlnaHRFbGVtZW50LmgKaW5kZXggZmJkZjcxYzBlY2JkOWY5OTdkNjllYTY1NGI5ZjVi
YTAzMTdkNzFjYy4uYmJiZmU5NDczOWI0NDM5YzA2MDZiYzEzODhlZDgwZjcyMjcyNTg0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaApAQCAtMzAs
NyArMzAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlZjxMaWdodFNvdXJj
ZT4gbGlnaHRTb3VyY2UoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0
IG92ZXJyaWRlOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNWR0ZFRGlzdGFudExpZ2h0RWxl
bWVudCkgPT0gc2l6ZW9mKFNWR0ZFTGlnaHRFbGVtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCBjMWRlZGI3ODVhMDA5M2NiMGNi
YTQxNTFlYzNjNjY0MjMxODE2NjIwLi40NTk5MTBlNTRkMmY2MDU2ZWEyNTliMTg4MzliM2UzZTli
NTMxNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgIlNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuaCIKIAogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVp
bGRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKQEAgLTk3LDEyICs5Niw4IEBAIHZv
aWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBm
aWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93
RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRl
ci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNSw5
ICsxMTAsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZAogICAgIENvbG9yIGNvbG9yID0gcmVu
ZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoc3ZnU3R5bGUuZmxvb2RD
b2xvcigpKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gc3ZnU3R5bGUuZmxvb2RPcGFjaXR5KCk7CiAK
LSAgICBhdXRvIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHN0ZERldmlhdGlvblgoKSwg
c3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7Ci0gICAgZWZmZWN0
LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1
cm4gZWZmZWN0OworICAgIHJldHVybiBGRURyb3BTaGFkb3c6OmNyZWF0ZShzdGREZXZpYXRpb25Y
KCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwogfQogCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuaAppbmRleCAzZTQwNWRlNDg5YzY4MWE3NmM0NGY5YTgyOTczM2EyMDI2YjRk
OGZhLi40OWJlZjBhM2U0YzcyZmE5ZTJmMzNhNzZhOTU5ZmRlZjRmMzYyMWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Myw3ICs1Myw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0
ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5jcHAKaW5kZXggZjMyOGNjN2MxNWVlNzkxYjRhYWJhM2E4ZTcxYTgwNGM4MDkzZGNmZS4u
ZjAxNGNjZmZkZmE5Y2I4YWE2ODAxMDUyYmE5ZmYyNjA4MWQ0Njc0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTgsMTIgKzU5LDEyIEBAIGJv
b2wgU1ZHRkVGbG9vZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqIGVmZmVjdCwgY29uc3QgUXVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNv
bnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25z
dAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgY29u
c3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUo
KTsKIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5n
Q29sb3JGaWx0ZXIoc3ZnU3R5bGUuZmxvb2RDb2xvcigpKTsKQEAgLTcyLDQgKzczLDQgQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXImKSBjb25zdAogICAgIHJldHVybiBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOwog
fQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29k
RWxlbWVudC5oCmluZGV4IGFlZDY2OTE5MzNiZDAyZjMzMDFhOTIzOTdiNzQwNTlmZjZiZWM0YmUu
LmQzZWVkZWMxYzNjMGNjYmM5NzM5N2ZiNTFiMTc0MGYyOGVhMjU5MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsNyArMzcsNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAogICAgIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCmluZGV4IGMxYTk2MzYxMGRmNzc5ZDUzN2YzZTlhYjUzZDJiMmY4NTA0NDBl
NjIuLmI1ZjNjN2I2Y2VmZmQ2NWRmZDBhZTExYTRhOWIyYjJlMGQ4M2I4YTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yMiw4ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRl
ICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisjaW5jbHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC05NSwxOCArOTQsMTIgQEAgdm9pZCBTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRl
ckJ1aWxkZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVy
RWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIu
Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgaWYgKCFpbnB1dDEpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgp
IDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFR2F1
c3NpYW5CbHVyOjpjcmVhdGUoc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VN
b2RlKCkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MS5yZWxlYXNlTm9u
TnVsbCgpIH07Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gRkVHYXVzc2lhbkJsdXI6
OmNyZWF0ZShzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7CiB9
CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQuaAppbmRleCA0ODAzMjJmZjcwNzU4NDQyOTY5NWI0OTdhZTY2
NDVlZDA5YmY4YzFkLi41MjFhZTIwNGViNGY1MmM2ZDM3OTk5ZTQ0ZTIyYjA1Mjg4YjgzMmIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC01Myw3ICs1Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAK
LSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggZTYzNWQxMjYzMTg0MDc1NjQ1MGNmMjQx
NTZkMTNiMzIyOGM1MWU3OS4uMjAxMTkxNjExMzQ2MGJjZDEyNmQ5NmFmMjMxZWM5ZDBhNDNlYjNm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0yLDcgKzIs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRGlyayBTY2h1bHplIDxr
cml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIwOCw3ICsyMDgs
NyBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFn
ZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZQogICAgIHJldHVybiB7IGltYWdlQnVmZmVyLCBp
bWFnZVJlY3QgfTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29u
c3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKICAgICBpZiAobV9jYWNoZWRJbWFnZSkK
ICAgICAgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZShSZWYgeyAqbV9jYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihyZW5kZXJlcigpKSB9LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwpAQCAt
MjI3LDQgKzIyNyw0IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zCiAgICAgYWRkU3VicmVzb3Vy
Y2VVUkwodXJscywgZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKCkpKTsKIH0KIAotfQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaApp
bmRleCBkZjlkNmVmMDQxZTU0YjJhYmQyMjAwNWQ5MDM0YmJhNjllMjViZTUxLi5mY2ZkMWVlMmNk
NDhhNTY3ZGJkY2YyMWYxOGM4NjI0MWMwNGNjMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp0
dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IGltYWdlQnVmZmVyRm9yRWZmZWN0
KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKICAg
ICB2b2lkIHJlcXVlc3RJbWFnZVJlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5oCmluZGV4IGNkMGJmYjllZGNmZDdiNGUxYWYzOWI1NWVkYmJiZDc4NGFhZWE4OWQu
LjFjYjI3ZGYzMTUwNDAxN2M2OTllMDEwY2VkNGIwZDVkNjAwYmM2MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIFNWR0ZpbHRl
ckJ1aWxkZXI7CiBjbGFzcyBTVkdGRUxpZ2h0RWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR0ZFTGlnaHRFbGVtZW50KTsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoU1ZHRmlsdGVyQnVpbGRl
ciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2Uo
Y29uc3QgU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0ID0gMDsKICAgICBzdGF0aWMgU1ZHRkVMaWdo
dEVsZW1lbnQqIGZpbmRMaWdodEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCopOwogCiAgICAgZmxv
YXQgYXppbXV0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXppbXV0aC0+Y3VycmVudFZhbHVlKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmluZGV4IGJjMzRlNzhlMDBk
ZjcxNmY3MTcxZWVmOWRkNzgyZDQ1YWMzNmJlMWIuLjQyZGQ1Y2M1MjMwMTgzMTZlOTI3YmQyMmM1
NDg3MWZhOTFlYTg2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNw
cApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTIzLDEwICsyNCw4IEBACiAKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJGRU1lcmdlLmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAi
U1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNDUsMjUgKzQ0LDE3IEBA
IFJlZjxTVkdGRU1lcmdlRWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVN
ZXJnZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxk
ZXIpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVm
ZmVjdElucHV0c05hbWVzKCkgY29uc3QKIHsKLSAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbWVyZ2VJ
bnB1dHM7Ci0KLSAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZF
TWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7Ci0gICAgICAgIGF1dG8gbWVyZ2VFZmZlY3QgPSBm
aWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgpKTsKLSAgICAgICAgaWYg
KCFtZXJnZUVmZmVjdCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBtZXJn
ZUlucHV0cy5hcHBlbmQobWVyZ2VFZmZlY3QucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgfQotCi0g
ICAgbWVyZ2VJbnB1dHMuc2hyaW5rVG9GaXQoKTsKLQotICAgIGlmIChtZXJnZUlucHV0cy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBlZmZlY3QgPSBGRU1l
cmdlOjpjcmVhdGUobWVyZ2VJbnB1dHMuc2l6ZSgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0gV1RGTW92ZShtZXJnZUlucHV0cyk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICBWZWN0
b3I8QXRvbVN0cmluZz4gaW5wdXRzTmFtZXM7CisgICAgZm9yIChhdXRvJiBtZXJnZU5vZGUgOiBj
aGlsZHJlbk9mVHlwZTxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgaW5w
dXRzTmFtZXMuYXBwZW5kKG1lcmdlTm9kZS5pbjEoKSk7CisgICAgcmV0dXJuIGlucHV0c05hbWVz
OwogfQogCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlu
cHV0cykgY29uc3QKK3sKKyAgICByZXR1cm4gRkVNZXJnZTo6Y3JlYXRlKGlucHV0cy5zaXplKCkp
OwogfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5oCmluZGV4IDQzN2NkNzI1NjMyYzVmNGM1MjQ4OTRjYzMyNmNhMDliNDE5ODUxN2Yu
LmJmNmVjYjZkYjBlZmY1NzU5ZjVkNWQyZGViMzFkOTZiYzQ0YmVmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzUsNyArMzYsOCBAQCBwcml2YXRlOgogICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVN
ZXJnZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAg
Y29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxB
dG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVy
JiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGNiMGI2YWM2Nzcy
NWZjMGVmNzljY2YzMTJmNmY0ZjJlMWI2YWI0YzUuLmFmYjk5OTQwMGQ1MDI2NjczNDI3ZWI3NTA4
NjU1ZWUyYzhjYzFmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERp
cmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yMSw4ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAi
U1ZHRmlsdGVyQnVpbGRlci5oIgorI2luY2x1ZGUgIkZFTW9ycGhvbG9neS5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTExNCwyMCArMTEzLDEyIEBAIHZvaWQgU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWls
ZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RW
ZWN0b3ImKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKLSAgICBpZiAoIWlucHV0MSkKKyAgICBpZiAocmFkaXVzWCgpIDwgMCB8
fCByYWRpdXNZKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZsb2F0IHhS
YWRpdXMgPSByYWRpdXNYKCk7Ci0gICAgZmxvYXQgeVJhZGl1cyA9IHJhZGl1c1koKTsKLSAgICBp
ZiAoeFJhZGl1cyA8IDAgfHwgeVJhZGl1cyA8IDApCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgYXV0byBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShzdmdPcGVyYXRvcigpLCB4
UmFkaXVzLCB5UmFkaXVzKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEu
cmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIEZFTW9y
cGhvbG9neTo6Y3JlYXRlKHN2Z09wZXJhdG9yKCksIHJhZGl1c1goKSwgcmFkaXVzWSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmgKaW5kZXggY2FiZjA1ODBjMjUzNGRlYjQ1MTY4OTFiYTUyOWE3ZWEwNjFk
ZmE1ZC4uMzRlMjc3MThhY2M2MzRmNTE2OTc1ZWVlMjhjNWE1YmEzNWQ4YzdjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODEsNyArODEsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsg
aW4xKCkgfTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBT
VkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpj
cmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAK
aW5kZXggZWUwNjM5Y2IzNDczZTYxZTZmNDc4MTNmMWZiODY3NmNlMDdhZDY3Mi4uODQzZjhkZTc3
YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNiMjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDggKzIzLDYgQEAKICNpbmNsdWRlICJTVkdG
RU9mZnNldEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkZFT2Zmc2V0LmgiCi0jaW5jbHVkZSAiRmls
dGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtODEsMTUg
Kzc5LDkgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
JiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRF
bGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVy
LmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShkeCgpLCBkeSgp
KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwo
KSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIEZFT2Zmc2V0OjpjcmVhdGUoZHgo
KSwgZHkoKSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAppbmRleCA4OTk2ZjI4MmIwMWU4ZDljZDY2N2JmMjBiNWNk
OTg4YTU5OWFmODg4Li5mODU5NTk4YTBmZTZhMGQ3YTg4NGIwYzBjNWI5OGJlZjJjZjQ3YmJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Nyw3ICs0Nyw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0
ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9p
bnRMaWdodEVsZW1lbnQuY3BwCmluZGV4IDVmMDliNzA5Nzk5ZmZmYWNjZGE3ZGRkNDZmMzJlMzE2
YzYxMWU3NGMuLmJkNGI1NjZjYTkwMTA4YWVjYTg1ZGVlNGNlNWY0YWE5ODU4ZTdjZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgUmVmPFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ+IFNWR0ZFUG9pbnRMaWdodEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVmPExp
Z2h0U291cmNlPiBTVkdGRVBvaW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZShTVkdGaWx0ZXJC
dWlsZGVyJiBidWlsZGVyKSBjb25zdAorUmVmPExpZ2h0U291cmNlPiBTVkdGRVBvaW50TGlnaHRF
bGVtZW50OjpsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyKSBjb25z
dAogewogICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKICAgICBpZiAoYnVpbGRlci5wcmltaXRp
dmVVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JP
WCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgKaW5kZXgg
MzNhNWJkNzQ5MjA4MjhjOTk4NjQ1YjcyMmY3MmE3NDVlNDhkYTc5ZS4uYzQ3YTYwNTZlODg3ZGEw
ODFhMDRmM2I5NTJiZGU0NWJjZGE5ZDlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQ
b2ludExpZ2h0RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU1ZHRkVQb2ludExpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKIAotICAgIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoU1ZHRmlsdGVyQnVpbGRlciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoY29uc3Qg
U1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQpID09IHNpemVvZihTVkdGRUxpZ2h0RWxlbWVudCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5jcHAKaW5kZXggY2Q3ZTcyZDlmYmQ2MDkyODAwM2YwMjFlNjc5ZTEzMGQxODdiYzc0YS4u
NjgxNTI2ODA4MmZkODhjMjY3Nzc5ZjMxMTk4OTNlZDYwODMyMDZiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMiw3
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZl
ciBIdW50IDxvbGl2ZXJAbmVyZ2V0LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDEw
ICsyMyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAi
RkVTcGVjdWxhckxpZ2h0aW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRl
ICJTVkdGRUxpZ2h0RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0xNjAsMjcgKzE1OSwyMSBAQCB2b2lk
IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgU1ZHRkVMaWdodAogICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIsIGNvbnN0IEZpbHRlckVmZmVj
dFZlY3RvciYpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwotICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQogICAgIFJlZlB0ciBsaWdodEVsZW1lbnQgPSBTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExp
Z2h0RWxlbWVudCh0aGlzKTsKICAgICBpZiAoIWxpZ2h0RWxlbWVudCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgCisKICAgICBhdXRvIGxpZ2h0U291cmNlID0gbGlnaHRFbGVtZW50LT5s
aWdodFNvdXJjZShmaWx0ZXJCdWlsZGVyKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIAorCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xv
ckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0
aW5nQ29sb3IoKSk7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3Jl
YXRlKGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4
cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1v
dmUobGlnaHRTb3VyY2UpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEu
cmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIEZFU3Bl
Y3VsYXJMaWdodGluZzo6Y3JlYXRlKGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25z
dGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVu
aXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKIH0KIAotfQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmgKaW5kZXggNGQxYjUzMWM0MmJlYjhjZGZhMjAxNTIxNjIxMTY1MTBkMDA5YmM2
ZS4uNmEyMmJlNGNjNjQ5NWQ0YzdiMGY1NDU4ZmE1N2M0ODYwZmUxNDM0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVy
IEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01
OCw3ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1f
aW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAppbmRleCA2ODgyOTZlNGMwOGQ2NTJhMDAz
ZjgxYzA4OTg5NmZkOWJiYTQ2OWI2Li5iNjUxNGRlZDJiMjM4MmFkNWUxYmM0NjQxODBiZTc4Yjlk
ZTJmOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNw
cApAQCAtMjAsOCArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0ZF
U3BvdExpZ2h0RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKLSNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNwb3RMaWdodFNvdXJjZS5oIgpAQCAtNDAs
NyArMzgsNyBAQCBSZWY8U1ZHRkVTcG90TGlnaHRFbGVtZW50PiBTVkdGRVNwb3RMaWdodEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR0ZFU3BvdExpZ2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZWY8
TGlnaHRTb3VyY2U+IFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoU1ZHRmlsdGVy
QnVpbGRlciYgYnVpbGRlcikgY29uc3QKK1JlZjxMaWdodFNvdXJjZT4gU1ZHRkVTcG90TGlnaHRF
bGVtZW50OjpsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyKSBjb25z
dAogewogICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKICAgICBGbG9hdFBvaW50M0QgcG9pbnRz
QXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKaW5kZXggM2Y3
NzE3YzEyNjVjNGYzMWY1MzA4ODY4ZDQ3Yzk3ODc5N2E3MzIxMS4uMDc0MzZjYzAxNjYzYjUyMTU2
MjRhNmUxMmQ3MTYwNjgxZTk2NTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFU3BvdExpZ2h0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwb3RM
aWdodEVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNW
R0ZFU3BvdExpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAot
ICAgIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0
IG92ZXJyaWRlOworICAgIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoY29uc3QgU1ZHRmls
dGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNW
R0ZFU3BvdExpZ2h0RWxlbWVudCkgPT0gc2l6ZW9mKFNWR0ZFTGlnaHRFbGVtZW50KSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAppbmRleCBlZjhkNDA4YjZiOGI1YjM0
NTM5MDhlOGQ1ZjRjMGM1MTk4NDc0OTFhLi4yYTdhM2Y0OTNiZWFmYTFlMmQyMzRjZTNhOWRjYTNl
ODIzMzg1ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMs
MTAgKzIzLDcgQEAKICNpbmNsdWRlICJTVkdGRVRpbGVFbGVtZW50LmgiCiAKICNpbmNsdWRlICJG
RVRpbGUuaCIKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJC
dWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlICJTVkdSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTcwLDE1ICs2Nyw5IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBj
b25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmls
dGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBpZiAoIWlucHV0MSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKCk7
Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkg
fTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBGRVRpbGU6OmNyZWF0ZSgpOwogfQog
Ci19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuaAppbmRleCBjYWJhY2U2YmQwMWMyYjFkMzU2NGE1Y2VlNWMyNzViNjY5NmY5ZDQxLi4zM2Jj
ZTJlNDQ0MjM1ZWNjMGJjNGUyMDBmYTYyOWI2OTQ4OWQ3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDcgKzQyLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVy
RWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0K
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVp
bGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxT
VkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5k
ZXggMTUxYjdiOWU4ZTA4YTQzZTdjY2NiNjgwOWFhNzI5MTQ2ZGJiZjBkOC4uYmQwMGQ1YTMwMjYz
NWYxNmRhZmI2ZTA1MTc3OGM5MmY0MjY3MTE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTE3LDExICsxMTcsMTIgQEAg
dm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
KSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6Zmls
dGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0
b3ImKSBjb25zdAogewogICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVl
bmN5WSgpIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICByZXR1cm4gRkVUdXJi
dWxlbmNlOjpjcmVhdGUodHlwZSgpLCBiYXNlRnJlcXVlbmN5WCgpLCBiYXNlRnJlcXVlbmN5WSgp
LCBudW1PY3RhdmVzKCksIHNlZWQoKSwgc3RpdGNoVGlsZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9T
VElUQ0gpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAppbmRleCA1MGFmOTEwZWI1OGUyYzkyMjQxYTkw
ZGE4Y2JkZmRjNjgxNGY5MzE2Li42MGFhMTQ0NWZlMjZlMzZiYjhjNjllMTAzOWQyZGJjMzI5ZmQ3
NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKQEAg
LTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZp
bHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZp
bHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVj
dG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2Jhc2VGcmVx
dWVuY3lYIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCmluZGV4IDg3OGQxMTJjMDI5ODdkMWZiZjE2MTQxYWNlMmI4YjgxZjVlYjI5MmUuLjdkZjky
MDZmYWE5MWVhZmVmZWZkYTUyOWU5MmY2OWM1MWYzZDhlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgK
QEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM2LDEwICszNiw2IEBAIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXI7
CiBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBwdWJsaWMgU1ZH
RWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMpOwogcHVibGljOgotICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0ID0gMDsKLSAgICAvLyBSZXR1cm5z
IHRydWUsIGlmIHRoZSBuZXcgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUuCi0g
ICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0KICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZH
UHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cywgU1ZHRWxlbWVudD47CiAKICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsg
cmV0dXJuIG1feC0+Y3VycmVudFZhbHVlKCk7IH0KQEAgLTU0LDYgKzUwLDExIEBAIHB1YmxpYzoK
ICAgICBTVkdBbmltYXRlZExlbmd0aCYgaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hlaWdo
dDsgfQogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiByZXN1bHRBbmltYXRlZCgpIHsgcmV0dXJuIG1f
cmVzdWx0OyB9CiAKKyAgICAvLyBSZXR1cm5zIHRydWUsIGlmIHRoZSBuZXcgdmFsdWUgaXMgZGlm
ZmVyZW50IGZyb20gdGhlIG9sZCBvbmUuCisgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCB7
IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikg
Y29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAppbmRleCA0NDlk
ZTk3M2Y4NjI0NDZjYjBmYmMxZjVmODNiMGU0MWIyMGIxNjQyLi5lMzE1MzEyMGE5ODkwNTQ5ODA3
NDYxYzEzZjAxN2IxOGFhODk0Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKQEAgLTMwLDI1ICszMCwyMSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0Zp
bHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwg
Q2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5k
aW5nQm94LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0KQorUmVmUHRyPFNWR0ZpbHRlcj4g
U1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmls
dGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShmaWx0
ZXJFbGVtZW50LCBidWlsZGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgY2xpcE9wZXJh
dGlvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIHRhcmdldEJvdW5kaW5nQm94LCAmcHJldmlvdXNFZmZl
Y3QpOworICAgIHJldHVybiBjcmVhdGUoZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgcmVuZGVyaW5n
TW9kZSwgZmlsdGVyU2NhbGUsIGNsaXBPcGVyYXRpb24sIHRhcmdldEJvdW5kaW5nQm94LCB0YXJn
ZXRCb3VuZGluZ0JveCk7CiB9CiAKIFJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxk
ZXIsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0Qm91bmRpbmdCb3gpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShmaWx0ZXJFbGVtZW50LCBidWls
ZGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0
LCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBudWxscHRyKTsKKyAgICByZXR1cm4g
Y3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxl
LCBDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QsIGZpbHRlclJlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdC
b3gpOwogfQogCi1SZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJF
bGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBP
cGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCogcHJldmlvdXNF
ZmZlY3QpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVt
ZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVy
YXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCiB7CiAgICAgYXV0byBmaWx0ZXIgPSBhZG9w
dFJlZigqbmV3IFNWR0ZpbHRlcihyZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgY2xpcE9wZXJh
dGlvbiwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyRWxlbWVudC5wcmlt
aXRpdmVVbml0cygpKSk7CiAKLSAgICBpZiAoIXByZXZpb3VzRWZmZWN0KQotICAgICAgICBidWls
ZGVyLnNldHVwQnVpbHRpbkVmZmVjdHMoU291cmNlR3JhcGhpYzo6Y3JlYXRlKCkpOwotICAgIGVs
c2UKLSAgICAgICAgYnVpbGRlci5zZXR1cEJ1aWx0aW5FZmZlY3RzKHsgKnByZXZpb3VzRWZmZWN0
IH0pOwotCisgICAgYnVpbGRlci5zZXR1cEJ1aWx0aW5FZmZlY3RzKFNvdXJjZUdyYXBoaWM6OmNy
ZWF0ZSgpKTsKICAgICBidWlsZGVyLnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5n
Qm94KTsKICAgICBidWlsZGVyLnNldFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQucHJpbWl0
aXZlVW5pdHMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmgKaW5kZXggNjFlZDdkMzUwYTk1YzQyNGI2NGQ5N2M0NGM3ODRiZTQyMTliYmUz
ZS4uNDUyODg3MjhiYjQzZGYyYmYwOTg1NzFiNjEyNTdmYzc0MDM5ZjdiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTM2LDkgKzM2
LDkgQEAgY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVyIGZpbmFsIDog
cHVibGljIEZpbHRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNy
ZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpOwor
ICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNW
R0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNj
YWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KTsK
ICAgICBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBT
VkdGaWx0ZXJCdWlsZGVyJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0Qm91bmRpbmdCb3gpOwotICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZH
RmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZp
bHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZm
ZWN0KiBwcmV2aW91c0VmZmVjdCk7CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0
ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNv
bnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJp
bWl0aXZlVW5pdHMsIFNWR0ZpbHRlckV4cHJlc3Npb24mJik7CiAKICAgICBGbG9hdFJlY3QgdGFy
Z2V0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEJvdW5kaW5nQm94OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuY3BwCmluZGV4IGYwNTUxMTMxMDVkYWM4NDkyZTg4MGQzNWQxN2UzNGQ5ODYwZTVk
OWQuLjI0M2I2NWRkYzNjZTA0M2EzMDFjYTVmNTk4MTdhZGQ4M2RmOTAyMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwCkBAIC0zOSw4ICszOSw4IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4Q291
bnRDaGlsZE5vZGVzID0gMjAwOwogCiB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OnNldHVwQnVpbHRp
bkVmZmVjdHMoUmVmPEZpbHRlckVmZmVjdD4gc291cmNlR3JhcGhpYykKIHsKLSAgICBtX2J1aWx0
aW5FZmZlY3RzLmFkZChTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCksIHNvdXJjZUdyYXBoaWMu
cHRyKCkpOwotICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJjZUFscGhhOjplZmZlY3ROYW1l
KCksIFNvdXJjZUFscGhhOjpjcmVhdGUoc291cmNlR3JhcGhpYykpOworICAgIG1fYnVpbHRpbkVm
ZmVjdHMuYWRkKFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKSwgc291cmNlR3JhcGhpYyk7Cisg
ICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgU291cmNl
QWxwaGE6OmNyZWF0ZShzb3VyY2VHcmFwaGljLT5vcGVyYXRpbmdDb2xvclNwYWNlKCkpKTsKIH0K
IAogc3RhdGljIE9wdGlvblNldDxGaWx0ZXJFZmZlY3RHZW9tZXRyeTo6RmxhZ3M+IGVmZmVjdEdl
b21ldHJ5RmxhZ3NGb3JFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCkBAIC04MywxMiArODMs
MTYgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRGaWx0ZXJF
ZmZlY3RzKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHQKICAgICBpZiAoZmlsdGVyRWxlbWVudC5jb3Vu
dENoaWxkTm9kZXMoKSA+IG1heENvdW50Q2hpbGROb2RlcykKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Q7CisgICAgc2V0RWZmZWN0SW5w
dXRzKHNvdXJjZUFscGhhKCksIEZpbHRlckVmZmVjdFZlY3RvciB7IHNvdXJjZUdyYXBoaWMoKSB9
KTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oZmlsdGVyRWxlbWVudCkpIHsKLSAgICAg
ICAgZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5idWlsZCgqdGhpcyk7CisgICAgICAgIGF1dG8gaW5w
dXRzID0gbmFtZWRFZmZlY3RzKGVmZmVjdEVsZW1lbnQuZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMo
KSk7CisgICAgICAgIGlmICghaW5wdXRzKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgYXV0byBlZmZlY3QgPSBlZmZlY3RFbGVtZW50LmZpbHRlckVmZmVjdCgqdGhpcywg
KmlucHV0cyk7CiAgICAgICAgIGlmICghZWZmZWN0KQotICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAoYXV0byBmbGFncyA9IGVmZmVj
dEdlb21ldHJ5RmxhZ3NGb3JFbGVtZW50KGVmZmVjdEVsZW1lbnQpKSB7CiAgICAgICAgICAgICBh
dXRvIGVmZmVjdEJvdW5kYXJpZXMgPSBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xl
PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVmZmVjdEVsZW1lbnQsIG1f
cHJpbWl0aXZlVW5pdHMsIG1fdGFyZ2V0Qm91bmRpbmdCb3gpOwpAQCAtMTAzLDMzICsxMDcsNDQg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRGaWx0ZXJFZmZl
Y3RzKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHQKICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBl
ZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBhcHBlbmRFZmZlY3RUb0VmZmVj
dFJlbmRlcmVyKCplZmZlY3QsICpyZW5kZXJlcik7CiAKLSAgICAgICAgYWRkKGVmZmVjdEVsZW1l
bnQucmVzdWx0KCksIGVmZmVjdCk7CisgICAgICAgIGFkZE5hbWVkRWZmZWN0KGVmZmVjdEVsZW1l
bnQucmVzdWx0KCksIHsgKmVmZmVjdCB9KTsKKyAgICAgICAgc2V0RWZmZWN0SW5wdXRzKCplZmZl
Y3QsIFdURk1vdmUoKmlucHV0cykpOwogICAgIH0KIAotICAgIHJldHVybiBlZmZlY3Q7CisgICAg
cmV0dXJuIG1fbGFzdEVmZmVjdDsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphZGQoY29u
c3QgQXRvbVN0cmluZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkKK0ZpbHRlckVm
ZmVjdCYgU1ZHRmlsdGVyQnVpbGRlcjo6c291cmNlR3JhcGhpYygpIGNvbnN0Cit7CisgICAgcmV0
dXJuICptX2J1aWx0aW5FZmZlY3RzLmdldChGaWx0ZXJFZmZlY3Q6OnNvdXJjZUdyYXBoaWNOYW1l
KCkpOworfQorCitGaWx0ZXJFZmZlY3QmIFNWR0ZpbHRlckJ1aWxkZXI6OnNvdXJjZUFscGhhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKm1fYnVpbHRpbkVmZmVjdHMuZ2V0KEZpbHRlckVmZmVjdDo6
c291cmNlQWxwaGFOYW1lKCkpOworfQorCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFkZE5hbWVk
RWZmZWN0KGNvbnN0IEF0b21TdHJpbmcmIGlkLCBSZWY8RmlsdGVyRWZmZWN0PiYmIGVmZmVjdCkK
IHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fbGFzdEVmZmVjdCA9IGVmZmVj
dDsKKyAgICAgICAgbV9sYXN0RWZmZWN0ID0gV1RGTW92ZShlZmZlY3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKG1fYnVpbHRpbkVmZmVjdHMuY29udGFpbnMoaWQpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2xhc3RFZmZlY3QgPSBlZmZlY3Q7Ci0gICAgbV9uYW1lZEVm
ZmVjdHMuc2V0KGlkLCBtX2xhc3RFZmZlY3QpOworICAgIG1fbGFzdEVmZmVjdCA9IFdURk1vdmUo
ZWZmZWN0KTsKKyAgICBtX25hbWVkRWZmZWN0cy5zZXQoaWQsIFJlZiB7ICptX2xhc3RFZmZlY3Qg
fSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVj
dEJ5SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGaWx0ZXJCdWlsZGVyOjpuYW1lZEVmZmVjdChjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3QK
IHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX2xhc3RFZmZlY3QpCiAg
ICAgICAgICAgICByZXR1cm4gbV9sYXN0RWZmZWN0OwogCi0gICAgICAgIHJldHVybiBtX2J1aWx0
aW5FZmZlY3RzLmdldChTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCkpOworICAgICAgICByZXR1
cm4gJnNvdXJjZUdyYXBoaWMoKTsKICAgICB9CiAKICAgICBpZiAobV9idWlsdGluRWZmZWN0cy5j
b250YWlucyhpZCkpCkBAIC0xMzgsNiArMTUzLDI2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0
CiAgICAgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChpZCk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8
RmlsdGVyRWZmZWN0VmVjdG9yPiBTVkdGaWx0ZXJCdWlsZGVyOjpuYW1lZEVmZmVjdHMoY29uc3Qg
VmVjdG9yPEF0b21TdHJpbmc+JiBuYW1lcykgY29uc3QKK3sKKyAgICBGaWx0ZXJFZmZlY3RWZWN0
b3IgZWZmZWN0czsKKworICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7CisgICAgICAgIGF1
dG8gZWZmZWN0ID0gbmFtZWRFZmZlY3QobmFtZSk7CisgICAgICAgIGlmICghZWZmZWN0KQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBlZmZlY3RzLmFwcGVuZChl
ZmZlY3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGVmZmVjdHM7Cit9
CisKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6c2V0RWZmZWN0SW5wdXRzKEZpbHRlckVmZmVjdCYg
ZWZmZWN0LCBGaWx0ZXJFZmZlY3RWZWN0b3ImJiBpbnB1dHMpCit7CisgICAgbV9pbnB1dHNNYXAu
c2V0KHsgZWZmZWN0IH0sIFdURk1vdmUoaW5wdXRzKSk7Cit9CisKIHZvaWQgU1ZHRmlsdGVyQnVp
bGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZW5kZXJlcihGaWx0ZXJFZmZlY3QmIGVmZmVjdCwg
UmVuZGVyT2JqZWN0JiBvYmplY3QpCiB7CiAgICAgbV9lZmZlY3RSZW5kZXJlci5hZGQoJm9iamVj
dCwgJmVmZmVjdCk7CkBAIC0xNjEsOCArMTk2LDggQEAgYm9vbCBTVkdGaWx0ZXJCdWlsZGVyOjpi
dWlsZEVmZmVjdEV4cHJlc3Npb24oRmlsdGVyRWZmZWN0JiBlZmZlY3QsIEZpbHRlckVmZmVjdFYK
ICAgICAKICAgICBleHByZXNzaW9uLmFwcGVuZCh7IGVmZmVjdCwgZWZmZWN0R2VvbWV0cnkoZWZm
ZWN0KSwgbGV2ZWwgfSk7CiAKLSAgICBmb3IgKGF1dG8mIGlucHV0RWZmZWN0IDogZWZmZWN0Lmlu
cHV0RWZmZWN0cygpKSB7Ci0gICAgICAgIGlmICghYnVpbGRFZmZlY3RFeHByZXNzaW9uKGlucHV0
RWZmZWN0LCBzdGFjaywgbGV2ZWwgKyAxLCBleHByZXNzaW9uKSkKKyAgICBmb3IgKGF1dG8mIGlu
cHV0IDogbV9pbnB1dHNNYXAuZ2V0KGVmZmVjdCkpIHsKKyAgICAgICAgaWYgKCFidWlsZEVmZmVj
dEV4cHJlc3Npb24oaW5wdXQsIHN0YWNrLCBsZXZlbCArIDEsIGV4cHJlc3Npb24pKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IDZiMzQ5ZmZjYzEy
NjVkMzlhZWQ5MzFkY2ExYjAyZDBhM2QxNDY2YWYuLjViMWYwNDcyZWM1NTAwMWRhMmU1MjMxMmRj
NDNlNzE4ZDg4ZmIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTQ2LDkgKzQ2LDYgQEAgcHVibGljOgog
ICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMoKSBjb25zdCB7IHJl
dHVybiBtX3ByaW1pdGl2ZVVuaXRzOyB9CiAgICAgdm9pZCBzZXRQcmltaXRpdmVVbml0cyhTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlIHVuaXRzKSB7IG1fcHJpbWl0aXZlVW5pdHMgPSB1bml0czsg
fQogCi0gICAgdm9pZCBhZGQoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+KTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21T
dHJpbmcmKSBjb25zdDsKLQogICAgIC8vIFJlcXVpcmVkIHRvIGNoYW5nZSB0aGUgYXR0cmlidXRl
cyBvZiBhIGZpbHRlciBkdXJpbmcgYW4gc3ZnQXR0cmlidXRlQ2hhbmdlZC4KICAgICB2b2lkIGFw
cGVuZEVmZmVjdFRvRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0JiwgUmVuZGVyT2JqZWN0Jik7
CiAgICAgaW5saW5lIEZpbHRlckVmZmVjdCogZWZmZWN0QnlSZW5kZXJlcihSZW5kZXJPYmplY3Qq
IG9iamVjdCkgeyByZXR1cm4gbV9lZmZlY3RSZW5kZXJlci5nZXQob2JqZWN0KTsgfQpAQCAtNTgs
MTIgKzU1LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGJ1aWxkRXhwcmVzc2lvbihTVkdGaWx0ZXJF
eHByZXNzaW9uJikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgRmlsdGVyRWZmZWN0JiBzb3VyY2VH
cmFwaGljKCkgY29uc3Q7CisgICAgRmlsdGVyRWZmZWN0JiBzb3VyY2VBbHBoYSgpIGNvbnN0Owor
CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbmFtZWRFZmZlY3QoY29uc3QgQXRvbVN0cmluZyYp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0VmVjdG9yPiBuYW1lZEVmZmVj
dHMoY29uc3QgVmVjdG9yPEF0b21TdHJpbmc+JikgY29uc3Q7CisKKyAgICB2b2lkIGFkZE5hbWVk
RWZmZWN0KGNvbnN0IEF0b21TdHJpbmcmIGlkLCBSZWY8RmlsdGVyRWZmZWN0PiYmKTsKKyAgICB2
b2lkIHNldEVmZmVjdElucHV0cyhGaWx0ZXJFZmZlY3QmLCBGaWx0ZXJFZmZlY3RWZWN0b3ImJiBp
bnB1dHMpOworCiAgICAgc3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4gZWZmZWN0
R2VvbWV0cnkoRmlsdGVyRWZmZWN0JikgY29uc3Q7CiAgICAgYm9vbCBidWlsZEVmZmVjdEV4cHJl
c3Npb24oRmlsdGVyRWZmZWN0JiwgRmlsdGVyRWZmZWN0VmVjdG9yJiBzdGFjaywgdW5zaWduZWQg
bGV2ZWwsIFNWR0ZpbHRlckV4cHJlc3Npb24mKSBjb25zdDsKIAotICAgIEhhc2hNYXA8QXRvbVN0
cmluZywgUmVmUHRyPEZpbHRlckVmZmVjdD4+IG1fYnVpbHRpbkVmZmVjdHM7Ci0gICAgSGFzaE1h
cDxBdG9tU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0Pj4gbV9uYW1lZEVmZmVjdHM7CisgICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWY8RmlsdGVyRWZmZWN0Pj4gbV9idWlsdGluRWZmZWN0czsK
KyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZjxGaWx0ZXJFZmZlY3Q+PiBtX25hbWVkRWZmZWN0
czsKICAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIEZpbHRlckVmZmVjdCo+IG1fZWZmZWN0UmVu
ZGVyZXI7CisgICAgSGFzaE1hcDxSZWY8RmlsdGVyRWZmZWN0PiwgRmlsdGVyRWZmZWN0VmVjdG9y
PiBtX2lucHV0c01hcDsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fbGFzdEVmZmVjdDsK
IAo=
</data>
<flag name="review"
          id="474751"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448820</attachid>
            <date>2022-01-10 17:45:37 -0800</date>
            <delta_ts>2022-01-11 10:57:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232841-20220110174536.patch</filename>
            <type>text/plain</type>
            <size>90975</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ4MzUyOWE5NWQxNDg4
ZWE2NWJkMDgwYTFiYzYwMTA1Mjg5N2UxOS4uNjBjMWUxYmNlZThkNzNlNGI2MjlmNDdmZTZiNzUx
ODU5MDJjNzdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMi0wMS0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFJlbW92ZSB0aGUgZGVwZW5kZW5jeSBmcm9tIEZpbHRlckVmZmVjdCB0byBpdHMgaW5wdXRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDEKKyAg
ICAgICAgcmRhcjovLzg1NDI1OTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgbGFzdCBjbGVhbi11cCBpbiB0aGUgRmlsdGVyRWZmZWN0
IGNvZGUuIEl0IHdpbGwgbWFrZSB0aGUgCisgICAgICAgIEZpbHRlckVmZmVjdCBvYmplY3RzIGlu
IHRoZSBHUFVQcm9jZXNzIHJlc2VtYmxlIGV4YWN0bHkgdGhlaXIgY291bnRlcnBhcnQKKyAgICAg
ICAgb25lcyBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIG5vdyBvbi4KKworICAgICAgICBGb3IgQ1NT
RmlsdGVyLCB3ZSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGlucHV0IGVmZmVjdHMgYmVjYXVzZSBl
dmVyeQorICAgICAgICBGaWx0ZXJGdW5jdGlvbiBpcyB0aGUgaW5wdXQgb2YgaXRzIHN1Y2Nlc3Nv
ci4gUGFzc2luZyB0aGUgcHJldmlvdXMgcmVzdWx0CisgICAgICAgIEZpbHRlckltYWdlIHRvIHRo
ZSBhcHBseSgpIG1ldGhvZCBvZiB0aGUgY3VycmVudCBGaWx0ZXJGdW5jdGlvbiBpcyBlbm91Z2gK
KyAgICAgICAgdG8gZ2V0IHRoZSBmaWx0ZXIgYXBwbGllZCBjb3JyZWN0bHkuCisKKyAgICAgICAg
Rm9yIFNWR0ZpbHRlciwgd2UgbmVlZCB0aGUgZmlsdGVyIGVmZmVjdCBpbnB1dHMgb25seSB3aGVu
IGJ1aWxkaW5nIHRoZQorICAgICAgICBTVkdGaWx0ZXJFeHByZXNzaW9uLiBTbyB3ZSBjYW4gYnVp
bGQgYSBIYXNoTWFwIGluIFNWR0ZpbHRlckJ1aWxkZXIgd2hpY2gKKyAgICAgICAgbWFwcyBhIEZp
bHRlckVmZmVjdCB0byBpdHMgaW5wdXQgRmlsdGVyRWZmZWN0VmVjdG9yLiBUbyBtYWtlIHRoZSBj
aGFuZ2UKKyAgICAgICAgY2xlYXJlciwgdGhlIFNWR0ZFeHh4RWxlbWVudCBjbGFzc2VzIHdpbGwg
aW1wbGVtZW50IHR3byBtZXRob2RzOgorICAgICAgICAxLiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1l
cygpIHdoaWNoIHJldHVybnMgdGhlIG5hbWVzIG9mIHRoZSBpbnB1dCBGaWx0ZXJFZmZlY3RzLgor
ICAgICAgICAyLiBmaWx0ZXJFZmZlY3QoKSB3aGljaCByZXR1cm5zIHRoZSBGaWx0ZXJFZmZlY3Qg
cmVwcmVzZW50aW5nIHRoaXMgZWxlbWVudC4KKyAgICAgICAgU1ZHRmlsdGVyQnVpbGRlcjo6YnVp
bGRGaWx0ZXJFZmZlY3RzKCkgY29udmVydHMgdGhlIG5hbWVzIHRvIEZpbHRlckVmZmVjdHMuCisK
KyAgICAgICAgTm8gbmVlZCB0byBpbml0aWFsaXplIHRoZSBTb3VyY2VHcmFwaGljIG9mIHRoZSBy
ZWZlcmVuY2VkIFNWR0ZpbHRlciB3aXRoCisgICAgICAgIHRoZSBGaWx0ZXJFZmZlY3Qgb2YgaXRz
IHByZXZpb3VzIEZpbHRlckZ1bmN0aW9uLiBUaGUgcmVmZXJlbmNlZCBTVkdGaWx0ZXIKKyAgICAg
ICAgd2lsbCBjcmVhdGUgaXRzIG93biBuYXRpdmUgU291cmNlR3JhcGhpYy4gVGhpcyBTb3VyY2VH
cmFwaGljIHdpbGwgY29weQorICAgICAgICB0aGUgaW5wdXQgRmlsdGVySW1hZ2UgdG8gdGhlIHJl
c3VsdCBGaWx0ZXJJbWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aW5wdXRF
ZmZlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmlucHV0
RWZmZWN0cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU1ZHRmlsdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmZp
bHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6
YnVpbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVj
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxl
bWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VF
bGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VF
bGVtZW50OjpmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6Zmls
dGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ6OmJ1aWxkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RVBvaW50TGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFUG9pbnRMaWdo
dEVsZW1lbnQ6OmxpZ2h0U291cmNlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVQb2ludExp
Z2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZp
bHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcG90TGlnaHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRT
b3VyY2UgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RVRpbGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVUaWxlRWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdG
RVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsdGVyRWZmZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxk
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
ZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0
ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpzZXR1cEJ1aWx0aW5FZmZlY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRWZmZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpzb3VyY2VHcmFwaGljIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OnNvdXJjZUFscGhhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFkZE5hbWVkRWZmZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6Om5hbWVkRWZmZWN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6Om5hbWVkRWZmZWN0cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpzZXRFZmZlY3RJbnB1dHMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRFZmZlY3RFeHByZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFkZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6
CisKIDIwMjItMDEtMTAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDU1MgQ29sb3IgNF0gQ1NTIGNvbG9yKCkgZnVuY3Rpb24gc2hvdWxkIG5vdCBjbGFtcCBjaGFu
bmVscyB0byB0aGUgMC0xIHJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggMTA2OWRmMmU5OGVh
YmUwMGNkMWY3MGJhNDBhYzllOTkwYjk1YzVkMi4uODI0NTAxNzgyYmIwMzdiYjY2MjZiOGM3YjRl
M2U1NDM1YWMzYmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTQ5LDEyICsxNDksNiBAQCBS
ZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IEZpbHRlckltYWdlVgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUZpbHRlckVm
ZmVjdCYgRmlsdGVyRWZmZWN0OjppbnB1dEVmZmVjdCh1bnNpZ25lZCBudW1iZXIpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obnVtYmVyIDwgbV9pbnB1dEVm
ZmVjdHMuc2l6ZSgpKTsKLSAgICByZXR1cm4gbV9pbnB1dEVmZmVjdHMuYXQobnVtYmVyKTsKLX0K
LQogVGV4dFN0cmVhbSYgRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzLCBGaWx0ZXJSZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbikgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGR1bXAgdGhlIHN1YlJlZ2lvbnMgb2YgdGhlIGZpbHRl
ciBwcmltaXRpdmVzIGhlcmUgbGF0ZXIuIFRoaXMgaXNuJ3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IGYz
ODgzMTBlMjNiYmVlYmE1NGZiNmQwOTBlMWJkMjI1ODk5OTY0YTEuLjcwZTNmZTVkOGU3Y2MwODgx
NWZhMjgzNDZjMjRkMjgxNGQyYWY3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtMjMsMTEgKzIzLDgg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCi0j
aW5jbHVkZSAiRmlsdGVyRWZmZWN0VmVjdG9yLmgiCiAjaW5jbHVkZSAiRmlsdGVyRnVuY3Rpb24u
aCIKLSNpbmNsdWRlICJGaWx0ZXJJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlckltYWdlVmVjdG9y
LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRl
eHRTdHJlYW07CkBAIC0zOCwyMSArMzUsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RmlsdGVyOwogY2xhc3MgRmlsdGVyRWZmZWN0QXBwbGllcjsKIGNsYXNzIEZpbHRlckVmZmVjdEdl
b21ldHJ5OworY2xhc3MgRmlsdGVyUmVzdWx0czsKIAogY2xhc3MgRmlsdGVyRWZmZWN0IDogcHVi
bGljIEZpbHRlckZ1bmN0aW9uIHsKICAgICB1c2luZyBGaWx0ZXJGdW5jdGlvbjo6YXBwbHk7CiAK
IHB1YmxpYzoKLSAgICBGaWx0ZXJJbWFnZVZlY3RvciB0YWtlSW1hZ2VJbnB1dHMoRmlsdGVySW1h
Z2VWZWN0b3ImIHN0YWNrKSBjb25zdDsKLQotICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRF
ZmZlY3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KLSAgICBGaWx0ZXJFZmZlY3QmIGlu
cHV0RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKLQotICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBw
bHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVy
UmVzdWx0cyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0R2VvbWV0cnk+JiA9IHN0
ZDo6bnVsbG9wdCk7Ci0KICAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG9wZXJhdGlu
Z0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFj
ZTsgfQogCisgICAgRmlsdGVySW1hZ2VWZWN0b3IgdGFrZUltYWdlSW5wdXRzKEZpbHRlckltYWdl
VmVjdG9yJiBzdGFjaykgY29uc3Q7CisgICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShjb25z
dCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJSZXN1bHRz
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4mID0gc3RkOjpudWxs
b3B0KTsKKwogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6
OlRleHRTdHJlYW0mLCBGaWx0ZXJSZXByZXNlbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
b3RlY3RlZDoKQEAgLTgwLDggKzc0LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmUHRyPEZpbHRl
ckltYWdlPiBhcHBseShjb25zdCBGaWx0ZXImLCBGaWx0ZXJJbWFnZSYgaW5wdXQsIEZpbHRlclJl
c3VsdHMmKSBvdmVycmlkZTsKIAotICAgIEZpbHRlckVmZmVjdFZlY3RvciBtX2lucHV0RWZmZWN0
czsKLQogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAppbmRl
eCA4YWU1YmMzMGFhMDQwNjlhODVkMWM3ZGRmZDVkNDQ0OTE3NTZkYTg4Li5hMDEyY2YyMjhjNTg0
MDU4OGNmNTUwZWMxOTk3MTQ2YzY3OGRjNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtp
dC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDMyICsyMSwyMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCiAKLSNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZSgpCitSZWY8U291cmNlQWxwaGE+IFNv
dXJjZUFscGhhOjpjcmVhdGUoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUFscGhhKCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNvdXJjZUFscGhhKGNvbG9yU3BhY2UpKTsKIH0KIAotUmVmPFNvdXJj
ZUFscGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUFscGhhKHNvdXJjZUVmZmVjdCkpOwot
fQotCi1Tb3VyY2VBbHBoYTo6U291cmNlQWxwaGEoKQotICAgIDogRmlsdGVyRWZmZWN0KEZpbHRl
ckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGEpCi17Ci19Ci0KLVNvdXJjZUFscGhhOjpTb3VyY2VB
bHBoYShGaWx0ZXJFZmZlY3QmIHNvdXJjZUVmZmVjdCkKK1NvdXJjZUFscGhhOjpTb3VyY2VBbHBo
YShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiAgICAgOiBGaWx0ZXJF
ZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkKIHsKLSAgICBzZXRPcGVyYXRp
bmdDb2xvclNwYWNlKHNvdXJjZUVmZmVjdC5vcGVyYXRpbmdDb2xvclNwYWNlKCkpOwotICAgIGlu
cHV0RWZmZWN0cygpLmFwcGVuZChzb3VyY2VFZmZlY3QpOworICAgIHNldE9wZXJhdGluZ0NvbG9y
U3BhY2UoY29sb3JTcGFjZSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBs
aWVyPiBTb3VyY2VBbHBoYTo6Y3JlYXRlQXBwbGllcihjb25zdCBGaWx0ZXImKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5oCmluZGV4IDdiN2Q3N2Y0ZmQ3OTJhOTMxOGRjYjQ2ZjkyODQwNjJmYjE0OWMyNGMuLjlm
OWE5MDQxMTg1ZWIyYThkY2ZmZDM4MzAxZDdmZWNkODM3ZWY0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKQEAg
LTI2LDE0ICsyNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNvdXJjZUFscGhh
IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTb3VyY2VBbHBoYT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxTb3VyY2VBbHBo
YT4gY3JlYXRlKEZpbHRlckVmZmVjdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U291cmNlQWxwaGE+IGNyZWF0ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogCiAgICAgc3RhdGljIEF0b21TdHJpbmcgZWZmZWN0
TmFtZSgpIHsgcmV0dXJuIEZpbHRlckVmZmVjdDo6c291cmNlQWxwaGFOYW1lKCk7IH0KIAogcHJp
dmF0ZToKLSAgICBTb3VyY2VBbHBoYSgpOwotICAgIGV4cGxpY2l0IFNvdXJjZUFscGhhKEZpbHRl
ckVmZmVjdCYpOworICAgIGV4cGxpY2l0IFNvdXJjZUFscGhhKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNy
ZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggZjMyMjk2Njg1YWYzZTJhOGJlMTE1ZTJkYTgw
YThmMGU0YzIxMjc4NS4uYzY5NTBhZTQ2ZjZkNDZlMzA2ZTRjNzM4NTg4MWJkN2U0Mzc5OTUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTIxOCw3ICsyMTgsNyBA
QCBzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlU2VwaWFFZmZlY3QoY29uc3QgQmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdAogICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVh
dGUoRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsK
IH0KIAotc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZVNWR0ZpbHRlcihDU1NGaWx0ZXIm
IGZpbHRlciwgY29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRpb24s
IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5n
Qm94LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0KQorc3RhdGljIFJlZlB0cjxTVkdGaWx0
ZXI+IGNyZWF0ZVNWR0ZpbHRlcihDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRpb24sIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQogewogICAgIGF1dG8mIHJlZmVyZW5j
ZWRTVkdSZXNvdXJjZXMgPSByZW5kZXJlci5lbnN1cmVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCk7
CiAgICAgYXV0byogZmlsdGVyRWxlbWVudCA9IHJlZmVyZW5jZWRTVkdSZXNvdXJjZXMucmVmZXJl
bmNlZEZpbHRlckVsZW1lbnQocmVuZGVyZXIuZG9jdW1lbnQoKSwgZmlsdGVyT3BlcmF0aW9uKTsK
QEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlU1ZHRmls
dGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBSZWZlcmVuY2VGaWx0ZQogICAgIH0KIAogICAg
IFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKLSAgICByZXR1cm4gU1ZHRmlsdGVyOjpjcmVhdGUo
KmZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIGZpbHRlci5m
aWx0ZXJTY2FsZSgpLCBmaWx0ZXIuY2xpcE9wZXJhdGlvbigpLCB0YXJnZXRCb3VuZGluZ0JveCwg
cHJldmlvdXNFZmZlY3QpOworICAgIHJldHVybiBTVkdGaWx0ZXI6OmNyZWF0ZSgqZmlsdGVyRWxl
bWVudCwgYnVpbGRlciwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgZmlsdGVyLmZpbHRlclNjYWxl
KCksIGZpbHRlci5jbGlwT3BlcmF0aW9uKCksIHRhcmdldEJvdW5kaW5nQm94LCB0YXJnZXRCb3Vu
ZGluZ0JveCk7CiB9CiAKIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKQEAgLTI0MCw3ICsyNDAsNiBAQCBi
b29sIENTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IEZpbHRlck9wZXJhdAogICAgIG1fZnVuY3Rpb25zLmNsZWFyKCk7CiAgICAgbV9v
dXRzZXRzID0geyB9OwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3Qg
PSBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8U1ZHRmlsdGVyPiBmaWx0ZXI7
CiAgICAgCiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvcGVyYXRpb25zLm9wZXJhdGlvbnMo
KSkgewpAQCAtMjkyLDcgKzI5MSw3IEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0
aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgot
ICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlU1ZHRmlsdGVyKCp0aGlzLCBkb3duY2FzdDxSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLCByZW5kZXJlciwgdGFyZ2V0Qm91bmRp
bmdCb3gsICpwcmV2aW91c0VmZmVjdCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVTVkdG
aWx0ZXIoKnRoaXMsIGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlv
biksIHJlbmRlcmVyLCB0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgICAgICAgICBlZmZlY3QgPSBu
dWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTMwMCwyNCArMjk5LDE5IEBAIGJvb2wg
Q1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICgoZmlsdGVyIHx8IGVmZmVjdCkgJiYgbV9mdW5jdGlvbnMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQocHJldmlvdXNFZmZlY3QtPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMpOwotICAgICAgICAgICAgbV9mdW5jdGlvbnMuYXBw
ZW5kKHsgKnByZXZpb3VzRWZmZWN0IH0pOwotICAgICAgICB9CisgICAgICAgIGlmICgoZmlsdGVy
IHx8IGVmZmVjdCkgJiYgbV9mdW5jdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9mdW5j
dGlvbnMuYXBwZW5kKFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChmaWx0ZXIpIHsKICAgICAgICAgICAgIGVmZmVjdCA9IGZpbHRlci0+bGFzdEVmZmVjdCgp
OwogICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZChmaWx0
ZXIucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9IFdURk1v
dmUoZWZmZWN0KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGVmZmVjdCkgewogICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICAgICAgICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkgPSB7IHByZXZpb3VzRWZmZWN0LnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICAg
ICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZCh7ICplZmZlY3QgfSk7Ci0gICAgICAgICAgICBwcmV2
aW91c0VmZmVjdCA9IFdURk1vdmUoZWZmZWN0KTsKKyAgICAgICAgICAgIG1fZnVuY3Rpb25zLmFw
cGVuZChlZmZlY3QucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKaW5kZXggZjcyZTViZDNkMmFlNTk0NDQ2NGI1ZGRiNWZiNzRkZjcwYWRkMTgyOC4u
MDI0OWQ4MDJlY2Q1Y2QxMmY2NDhjMzVmNWIzOWUyMDQwZjY1NGYxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogCiAgICAgLy8g
Q3JlYXRlIHRoZSBTVkdGaWx0ZXIgb2JqZWN0LgogICAgIGZpbHRlckRhdGEtPmJ1aWxkZXIgPSBt
YWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCk7Ci0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyID0g
U1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyRWxlbWVudCgpLCAqZmlsdGVyRGF0YS0+YnVpbGRlciwg
cmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMsIHRhcmdl
dEJvdW5kaW5nQm94KTsKKyAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0
ZShmaWx0ZXJFbGVtZW50KCksICpmaWx0ZXJEYXRhLT5idWlsZGVyLCByZW5kZXJpbmdNb2RlLCBm
aWx0ZXJTY2FsZSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QsIGZpbHRlckRhdGEt
PmJvdW5kYXJpZXMsIHRhcmdldEJvdW5kaW5nQm94KTsKICAgICBpZiAoIWZpbHRlckRhdGEtPmZp
bHRlcikgewogICAgICAgICBtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5yZW1vdmUoJnJlbmRlcmVy
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZDVlM2MwOTNmZDkwMjJlOTU3
YzI5MTczNjAwMGZjYzkxNzRhZDc3Ni4uZjgzNWYwZTllZmU4NzJmZWQxMzA2MmQ0OWM1ZWE1MWZk
Njg4YjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCB3cml0ZVNWR1Jlc291
cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lciYKICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKICAgICAgICAgRmxvYXRTaXplIGR1
bW15U2NhbGUoMSwgMSk7CiAgICAgICAgIFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKLSAgICAg
ICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0ZXJFbGVt
ZW50KCksIGJ1aWxkZXIsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGR1bW15U2NhbGUs
IGR1bW15UmVjdCwgZHVtbXlSZWN0KTsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0Zp
bHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0ZXJFbGVtZW50KCksIGJ1aWxkZXIsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIGR1bW15U2NhbGUsIEZpbHRlcjo6Q2xpcE9wZXJhdGlvbjo6SW50
ZXJzZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCk7CiAgICAgICAgIGlmIChkdW1teUZpbHRlcikg
ewogICAgICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwog
ICAgICAgICAgICAgZHVtbXlGaWx0ZXItPmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMsIEZpbHRl
clJlcHJlc2VudGF0aW9uOjpUZXN0T3V0cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuY3BwCmluZGV4IGVjMjY0ZGZkZTk0Nzk4ZGQ0ZGQyMDA0MTAzZGI5NTY1YTgwOTMw
NTcuLmUxY2M4MzM1YzMyMGQ5ZWZlNWMyNDM4NDMwZmM4Mzk3NDhlNzZmMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
NCw4ICsyNCw2IEBACiAjaW5jbHVkZSAiU1ZHRkVCbGVuZEVsZW1lbnQuaCIKIAogI2luY2x1ZGUg
IkZFQmxlbmQuaCIKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0
ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgogCkBAIC0xMDAsMTcgKzk4LDkgQEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKK1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmls
dGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0gICAgYXV0
byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIGF1dG8g
aW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMigpKTsKLQotICAgIGlmICgh
aW5wdXQxIHx8ICFpbnB1dDIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBl
ZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUobW9kZSgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSwgaW5wdXQyLnJlbGVhc2VOb25OdWxsKCkg
fTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBGRUJsZW5kOjpjcmVhdGUobW9kZSgp
KTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuaAppbmRleCBlYmE5YWJiNTgzMjhmNGRhYmYzNDI4YjZiMTdkYmY1ODIzNzY4
NDA4Li45ZTdhZWMwMGNmNTMyYmUyOTdhMWFmYjk5ZjJmY2Y5NDcyMWQzMjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02OSw4
ICs2OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBm
aWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCks
IGluMigpIH07IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6
Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcAppbmRleCBmOGI2M2JhNjhiNzcxMjM2YjQyODEzMDc5OTdiOWUwMDM1NmI0MTli
Li42OWY5MWRjMGU1MDk2N2NmYzY3Y2NhYWZmMDBmZDE0YTNkODU2N2M0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIy
LDggKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiU1ZH
RmlsdGVyQnVpbGRlci5oIgorI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTEwMCwx
MyArOTksOCBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAK
LVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWls
ZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0KLSAgICBpZiAoIWlucHV0
MSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBWZWN0b3I8ZmxvYXQ+IGZpbHRlclZh
bHVlczsKICAgICBDb2xvck1hdHJpeFR5cGUgZmlsdGVyVHlwZSA9IHR5cGUoKTsKIApAQCAtMTM2
LDE0ICsxMzAsMTIgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWwKICAgICAgICAgICAgIHx8IChm
aWx0ZXJUeXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUgJiYgc2l6ZSAhPSAxKQog
ICAgICAgICAgICAgfHwgKGZpbHRlclR5cGUgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRF
ICYmIHNpemUgIT0gMSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisK
ICAgICAgICAgZmlsdGVyVmFsdWVzID0gdmFsdWVzKCk7CiAgICAgICAgIGZpbHRlclZhbHVlcy5z
aHJpbmtUb0ZpdCgpOwogICAgIH0KIAotICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6
Y3JlYXRlKGZpbHRlclR5cGUsIFdURk1vdmUoZmlsdGVyVmFsdWVzKSk7Ci0gICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4g
ZWZmZWN0OworICAgIHJldHVybiBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyVHlwZSwgV1RG
TW92ZShmaWx0ZXJWYWx1ZXMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAppbmRleCA5NzAxMWEwNDFl
NDlhMTdmYjQ5OGExZjg0NmY4ODBkYmRkNjk1MjQwLi4zMzRkOTUxMTk0MGQ1ZmI3NTBkMWI4YTIy
YmNkMjMzMWIxMjZlZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODYsNyArODYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBm
aWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkg
fTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAg
UmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUo
dGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQuY3BwCmluZGV4IDFhNWU4ZTdhM2E2OTNiMjNiZmRhMzI3YzBlMWZiMzQ3NTc3
NGE2ZDEuLjlhNzViNDYyODdmYzA2OTQwOTIyZWMzOTUxMzE3M2VlZjI0MDMzZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjMsMTMgKzIzLDEyIEBACiAjaW5jbHVkZSAiU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKICNpbmNsdWRl
ICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKICNpbmNsdWRlICJTVkdGRUZ1bmNBRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNWR0ZFRnVuY0JFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVGdW5jR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGRUZ1bmNSRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0Zp
bHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKQEAgLTYzLDEzICs2Miw4IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVy
KSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0
RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgCi0gICAgaWYgKCFpbnB1dDEpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiByZWQ7CiAgICAgQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiBncmVlbjsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIGJsdWU7CkBAIC04Niw5ICs4MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0CiAgICAg
ICAgICAgICBhbHBoYSA9IGRvd25jYXN0PFNWR0ZFRnVuY0FFbGVtZW50PihjaGlsZCkudHJhbnNm
ZXJGdW5jdGlvbigpOwogICAgIH0KIAotICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFu
c2Zlcjo6Y3JlYXRlKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgcmV0dXJuIEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShyZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKaW5kZXggNjAx
NzEwZjdkMzUzNWExNDFhMTU3ODg1NGFmMmIwMzUxMTI5ZTk4Mi4uNjRmN2I5YWU4OTFhYjkzMTI3
ZDk5MGY0NDdlZTRkZjI2NDU1OGIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDcgKzQzLDggQEAgcHJpdmF0ZToKICAg
ICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlk
ZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRz
TmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0
cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IDYwNDQ0OTIxN2Vm
YTBhNzFkZGU5MWJjM2JlNWU5NmFmMDgwYTY5OTkuLjQ1OWVkYWI4NTk3YmEyNzk2Yzc3OTJmOWZl
ZTU3OGM5ODM4ZGFhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29w
eXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw4ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisjaW5jbHVkZSAiRkVDb21w
b3NpdGUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAKQEAgLTEzMSwxNyArMTMwLDkgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29u
c3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7
Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwot
ICAgIGF1dG8gaW5wdXQyID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMigpKTsKLSAg
ICAKLSAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShzdmdPcGVyYXRvcigpLCBr
MSgpLCBrMigpLCBrMygpLCBrNCgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBp
bnB1dDEucmVsZWFzZU5vbk51bGwoKSwgaW5wdXQyLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICBy
ZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBGRUNvbXBvc2l0ZTo6Y3JlYXRlKHN2Z09wZXJhdG9y
KCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKaW5kZXggNzRk
ODE0YzNjMjBlMGZkMzdlYjZhOGI1M2FmZjU2OWQ4ZDExZGNhMy4uMDBlMDE3Yzk5NDI5M2RkZWY0
ZTQ2OWYwYzViNmMyZThmMjczY2IwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA5LDcgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJp
bmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBp
bjEoKSwgaW4yKCkgfTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChj
b25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0
aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3Ry
aW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDYzN2FhNzE5ZTgzYjJhMWVhMTI0OTg0YWYxOTI5
MDMyYTNkZjg0NjQuLjAyYmMzN2I2ZDRhM2JjMjhkYThhZWQzNjNhZTE3NDk3ZjYxOWY3NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHpl
IDxrcml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDExICsy
MSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNp
bmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisjaW5jbHVkZSAiRkVDb252b2x2ZU1hdHJpeC5o
IgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTE5MSwxMyArMTg3LDggQEAg
dm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmEKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotCi0gICAgaWYgKCFpbnB1dDEpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgaW50IG9yZGVyWFZhbHVlID0gb3JkZXJYKCk7
CiAgICAgaW50IG9yZGVyWVZhbHVlID0gb3JkZXJZKCk7CiAgICAgaWYgKCFoYXNBdHRyaWJ1dGUo
U1ZHTmFtZXM6Om9yZGVyQXR0cikpIHsKQEAgLTIwNyw2ICsxOTgsNyBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciYgZmlsdGVyQgogICAgIC8vIFNwZWMgc2F5cyBvcmRlciBtdXN0IGJlID4gMC4gQmFpbCBpZiBp
dCBpcyBub3QuCiAgICAgaWYgKG9yZGVyWFZhbHVlIDwgMSB8fCBvcmRlcllWYWx1ZSA8IDEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgYXV0byYga2VybmVsTWF0cml4ID0gdGhpcy0+
a2VybmVsTWF0cml4KCk7CiAgICAgaW50IGtlcm5lbE1hdHJpeFNpemUgPSBrZXJuZWxNYXRyaXgu
aXRlbXMoKS5zaXplKCk7CiAgICAgLy8gVGhlIHNwZWMgc2F5cyB0aGlzIGlzIGEgcmVxdWlyZW1l
bnQsIGFuZCBzaG91bGQgYmFpbCBvdXQgaWYgZmFpbHMKQEAgLTIxNywxMSArMjA5LDEzIEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCCiAgICAgaW50IHRhcmdldFlWYWx1ZSA9IHRhcmdldFkoKTsK
ICAgICBpZiAoaGFzQXR0cmlidXRlKFNWR05hbWVzOjp0YXJnZXRYQXR0cikgJiYgKHRhcmdldFhW
YWx1ZSA8IDAgfHwgdGFyZ2V0WFZhbHVlID49IG9yZGVyWFZhbHVlKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKICAgICAvLyBUaGUgc3BlYyBzYXlzIHRoZSBkZWZhdWx0IHZhbHVlIGlzOiB0
YXJnZXRYID0gZmxvb3IgKCBvcmRlclggLyAyICkpCiAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZH
TmFtZXM6OnRhcmdldFhBdHRyKSkKICAgICAgICAgdGFyZ2V0WFZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50PihmbG9vcmYob3JkZXJYVmFsdWUgLyAyKSk7CiAgICAgaWYgKGhhc0F0dHJpYnV0ZShTVkdO
YW1lczo6dGFyZ2V0WUF0dHIpICYmICh0YXJnZXRZVmFsdWUgPCAwIHx8IHRhcmdldFlWYWx1ZSA+
PSBvcmRlcllWYWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgLy8gVGhlIHNw
ZWMgc2F5cyB0aGUgZGVmYXVsdCB2YWx1ZSBpczogdGFyZ2V0WSA9IGZsb29yICggb3JkZXJZIC8g
MiApKQogICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjp0YXJnZXRZQXR0cikpCiAgICAg
ICAgIHRhcmdldFlWYWx1ZSA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKG9yZGVyWVZhbHVlIC8g
MikpOwpAQCAtMjM5LDYgKzIzMyw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCCiAgICAgZmxv
YXQgZGl2aXNvclZhbHVlID0gZGl2aXNvcigpOwogICAgIGlmIChoYXNBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OmRpdmlzb3JBdHRyKSAmJiAhZGl2aXNvclZhbHVlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKwogICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpkaXZpc29yQXR0cikpIHsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrZXJuZWxNYXRyaXhTaXplOyArK2kpCiAgICAgICAg
ICAgICBkaXZpc29yVmFsdWUgKz0ga2VybmVsTWF0cml4Lml0ZW1zKClbaV0tPnZhbHVlKCk7CkBA
IC0yNDYsOSArMjQxLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckIKICAgICAgICAgICAgIGRp
dmlzb3JWYWx1ZSA9IDE7CiAgICAgfQogCi0gICAgYXV0byBlZmZlY3QgPSBGRUNvbnZvbHZlTWF0
cml4OjpjcmVhdGUoSW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFsdWUpLCBkaXZpc29yVmFs
dWUsIGJpYXMoKSwgSW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFsdWUpLCBlZGdlTW9k
ZSgpLCBGbG9hdFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZ
VmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7Ci0gICAgZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4gZWZm
ZWN0OworICAgIHJldHVybiBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoSW50U2l6ZShvcmRlclhW
YWx1ZSwgb3JkZXJZVmFsdWUpLCBkaXZpc29yVmFsdWUsIGJpYXMoKSwgSW50UG9pbnQodGFyZ2V0
WFZhbHVlLCB0YXJnZXRZVmFsdWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBvaW50KGtlcm5lbFVuaXRM
ZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCksIGtl
cm5lbE1hdHJpeCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKaW5kZXggMzk2NzBmZTYyZmZi
ZTZhYmExY2NjNjI0Nzk0MDQ1ZGZiNmMyYzViNy4uMWY1OWFlYzJhYWE1MTQ4MDAzM2Y0ZTAyZjc4
OWIzZmM3NTcyODlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5
IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0xMDMsNyArMTAzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJF
ZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRz
TmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0
cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4
IGQ3ZTNiODk5ZGM5NTY5YzIwM2JlNzllMDdjMzE5MjdiNWNjODMxOGEuLjk2ODRmYWI4MDBjYzA1
NmE4MzRiNzQ3ZWNmMmQ3M2RiYWYwZmM2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5
LmFjLm56PgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsMTAgKzIyLDggQEAKICNpbmNsdWRl
ICJTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkZFRGlmZnVzZUxp
Z2h0aW5nLmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJTVkdGRUxpZ2h0RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZpbHRl
ckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0
aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0xNTEsMTMg
KzE0OSw4IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZFTGlnaHRFCiAgICAgcHJpbWl0aXZlQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikg
Y29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6
ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJC
dWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotCi0gICAgaWYgKCFpbnB1dDEpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCiAgICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRF
bGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3MCw5ICsxNjMsNyBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXImIGZpbHRlcgogCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5
QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5n
Q29sb3IoKSk7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUo
Y29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0
aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwotICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MS5yZWxlYXNlTm9uTnVsbCgpIH07Ci0gICAg
cmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShjb2xv
ciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgp
LCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiB9CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuaAppbmRleCBiMmFhYzhiMDNlZDI0ZDIxZDk4YjUxOWZiYThlNWY5
NDVjYTMwODBkLi5jODVjYzhjYmIxMGI1MjZkODlmNTQ5YzExMjhjNDMyZjZlM2Y2M2U2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVy
IEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01
OCw3ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1f
aW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCAwOWJkOWE4
MmI0ZmM3OTA2MWI5MzEwMWVmZDk4ZDU1OTQ2MDU2YTZiLi5iNjJjNDY0OWJlMTM5OTZjMTgxZTNh
OTg2ZTBmOWMzYzNkNTNkYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yMSw4ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisjaW5jbHVkZSAiRkVEaXNw
bGFjZW1lbnRNYXAuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKQEAgLTExNSwxNyArMTE0LDkgQEAgdm9pZCBTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck4KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxk
ZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0
RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgYXV0byBpbnB1dDIgPSBmaWx0ZXJCdWlsZGVyLmdldEVm
ZmVjdEJ5SWQoaW4yKCkpOwotICAgIAotICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBlZmZlY3QgPSBGRURpc3BsYWNlbWVudE1h
cDo6Y3JlYXRlKHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgp
KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwo
KSwgaW5wdXQyLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJl
dHVybiBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5u
ZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCmlu
ZGV4IGYyYzZkMGIxOGY4NWM5NGYzODRmNWJkMWJlZmMzNTllZGU4MjNlNmEuLjJiZTZhYzQyMmYz
NTQxZWYzMTk4YTRkN2E4NWVmMTU2NmQ1NzQ0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvbGl2ZXJAbmVyZ2V0LmNvbT4KLSAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTEsNyArOTEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9t
U3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHsgaW4xKCksIGluMigpIH07IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkg
eyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRl
ZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
c3RhbnRMaWdodEVsZW1lbnQuY3BwCmluZGV4IGE2ODZiYjhmYTM4ZDlkZGZhMjhlMDJhZWQ5NWU0
MWIwOGEzNmYyZjcuLjkxNmYwM2MwZjkxNTdlYzgyOGM5MmU5OWI2M2JkNjIyZTk1MjZhNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCkBA
IC0zNiw3ICszNiw3IEBAIFJlZjxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ+IFNWR0ZFRGlzdGFu
dExpZ2h0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKLVJlZjxMaWdodFNvdXJjZT4gU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJj
ZShTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QKK1JlZjxMaWdodFNvdXJjZT4gU1ZHRkVEaXN0YW50
TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QK
IHsKICAgICByZXR1cm4gRGlzdGFudExpZ2h0U291cmNlOjpjcmVhdGUoYXppbXV0aCgpLCBlbGV2
YXRpb24oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50
TGlnaHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVt
ZW50LmgKaW5kZXggZmJkZjcxYzBlY2JkOWY5OTdkNjllYTY1NGI5ZjViYTAzMTdkNzFjYy4uYmJi
ZmU5NDczOWI0NDM5YzA2MDZiYzEzODhlZDgwZjcyMjcyNTg0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2Uo
U1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxMaWdodFNvdXJjZT4g
bGlnaHRTb3VyY2UoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogfTsK
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCkgPT0gc2l6ZW9m
KFNWR0ZFTGlnaHRFbGVtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcAppbmRleCBjMWRlZGI3ODVhMDA5M2NiMGNiYTQxNTFlYzNjNjY0MjMx
ODE2NjIwLi40NTk5MTBlNTRkMmY2MDU2ZWEyNTliMTg4MzliM2UzZTliNTMxNjgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIs
NyArMjIsNiBAQAogI2luY2x1ZGUgIlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHUmVuZGVyU3R5bGUuaCIKQEAgLTk3LDEyICs5Niw4IEBAIHZvaWQgU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURy
b3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBj
b25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6ZmlsdGVy
RWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
KSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlk
KGluMSgpKTsKLSAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNSw5ICsxMTAsNyBAQCBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyJiBmaWx0ZXJCdWlsZAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCku
Y29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoc3ZnU3R5bGUuZmxvb2RDb2xvcigpKTsKICAgICBm
bG9hdCBvcGFjaXR5ID0gc3ZnU3R5bGUuZmxvb2RPcGFjaXR5KCk7CiAKLSAgICBhdXRvIGVmZmVj
dCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgp
LCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4gZWZmZWN0OworICAg
IHJldHVybiBGRURyb3BTaGFkb3c6OmNyZWF0ZShzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlv
blkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwogfQogCi19Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaApp
bmRleCAzZTQwNWRlNDg5YzY4MWE3NmM0NGY5YTgyOTczM2EyMDI2YjRkOGZhLi40OWJlZjBhM2U0
YzcyZmE5ZTJmMzNhNzZhOTU5ZmRlZjRmMzYyMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Myw3ICs1Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+
IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEo
KSB9OyB9CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAg
ICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0
ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKaW5kZXgg
ZjMyOGNjN2MxNWVlNzkxYjRhYWJhM2E4ZTcxYTgwNGM4MDkzZGNmZS4uZjAxNGNjZmZkZmE5Y2I4
YWE2ODAxMDUyYmE5ZmYyNjA4MWQ0Njc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTgsMTIgKzU5LDEyIEBAIGJvb2wgU1ZHRkVGbG9vZEVs
ZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29u
c3QgUXVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RUZsb29kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0CitSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAogewogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1N0eWxlID0gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKTsKIAogICAgIENvbG9y
IGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoc3Zn
U3R5bGUuZmxvb2RDb2xvcigpKTsKQEAgLTcyLDQgKzczLDQgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdAogICAg
IHJldHVybiBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOwogfQogCi19Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCmluZGV4
IGFlZDY2OTE5MzNiZDAyZjMzMDFhOTIzOTdiNzQwNTlmZjZiZWM0YmUuLmQzZWVkZWMxYzNjMGNj
YmM5NzM5N2ZiNTFiMTc0MGYyOGVhMjU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29k
RWxlbWVudC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMzYsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNWR1Byb3Bl
cnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3By
b3BlcnR5UmVnaXN0cnk7IH0KIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmlu
ZGV4IGMxYTk2MzYxMGRmNzc5ZDUzN2YzZTlhYjUzZDJiMmY4NTA0NDBlNjIuLmI1ZjNjN2I2Y2Vm
ZmQ2NWRmZDBhZTExYTRhOWIyYjJlMGQ4M2I4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw4ICsyMiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmgiCiAKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWls
ZGVyLmgiCisjaW5jbHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CkBAIC05NSwxOCArOTQsMTIgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUK
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0
CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikg
Y29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChp
bjEoKSk7Ci0gICAgaWYgKCFpbnB1dDEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAg
aWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVh
dGUoc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOwotICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MS5yZWxlYXNlTm9uTnVsbCgpIH07Ci0gICAg
cmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShzdGREZXZp
YXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7CiB9CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuaAppbmRleCA0ODAzMjJmZjcwNzU4NDQyOTY5NWI0OTdhZTY2NDVlZDA5YmY4YzFkLi41
MjFhZTIwNGViNGY1MmM2ZDM3OTk5ZTQ0ZTIyYjA1Mjg4YjgzMmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Myw3ICs1
Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
VmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVy
RWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5p
bWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAKaW5kZXggZTYzNWQxMjYzMTg0MDc1NjQ1MGNmMjQxNTZkMTNiMzIyOGM1MWU3
OS4uMjAxMTkxNjExMzQ2MGJjZDEyNmQ5NmFmMjMxZWM5ZDBhNDNlYjNmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGQ6OnR1cGxl
PFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdl
QnVmZmVyRm9yRWZmZQogICAgIHJldHVybiB7IGltYWdlQnVmZmVyLCBpbWFnZVJlY3QgfTsKIH0K
IAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXImKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6
OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJikgY29uc3QKIHsKICAgICBpZiAobV9jYWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJu
IEZFSW1hZ2U6OmNyZWF0ZShSZWYgeyAqbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihy
ZW5kZXJlcigpKSB9LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwpAQCAtMjI3LDQgKzIyNyw0IEBA
IHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zCiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKCkpKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAppbmRleCBkZjlkNmVmMDQx
ZTU0YjJhYmQyMjAwNWQ5MDM0YmJhNjllMjViZTUxLi5mY2ZkMWVlMmNkNDhhNTY3ZGJkY2YyMWYx
OGM4NjI0MWMwNGNjMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp0dXBsZTxSZWZQdHI8SW1h
Z2VCdWZmZXI+LCBGbG9hdFJlY3Q+IGltYWdlQnVmZmVyRm9yRWZmZWN0KCkgY29uc3Q7CiAKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKICAgICB2b2lkIHJlcXVlc3RJ
bWFnZVJlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCmluZGV4
IGNkMGJmYjllZGNmZDdiNGUxYWYzOWI1NWVkYmJiZDc4NGFhZWE4OWQuLjFjYjI3ZGYzMTUwNDAx
N2M2OTllMDEwY2VkNGIwZDVkNjAwYmM2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXI7CiBjbGFz
cyBTVkdGRUxpZ2h0RWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50IHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFNWR0ZFTGlnaHRFbGVtZW50KTsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIFJl
ZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoY29uc3QgU1ZHRmlsdGVy
QnVpbGRlciYpIGNvbnN0ID0gMDsKICAgICBzdGF0aWMgU1ZHRkVMaWdodEVsZW1lbnQqIGZpbmRM
aWdodEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCopOwogCiAgICAgZmxvYXQgYXppbXV0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fYXppbXV0aC0+Y3VycmVudFZhbHVlKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmluZGV4IGJjMzRlNzhlMDBkZjcxNmY3MTcxZWVmOWRk
NzgyZDQ1YWMzNmJlMWIuLjQyZGQ1Y2M1MjMwMTgzMTZlOTI3YmQyMmM1NDg3MWZhOTFlYTg2YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcApAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDEwICsy
NCw4IEBACiAKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJGRU1lcmdl
LmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgiCi0jaW5jbHVkZSAi
U1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNDUsMjUgKzQ0LDE3IEBAIFJlZjxTVkdGRU1lcmdl
RWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBECiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVNZXJnZUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CitWZWN0
b3I8QXRvbVN0cmluZz4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdElucHV0c05hbWVz
KCkgY29uc3QKIHsKLSAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbWVyZ2VJbnB1dHM7Ci0KLSAgICBm
b3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVu
dD4oKnRoaXMpKSB7Ci0gICAgICAgIGF1dG8gbWVyZ2VFZmZlY3QgPSBmaWx0ZXJCdWlsZGVyLmdl
dEVmZmVjdEJ5SWQobWVyZ2VOb2RlLmluMSgpKTsKLSAgICAgICAgaWYgKCFtZXJnZUVmZmVjdCkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBtZXJnZUlucHV0cy5hcHBlbmQo
bWVyZ2VFZmZlY3QucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgfQotCi0gICAgbWVyZ2VJbnB1dHMu
c2hyaW5rVG9GaXQoKTsKLQotICAgIGlmIChtZXJnZUlucHV0cy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUobWVy
Z2VJbnB1dHMuc2l6ZSgpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0gV1RGTW92ZSht
ZXJnZUlucHV0cyk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4g
aW5wdXRzTmFtZXM7CisgICAgZm9yIChhdXRvJiBtZXJnZU5vZGUgOiBjaGlsZHJlbk9mVHlwZTxT
VkdGRU1lcmdlTm9kZUVsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgaW5wdXRzTmFtZXMuYXBwZW5k
KG1lcmdlTm9kZS5pbjEoKSk7CisgICAgcmV0dXJuIGlucHV0c05hbWVzOwogfQogCitSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0cykgY29uc3QKK3sK
KyAgICByZXR1cm4gRkVNZXJnZTo6Y3JlYXRlKGlucHV0cy5zaXplKCkpOwogfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJn
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCmluZGV4
IDQzN2NkNzI1NjMyYzVmNGM1MjQ4OTRjYzMyNmNhMDliNDE5ODUxN2YuLmJmNmVjYjZkYjBlZmY1
NzU5ZjVkNWQyZGViMzFkOTZiYzQ0YmVmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMzUsNyArMzYsOCBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5
UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVNZXJnZUVsZW1lbnQsIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVy
dHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJv
cGVydHlSZWdpc3RyeTsgfQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0
ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVy
RWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGNiMGI2YWM2NzcyNWZjMGVmNzljY2YzMTJm
NmY0ZjJlMWI2YWI0YzUuLmFmYjk5OTQwMGQ1MDI2NjczNDI3ZWI3NTA4NjU1ZWUyYzhjYzFmOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3Jp
dEB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw4ICsyMSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5o
IgogCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkZFTW9ycGhvbG9neS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAj
aW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KQEAgLTExNCwyMCArMTEzLDEyIEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNv
bnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAog
ewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
LSAgICBpZiAoIWlucHV0MSkKKyAgICBpZiAocmFkaXVzWCgpIDwgMCB8fCByYWRpdXNZKCkgPCAw
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZsb2F0IHhSYWRpdXMgPSByYWRpdXNY
KCk7Ci0gICAgZmxvYXQgeVJhZGl1cyA9IHJhZGl1c1koKTsKLSAgICBpZiAoeFJhZGl1cyA8IDAg
fHwgeVJhZGl1cyA8IDApCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBlZmZl
Y3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShzdmdPcGVyYXRvcigpLCB4UmFkaXVzLCB5UmFkaXVz
KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwo
KSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIEZFTW9ycGhvbG9neTo6Y3JlYXRl
KHN2Z09wZXJhdG9yKCksIHJhZGl1c1goKSwgcmFkaXVzWSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgK
aW5kZXggY2FiZjA1ODBjMjUzNGRlYjQ1MTY4OTFiYTUyOWE3ZWEwNjFkZmE1ZC4uMzRlMjc3MThh
Y2M2MzRmNTE2OTc1ZWVlMjhjNWE1YmEzNWQ4YzdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtODEsNyArODEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNl
dEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZl
Y3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQorICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVy
JiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggZWUwNjM5Y2Iz
NDczZTYxZTZmNDc4MTNmMWZiODY3NmNlMDdhZDY3Mi4uODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIx
ZGY2MGM4ZDJlOGNiMjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIzLDggKzIzLDYgQEAKICNpbmNsdWRlICJTVkdGRU9mZnNldEVsZW1lbnQu
aCIKIAogI2luY2x1ZGUgIkZFT2Zmc2V0LmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0j
aW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtODEsMTUgKzc5LDkgQEAgdm9pZCBT
VkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVy
KSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpmaWx0ZXJF
ZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYp
IGNvbnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQo
aW4xKCkpOwotICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShkeCgpLCBkeSgpKTsKLSAgICBlZmZlY3Qt
PmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVy
biBlZmZlY3Q7CisgICAgcmV0dXJuIEZFT2Zmc2V0OjpjcmVhdGUoZHgoKSwgZHkoKSk7CiB9CiAK
LX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuaAppbmRleCA4OTk2ZjI4MmIwMWU4ZDljZDY2N2JmMjBiNWNkOTg4YTU5OWFmODg4Li5m
ODU5NTk4YTBmZTZhMGQ3YTg4NGIwYzBjNWI5OGJlZjJjZjQ3YmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Nyw3ICs0Nyw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+
IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEo
KSB9OyB9CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAg
ICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0
ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdo
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQu
Y3BwCmluZGV4IDVmMDliNzA5Nzk5ZmZmYWNjZGE3ZGRkNDZmMzJlMzE2YzYxMWU3NGMuLmJkNGI1
NjZjYTkwMTA4YWVjYTg1ZGVlNGNlNWY0YWE5ODU4ZTdjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPFNW
R0ZFUG9pbnRMaWdodEVsZW1lbnQ+IFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFUG9pbnRMaWdo
dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVmPExpZ2h0U291cmNlPiBTVkdG
RVBvaW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZShTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVy
KSBjb25zdAorUmVmPExpZ2h0U291cmNlPiBTVkdGRVBvaW50TGlnaHRFbGVtZW50OjpsaWdodFNv
dXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewogICAgIEZsb2F0
UG9pbnQzRCBwb3NpdGlvbjsKICAgICBpZiAoYnVpbGRlci5wcmltaXRpdmVVbml0cygpID09IFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgKaW5kZXggMzNhNWJkNzQ5MjA4Mjhj
OTk4NjQ1YjcyMmY3MmE3NDVlNDhkYTc5ZS4uYzQ3YTYwNTZlODg3ZGEwODFhMDRmM2I5NTJiZGU0
NWJjZGE5ZDlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdo
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVu
dC5oCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVQb2ludExp
Z2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlZjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoY29uc3QgU1ZHRmlsdGVyQnVpbGRl
ciYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNWR0ZFUG9pbnRM
aWdodEVsZW1lbnQpID09IHNpemVvZihTVkdGRUxpZ2h0RWxlbWVudCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXgg
Y2Q3ZTcyZDlmYmQ2MDkyODAwM2YwMjFlNjc5ZTEzMGQxODdiYzc0YS4uNjgxNTI2ODA4MmZkODhj
MjY3Nzc5ZjMxMTk4OTNlZDYwODMyMDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBIdW50IDxvbGl2ZXJA
bmVyZ2V0LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDEwICsyMyw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5o
IgogCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRkVTcGVjdWxhckxpZ2h0
aW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdGRUxpZ2h0RWxl
bWVudC5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CkBAIC0xNjAsMjcgKzE1OSwyMSBAQCB2b2lkIFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVM
aWdodAogICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0
CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkp
OwotICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIFJlZlB0
ciBsaWdodEVsZW1lbnQgPSBTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudCh0aGlz
KTsKICAgICBpZiAoIWxpZ2h0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
CisKICAgICBhdXRvIGxpZ2h0U291cmNlID0gbGlnaHRFbGVtZW50LT5saWdodFNvdXJjZShmaWx0
ZXJCdWlsZGVyKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAor
CiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xv
ckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAK
LSAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGNvbG9yLCBzdXJm
YWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwo
KSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIEZFU3BlY3VsYXJMaWdodGluZzo6
Y3JlYXRlKGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxh
ckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdU
Rk1vdmUobGlnaHRTb3VyY2UpKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5k
ZXggNGQxYjUzMWM0MmJlYjhjZGZhMjAxNTIxNjIxMTY1MTBkMDA5YmM2ZS4uNmEyMmJlNGNjNjQ5
NWQ0YzdiMGY1NDU4ZmE1N2M0ODYwZmUxNDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9saXZlckBu
ZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01OCw3ICs1OCw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0
ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90
TGlnaHRFbGVtZW50LmNwcAppbmRleCA2ODgyOTZlNGMwOGQ2NTJhMDAzZjgxYzA4OTg5NmZkOWJi
YTQ2OWI2Li5iNjUxNGRlZDJiMjM4MmFkNWUxYmM0NjQxODBiZTc4YjlkZTJmOWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcApAQCAtMjAsOCArMjAs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0ZFU3BvdExpZ2h0RWxlbWVu
dC5oIgogCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNwb3RMaWdodFNvdXJjZS5oIgpAQCAtNDAsNyArMzgsNyBAQCBSZWY8
U1ZHRkVTcG90TGlnaHRFbGVtZW50PiBTVkdGRVNwb3RMaWdodEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFU3BvdExp
Z2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZWY8TGlnaHRTb3VyY2U+IFNW
R0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRl
cikgY29uc3QKK1JlZjxMaWdodFNvdXJjZT4gU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpsaWdodFNv
dXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewogICAgIEZsb2F0
UG9pbnQzRCBwb3NpdGlvbjsKICAgICBGbG9hdFBvaW50M0QgcG9pbnRzQXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKaW5kZXggM2Y3NzE3YzEyNjVjNGYzMWY1
MzA4ODY4ZDQ3Yzk3ODc5N2E3MzIxMS4uMDc0MzZjYzAxNjYzYjUyMTU2MjRhNmUxMmQ3MTYwNjgx
ZTk2NTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaApA
QCAtMzAsNyArMzAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFU3BvdExpZ2h0RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlZjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYpIGNv
bnN0IG92ZXJyaWRlOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNWR0ZFU3BvdExpZ2h0RWxl
bWVudCkgPT0gc2l6ZW9mKFNWR0ZFTGlnaHRFbGVtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmNwcAppbmRleCBlZjhkNDA4YjZiOGI1YjM0NTM5MDhlOGQ1ZjRjMGM1
MTk4NDc0OTFhLi4yYTdhM2Y0OTNiZWFmYTFlMmQyMzRjZTNhOWRjYTNlODIzMzg1ODdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMTAgKzIzLDcgQEAKICNp
bmNsdWRlICJTVkdGRVRpbGVFbGVtZW50LmgiCiAKICNpbmNsdWRlICJGRVRpbGUuaCIKLSNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDE1
ICs2Nyw5IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBm
aWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVu
dDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZl
Y3RWZWN0b3ImKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKLSAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKCk7Ci0gICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4g
ZWZmZWN0OworICAgIHJldHVybiBGRVRpbGU6OmNyZWF0ZSgpOwogfQogCi19Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCBjYWJh
Y2U2YmQwMWMyYjFkMzU2NGE1Y2VlNWMyNzViNjY5NmY5ZDQxLi4zM2JjZTJlNDQ0MjM1ZWNjMGJj
NGUyMDBmYTYyOWI2OTQ4OWQ3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTQyLDcgKzQyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFt
ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KKyAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmlu
Zz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5kZXggMTUxYjdiOWU4ZTA4
YTQzZTdjY2NiNjgwOWFhNzI5MTQ2ZGJiZjBkOC4uYmQwMGQ1YTMwMjYzNWYxNmRhZmI2ZTA1MTc3
OGM5MmY0MjY3MTE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTE3LDExICsxMTcsMTIgQEAgdm9pZCBTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdAorUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0
IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAogewog
ICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVlbmN5WSgpIDwgMCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICByZXR1cm4gRkVUdXJidWxlbmNlOjpjcmVhdGUo
dHlwZSgpLCBiYXNlRnJlcXVlbmN5WCgpLCBiYXNlRnJlcXVlbmN5WSgpLCBudW1PY3RhdmVzKCks
IHNlZWQoKSwgc3RpdGNoVGlsZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9TVElUQ0gpOwogfQogCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuaAppbmRleCA1MGFmOTEwZWI1OGUyYzkyMjQxYTkwZGE4Y2JkZmRjNjgxNGY5
MzE2Li42MGFhMTQ0NWZlMjZlMzZiYjhjNjllMTAzOWQyZGJjMzI5ZmQ3NjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJp
YnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25z
dCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2Jhc2VGcmVxdWVuY3lYIHsgU1ZHQW5p
bWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IDg3OGQx
MTJjMDI5ODdkMWZiZjE2MTQxYWNlMmI4YjgxZjVlYjI5MmUuLjdkZjkyMDZmYWE5MWVhZmVmZWZk
YTUyOWU5MmY2OWM1MWYzZDhlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTM2LDEwICszNiw2IEBAIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXI7CiBjbGFzcyBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMpOwogcHVibGljOgotICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciYpIGNvbnN0ID0gMDsKLSAgICAvLyBSZXR1cm5zIHRydWUsIGlmIHRoZSBu
ZXcgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUuCi0gICAgdmlydHVhbCBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0KICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJl
Z2lzdHJ5PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRWxlbWVudD47
CiAKICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feC0+Y3Vy
cmVudFZhbHVlKCk7IH0KQEAgLTU0LDYgKzUwLDExIEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRl
ZExlbmd0aCYgaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIFNWR0Fu
aW1hdGVkU3RyaW5nJiByZXN1bHRBbmltYXRlZCgpIHsgcmV0dXJuIG1fcmVzdWx0OyB9CiAKKyAg
ICAvLyBSZXR1cm5zIHRydWUsIGlmIHRoZSBuZXcgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhl
IG9sZCBvbmUuCisgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCBWZWN0b3I8QXRv
bVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCB7IHJldHVybiB7IH07IH0K
KyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QgPSAwOworCiBw
cm90ZWN0ZWQ6CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAppbmRleCA0NDlkZTk3M2Y4NjI0NDZjYjBm
YmMxZjVmODNiMGU0MWIyMGIxNjQyLi4xMTg4NGRiZjRlNGFlYWQzNDNmODZjMDYyZGJmNjE2NmNm
ODY3NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5jcHAKQEAgLTMwLDI1ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZp
bHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiBj
bGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJF
ZmZlY3QmIHByZXZpb3VzRWZmZWN0KQotewotICAgIHJldHVybiBjcmVhdGUoZmlsdGVyRWxlbWVu
dCwgYnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGNsaXBPcGVyYXRpb24sIHRh
cmdldEJvdW5kaW5nQm94LCB0YXJnZXRCb3VuZGluZ0JveCwgJnByZXZpb3VzRWZmZWN0KTsKLX0K
LQotUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYg
ZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJl
Y3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKLXsK
LSAgICByZXR1cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUs
IGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QsIGZpbHRlclJlZ2lvbiwgdGFy
Z2V0Qm91bmRpbmdCb3gsIG51bGxwdHIpOwotfQotCi1SZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0
ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWls
ZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZp
bHRlckVmZmVjdCogcHJldmlvdXNFZmZlY3QpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6
OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVy
JiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCiB7CiAg
ICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IFNWR0ZpbHRlcihyZW5kZXJpbmdNb2RlLCBm
aWx0ZXJTY2FsZSwgY2xpcE9wZXJhdGlvbiwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0Jv
eCwgZmlsdGVyRWxlbWVudC5wcmltaXRpdmVVbml0cygpKSk7CiAKLSAgICBpZiAoIXByZXZpb3Vz
RWZmZWN0KQotICAgICAgICBidWlsZGVyLnNldHVwQnVpbHRpbkVmZmVjdHMoU291cmNlR3JhcGhp
Yzo6Y3JlYXRlKCkpOwotICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5zZXR1cEJ1aWx0aW5FZmZl
Y3RzKHsgKnByZXZpb3VzRWZmZWN0IH0pOwotCisgICAgYnVpbGRlci5zZXR1cEJ1aWx0aW5FZmZl
Y3RzKFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsKICAgICBidWlsZGVyLnNldFRhcmdldEJvdW5k
aW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsKICAgICBidWlsZGVyLnNldFByaW1pdGl2ZVVuaXRz
KGZpbHRlckVsZW1lbnQucHJpbWl0aXZlVW5pdHMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggNjFlZDdkMzUwYTk1YzQyNGI2
NGQ5N2M0NGM3ODRiZTQyMTliYmUzZS4uNjBkYjViMjE5ZjZmMzhhMzAyNzE0MGM1ZjBkYjJkMWFj
MjJiOGNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyLmgKQEAgLTM2LDkgKzM2LDcgQEAgY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xh
c3MgU1ZHRmlsdGVyIGZpbmFsIDogcHVibGljIEZpbHRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVp
bGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBP
cGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVj
dCYgcHJldmlvdXNFZmZlY3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUo
U1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7Ci0gICAgc3RhdGljIFJlZlB0cjxT
VkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJl
bmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJv
dW5kaW5nQm94LCBGaWx0ZXJFZmZlY3QqIHByZXZpb3VzRWZmZWN0KTsKKyAgICBzdGF0aWMgUmVm
UHRyPFNWR0ZpbHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVy
JiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJh
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0Qm91bmRpbmdCb3gpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U1ZHRmls
dGVyPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cywgU1ZHRmlsdGVyRXhwcmVzc2lvbiYmKTsK
IAogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFy
Z2V0Qm91bmRpbmdCb3g7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXggZjA1NTExMzEwNWRhYzg0OTJl
ODgwZDM1ZDE3ZTM0ZDk4NjBlNWQ5ZC4uNzc5NDllYzU2ODY5ZDYzYmQ1MmQ1M2RiYzRkZDgxODVl
ZDczNWM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTM5LDggKzM5LDggQEAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBtYXhDb3VudENoaWxkTm9kZXMgPSAyMDA7CiAKIHZvaWQgU1ZHRmlsdGVy
QnVpbGRlcjo6c2V0dXBCdWlsdGluRWZmZWN0cyhSZWY8RmlsdGVyRWZmZWN0PiBzb3VyY2VHcmFw
aGljKQogewotICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5h
bWUoKSwgc291cmNlR3JhcGhpYy5wdHIoKSk7Ci0gICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291
cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSwgU291cmNlQWxwaGE6OmNyZWF0ZShzb3VyY2VHcmFwaGlj
KSk7CisgICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSgp
LCBzb3VyY2VHcmFwaGljKTsKKyAgICBtX2J1aWx0aW5FZmZlY3RzLmFkZChTb3VyY2VBbHBoYTo6
ZWZmZWN0TmFtZSgpLCBTb3VyY2VBbHBoYTo6Y3JlYXRlKHNvdXJjZUdyYXBoaWMtPm9wZXJhdGlu
Z0NvbG9yU3BhY2UoKSkpOwogfQogCiBzdGF0aWMgT3B0aW9uU2V0PEZpbHRlckVmZmVjdEdlb21l
dHJ5OjpGbGFncz4gZWZmZWN0R2VvbWV0cnlGbGFnc0ZvckVsZW1lbnQoU1ZHRWxlbWVudCYgZWxl
bWVudCkKQEAgLTgzLDEyICs4MywxNiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJC
dWlsZGVyOjpidWlsZEZpbHRlckVmZmVjdHMoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdAogICAgIGlm
IChmaWx0ZXJFbGVtZW50LmNvdW50Q2hpbGROb2RlcygpID4gbWF4Q291bnRDaGlsZE5vZGVzKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dDsKKyAgICBzZXRFZmZlY3RJbnB1dHMoc291cmNlQWxwaGEoKSwgRmlsdGVyRWZmZWN0VmVjdG9y
IHsgc291cmNlR3JhcGhpYygpIH0pOwogCiAgICAgZm9yIChhdXRvJiBlZmZlY3RFbGVtZW50IDog
Y2hpbGRyZW5PZlR5cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihmaWx0
ZXJFbGVtZW50KSkgewotICAgICAgICBlZmZlY3QgPSBlZmZlY3RFbGVtZW50LmJ1aWxkKCp0aGlz
KTsKKyAgICAgICAgYXV0byBpbnB1dHMgPSBuYW1lZEVmZmVjdHMoZWZmZWN0RWxlbWVudC5maWx0
ZXJFZmZlY3RJbnB1dHNOYW1lcygpKTsKKyAgICAgICAgaWYgKCFpbnB1dHMpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIGVmZmVjdCA9IGVmZmVjdEVsZW1lbnQu
ZmlsdGVyRWZmZWN0KCp0aGlzLCAqaW5wdXRzKTsKICAgICAgICAgaWYgKCFlZmZlY3QpCi0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlm
IChhdXRvIGZsYWdzID0gZWZmZWN0R2VvbWV0cnlGbGFnc0ZvckVsZW1lbnQoZWZmZWN0RWxlbWVu
dCkpIHsKICAgICAgICAgICAgIGF1dG8gZWZmZWN0Qm91bmRhcmllcyA9IFNWR0xlbmd0aENvbnRl
eHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PigmZWZmZWN0RWxlbWVudCwgbV9wcmltaXRpdmVVbml0cywgbV90YXJnZXRCb3VuZGluZ0JveCk7
CkBAIC0xMDMsMzMgKzEwNyw0NCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWls
ZGVyOjpidWlsZEZpbHRlckVmZmVjdHMoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdAogICAgICAgICBp
ZiAoYXV0byByZW5kZXJlciA9IGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkKICAgICAgICAgICAg
IGFwcGVuZEVmZmVjdFRvRWZmZWN0UmVuZGVyZXIoKmVmZmVjdCwgKnJlbmRlcmVyKTsKIAotICAg
ICAgICBhZGQoZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZmZWN0KTsKKyAgICAgICAgYWRkTmFt
ZWRFZmZlY3QoZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgeyAqZWZmZWN0IH0pOworICAgICAgICBz
ZXRFZmZlY3RJbnB1dHMoKmVmZmVjdCwgV1RGTW92ZSgqaW5wdXRzKSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gbV9sYXN0RWZmZWN0OworfQorCitGaWx0ZXJFZmZl
Y3QmIFNWR0ZpbHRlckJ1aWxkZXI6OnNvdXJjZUdyYXBoaWMoKSBjb25zdAoreworICAgIHJldHVy
biAqbV9idWlsdGluRWZmZWN0cy5nZXQoRmlsdGVyRWZmZWN0Ojpzb3VyY2VHcmFwaGljTmFtZSgp
KTsKK30KKworRmlsdGVyRWZmZWN0JiBTVkdGaWx0ZXJCdWlsZGVyOjpzb3VyY2VBbHBoYSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICptX2J1aWx0aW5FZmZlY3RzLmdldChGaWx0ZXJFZmZlY3Q6OnNv
dXJjZUFscGhhTmFtZSgpKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphZGQoY29uc3Qg
QXRvbVN0cmluZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkKK3ZvaWQgU1ZHRmls
dGVyQnVpbGRlcjo6YWRkTmFtZWRFZmZlY3QoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlZjxGaWx0
ZXJFZmZlY3Q+JiYgZWZmZWN0KQogewogICAgIGlmIChpZC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
bV9sYXN0RWZmZWN0ID0gZWZmZWN0OworICAgICAgICBtX2xhc3RFZmZlY3QgPSBXVEZNb3ZlKGVm
ZmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9idWlsdGluRWZmZWN0
cy5jb250YWlucyhpZCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbGFzdEVmZmVjdCA9IGVm
ZmVjdDsKLSAgICBtX25hbWVkRWZmZWN0cy5zZXQoaWQsIG1fbGFzdEVmZmVjdCk7CisgICAgbV9s
YXN0RWZmZWN0ID0gV1RGTW92ZShlZmZlY3QpOworICAgIG1fbmFtZWRFZmZlY3RzLnNldChpZCwg
UmVmIHsgKm1fbGFzdEVmZmVjdCB9KTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRmls
dGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3QKK1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZpbHRlckJ1aWxkZXI6Om5hbWVkRWZmZWN0KGNvbnN0IEF0
b21TdHJpbmcmIGlkKSBjb25zdAogewogICAgIGlmIChpZC5pc0VtcHR5KCkpIHsKICAgICAgICAg
aWYgKG1fbGFzdEVmZmVjdCkKICAgICAgICAgICAgIHJldHVybiBtX2xhc3RFZmZlY3Q7CiAKLSAg
ICAgICAgcmV0dXJuIG1fYnVpbHRpbkVmZmVjdHMuZ2V0KFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5h
bWUoKSk7CisgICAgICAgIHJldHVybiAmc291cmNlR3JhcGhpYygpOwogICAgIH0KIAogICAgIGlm
IChtX2J1aWx0aW5FZmZlY3RzLmNvbnRhaW5zKGlkKSkKQEAgLTEzOCw2ICsxNTMsMjggQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBB
dG9tU3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkKTsK
IH0KIAorc3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RWZWN0b3I+IFNWR0ZpbHRlckJ1aWxkZXI6
Om5hbWVkRWZmZWN0cyhjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIG5hbWVzKSBjb25zdAorewor
ICAgIEZpbHRlckVmZmVjdFZlY3RvciBlZmZlY3RzOworCisgICAgZWZmZWN0cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG5hbWVzLnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1l
cykgeworICAgICAgICBhdXRvIGVmZmVjdCA9IG5hbWVkRWZmZWN0KG5hbWUpOworICAgICAgICBp
ZiAoIWVmZmVjdCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAg
ZWZmZWN0cy51bmNoZWNrZWRBcHBlbmQoZWZmZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0K
KworICAgIHJldHVybiBlZmZlY3RzOworfQorCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OnNldEVm
ZmVjdElucHV0cyhGaWx0ZXJFZmZlY3QmIGVmZmVjdCwgRmlsdGVyRWZmZWN0VmVjdG9yJiYgaW5w
dXRzKQoreworICAgIG1faW5wdXRzTWFwLnNldCh7IGVmZmVjdCB9LCBXVEZNb3ZlKGlucHV0cykp
OworfQorCiB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVuZGVy
ZXIoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIFJlbmRlck9iamVjdCYgb2JqZWN0KQogewogICAgIG1f
ZWZmZWN0UmVuZGVyZXIuYWRkKCZvYmplY3QsICZlZmZlY3QpOwpAQCAtMTYxLDggKzE5OCw4IEBA
IGJvb2wgU1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRFZmZlY3RFeHByZXNzaW9uKEZpbHRlckVmZmVj
dCYgZWZmZWN0LCBGaWx0ZXJFZmZlY3RWCiAgICAgCiAgICAgZXhwcmVzc2lvbi5hcHBlbmQoeyBl
ZmZlY3QsIGVmZmVjdEdlb21ldHJ5KGVmZmVjdCksIGxldmVsIH0pOwogCi0gICAgZm9yIChhdXRv
JiBpbnB1dEVmZmVjdCA6IGVmZmVjdC5pbnB1dEVmZmVjdHMoKSkgewotICAgICAgICBpZiAoIWJ1
aWxkRWZmZWN0RXhwcmVzc2lvbihpbnB1dEVmZmVjdCwgc3RhY2ssIGxldmVsICsgMSwgZXhwcmVz
c2lvbikpCisgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzTWFwLmdldChlZmZlY3QpKSB7
CisgICAgICAgIGlmICghYnVpbGRFZmZlY3RFeHByZXNzaW9uKGlucHV0LCBzdGFjaywgbGV2ZWwg
KyAxLCBleHByZXNzaW9uKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1
aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1
aWxkZXIuaAppbmRleCA2YjM0OWZmY2MxMjY1ZDM5YWVkOTMxZGNhMWIwMmQwYTNkMTQ2NmFmLi42
Mzk0NGJlZTY1Njg1ZGM3NmY3MmQxNmI2YmMzYTUyODY0NWJhNDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBA
IC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiU1ZHRmlsdGVyRXhwcmVzc2lvbi5oIgogI2luY2x1
ZGUgIlNWR1VuaXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Niw5ICs0NSw2IEBAIHB1YmxpYzoK
ICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVVbml0czsgfQogICAgIHZvaWQgc2V0UHJpbWl0aXZlVW5pdHMoU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSB1bml0cykgeyBtX3ByaW1pdGl2ZVVuaXRzID0gdW5pdHM7
IH0KIAotICAgIHZvaWQgYWRkKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZm
ZWN0Pik7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZ2V0RWZmZWN0QnlJZChjb25zdCBBdG9t
U3RyaW5nJikgY29uc3Q7Ci0KICAgICAvLyBSZXF1aXJlZCB0byBjaGFuZ2UgdGhlIGF0dHJpYnV0
ZXMgb2YgYSBmaWx0ZXIgZHVyaW5nIGFuIHN2Z0F0dHJpYnV0ZUNoYW5nZWQuCiAgICAgdm9pZCBh
cHBlbmRFZmZlY3RUb0VmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdCYsIFJlbmRlck9iamVjdCYp
OwogICAgIGlubGluZSBGaWx0ZXJFZmZlY3QqIGVmZmVjdEJ5UmVuZGVyZXIoUmVuZGVyT2JqZWN0
KiBvYmplY3QpIHsgcmV0dXJuIG1fZWZmZWN0UmVuZGVyZXIuZ2V0KG9iamVjdCk7IH0KQEAgLTU4
LDEyICs1NCwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBidWlsZEV4cHJlc3Npb24oU1ZHRmlsdGVy
RXhwcmVzc2lvbiYpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIEZpbHRlckVmZmVjdCYgc291cmNl
R3JhcGhpYygpIGNvbnN0OworICAgIEZpbHRlckVmZmVjdCYgc291cmNlQWxwaGEoKSBjb25zdDsK
KworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG5hbWVkRWZmZWN0KGNvbnN0IEF0b21TdHJpbmcm
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZpbHRlckVmZmVjdFZlY3Rvcj4gbmFtZWRFZmZl
Y3RzKGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYpIGNvbnN0OworCisgICAgdm9pZCBhZGROYW1l
ZEVmZmVjdChjb25zdCBBdG9tU3RyaW5nJiBpZCwgUmVmPEZpbHRlckVmZmVjdD4mJik7CisgICAg
dm9pZCBzZXRFZmZlY3RJbnB1dHMoRmlsdGVyRWZmZWN0JiwgRmlsdGVyRWZmZWN0VmVjdG9yJiYg
aW5wdXRzKTsKKwogICAgIHN0ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0R2VvbWV0cnk+IGVmZmVj
dEdlb21ldHJ5KEZpbHRlckVmZmVjdCYpIGNvbnN0OwogICAgIGJvb2wgYnVpbGRFZmZlY3RFeHBy
ZXNzaW9uKEZpbHRlckVmZmVjdCYsIEZpbHRlckVmZmVjdFZlY3RvciYgc3RhY2ssIHVuc2lnbmVk
IGxldmVsLCBTVkdGaWx0ZXJFeHByZXNzaW9uJikgY29uc3Q7CiAKLSAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+PiBtX2J1aWx0aW5FZmZlY3RzOwotICAgIEhhc2hN
YXA8QXRvbVN0cmluZywgUmVmUHRyPEZpbHRlckVmZmVjdD4+IG1fbmFtZWRFZmZlY3RzOworICAg
IEhhc2hNYXA8QXRvbVN0cmluZywgUmVmPEZpbHRlckVmZmVjdD4+IG1fYnVpbHRpbkVmZmVjdHM7
CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWY8RmlsdGVyRWZmZWN0Pj4gbV9uYW1lZEVmZmVj
dHM7CiAgICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBGaWx0ZXJFZmZlY3QqPiBtX2VmZmVjdFJl
bmRlcmVyOworICAgIEhhc2hNYXA8UmVmPEZpbHRlckVmZmVjdD4sIEZpbHRlckVmZmVjdFZlY3Rv
cj4gbV9pbnB1dHNNYXA7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2xhc3RFZmZlY3Q7
CiAK
</data>
<flag name="commit-queue"
          id="474789"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448857</attachid>
            <date>2022-01-11 10:57:24 -0800</date>
            <delta_ts>2022-01-11 12:31:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232841-20220111105723.patch</filename>
            <type>text/plain</type>
            <size>90956</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5Y2UwMTQ4OWFjNmJk
ZGMzMDBiODhkMTdlYTJkNjQyM2FmOTUwYS4uNTlhOTVjYTU1MzZhMDc5NjFkNWEyMTM3OGJhOTU2
YThjNGNlNzU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMi0wMS0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFJlbW92ZSB0aGUgZGVwZW5kZW5jeSBmcm9tIEZpbHRlckVmZmVjdCB0byBpdHMgaW5wdXRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDEKKyAg
ICAgICAgcmRhcjovLzg1NDI1OTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgbGFzdCBjbGVhbi11cCBpbiB0aGUgRmlsdGVyRWZmZWN0
IGNvZGUuIEl0IHdpbGwgbWFrZSB0aGUgCisgICAgICAgIEZpbHRlckVmZmVjdCBvYmplY3RzIGlu
IHRoZSBHUFVQcm9jZXNzIHJlc2VtYmxlIGV4YWN0bHkgdGhlaXIgY291bnRlcnBhcnQKKyAgICAg
ICAgb25lcyBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIG5vdyBvbi4KKworICAgICAgICBGb3IgQ1NT
RmlsdGVyLCB3ZSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGlucHV0IGVmZmVjdHMgYmVjYXVzZSBl
dmVyeQorICAgICAgICBGaWx0ZXJGdW5jdGlvbiBpcyB0aGUgaW5wdXQgb2YgaXRzIHN1Y2Nlc3Nv
ci4gUGFzc2luZyB0aGUgcHJldmlvdXMgcmVzdWx0CisgICAgICAgIEZpbHRlckltYWdlIHRvIHRo
ZSBhcHBseSgpIG1ldGhvZCBvZiB0aGUgY3VycmVudCBGaWx0ZXJGdW5jdGlvbiBpcyBlbm91Z2gK
KyAgICAgICAgdG8gZ2V0IHRoZSBmaWx0ZXIgYXBwbGllZCBjb3JyZWN0bHkuCisKKyAgICAgICAg
Rm9yIFNWR0ZpbHRlciwgd2UgbmVlZCB0aGUgZmlsdGVyIGVmZmVjdCBpbnB1dHMgb25seSB3aGVu
IGJ1aWxkaW5nIHRoZQorICAgICAgICBTVkdGaWx0ZXJFeHByZXNzaW9uLiBTbyB3ZSBjYW4gYnVp
bGQgYSBIYXNoTWFwIGluIFNWR0ZpbHRlckJ1aWxkZXIgd2hpY2gKKyAgICAgICAgbWFwcyBhIEZp
bHRlckVmZmVjdCB0byBpdHMgaW5wdXQgRmlsdGVyRWZmZWN0VmVjdG9yLiBUbyBtYWtlIHRoZSBj
aGFuZ2UKKyAgICAgICAgY2xlYXJlciwgdGhlIFNWR0ZFeHh4RWxlbWVudCBjbGFzc2VzIHdpbGwg
aW1wbGVtZW50IHR3byBtZXRob2RzOgorICAgICAgICAxLiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1l
cygpIHdoaWNoIHJldHVybnMgdGhlIG5hbWVzIG9mIHRoZSBpbnB1dCBGaWx0ZXJFZmZlY3RzLgor
ICAgICAgICAyLiBmaWx0ZXJFZmZlY3QoKSB3aGljaCByZXR1cm5zIHRoZSBGaWx0ZXJFZmZlY3Qg
cmVwcmVzZW50aW5nIHRoaXMgZWxlbWVudC4KKyAgICAgICAgU1ZHRmlsdGVyQnVpbGRlcjo6YnVp
bGRGaWx0ZXJFZmZlY3RzKCkgY29udmVydHMgdGhlIG5hbWVzIHRvIEZpbHRlckVmZmVjdHMuCisK
KyAgICAgICAgTm8gbmVlZCB0byBpbml0aWFsaXplIHRoZSBTb3VyY2VHcmFwaGljIG9mIHRoZSBy
ZWZlcmVuY2VkIFNWR0ZpbHRlciB3aXRoCisgICAgICAgIHRoZSBGaWx0ZXJFZmZlY3Qgb2YgaXRz
IHByZXZpb3VzIEZpbHRlckZ1bmN0aW9uLiBUaGUgcmVmZXJlbmNlZCBTVkdGaWx0ZXIKKyAgICAg
ICAgd2lsbCBjcmVhdGUgaXRzIG93biBuYXRpdmUgU291cmNlR3JhcGhpYy4gVGhpcyBTb3VyY2VH
cmFwaGljIHdpbGwgY29weQorICAgICAgICB0aGUgaW5wdXQgRmlsdGVySW1hZ2UgdG8gdGhlIHJl
c3VsdCBGaWx0ZXJJbWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aW5wdXRF
ZmZlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmlucHV0
RWZmZWN0cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU1ZHRmlsdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmZp
bHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6
YnVpbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVj
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxl
bWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VF
bGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VF
bGVtZW50OjpmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6Zmls
dGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ6OmJ1aWxkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RVBvaW50TGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFUG9pbnRMaWdo
dEVsZW1lbnQ6OmxpZ2h0U291cmNlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVQb2ludExp
Z2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZp
bHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpidWlsZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcG90TGlnaHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRT
b3VyY2UgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RVRpbGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVUaWxlRWxlbWVudDo6YnVpbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdG
RVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsdGVyRWZmZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxk
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
ZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0
ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpzZXR1cEJ1aWx0aW5FZmZlY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRWZmZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpzb3VyY2VHcmFwaGljIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OnNvdXJjZUFscGhhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFkZE5hbWVkRWZmZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6Om5hbWVkRWZmZWN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6Om5hbWVkRWZmZWN0cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpzZXRFZmZlY3RJbnB1dHMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRFZmZlY3RFeHByZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFkZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6
CisKIDIwMjItMDEtMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4ZWQgaW5zdGFsbGhkciBidWlsZCBmYWlsdXJlcyBpbiBXZWJDb3JlIGFuZCBXZWJL
aXRMZWdhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAxMDY5ZGYyZTk4ZWFiZTAwY2QxZjcwYmE0
MGFjOWU5OTBiOTVjNWQyLi44MjQ1MDE3ODJiYjAzN2JiNjYyNmI4YzdiNGUzZTU0MzVhYzNiZjIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0xNDksMTIgKzE0OSw2IEBAIFJlZlB0cjxGaWx0ZXJJ
bWFnZT4gRmlsdGVyRWZmZWN0OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmls
dGVySW1hZ2VWCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRmlsdGVyRWZmZWN0JiBGaWx0ZXJF
ZmZlY3Q6OmlucHV0RWZmZWN0KHVuc2lnbmVkIG51bWJlcikgY29uc3QKLXsKLSAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihudW1iZXIgPCBtX2lucHV0RWZmZWN0cy5zaXplKCkp
OwotICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIpOwotfQotCiBUZXh0U3RyZWFt
JiBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIEZp
bHRlclJlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgZHVtcCB0aGUgc3ViUmVnaW9ucyBvZiB0aGUgZmlsdGVyIHByaW1pdGl2ZXMg
aGVyZSBsYXRlci4gVGhpcyBpc24ndApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggZjM4ODMxMGUyM2JiZWVi
YTU0ZmI2ZDA5MGUxYmQyMjU4OTk5NjRhMS4uNzBlM2ZlNWQ4ZTdjYzA4ODE1ZmEyODM0NmMyNGQy
ODE0ZDJhZjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yMywxMSArMjMsOCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKLSNpbmNsdWRlICJGaWx0
ZXJFZmZlY3RWZWN0b3IuaCIKICNpbmNsdWRlICJGaWx0ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkZpbHRlckltYWdlLmgiCiAjaW5jbHVkZSAiRmlsdGVySW1hZ2VWZWN0b3IuaCIKLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGV4dFN0cmVhbTsKQEAg
LTM4LDIxICszNSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWx0ZXI7CiBjbGFz
cyBGaWx0ZXJFZmZlY3RBcHBsaWVyOwogY2xhc3MgRmlsdGVyRWZmZWN0R2VvbWV0cnk7CitjbGFz
cyBGaWx0ZXJSZXN1bHRzOwogCiBjbGFzcyBGaWx0ZXJFZmZlY3QgOiBwdWJsaWMgRmlsdGVyRnVu
Y3Rpb24gewogICAgIHVzaW5nIEZpbHRlckZ1bmN0aW9uOjphcHBseTsKIAogcHVibGljOgotICAg
IEZpbHRlckltYWdlVmVjdG9yIHRha2VJbWFnZUlucHV0cyhGaWx0ZXJJbWFnZVZlY3RvciYgc3Rh
Y2spIGNvbnN0OwotCi0gICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMoKSB7IHJl
dHVybiBtX2lucHV0RWZmZWN0czsgfQotICAgIEZpbHRlckVmZmVjdCYgaW5wdXRFZmZlY3QodW5z
aWduZWQpIGNvbnN0OwotCi0gICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShjb25zdCBGaWx0
ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJSZXN1bHRzJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4mID0gc3RkOjpudWxsb3B0KTsK
LQogICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3BlcmF0aW5nQ29sb3JTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CiAKKyAgICBG
aWx0ZXJJbWFnZVZlY3RvciB0YWtlSW1hZ2VJbnB1dHMoRmlsdGVySW1hZ2VWZWN0b3ImIHN0YWNr
KSBjb25zdDsKKyAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KGNvbnN0IEZpbHRlciYsIGNv
bnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlclJlc3VsdHMmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEZpbHRlckVmZmVjdEdlb21ldHJ5PiYgPSBzdGQ6Om51bGxvcHQpOworCiAgICAg
V1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYs
IEZpbHRlclJlcHJlc2VudGF0aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgpAQCAt
ODAsOCArNzQsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5
KGNvbnN0IEZpbHRlciYsIEZpbHRlckltYWdlJiBpbnB1dCwgRmlsdGVyUmVzdWx0cyYpIG92ZXJy
aWRlOwogCi0gICAgRmlsdGVyRWZmZWN0VmVjdG9yIG1faW5wdXRFZmZlY3RzOwotCiAgICAgRGVz
dGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCmluZGV4IDhhZTViYzMwYWEw
NDA2OWE4NWQxYzdkZGZkNWQ0NDQ5MTc1NmRhODguLmEwMTJjZjIyOGM1ODQwNTg4Y2Y1NTBlYzE5
OTcxNDZjNjc4ZGM2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMzIgKzIxLDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU291cmNlQWxwaGEuaCIKIAotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNvdXJjZUFscGhh
PiBTb3VyY2VBbHBoYTo6Y3JlYXRlKCkKK1JlZjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNy
ZWF0ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQWxwaGEoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU291cmNlQWxwaGEoY29sb3JTcGFjZSkpOwogfQogCi1SZWY8U291cmNlQWxwaGE+IFNvdXJj
ZUFscGhhOjpjcmVhdGUoRmlsdGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU291cmNlQWxwaGEoc291cmNlRWZmZWN0KSk7Ci19Ci0KLVNvdXJjZUFs
cGhhOjpTb3VyY2VBbHBoYSgpCi0gICAgOiBGaWx0ZXJFZmZlY3QoRmlsdGVyRWZmZWN0OjpUeXBl
OjpTb3VyY2VBbHBoYSkKLXsKLX0KLQotU291cmNlQWxwaGE6OlNvdXJjZUFscGhhKEZpbHRlckVm
ZmVjdCYgc291cmNlRWZmZWN0KQorU291cmNlQWxwaGE6OlNvdXJjZUFscGhhKGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IEZpbHRlckVmZmVjdChGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKQogewotICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
c291cmNlRWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7Ci0gICAgaW5wdXRFZmZlY3RzKCku
YXBwZW5kKHNvdXJjZUVmZmVjdCk7CisgICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb2xvclNw
YWNlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IFNvdXJjZUFs
cGhhOjpjcmVhdGVBcHBsaWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKaW5kZXgg
N2I3ZDc3ZjRmZDc5MmE5MzE4ZGNiNDZmOTI4NDA2MmZiMTQ5YzI0Yy4uOWY5YTkwNDExODVlYjJh
OGRjZmZkMzgzMDFkN2ZlY2Q4MzdlZjQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaApAQCAtMjYsMTQgKzI2LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU291cmNlQWxwaGEgOiBwdWJsaWMgRmls
dGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNvdXJj
ZUFscGhhPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmPFNvdXJjZUFscGhhPiBjcmVhdGUoRmls
dGVyRWZmZWN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTb3VyY2VBbHBoYT4g
Y3JlYXRlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CiAKICAgICBzdGF0aWMgQXRvbVN0cmluZyBlZmZlY3ROYW1lKCkgeyByZXR1
cm4gRmlsdGVyRWZmZWN0Ojpzb3VyY2VBbHBoYU5hbWUoKTsgfQogCiBwcml2YXRlOgotICAgIFNv
dXJjZUFscGhhKCk7Ci0gICAgZXhwbGljaXQgU291cmNlQWxwaGEoRmlsdGVyRWZmZWN0Jik7Cisg
ICAgZXhwbGljaXQgU291cmNlQWxwaGEoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGllcj4gY3JlYXRlQXBwbGllcihj
b25zdCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmNwcAppbmRleCBmMzIyOTY2ODVhZjNlMmE4YmUxMTVlMmRhODBhOGYwZTRjMjEyNzg1
Li5jNjk1MGFlNDZmNmQ0NmUzMDZlNGM3Mzg1ODgxYmQ3ZTQzNzk5NTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVTZXBpYUVmZmVjdChjb25zdCBCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0CiAgICAgcmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShGRUNPTE9STUFU
UklYX1RZUEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOwogfQogCi1zdGF0aWMg
UmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlU1ZHRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25z
dCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVm
ZmVjdCYgcHJldmlvdXNFZmZlY3QpCitzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlU1ZH
RmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24m
IGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0Qm91bmRpbmdCb3gpCiB7CiAgICAgYXV0byYgcmVmZXJlbmNlZFNWR1Jlc291cmNl
cyA9IHJlbmRlcmVyLmVuc3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKTsKICAgICBhdXRvKiBm
aWx0ZXJFbGVtZW50ID0gcmVmZXJlbmNlZFNWR1Jlc291cmNlcy5yZWZlcmVuY2VkRmlsdGVyRWxl
bWVudChyZW5kZXJlci5kb2N1bWVudCgpLCBmaWx0ZXJPcGVyYXRpb24pOwpAQCAtMjMyLDcgKzIz
Miw3IEBAIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZpbHRlCiAgICAgfQogCiAgICAgU1ZHRmlsdGVyQnVp
bGRlciBidWlsZGVyOwotICAgIHJldHVybiBTVkdGaWx0ZXI6OmNyZWF0ZSgqZmlsdGVyRWxlbWVu
dCwgYnVpbGRlciwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgZmlsdGVyLmZpbHRlclNjYWxlKCks
IGZpbHRlci5jbGlwT3BlcmF0aW9uKCksIHRhcmdldEJvdW5kaW5nQm94LCBwcmV2aW91c0VmZmVj
dCk7CisgICAgcmV0dXJuIFNWR0ZpbHRlcjo6Y3JlYXRlKCpmaWx0ZXJFbGVtZW50LCBidWlsZGVy
LCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwgZmlsdGVyLmNs
aXBPcGVyYXRpb24oKSwgdGFyZ2V0Qm91bmRpbmdCb3gsIHRhcmdldEJvdW5kaW5nQm94KTsKIH0K
IAogYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldEJvdW5kaW5nQm94KQpAQCAtMjQwLDcgKzI0MCw2IEBAIGJvb2wgQ1NTRmlsdGVy
OjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmls
dGVyT3BlcmF0CiAgICAgbV9mdW5jdGlvbnMuY2xlYXIoKTsKICAgICBtX291dHNldHMgPSB7IH07
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCA9IFNvdXJjZUdyYXBo
aWM6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxTVkdGaWx0ZXI+IGZpbHRlcjsKICAgICAKICAgICBm
b3IgKGF1dG8mIG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpKSB7CkBAIC0yOTIs
NyArMjkxLDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6Ci0gICAgICAgICAgICBm
aWx0ZXIgPSBjcmVhdGVTVkdGaWx0ZXIoKnRoaXMsIGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbj4oKm9wZXJhdGlvbiksIHJlbmRlcmVyLCB0YXJnZXRCb3VuZGluZ0JveCwgKnByZXZp
b3VzRWZmZWN0KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZVNWR0ZpbHRlcigqdGhpcywg
ZG93bmNhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgcmVuZGVyZXIs
IHRhcmdldEJvdW5kaW5nQm94KTsKICAgICAgICAgICAgIGVmZmVjdCA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBicmVhazsKIApAQCAtMzAwLDI0ICsyOTksMTkgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1
aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJP
cGVyYXQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChmaWx0
ZXIgfHwgZWZmZWN0KSAmJiBtX2Z1bmN0aW9ucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChwcmV2aW91c0VmZmVjdC0+ZmlsdGVyVHlwZSgpID09IEZpbHRlckVmZmVjdDo6VHlwZTo6
U291cmNlR3JhcGhpYyk7Ci0gICAgICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQoeyAqcHJldmlv
dXNFZmZlY3QgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKChmaWx0ZXIgfHwgZWZmZWN0KSAm
JiBtX2Z1bmN0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQo
U291cmNlR3JhcGhpYzo6Y3JlYXRlKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKGZpbHRlcikg
ewogICAgICAgICAgICAgZWZmZWN0ID0gZmlsdGVyLT5sYXN0RWZmZWN0KCk7CiAgICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwogICAgICAgICAgICAgbV9mdW5jdGlvbnMuYXBwZW5kKGZpbHRlci5yZWxlYXNlTm9u
TnVsbCgpKTsKLSAgICAgICAgICAgIHByZXZpb3VzRWZmZWN0ID0gV1RGTW92ZShlZmZlY3QpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZWZmZWN0KSB7
CiAgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpOwotICAgICAgICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9
IHsgcHJldmlvdXNFZmZlY3QucmVsZWFzZU5vbk51bGwoKSB9OwotICAgICAgICAgICAgbV9mdW5j
dGlvbnMuYXBwZW5kKHsgKmVmZmVjdCB9KTsKLSAgICAgICAgICAgIHByZXZpb3VzRWZmZWN0ID0g
V1RGTW92ZShlZmZlY3QpOworICAgICAgICAgICAgbV9mdW5jdGlvbnMuYXBwZW5kKGVmZmVjdC5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRl
eCBmNzJlNWJkM2QyYWU1OTQ0NDY0YjVkZGI1ZmI3NGRmNzBhZGQxODI4Li4wMjQ5ZDgwMmVjZDVj
ZDEyZjY0OGMzNWY1YjM5ZTIwNDBmNjU0ZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMTI5LDcg
KzEyOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICAvLyBDcmVhdGUgdGhlIFNW
R0ZpbHRlciBvYmplY3QuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZH
RmlsdGVyQnVpbGRlcj4oKTsKLSAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNy
ZWF0ZShmaWx0ZXJFbGVtZW50KCksICpmaWx0ZXJEYXRhLT5idWlsZGVyLCByZW5kZXJpbmdNb2Rl
LCBmaWx0ZXJTY2FsZSwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRpbmdCb3gp
OworICAgIGZpbHRlckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckVsZW1l
bnQoKSwgKmZpbHRlckRhdGEtPmJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBG
aWx0ZXI6OkNsaXBPcGVyYXRpb246OkludGVyc2VjdCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywg
dGFyZ2V0Qm91bmRpbmdCb3gpOwogICAgIGlmICghZmlsdGVyRGF0YS0+ZmlsdGVyKSB7CiAgICAg
ICAgIG1fcmVuZGVyZXJGaWx0ZXJEYXRhTWFwLnJlbW92ZSgmcmVuZGVyZXIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBkNWUzYzA5M2ZkOTAyMmU5NTdjMjkxNzM2MDAwZmNj
OTE3NGFkNzc2Li5mODM1ZjBlOWVmZTg3MmZlZDEzMDYyZDQ5YzVlYTUxZmQ2ODhiMzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4
dC5jcHAKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJgogICAgICAg
ICBGbG9hdFJlY3QgZHVtbXlSZWN0OwogICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAx
KTsKICAgICAgICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyOwotICAgICAgICBhdXRvIGR1bW15
RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyLmZpbHRlckVsZW1lbnQoKSwgYnVpbGRl
ciwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZHVtbXlTY2FsZSwgZHVtbXlSZWN0LCBk
dW1teVJlY3QpOworICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUo
ZmlsdGVyLmZpbHRlckVsZW1lbnQoKSwgYnVpbGRlciwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgZHVtbXlTY2FsZSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QsIGR1bW15
UmVjdCwgZHVtbXlSZWN0KTsKICAgICAgICAgaWYgKGR1bW15RmlsdGVyKSB7CiAgICAgICAgICAg
ICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CiAgICAgICAgICAgICBk
dW1teUZpbHRlci0+ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cywgRmlsdGVyUmVwcmVzZW50YXRp
b246OlRlc3RPdXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAK
aW5kZXggZWMyNjRkZmRlOTQ3OThkZDRkZDIwMDQxMDNkYjk1NjVhODA5MzA1Ny4uZTFjYzgzMzVj
MzIwZDllZmU1YzI0Mzg0MzBmYzgzOTc0OGU3NmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDggKzI0LDYgQEAK
ICNpbmNsdWRlICJTVkdGRUJsZW5kRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRkVCbGVuZC5oIgot
I2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKQEAgLTEwMCwxNyArOTgsOSBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwg
Y29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgYXV0byBpbnB1dDIgPSBmaWx0
ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4yKCkpOwotCi0gICAgaWYgKCFpbnB1dDEgfHwgIWlu
cHV0MikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGVmZmVjdCA9IEZFQmxl
bmQ6OmNyZWF0ZShtb2RlKCkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0
MS5yZWxlYXNlTm9uTnVsbCgpLCBpbnB1dDIucmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVy
biBlZmZlY3Q7CisgICAgcmV0dXJuIEZFQmxlbmQ6OmNyZWF0ZShtb2RlKCkpOwogfQogCi19Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
CmluZGV4IGViYTlhYmI1ODMyOGY0ZGFiZjM0MjhiNmIxN2RiZjU4MjM3Njg0MDguLjllN2FlYzAw
Y2Y1MzJiZTI5N2ExYWZiOTlmMmZjZjk0NzIxZDMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTY5LDggKzY5LDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHNldEZp
bHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElu
cHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSwgaW4yKCkgfTsgfQor
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWls
ZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNW
R0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmlu
ZGV4IGY4YjYzYmE2OGI3NzEyMzZiNDI4MTMwNzk5N2I5ZTAwMzU2YjQxOWIuLjY5ZjkxZGMwZTUw
OTY3Y2ZjNjdjY2FhZmYwMGZkMTRhM2Q4NTY3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsOCArMjIsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmgi
CiAKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVy
LmgiCisjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMTAwLDEzICs5OSw4IEBAIHZv
aWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
IGZpbHRlckJ1aWxkZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBG
aWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVp
bGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLQotICAgIGlmICghaW5wdXQxKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQogICAgIFZlY3RvcjxmbG9hdD4gZmlsdGVyVmFsdWVzOwogICAgIENv
bG9yTWF0cml4VHlwZSBmaWx0ZXJUeXBlID0gdHlwZSgpOwogCkBAIC0xMzYsMTQgKzEzMCwxMiBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbAogICAgICAgICAgICAgfHwgKGZpbHRlclR5cGUgPT0g
RkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSAmJiBzaXplICE9IDEpCiAgICAgICAgICAgICB8
fCAoZmlsdGVyVHlwZSA9PSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgJiYgc2l6ZSAhPSAx
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgICAgICBmaWx0
ZXJWYWx1ZXMgPSB2YWx1ZXMoKTsKICAgICAgICAgZmlsdGVyVmFsdWVzLnNocmlua1RvRml0KCk7
CiAgICAgfQogCi0gICAgYXV0byBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVy
VHlwZSwgV1RGTW92ZShmaWx0ZXJWYWx1ZXMpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygp
ID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAg
cmV0dXJuIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXJUeXBlLCBXVEZNb3ZlKGZpbHRlclZh
bHVlcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCmluZGV4IDk3MDExYTA0MWU0OWExN2ZiNDk4YTFm
ODQ2Zjg4MGRiZGQ2OTUyNDAuLjMzNGQ5NTExOTQwZDVmYjc1MGQxYjhhMjJiY2QyMzMxYjEyNmVm
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC04Niw3ICs4Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElu
cHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBj
b25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0
ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5j
cHAKaW5kZXggMWE1ZThlN2EzYTY5M2IyM2JmZGEzMjdjMGUxZmIzNDc1Nzc0YTZkMS4uOWE3NWI0
NjI4N2ZjMDY5NDA5MjJlYzM5NTEzMTczZWVmMjQwMzNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMywx
MyArMjMsMTIgQEAKICNpbmNsdWRlICJTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIgog
CiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CisjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRU
eXBlSGVscGVycy5oIgogI2luY2x1ZGUgIlNWR0ZFRnVuY0FFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHRkVGdW5jQkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGRUZ1bmNHRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR0ZFRnVuY1JFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5o
IgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIApAQCAtNjMsMTMgKzYyLDggQEAgdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY28KICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CitSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBj
b25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKLSAgICAKLSAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
ICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZDsKICAgICBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uIGdyZWVuOwogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gYmx1ZTsKQEAg
LTg2LDkgKzgwLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHQKICAgICAgICAgICAgIGFscGhh
ID0gZG93bmNhc3Q8U1ZHRkVGdW5jQUVsZW1lbnQ+KGNoaWxkKS50cmFuc2ZlckZ1bmN0aW9uKCk7
CiAgICAgfQogCi0gICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUo
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7
IGlucHV0MS5yZWxlYXNlTm9uTnVsbCgpIH07Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1
cm4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsK
IH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCA2MDE3MTBmN2QzNTM1YTE0
MWExNTc4ODU0YWYyYjAzNTExMjllOTgyLi42NGY3YjlhZTg5MWFiOTMxMjdkOTkwZjQ0N2VlNGRm
MjY0NTU4YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtNDMsNyArNDMsOCBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBz
dmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7
IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggNjA0NDQ5MjE3ZWZhMGE3MWRkZTkxYmMz
YmU1ZTk2YWYwODBhNjk5OS4uNDU5ZWRhYjg1OTdiYTI3OTZjNzc5MmY5ZmVlNTc4Yzk4MzhkYWEx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKQEAg
LTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIyLDggKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2lu
Y2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKKyNpbmNsdWRlICJGRUNvbXBvc2l0ZS5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApA
QCAtMTMxLDE3ICsxMzAsOSBAQCB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJC
dWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlu
cHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgYXV0byBpbnB1
dDIgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4yKCkpOwotICAgIAotICAgIGlmICgh
aW5wdXQxIHx8ICFpbnB1dDIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBl
ZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGsz
KCksIGs0KCkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MS5yZWxlYXNl
Tm9uTnVsbCgpLCBpbnB1dDIucmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZlY3Q7
CisgICAgcmV0dXJuIEZFQ29tcG9zaXRlOjpjcmVhdGUoc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIo
KSwgazMoKSwgazQoKSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAppbmRleCA3NGQ4MTRjM2MyMGUwZmQz
N2ViNmE4YjUzYWZmNTY5ZDhkMTFkY2EzLi4wMGUwMTdjOTk0MjkzZGRlZjRlNDY5ZjBjNWI2YzJl
OGYyNzNjYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0xMDksNyArMTA5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZm
ZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpLCBpbjIoKSB9
OyB9CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBS
ZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0
aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAKaW5kZXggNjM3YWE3MTllODNiMmExZWExMjQ5ODRhZjE5MjkwMzJhM2RmODQ2NC4u
MDJiYzM3YjZkNGEzYmMyOGRhOGFlZDM2M2FlMTc0OTdmNjE5Zjc2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTEgKzIxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIgog
Ci0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2lu
Y2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlNWR0Zp
bHRlckJ1aWxkZXIuaCIKKyNpbmNsdWRlICJGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMTkxLDEzICsxODcsOCBAQCB2b2lkIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJC
dWlsZGVyKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVy
RWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIu
Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0KLSAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KICAgICBpbnQgb3JkZXJYVmFsdWUgPSBvcmRlclgoKTsKICAgICBpbnQgb3Jk
ZXJZVmFsdWUgPSBvcmRlclkoKTsKICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6b3Jk
ZXJBdHRyKSkgewpAQCAtMjA3LDYgKzE5OCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCCiAg
ICAgLy8gU3BlYyBzYXlzIG9yZGVyIG11c3QgYmUgPiAwLiBCYWlsIGlmIGl0IGlzIG5vdC4KICAg
ICBpZiAob3JkZXJYVmFsdWUgPCAxIHx8IG9yZGVyWVZhbHVlIDwgMSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKICAgICBhdXRvJiBrZXJuZWxNYXRyaXggPSB0aGlzLT5rZXJuZWxNYXRyaXgo
KTsKICAgICBpbnQga2VybmVsTWF0cml4U2l6ZSA9IGtlcm5lbE1hdHJpeC5pdGVtcygpLnNpemUo
KTsKICAgICAvLyBUaGUgc3BlYyBzYXlzIHRoaXMgaXMgYSByZXF1aXJlbWVudCwgYW5kIHNob3Vs
ZCBiYWlsIG91dCBpZiBmYWlscwpAQCAtMjE3LDExICsyMDksMTMgQEAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
IGZpbHRlckIKICAgICBpbnQgdGFyZ2V0WVZhbHVlID0gdGFyZ2V0WSgpOwogICAgIGlmIChoYXNB
dHRyaWJ1dGUoU1ZHTmFtZXM6OnRhcmdldFhBdHRyKSAmJiAodGFyZ2V0WFZhbHVlIDwgMCB8fCB0
YXJnZXRYVmFsdWUgPj0gb3JkZXJYVmFsdWUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwog
ICAgIC8vIFRoZSBzcGVjIHNheXMgdGhlIGRlZmF1bHQgdmFsdWUgaXM6IHRhcmdldFggPSBmbG9v
ciAoIG9yZGVyWCAvIDIgKSkKICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dGFyZ2V0
WEF0dHIpKQogICAgICAgICB0YXJnZXRYVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihv
cmRlclhWYWx1ZSAvIDIpKTsKICAgICBpZiAoaGFzQXR0cmlidXRlKFNWR05hbWVzOjp0YXJnZXRZ
QXR0cikgJiYgKHRhcmdldFlWYWx1ZSA8IDAgfHwgdGFyZ2V0WVZhbHVlID49IG9yZGVyWVZhbHVl
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBUaGUgc3BlYyBzYXlzIHRoZSBk
ZWZhdWx0IHZhbHVlIGlzOiB0YXJnZXRZID0gZmxvb3IgKCBvcmRlclkgLyAyICkpCiAgICAgaWYg
KCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRhcmdldFlBdHRyKSkKICAgICAgICAgdGFyZ2V0WVZh
bHVlID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob3JkZXJZVmFsdWUgLyAyKSk7CkBAIC0yMzks
NiArMjMzLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckIKICAgICBmbG9hdCBkaXZpc29yVmFs
dWUgPSBkaXZpc29yKCk7CiAgICAgaWYgKGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6ZGl2aXNvckF0
dHIpICYmICFkaXZpc29yVmFsdWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgaWYg
KCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmRpdmlzb3JBdHRyKSkgewogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGtlcm5lbE1hdHJpeFNpemU7ICsraSkKICAgICAgICAgICAgIGRpdmlzb3JW
YWx1ZSArPSBrZXJuZWxNYXRyaXguaXRlbXMoKVtpXS0+dmFsdWUoKTsKQEAgLTI0Niw5ICsyNDEs
NyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQgogICAgICAgICAgICAgZGl2aXNvclZhbHVlID0g
MTsKICAgICB9CiAKLSAgICBhdXRvIGVmZmVjdCA9IEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShJ
bnRTaXplKG9yZGVyWFZhbHVlLCBvcmRlcllWYWx1ZSksIGRpdmlzb3JWYWx1ZSwgYmlhcygpLCBJ
bnRQb2ludCh0YXJnZXRYVmFsdWUsIHRhcmdldFlWYWx1ZSksIGVkZ2VNb2RlKCksIEZsb2F0UG9p
bnQoa2VybmVsVW5pdExlbmd0aFhWYWx1ZSwga2VybmVsVW5pdExlbmd0aFlWYWx1ZSksIHByZXNl
cnZlQWxwaGEoKSwga2VybmVsTWF0cml4KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0g
eyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0
dXJuIEZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZShJbnRTaXplKG9yZGVyWFZhbHVlLCBvcmRlcllW
YWx1ZSksIGRpdmlzb3JWYWx1ZSwgYmlhcygpLCBJbnRQb2ludCh0YXJnZXRYVmFsdWUsIHRhcmdl
dFlWYWx1ZSksIGVkZ2VNb2RlKCksIEZsb2F0UG9pbnQoa2VybmVsVW5pdExlbmd0aFhWYWx1ZSwg
a2VybmVsVW5pdExlbmd0aFlWYWx1ZSksIHByZXNlcnZlQWxwaGEoKSwga2VybmVsTWF0cml4KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAppbmRleCAzOTY3MGZlNjJmZmJlNmFiYTFjY2M2MjQ3
OTQwNDVkZmI2YzJjNWI3Li4xZjU5YWVjMmFhYTUxNDgwMDMzZjRlMDJmNzg5YjNmYzc1NzI4OWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
aApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHpl
IDxrcml0QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEwMyw3ICsx
MDMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7
IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggZDdlM2I4OTlkYzk1
NjljMjAzYmU3OWUwN2MzMTkyN2I1Y2M4MzE4YS4uOTY4NGZhYjgwMGNjMDU2YTgzNGI3NDdlY2Yy
ZDczZGJhZjBmYzY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA1IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yMiwxMCArMjIsOCBAQAogI2luY2x1ZGUgIlNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRkVEaWZmdXNlTGlnaHRpbmcuaCIKLSNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1
ZGUgIlNWR0ZFTGlnaHRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgog
I2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTE1MSwxMyArMTQ5LDggQEAgdm9p
ZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgU1ZHRkVMaWdodEUKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJiBmaWx0ZXJCdWlsZGVyKSBjb25zdAorUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3Qo
Y29uc3QgU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlciwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZm
ZWN0QnlJZChpbjEoKSk7Ci0KLSAgICBpZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KICAgICBSZWZQdHIgbGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRM
aWdodEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTcwLDkgKzE2Myw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyCiAK
ICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9y
RmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAot
ICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShjb2xvciwgc3VyZmFj
ZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxV
bml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVm
ZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4gZWZmZWN0
OworICAgIHJldHVybiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGNvbG9yLCBzdXJmYWNlU2Nh
bGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRM
ZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCmluZGV4IGIyYWFjOGIwM2VkMjRkMjFkOThiNTE5ZmJhOGU1Zjk0NWNhMzA4MGQuLmM4
NWNjOGNiYjEwYjUyNmQ4OWY1NDljMTEyOGM0MzJmNmUzZjYzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2xpdmVy
QG5lcmdldC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU4LDcgKzU4LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVy
RWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBW
ZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB7IGluMSgpIH07IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJF
ZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0
cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmlt
YXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDA5YmQ5YTgyYjRmYzc5MDYxYjkz
MTAxZWZkOThkNTU5NDYwNTZhNmIuLmI2MmM0NjQ5YmUxMzk5NmMxODFlM2E5ODZlMGY5YzNjM2Q1
M2RiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBP
bGl2ZXIgSHVudCA8b2xpdmVyQG5lcmdldC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTIxLDggKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2lu
Y2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKKyNpbmNsdWRlICJGRURpc3BsYWNlbWVudE1hcC5o
IgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIApAQCAtMTE1LDE3ICsxMTQsOSBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTgogICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKK1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBj
b25zdAogewotICAgIGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKLSAgICBhdXRvIGlucHV0MiA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjIo
KSk7Ci0gICAgCi0gICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoeENo
YW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxlKCkpOwotICAgIGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MS5yZWxlYXNlTm9uTnVsbCgpLCBpbnB1dDIucmVs
ZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIEZFRGlzcGxh
Y2VtZW50TWFwOjpjcmVhdGUoeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9yKCks
IHNjYWxlKCkpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKaW5kZXggZjJjNmQwYjE4
Zjg1Yzk0ZjM4NGY1YmQxYmVmYzM1OWVkZTgyM2U2YS4uMmJlNmFjNDIyZjM1NDFlZjMxOThhNGQ3
YTg1ZWYxNTY2ZDU3NDQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC05MSw3ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRl
ckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSwgaW4y
KCkgfTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAg
ICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVh
dGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRM
aWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxl
bWVudC5jcHAKaW5kZXggYTY4NmJiOGZhMzhkOWRkZmEyOGUwMmFlZDk1ZTQxYjA4YTM2ZjJmNy4u
OTE2ZjAzYzBmOTE1N2VjODI4YzkyZTk5YjYzYmQ2MjJlOTUyNmE0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAgUmVmPFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudD4gU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdG
RURpc3RhbnRMaWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVmPExpZ2h0
U291cmNlPiBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKFNWR0ZpbHRlckJ1
aWxkZXImKSBjb25zdAorUmVmPExpZ2h0U291cmNlPiBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6
OmxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdAogewogICAgIHJldHVy
biBEaXN0YW50TGlnaHRTb3VyY2U6OmNyZWF0ZShhemltdXRoKCksIGVsZXZhdGlvbigpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaAppbmRleCBm
YmRmNzFjMGVjYmQ5Zjk5N2Q2OWVhNjU0YjlmNWJhMDMxN2Q3MWNjLi5iYmJmZTk0NzM5YjQ0Mzlj
MDYwNmJjMTM4OGVkODBmNzIyNzI1ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzdGFudExpZ2h0RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCi0gICAgUmVmPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShTVkdGaWx0ZXJCdWls
ZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShj
b25zdCBTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiB9Owogc3RhdGljX2Fzc2Vy
dChzaXplb2YoU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50KSA9PSBzaXplb2YoU1ZHRkVMaWdodEVs
ZW1lbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwCmluZGV4IGMxZGVkYjc4NWEwMDkzY2IwY2JhNDE1MWVjM2M2NjQyMzE4MTY2MjAuLjQ1OTkx
MGU1NGQyZjYwNTZlYTI1OWIxODgzOWIzZTNlOWI1MzE2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw3ICsyMiw2IEBACiAj
aW5jbHVkZSAiU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJT
dHlsZS5oIgpAQCAtOTcsMTIgKzk2LDggQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CitSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0g
ICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAg
IGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE1LDkgKzExMCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRl
ckJ1aWxkCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlp
bmdDb2xvckZpbHRlcihzdmdTdHlsZS5mbG9vZENvbG9yKCkpOwogICAgIGZsb2F0IG9wYWNpdHkg
PSBzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKTsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVEcm9wU2hh
ZG93OjpjcmVhdGUoc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGR4KCksIGR5KCks
IGNvbG9yLCBvcGFjaXR5KTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEu
cmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIEZFRHJv
cFNoYWRvdzo6Y3JlYXRlKHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBk
eSgpLCBjb2xvciwgb3BhY2l0eSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCmluZGV4IDNlNDA1ZGU0
ODljNjgxYTc2YzQ0ZjlhODI5NzMzYTIwMjZiNGQ4ZmEuLjQ5YmVmMGEzZTRjNzJmYTllMmYzM2E3
NmE5NTlmZGVmNGYzNjIxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTUzLDcgKzUzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0
SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmlt
YXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAppbmRleCBmMzI4Y2M3YzE1ZWU3
OTFiNGFhYmEzYThlNzFhODA0YzgwOTNkY2ZlLi5mMDE0Y2NmZmRmYTljYjhhYTY4MDEwNTJiYTlm
ZjI2MDgxZDQ2NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAK
QEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA3LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC01OCwxMiArNTksMTIgQEAgYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6c2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWEKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUg
PSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpOwogCiAgICAgQ29sb3IgY29sb3IgPSByZW5k
ZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihzdmdTdHlsZS5mbG9vZENv
bG9yKCkpOwpAQCAtNzIsNCArNzMsNCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29k
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0CiAgICAgcmV0dXJuIEZFRmxv
b2Q6OmNyZWF0ZShjb2xvciwgb3BhY2l0eSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKaW5kZXggYWVkNjY5MTkzM2Jk
MDJmMzMwMWE5MjM5N2I3NDA1OWZmNmJlYzRiZS4uZDNlZWRlYzFjM2MwY2NiYzk3Mzk3ZmI1MWIx
NzQwZjI4ZWEyNTkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKQEAg
LTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zNiw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYg
cHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Ry
eTsgfQogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggYzFhOTYzNjEw
ZGY3NzlkNTM3ZjNlOWFiNTNkMmIyZjg1MDQ0MGU2Mi4uYjVmM2M3YjZjZWZmZDY1ZGZkMGFlMTFh
NGE5YjJiMmUwZDgzYjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDggKzIyLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCIKIAotI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKKyNpbmNs
dWRlICJGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAi
U1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
QEAgLTk1LDE4ICs5NCwxMiBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKK1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAogewotICAg
IGF1dG8gaW5wdXQxID0gZmlsdGVyQnVpbGRlci5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBp
ZiAoIWlucHV0MSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBpZiAoc3RkRGV2aWF0
aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGF1dG8gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShzdGREZXZpYXRp
b25YKCksIHN0ZERldmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVm
ZmVjdHMoKSA9IHsgaW5wdXQxLnJlbGVhc2VOb25OdWxsKCkgfTsKLSAgICByZXR1cm4gZWZmZWN0
OworICAgIHJldHVybiBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKHN0ZERldmlhdGlvblgoKSwgc3Rk
RGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCmluZGV4
IDQ4MDMyMmZmNzA3NTg0NDI5Njk1YjQ5N2FlNjY0NWVkMDliZjhjMWQuLjUyMWFlMjA0ZWI0ZjUy
YzZkMzc5OTllNDRlMjJiMDUyODhiODMyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTUzLDcgKzUzLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0
cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7
IGluMSgpIH07IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6
Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBlNjM1ZDEyNjMxODQwNzU2NDUwY2YyNDE1NmQxM2IzMjI4YzUxZTc5Li4yMDExOTE2MTEz
NDYwYmNkMTI2ZDk2YWYyMzFlYzlkMGE0M2ViM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAxMCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdl
QnVmZmVyPiwgRmxvYXRSZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZl
CiAgICAgcmV0dXJuIHsgaW1hZ2VCdWZmZXIsIGltYWdlUmVjdCB9OwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNv
bnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25z
dAogewogICAgIGlmIChtX2NhY2hlZEltYWdlKQogICAgICAgICByZXR1cm4gRkVJbWFnZTo6Y3Jl
YXRlKFJlZiB7ICptX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpIH0s
IHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7CkBAIC0yMjcsNCArMjI3LDQgQEAgdm9pZCBTVkdGRUlt
YWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4m
IHVybHMpIGNvbnMKICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKGhyZWYoKSkpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IGRmOWQ2ZWYwNDFlNTRiMmFiZDIyMDA1
ZDkwMzRiYmE2OWUyNWJlNTEuLmZjZmQxZWUyY2Q0OGE1NjdkYmRjZjIxZjE4Yzg2MjQxYzA0Y2Mx
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Nyw3ICs1
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnR1cGxlPFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZs
b2F0UmVjdD4gaW1hZ2VCdWZmZXJGb3JFZmZlY3QoKSBjb25zdDsKIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBj
bGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgKaW5kZXggY2QwYmZiOWVkY2Zk
N2I0ZTFhZjM5YjU1ZWRiYmJkNzg0YWFlYTg5ZC4uMWNiMjdkZjMxNTA0MDE3YzY5OWUwMTBjZWQ0
YjBkNWQ2MDBiYzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgKQEAg
LTMyLDcgKzMyLDcgQEAgY2xhc3MgU1ZHRmlsdGVyQnVpbGRlcjsKIGNsYXNzIFNWR0ZFTGlnaHRF
bGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
U1ZHRkVMaWdodEVsZW1lbnQpOwogcHVibGljOgotICAgIHZpcnR1YWwgUmVmPExpZ2h0U291cmNl
PiBsaWdodFNvdXJjZShTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UmVmPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJikgY29u
c3QgPSAwOwogICAgIHN0YXRpYyBTVkdGRUxpZ2h0RWxlbWVudCogZmluZExpZ2h0RWxlbWVudChj
b25zdCBTVkdFbGVtZW50Kik7CiAKICAgICBmbG9hdCBhemltdXRoKCkgY29uc3QgeyByZXR1cm4g
bV9hemltdXRoLT5jdXJyZW50VmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5jcHAKaW5kZXggYmMzNGU3OGUwMGRmNzE2ZjcxNzFlZWY5ZGQ3ODJkNDVhYzM2YmUx
Yi4uNDJkZDVjYzUyMzAxODMxNmU5MjdiZDIyYzU0ODcxZmE5MWVhODZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMTAgKzI0LDggQEAKIAogI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZFTWVyZ2UuaCIKLSNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKICNp
bmNsdWRlICJTVkdGRU1lcmdlTm9kZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWls
ZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogCkBAIC00NSwyNSArNDQsMTcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdG
RU1lcmdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRU1lcmdlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlcikgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5n
PiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdAogewot
ICAgIEZpbHRlckVmZmVjdFZlY3RvciBtZXJnZUlucHV0czsKLQotICAgIGZvciAoYXV0byYgbWVy
Z2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PigqdGhpcykpIHsK
LSAgICAgICAgYXV0byBtZXJnZUVmZmVjdCA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZCht
ZXJnZU5vZGUuaW4xKCkpOwotICAgICAgICBpZiAoIW1lcmdlRWZmZWN0KQotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIG1lcmdlSW5wdXRzLmFwcGVuZChtZXJnZUVmZmVjdC5y
ZWxlYXNlTm9uTnVsbCgpKTsKLSAgICB9Ci0KLSAgICBtZXJnZUlucHV0cy5zaHJpbmtUb0ZpdCgp
OwotCi0gICAgaWYgKG1lcmdlSW5wdXRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShtZXJnZUlucHV0cy5zaXpl
KCkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSBXVEZNb3ZlKG1lcmdlSW5wdXRzKTsK
LSAgICByZXR1cm4gZWZmZWN0OworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBpbnB1dHNOYW1lczsK
KyAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VOb2Rl
RWxlbWVudD4oKnRoaXMpKQorICAgICAgICBpbnB1dHNOYW1lcy5hcHBlbmQobWVyZ2VOb2RlLmlu
MSgpKTsKKyAgICByZXR1cm4gaW5wdXRzTmFtZXM7CiB9CiAKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRzKSBjb25zdAoreworICAgIHJldHVybiBG
RU1lcmdlOjpjcmVhdGUoaW5wdXRzLnNpemUoKSk7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKaW5kZXggNDM3Y2Q3MjU2MzJj
NWY0YzUyNDg5NGNjMzI2Y2EwOWI0MTk4NTE3Zi4uYmY2ZWNiNmRiMGVmZjU3NTlmNWQ1ZDJkZWIz
MWQ5NmJjNDRiZWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKQEAg
LTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zNSw3ICszNiw4IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRU1lcmdlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBw
cm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5
OyB9CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0
c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVy
RWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAKaW5kZXggY2IwYjZhYzY3NzI1ZmMwZWY3OWNjZjMxMmY2ZjRmMmUxYjZhYjRj
NS4uYWZiOTk5NDAwZDUwMjY2NzM0MjdlYjc1MDg2NTVlZTJjOGNjMWY5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDggKzIxLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgiCiAKLSNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisjaW5jbHVk
ZSAiRkVNb3JwaG9sb2d5LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQ
YXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAt
MTE0LDIwICsxMTMsMTIgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVy
QnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0gICAgYXV0byBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIGlmICghaW5w
dXQxKQorICAgIGlmIChyYWRpdXNYKCkgPCAwIHx8IHJhZGl1c1koKSA8IDApCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgZmxvYXQgeFJhZGl1cyA9IHJhZGl1c1goKTsKLSAgICBmbG9h
dCB5UmFkaXVzID0gcmFkaXVzWSgpOwotICAgIGlmICh4UmFkaXVzIDwgMCB8fCB5UmFkaXVzIDwg
MCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhv
bG9neTo6Y3JlYXRlKHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOwotICAgIGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MS5yZWxlYXNlTm9uTnVsbCgpIH07Ci0gICAgcmV0
dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gRkVNb3JwaG9sb2d5OjpjcmVhdGUoc3ZnT3BlcmF0b3Io
KSwgcmFkaXVzWCgpLCByYWRpdXNZKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAppbmRleCBjYWJmMDU4
MGMyNTM0ZGViNDUxNjg5MWJhNTI5YTdlYTA2MWRmYTVkLi4zNGUyNzcxOGFjYzYzNGY1MTY5NzVl
ZWUyOGM1YTViYTM1ZDhjN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERp
cmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC04MSw3ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCBlZTA2MzljYjM0NzNlNjFlNmY0Nzgx
M2YxZmI4Njc2Y2UwN2FkNjcyLi44NDNmOGRlNzdhYjhjODFkYmEzM2FmMjFkZjYwYzhkMmU4Y2Iy
NzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MjMsOCArMjMsNiBAQAogI2luY2x1ZGUgIlNWR0ZFT2Zmc2V0RWxlbWVudC5oIgogCiAjaW5jbHVk
ZSAiRkVPZmZzZXQuaCIKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdG
aWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogCkBAIC04MSwxNSArNzksOSBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIpIGNvbnN0CitSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBT
VkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAg
ICBhdXRvIGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAg
aWYgKCFpbnB1dDEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBlZmZlY3Qg
PSBGRU9mZnNldDo6Y3JlYXRlKGR4KCksIGR5KCkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkgPSB7IGlucHV0MS5yZWxlYXNlTm9uTnVsbCgpIH07Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAg
ICByZXR1cm4gRkVPZmZzZXQ6OmNyZWF0ZShkeCgpLCBkeSgpKTsKIH0KIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCmluZGV4
IDg5OTZmMjgyYjAxZThkOWNkNjY3YmYyMGI1Y2Q5ODhhNTk5YWY4ODguLmY4NTk1OThhMGZlNmEw
ZDdhODg0YjBjMGM1Yjk4YmVmMmNmNDdiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDcgKzQ3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0
SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmlt
YXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKaW5kZXggNWYw
OWI3MDk3OTlmZmZhY2NkYTdkZGQ0NmYzMmUzMTZjNjExZTc0Yy4uYmQ0YjU2NmNhOTAxMDhhZWNh
ODVkZWU0Y2U1ZjRhYTk4NThlN2NkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBv
aW50TGlnaHRFbGVtZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8U1ZHRkVQb2ludExpZ2h0
RWxlbWVudD4gU1ZHRkVQb2ludExpZ2h0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCi1SZWY8TGlnaHRTb3VyY2U+IFNWR0ZFUG9pbnRMaWdodEVs
ZW1lbnQ6OmxpZ2h0U291cmNlKFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CitSZWY8
TGlnaHRTb3VyY2U+IFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKGNvbnN0IFNW
R0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludDNEIHBvc2l0
aW9uOwogICAgIGlmIChidWlsZGVyLnByaW1pdGl2ZVVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFUG9pbnRMaWdodEVsZW1lbnQuaAppbmRleCAzM2E1YmQ3NDkyMDgyOGM5OTg2NDViNzIyZjcy
YTc0NWU0OGRhNzllLi5jNDdhNjA1NmU4ODdkYTA4MWEwNGYzYjk1MmJkZTQ1YmNkYTlkOWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgKQEAgLTMwLDcg
KzMwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRVBvaW50TGlnaHRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVmPExpZ2h0U291cmNlPiBs
aWdodFNvdXJjZShTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPExp
Z2h0U291cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3Zl
cnJpZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoU1ZHRkVQb2ludExpZ2h0RWxlbWVudCkg
PT0gc2l6ZW9mKFNWR0ZFTGlnaHRFbGVtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBjZDdlNzJkOWZiZDYw
OTI4MDAzZjAyMWU2NzllMTMwZDE4N2JjNzRhLi42ODE1MjY4MDgyZmQ4OGMyNjc3NzlmMzExOTg5
M2VkNjA4MzIwNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMTAgKzIzLDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgiCiAKLSNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGRVNwZWN1bGFyTGlnaHRpbmcuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR0ZFTGlnaHRFbGVtZW50LmgiCi0jaW5j
bHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KQEAgLTE2MCwyNyArMTU5LDIxIEBAIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6bGlnaHRFbGVtZW50QXR0cmlidXRlQ2hhbmdlZChjb25zdCBTVkdGRUxpZ2h0CiAgICAgcHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIm
IGZpbHRlckJ1aWxkZXIpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYgZmls
dGVyQnVpbGRlciwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKLSAgICBhdXRv
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXIuZ2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgaWYgKCFp
bnB1dDEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgUmVmUHRyIGxpZ2h0RWxlbWVu
dCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRoaXMpOwogICAgIGlmICgh
bGlnaHRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGF1dG8g
bGlnaHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNlKGZpbHRlckJ1aWxkZXIpOwog
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBDb2xvciBj
b2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRl
cmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIGF1dG8gZWZm
ZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBz
cGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgo
KSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwotICAgIGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MS5yZWxlYXNlTm9uTnVsbCgpIH07Ci0gICAgcmV0
dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoY29sb3Is
IHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwg
a2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNv
dXJjZSkpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAppbmRleCA0ZDFiNTMxYzQy
YmViOGNkZmEyMDE1MjE2MjExNjUxMGQwMDliYzZlLi42YTIyYmU0Y2M2NDk1ZDRjN2IwZjU0NThm
YTU3YzQ4NjBmZTE0MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2xpdmVyQG5lcmdldC5jb20+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU4LDcgKzU4LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGlu
MSgpIH07IH0KKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9Owog
ICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3Jl
YXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGln
aHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQu
Y3BwCmluZGV4IDY4ODI5NmU0YzA4ZDY1MmEwMDNmODFjMDg5ODk2ZmQ5YmJhNDY5YjYuLmI2NTE0
ZGVkMmIyMzgyYWQ1ZTFiYzQ2NDE4MGJlNzhiOWRlMmY5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwCkBAIC0yMCw4ICsyMCw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgiCiAKLSNpbmNs
dWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVk
ZSAiU3BvdExpZ2h0U291cmNlLmgiCkBAIC00MCw3ICszOCw3IEBAIFJlZjxTVkdGRVNwb3RMaWdo
dEVsZW1lbnQ+IFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVTcG90TGlnaHRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZjxMaWdodFNvdXJjZT4gU1ZHRkVTcG90TGlnaHRF
bGVtZW50OjpsaWdodFNvdXJjZShTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyKSBjb25zdAorUmVm
PExpZ2h0U291cmNlPiBTVkdGRVNwb3RMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKGNvbnN0IFNW
R0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgRmxvYXRQb2ludDNEIHBvc2l0
aW9uOwogICAgIEZsb2F0UG9pbnQzRCBwb2ludHNBdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwb3RMaWdodEVsZW1lbnQuaAppbmRleCAzZjc3MTdjMTI2NWM0ZjMxZjUzMDg4NjhkNDdjOTc4
Nzk3YTczMjExLi4wNzQzNmNjMDE2NjNiNTIxNTYyNGE2ZTEyZDcxNjA2ODFlOTY1MjU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVTcG90TGlnaHRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVmPExpZ2h0U291cmNlPiBsaWdodFNv
dXJjZShTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPExpZ2h0U291
cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7
CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoU1ZHRkVTcG90TGlnaHRFbGVtZW50KSA9PSBzaXpl
b2YoU1ZHRkVMaWdodEVsZW1lbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCmluZGV4IGVmOGQ0MDhiNmI4YjViMzQ1MzkwOGU4ZDVmNGMwYzUxOTg0NzQ5MWEuLjJh
N2EzZjQ5M2JlYWZhMWUyZDIzNGNlM2E5ZGNhM2U4MjMzODU4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMywxMCArMjMsNyBAQAogI2luY2x1ZGUgIlNWR0ZF
VGlsZUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkZFVGlsZS5oIgotI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgotI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsMTUgKzY3LDkgQEAgdm9p
ZCBTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIp
IGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNv
bnN0CiB7Ci0gICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwotICAgIGlmICghaW5wdXQxKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1
dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygp
ID0geyBpbnB1dDEucmVsZWFzZU5vbk51bGwoKSB9OwotICAgIHJldHVybiBlZmZlY3Q7CisgICAg
cmV0dXJuIEZFVGlsZTo6Y3JlYXRlKCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCmluZGV4IGNhYmFjZTZiZDAxYzJiMWQz
NTY0YTVjZWU1YzI3NWI2Njk2ZjlkNDEuLjMzYmNlMmU0NDQyMzVlY2MwYmM0ZTIwMGZhNjI5YjY5
NDg5ZDc2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDIs
NyArNDIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZp
bHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVj
dG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNW
R0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAppbmRleCAxNTFiN2I5ZThlMDhhNDNlN2NjY2I2ODA5
YWE3MjkxNDZkYmJmMGQ4Li5iZDAwZDVhMzAyNjM1ZjE2ZGFmYjZlMDUxNzc4YzkyZjQyNjcxMTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0xMTcsMTEgKzExNywxMiBAQCB2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVp
bGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7CiAgICAgaWYgKGJhc2VG
cmVxdWVuY3lYKCkgPCAwIHx8IGJhc2VGcmVxdWVuY3lZKCkgPCAwKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIHJldHVybiBGRVR1cmJ1bGVuY2U6OmNyZWF0ZSh0eXBlKCksIGJhc2VG
cmVxdWVuY3lYKCksIGJhc2VGcmVxdWVuY3lZKCksIG51bU9jdGF2ZXMoKSwgc2VlZCgpLCBzdGl0
Y2hUaWxlcygpID09IFNWR19TVElUQ0hUWVBFX1NUSVRDSCk7CiB9CiAKLX0KK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
CmluZGV4IDUwYWY5MTBlYjU4ZTJjOTIyNDFhOTBkYThjYmRmZGM2ODE0ZjkzMTYuLjYwYWExNDQ1
ZmUyNmUzNmJiOGM2OWUxMDM5ZDJkYmMzMjlmZDc2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTE5LDcgKzExOSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1
aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8
U1ZHQW5pbWF0ZWROdW1iZXI+IG1fYmFzZUZyZXF1ZW5jeVggeyBTVkdBbmltYXRlZE51bWJlcjo6
Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggODc4ZDExMmMwMjk4N2QxZmJm
MTYxNDFhY2UyYjhiODFmNWViMjkyZS4uN2RmOTIwNmZhYTkxZWFmZWZlZmRhNTI5ZTkyZjY5YzUx
ZjNkOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTAgKzM2
LDYgQEAgY2xhc3MgU1ZHRmlsdGVyQnVpbGRlcjsKIGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyA6IHB1YmxpYyBTVkdFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk7CiBwdWJsaWM6
Ci0gICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
JikgY29uc3QgPSAwOwotICAgIC8vIFJldHVybnMgdHJ1ZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBk
aWZmZXJlbnQgZnJvbSB0aGUgb2xkIG9uZS4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQogICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdFbGVtZW50PjsKIAogICAgIGNvbnN0
IFNWR0xlbmd0aFZhbHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LT5jdXJyZW50VmFsdWUoKTsg
fQpAQCAtNTQsNiArNTAsMTEgQEAgcHVibGljOgogICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBoZWln
aHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcm
IHJlc3VsdEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yZXN1bHQ7IH0KIAorICAgIC8vIFJldHVybnMg
dHJ1ZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb2xkIG9uZS4KKyAg
ICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0
ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXIm
LCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXIuY3BwCmluZGV4IDQ0OWRlOTczZjg2MjQ0NmNiMGZiYzFmNWY4M2IwZTQx
YjIwYjE2NDIuLjExODg0ZGJmNGU0YWVhZDM0M2Y4NmMwNjJkYmY2MTY2Y2Y4Njc1MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApA
QCAtMzAsMjUgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNWR0Zp
bHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwg
U1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBj
b25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCYgcHJldmlv
dXNFZmZlY3QpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZShmaWx0ZXJFbGVtZW50LCBidWlsZGVyLCBy
ZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgY2xpcE9wZXJhdGlvbiwgdGFyZ2V0Qm91bmRpbmdC
b3gsIHRhcmdldEJvdW5kaW5nQm94LCAmcHJldmlvdXNFZmZlY3QpOwotfQotCi1SZWZQdHI8U1ZH
RmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50
LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVn
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQotewotICAgIHJldHVybiBj
cmVhdGUoZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUs
IENsaXBPcGVyYXRpb246OkludGVyc2VjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0Jv
eCwgbnVsbHB0cik7Ci19Ci0KLVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNW
R0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2Fs
ZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJl
Z2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBw
cmV2aW91c0VmZmVjdCkKK1JlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0Zp
bHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwg
Q2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKIHsKICAgICBhdXRvIGZpbHRl
ciA9IGFkb3B0UmVmKCpuZXcgU1ZHRmlsdGVyKHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBj
bGlwT3BlcmF0aW9uLCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBmaWx0ZXJFbGVt
ZW50LnByaW1pdGl2ZVVuaXRzKCkpKTsKIAotICAgIGlmICghcHJldmlvdXNFZmZlY3QpCi0gICAg
ICAgIGJ1aWxkZXIuc2V0dXBCdWlsdGluRWZmZWN0cyhTb3VyY2VHcmFwaGljOjpjcmVhdGUoKSk7
Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLnNldHVwQnVpbHRpbkVmZmVjdHMoeyAqcHJldmlv
dXNFZmZlY3QgfSk7Ci0KKyAgICBidWlsZGVyLnNldHVwQnVpbHRpbkVmZmVjdHMoU291cmNlR3Jh
cGhpYzo6Y3JlYXRlKCkpOwogICAgIGJ1aWxkZXIuc2V0VGFyZ2V0Qm91bmRpbmdCb3godGFyZ2V0
Qm91bmRpbmdCb3gpOwogICAgIGJ1aWxkZXIuc2V0UHJpbWl0aXZlVW5pdHMoZmlsdGVyRWxlbWVu
dC5wcmltaXRpdmVVbml0cygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA2MWVkN2QzNTBhOTVjNDI0YjY0ZDk3YzQ0Yzc4NGJl
NDIxOWJiZTNlLi42MGRiNWIyMTlmNmYzOGEzMDI3MTQwYzVmMGRiMmQxYWMyMmI4Y2NlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaApAQCAt
MzYsOSArMzYsNyBAQCBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50OwogCiBjbGFzcyBTVkdGaWx0ZXIg
ZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNWR0Zp
bHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVyJiwgUmVuZGVy
aW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0Vm
ZmVjdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVt
ZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldEJvdW5kaW5nQm94KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3Jl
YXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVyJiwgUmVuZGVyaW5nTW9kZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZp
bHRlckVmZmVjdCogcHJldmlvdXNFZmZlY3QpOworICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVy
PiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdN
b2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0Jv
eCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShj
b25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlIHByaW1pdGl2ZVVuaXRzLCBTVkdGaWx0ZXJFeHByZXNzaW9uJiYpOwogCiAgICAgRmxvYXRS
ZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRCb3VuZGluZ0Jv
eDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCBmMDU1MTEzMTA1ZGFjODQ5MmU4ODBkMzVkMTdlMzRk
OTg2MGU1ZDlkLi41Zjg4NTY1MDA4YmNmN2Q2ZGM4ZDU5MGUwNzAzNjgwMzAzZjE0NDA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmNwcApAQCAtMzksOCArMzksOCBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heENvdW50Q2hpbGROb2RlcyA9IDIwMDsKIAogdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjpzZXR1
cEJ1aWx0aW5FZmZlY3RzKFJlZjxGaWx0ZXJFZmZlY3Q+IHNvdXJjZUdyYXBoaWMpCiB7Ci0gICAg
bV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSgpLCBzb3VyY2VH
cmFwaGljLnB0cigpKTsKLSAgICBtX2J1aWx0aW5FZmZlY3RzLmFkZChTb3VyY2VBbHBoYTo6ZWZm
ZWN0TmFtZSgpLCBTb3VyY2VBbHBoYTo6Y3JlYXRlKHNvdXJjZUdyYXBoaWMpKTsKKyAgICBtX2J1
aWx0aW5FZmZlY3RzLmFkZChTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCksIHNvdXJjZUdyYXBo
aWMpOworICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCks
IFNvdXJjZUFscGhhOjpjcmVhdGUoc291cmNlR3JhcGhpYy0+b3BlcmF0aW5nQ29sb3JTcGFjZSgp
KSk7CiB9CiAKIHN0YXRpYyBPcHRpb25TZXQ8RmlsdGVyRWZmZWN0R2VvbWV0cnk6OkZsYWdzPiBl
ZmZlY3RHZW9tZXRyeUZsYWdzRm9yRWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQpAQCAtODMs
MTIgKzgzLDE2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxk
RmlsdGVyRWZmZWN0cyhTVkdGaWx0ZXJFbGVtZW50JiBmaWx0CiAgICAgaWYgKGZpbHRlckVsZW1l
bnQuY291bnRDaGlsZE5vZGVzKCkgPiBtYXhDb3VudENoaWxkTm9kZXMpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OworICAgIHNldEVm
ZmVjdElucHV0cyhzb3VyY2VBbHBoYSgpLCBGaWx0ZXJFZmZlY3RWZWN0b3IgeyBzb3VyY2VHcmFw
aGljKCkgfSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlw
ZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KGZpbHRlckVsZW1lbnQpKSB7
Ci0gICAgICAgIGVmZmVjdCA9IGVmZmVjdEVsZW1lbnQuYnVpbGQoKnRoaXMpOworICAgICAgICBh
dXRvIGlucHV0cyA9IG5hbWVkRWZmZWN0cyhlZmZlY3RFbGVtZW50LmZpbHRlckVmZmVjdElucHV0
c05hbWVzKCkpOworICAgICAgICBpZiAoIWlucHV0cykKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIGF1dG8gZWZmZWN0ID0gZWZmZWN0RWxlbWVudC5maWx0ZXJFZmZlY3Qo
KnRoaXMsICppbnB1dHMpOwogICAgICAgICBpZiAoIWVmZmVjdCkKLSAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKGF1dG8gZmxhZ3Mg
PSBlZmZlY3RHZW9tZXRyeUZsYWdzRm9yRWxlbWVudChlZmZlY3RFbGVtZW50KSkgewogICAgICAg
ICAgICAgYXV0byBlZmZlY3RCb3VuZGFyaWVzID0gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJl
Y3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlZmZlY3RFbGVt
ZW50LCBtX3ByaW1pdGl2ZVVuaXRzLCBtX3RhcmdldEJvdW5kaW5nQm94KTsKQEAgLTEwMywzMyAr
MTA3LDQ0IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmls
dGVyRWZmZWN0cyhTVkdGaWx0ZXJFbGVtZW50JiBmaWx0CiAgICAgICAgIGlmIChhdXRvIHJlbmRl
cmVyID0gZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpKQogICAgICAgICAgICAgYXBwZW5kRWZmZWN0
VG9FZmZlY3RSZW5kZXJlcigqZWZmZWN0LCAqcmVuZGVyZXIpOwogCi0gICAgICAgIGFkZChlZmZl
Y3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOworICAgICAgICBhZGROYW1lZEVmZmVjdChlZmZl
Y3RFbGVtZW50LnJlc3VsdCgpLCB7ICplZmZlY3QgfSk7CisgICAgICAgIHNldEVmZmVjdElucHV0
cygqZWZmZWN0LCBXVEZNb3ZlKCppbnB1dHMpKTsKICAgICB9CiAKLSAgICByZXR1cm4gZWZmZWN0
OworICAgIHJldHVybiBtX2xhc3RFZmZlY3Q7Cit9CisKK0ZpbHRlckVmZmVjdCYgU1ZHRmlsdGVy
QnVpbGRlcjo6c291cmNlR3JhcGhpYygpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2J1aWx0aW5F
ZmZlY3RzLmdldChGaWx0ZXJFZmZlY3Q6OnNvdXJjZUdyYXBoaWNOYW1lKCkpOworfQorCitGaWx0
ZXJFZmZlY3QmIFNWR0ZpbHRlckJ1aWxkZXI6OnNvdXJjZUFscGhhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gKm1fYnVpbHRpbkVmZmVjdHMuZ2V0KEZpbHRlckVmZmVjdDo6c291cmNlQWxwaGFOYW1l
KCkpOwogfQogCi12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFkZChjb25zdCBBdG9tU3RyaW5nJiBp
ZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KQordm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjph
ZGROYW1lZEVmZmVjdChjb25zdCBBdG9tU3RyaW5nJiBpZCwgUmVmPEZpbHRlckVmZmVjdD4mJiBl
ZmZlY3QpCiB7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkgewotICAgICAgICBtX2xhc3RFZmZlY3Qg
PSBlZmZlY3Q7CisgICAgICAgIG1fbGFzdEVmZmVjdCA9IFdURk1vdmUoZWZmZWN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2J1aWx0aW5FZmZlY3RzLmNvbnRhaW5zKGlk
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9sYXN0RWZmZWN0ID0gZWZmZWN0OwotICAgIG1f
bmFtZWRFZmZlY3RzLnNldChpZCwgbV9sYXN0RWZmZWN0KTsKKyAgICBtX2xhc3RFZmZlY3QgPSBX
VEZNb3ZlKGVmZmVjdCk7CisgICAgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLCBSZWYgeyAqbV9sYXN0
RWZmZWN0IH0pOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpn
ZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21TdHJpbmcmIGlkKSBjb25zdAorUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRmlsdGVyQnVpbGRlcjo6bmFtZWRFZmZlY3QoY29uc3QgQXRvbVN0cmluZyYgaWQp
IGNvbnN0CiB7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9sYXN0RWZm
ZWN0KQogICAgICAgICAgICAgcmV0dXJuIG1fbGFzdEVmZmVjdDsKIAotICAgICAgICByZXR1cm4g
bV9idWlsdGluRWZmZWN0cy5nZXQoU291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSgpKTsKKyAgICAg
ICAgcmV0dXJuICZzb3VyY2VHcmFwaGljKCk7CiAgICAgfQogCiAgICAgaWYgKG1fYnVpbHRpbkVm
ZmVjdHMuY29udGFpbnMoaWQpKQpAQCAtMTM4LDYgKzE1MywyOCBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21TdHJpbmcmIGlk
KSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWQpOwogfQogCitzdGQ6Om9w
dGlvbmFsPEZpbHRlckVmZmVjdFZlY3Rvcj4gU1ZHRmlsdGVyQnVpbGRlcjo6bmFtZWRFZmZlY3Rz
KFNwYW48Y29uc3QgQXRvbVN0cmluZz4gbmFtZXMpIGNvbnN0Cit7CisgICAgRmlsdGVyRWZmZWN0
VmVjdG9yIGVmZmVjdHM7CisKKyAgICBlZmZlY3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobmFt
ZXMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7CisgICAgICAgIGF1
dG8gZWZmZWN0ID0gbmFtZWRFZmZlY3QobmFtZSk7CisgICAgICAgIGlmICghZWZmZWN0KQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBlZmZlY3RzLnVuY2hlY2tl
ZEFwcGVuZChlZmZlY3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGVm
ZmVjdHM7Cit9CisKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6c2V0RWZmZWN0SW5wdXRzKEZpbHRl
ckVmZmVjdCYgZWZmZWN0LCBGaWx0ZXJFZmZlY3RWZWN0b3ImJiBpbnB1dHMpCit7CisgICAgbV9p
bnB1dHNNYXAuc2V0KHsgZWZmZWN0IH0sIFdURk1vdmUoaW5wdXRzKSk7Cit9CisKIHZvaWQgU1ZH
RmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZW5kZXJlcihGaWx0ZXJFZmZlY3Qm
IGVmZmVjdCwgUmVuZGVyT2JqZWN0JiBvYmplY3QpCiB7CiAgICAgbV9lZmZlY3RSZW5kZXJlci5h
ZGQoJm9iamVjdCwgJmVmZmVjdCk7CkBAIC0xNjEsOCArMTk4LDggQEAgYm9vbCBTVkdGaWx0ZXJC
dWlsZGVyOjpidWlsZEVmZmVjdEV4cHJlc3Npb24oRmlsdGVyRWZmZWN0JiBlZmZlY3QsIEZpbHRl
ckVmZmVjdFYKICAgICAKICAgICBleHByZXNzaW9uLmFwcGVuZCh7IGVmZmVjdCwgZWZmZWN0R2Vv
bWV0cnkoZWZmZWN0KSwgbGV2ZWwgfSk7CiAKLSAgICBmb3IgKGF1dG8mIGlucHV0RWZmZWN0IDog
ZWZmZWN0LmlucHV0RWZmZWN0cygpKSB7Ci0gICAgICAgIGlmICghYnVpbGRFZmZlY3RFeHByZXNz
aW9uKGlucHV0RWZmZWN0LCBzdGFjaywgbGV2ZWwgKyAxLCBleHByZXNzaW9uKSkKKyAgICBmb3Ig
KGF1dG8mIGlucHV0IDogbV9pbnB1dHNNYXAuZ2V0KGVmZmVjdCkpIHsKKyAgICAgICAgaWYgKCFi
dWlsZEVmZmVjdEV4cHJlc3Npb24oaW5wdXQsIHN0YWNrLCBsZXZlbCArIDEsIGV4cHJlc3Npb24p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IDZi
MzQ5ZmZjYzEyNjVkMzlhZWQ5MzFkY2ExYjAyZDBhM2QxNDY2YWYuLjBjOTVhNGNjYmQwMzMxYjMw
NGUwNTljYTdlZjFmZDhkZTczZDQwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTI1LDcgKzI1LDYgQEAK
ICNpbmNsdWRlICJTVkdGaWx0ZXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVz
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTQ2LDkgKzQ1LDYgQEAgcHVibGljOgogICAgIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2
ZVVuaXRzOyB9CiAgICAgdm9pZCBzZXRQcmltaXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlIHVuaXRzKSB7IG1fcHJpbWl0aXZlVW5pdHMgPSB1bml0czsgfQogCi0gICAgdm9pZCBh
ZGQoY29uc3QgQXRvbVN0cmluZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsK
LQogICAgIC8vIFJlcXVpcmVkIHRvIGNoYW5nZSB0aGUgYXR0cmlidXRlcyBvZiBhIGZpbHRlciBk
dXJpbmcgYW4gc3ZnQXR0cmlidXRlQ2hhbmdlZC4KICAgICB2b2lkIGFwcGVuZEVmZmVjdFRvRWZm
ZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0JiwgUmVuZGVyT2JqZWN0Jik7CiAgICAgaW5saW5lIEZp
bHRlckVmZmVjdCogZWZmZWN0QnlSZW5kZXJlcihSZW5kZXJPYmplY3QqIG9iamVjdCkgeyByZXR1
cm4gbV9lZmZlY3RSZW5kZXJlci5nZXQob2JqZWN0KTsgfQpAQCAtNTgsMTIgKzU0LDIyIEBAIHB1
YmxpYzoKICAgICBib29sIGJ1aWxkRXhwcmVzc2lvbihTVkdGaWx0ZXJFeHByZXNzaW9uJikgY29u
c3Q7CiAKIHByaXZhdGU6CisgICAgRmlsdGVyRWZmZWN0JiBzb3VyY2VHcmFwaGljKCkgY29uc3Q7
CisgICAgRmlsdGVyRWZmZWN0JiBzb3VyY2VBbHBoYSgpIGNvbnN0OworCisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gbmFtZWRFZmZlY3QoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0VmVjdG9yPiBuYW1lZEVmZmVjdHMoU3Bhbjxjb25zdCBB
dG9tU3RyaW5nPikgY29uc3Q7CisKKyAgICB2b2lkIGFkZE5hbWVkRWZmZWN0KGNvbnN0IEF0b21T
dHJpbmcmIGlkLCBSZWY8RmlsdGVyRWZmZWN0PiYmKTsKKyAgICB2b2lkIHNldEVmZmVjdElucHV0
cyhGaWx0ZXJFZmZlY3QmLCBGaWx0ZXJFZmZlY3RWZWN0b3ImJiBpbnB1dHMpOworCiAgICAgc3Rk
OjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4gZWZmZWN0R2VvbWV0cnkoRmlsdGVyRWZm
ZWN0JikgY29uc3Q7CiAgICAgYm9vbCBidWlsZEVmZmVjdEV4cHJlc3Npb24oRmlsdGVyRWZmZWN0
JiwgRmlsdGVyRWZmZWN0VmVjdG9yJiBzdGFjaywgdW5zaWduZWQgbGV2ZWwsIFNWR0ZpbHRlckV4
cHJlc3Npb24mKSBjb25zdDsKIAotICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEZpbHRl
ckVmZmVjdD4+IG1fYnVpbHRpbkVmZmVjdHM7Ci0gICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQ
dHI8RmlsdGVyRWZmZWN0Pj4gbV9uYW1lZEVmZmVjdHM7CisgICAgSGFzaE1hcDxBdG9tU3RyaW5n
LCBSZWY8RmlsdGVyRWZmZWN0Pj4gbV9idWlsdGluRWZmZWN0czsKKyAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIFJlZjxGaWx0ZXJFZmZlY3Q+PiBtX25hbWVkRWZmZWN0czsKICAgICBIYXNoTWFwPFJl
bmRlck9iamVjdCosIEZpbHRlckVmZmVjdCo+IG1fZWZmZWN0UmVuZGVyZXI7CisgICAgSGFzaE1h
cDxSZWY8RmlsdGVyRWZmZWN0PiwgRmlsdGVyRWZmZWN0VmVjdG9yPiBtX2lucHV0c01hcDsKIAog
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fbGFzdEVmZmVjdDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>