<?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>208432</bug_id>
          
          <creation_ts>2020-03-01 15:18:58 -0800</creation_ts>
          <short_desc>Begin moving off of live ranges for WebKit internals</short_desc>
          <delta_ts>2020-03-09 09:58:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1624420</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-01 15:18:58 -0800</bug_when>
    <thetext>Begin moving off of live ranges for WebKit internals, starting with TextIterator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624426</commentid>
    <comment_count>1</comment_count>
      <attachid>392105</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-01 16:11:59 -0800</bug_when>
    <thetext>Created attachment 392105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624442</commentid>
    <comment_count>2</comment_count>
      <attachid>392110</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-01 16:56:12 -0800</bug_when>
    <thetext>Created attachment 392110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624453</commentid>
    <comment_count>3</comment_count>
      <attachid>392114</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-01 18:53:46 -0800</bug_when>
    <thetext>Created attachment 392114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626506</commentid>
    <comment_count>4</comment_count>
      <attachid>392676</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-05 21:45:24 -0800</bug_when>
    <thetext>Created attachment 392676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627248</commentid>
    <comment_count>5</comment_count>
      <attachid>392871</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-07 11:06:09 -0800</bug_when>
    <thetext>Created attachment 392871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627282</commentid>
    <comment_count>6</comment_count>
      <attachid>392882</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-07 13:19:00 -0800</bug_when>
    <thetext>Created attachment 392882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627508</commentid>
    <comment_count>7</comment_count>
      <attachid>392882</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-08 08:55:52 -0700</bug_when>
    <thetext>Comment on attachment 392882
Patch

This patch looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627654</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-08 21:00:37 -0700</bug_when>
    <thetext>Committed r258129: &lt;https://trac.webkit.org/changeset/258129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627655</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-08 21:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/60210208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627727</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-09 06:58:03 -0700</bug_when>
    <thetext>Looks like this patch caused the following build error:

https://build.webkit.org/builders/Apple-Catalina-Debug-Build/builds/4480/steps/compile-webkit/logs/errors

/Volumes/Data/slave/catalina-debug/build/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:197:44: error: no matching constructor for initialization of &apos;WebCore::VisibleSelection&apos;

I&apos;ll try to see if I can come up with a fix, but if not, will do a roll-out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627728</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-09 07:01:46 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #10)
&gt; Looks like this patch caused the following build error:
&gt; 
&gt; https://build.webkit.org/builders/Apple-Catalina-Debug-Build/builds/4480/
&gt; steps/compile-webkit/logs/errors
&gt; 
&gt; /Volumes/Data/slave/catalina-debug/build/Source/WebKit/WebProcess/WebPage/
&gt; Cocoa/WebPageCocoa.mm:197:44: error: no matching constructor for
&gt; initialization of &apos;WebCore::VisibleSelection&apos;
&gt; 
&gt; I&apos;ll try to see if I can come up with a fix, but if not, will do a roll-out.

Looks like WebPageCocoa.mm was just missing a `#import &lt;WebCore/SimpleRange.h&gt;`. Will land a build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627729</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-09 07:05:11 -0700</bug_when>
    <thetext>Committed r258136: &lt;http://trac.webkit.org/r258136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627818</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-09 09:58:50 -0700</bug_when>
    <thetext>Thanks Jer!

I wonder how EWS missed that build failure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392105</attachid>
            <date>2020-03-01 16:11:59 -0800</date>
            <delta_ts>2020-03-01 16:56:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208432-20200301161155.patch</filename>
            <type>text/plain</type>
            <size>148492</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTA5NjRjY2E3NDAzNTZj
MDlmMWI2ZTI4Njc2MjcxOTFiYjc5ZjJmNS4uNjZhYTg4OGU3OTZlY2EzYjQ2ZTczZTUzNzFmNjc5
NWYxNmQxZWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMSBAQAorMjAyMC0wMy0wMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQmVnaW4gbW92aW5nIG9mZiBv
ZiBsaXZlIHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscywgc3RhcnRpbmcgd2l0aCBUZXh0SXRl
cmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBET00gUmFuZ2UgY2xhc3MgaXMgYSBsaXZlIHJhbmdlLiBUaGUgbGl2ZSB1cGRhdGluZyBmZWF0
dXJlIG9mIHRoZXNlIHJhbmdlcyBtZWFuCisgICAgICAgIHRoZXkgYXJlIGV4cGVuc2l2ZSB0byBj
cmVhdGUgYW5kIGRlc3Ryb3kgYW5kIGFsc28gbWFrZSBhbGwgRE9NIG11dGF0aW9uIG1vcmUgZXhw
ZW5zaXZlCisgICAgICAgIHdoaWxlIHRoZXkgYXJlIGFsaXZlLiBXZSB3aWxsIGJlIGFibGUgdG8g
c3BlZWQgdXAsIGxpa2VseSBtZWFzdXJhYmxlIG9uIFNwZWVkb21ldGVyLAorICAgICAgICBpZiB3
ZSBjYW4gY3V0IGRvd24gdXNlcyBvZiBsaXZlIHJhbmdlcy4KKworICAgICAgICAtIFJlZmFjdG9y
ZWQgdGhlIFN0YXRpY1JhbmdlIGNsYXNzIHRvIGNyZWF0ZSB0d28gbmV3IHN0cnVjdHMuCisgICAg
ICAgIC0gVGhlIEJvdW5kYXJ5UG9pbnQgc3RydWN0IGltcGxlbWVudHMgd2hhdCB0aGUgRE9NIHN0
YW5kYXJkIGNhbGxzIGEgYm91bmRhcnkgcG9pbnQsCisgICAgICAgICAgYSBub2RlIGFuZCBvZmZz
ZXQuIFNpbWlsYXIgdG8gdGhlIFJhbmdlQm91bmRhcnlQb2ludCBjbGFzcywgd2hpY2ggc3VwcG9y
dHMKKyAgICAgICAgICBiZWluZyB0aGUgYm91bmRhcnkgcG9pbnQgb2YgYSBsaXZlIHJhbmdlLCBi
dXQgc2ltcGxlciB0byB1c2UuCisgICAgICAgIC0gVGhlIFNpbXBsZVJhbmdlIHN0cnVjdCBpbXBs
ZW1lbnRzIHdoYXQgdGhlIERPTSBzdGFuZGFyZCBjYWxscyBhIHJhbmdlIChub3QgYSBsaXZlCisg
ICAgICAgICAgcmFuZ2UpLiBUaGlzIGlzIGxpa2UgU3RhdGljUmFuZ2UgYnV0IHdpdGhvdXQgdGhl
IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgRE9NIGJpbmRpbmcuCisgICAgICAgIC0gU2luY2UgU3Rh
dGljUmFuZ2UgaXMgZGVyaXZlZCBwdWJsaWNseSBmcm9tIFNpbXBsZVJhbmdlIHlvdSBjYW4gcGFz
cyBlaXRoZXIgdG8gYW55CisgICAgICAgICAgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIFN0YXRpY1Jh
bmdlLiBBbmQgc2luY2UgdGhlcmUgaXMgYSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgYQorICAgICAg
ICAgIFN0YXRpY1JhbmdlIGZyb20gYSBSYW5nZSB5b3UgY2FuIHBhc3MgYSBSYW5nZSB0byB0aG9z
ZSBmdW5jdGlvbnMgdG9vLgorICAgICAgICAtIFJlbmFtZWQgU3RhdGljUmFuZ2U6OmNyZWF0ZUZy
b21SYW5nZSB0byBqdXN0IFN0YXRpY1JhbmdlOjpjcmVhdGUuCisKKyAgICAgICAgLSBDaGFuZ2Vk
IHRoZSBmdW5jdGlvbnMgaW4gVGV4dEl0ZXJhdG9yIHRvIGJvdGggdGFrZSBhbmQgcmV0dXJuIFNp
bXBsZVJhbmdlIGluc3RlYWQKKyAgICAgICAgICBvZiBSYW5nZS4gQmVzaWRlcyBiZWluZyBhIGZp
cnN0IHN0ZXAgaW4gdGhlIHVzZSBvZiBsaXZlIHJhbmdlcywgdGhpcyBzaW1wbGlmaWVzCisgICAg
ICAgICAgdGhpbmdzIHNpbmNlIFNpbXBsZVJhbmdlIGNhbiBiZSBwYXNzZWQgYnkgdmFsdWUgYW5k
IHdlIGRvbid0IG5lZWQgdG8gdXNlIFJlZjw+CisgICAgICAgICAgYW5kIFJlZlB0cjw+LiBOb25l
IG9mIHRoZSBUZXh0SXRlcmF0b3IgZnVuY3Rpb25zIHN1cHBvcnQgd29ya2luZyBvbiBhIGRvY3Vt
ZW50CisgICAgICAgICAgdGhhdCBpcyBiZWluZyBtb2RpZmllZCwgc28gdGhlIGxpdmUgZmVhdHVy
ZXMgb2YgbGl2ZSByYW5nZSB3ZXJlIG5vdCBuZWVkZWQuCisgICAgICAgIC0gQ2hhbmdlZCB0aGUg
aW1wbGVtZW50YXRpb24gaW4gVGV4dEl0ZXJhdG9yIHRvIG5vdCB1c2UgbGl2ZSByYW5nZXMuCisg
ICAgICAgIC0gVXBkYXRlZCBhbGwgY2FsbGVycyBmb3IgdGhpcyBjaGFuZ2UsIGRvaW5nIG1pbmlt
YWwgY29udmVyc2lvbiwgYW5kIGNyZWF0aW5nIGxpdmUKKyAgICAgICAgICByYW5nZXMgYXMgbmVl
ZGVkLiBJdCB3YXNuJ3QgYSBnb2FsIHRvIGNvbnZlcnQgYWxsIG9mIHRoZW0uIFdlJ2xsIGdldCB0
byB0aGVtCisgICAgICAgICAgZXZlbnR1YWxseSBhcyB3ZSB2aXNpdCBhbGwgY29kZSBjcmVhdGlu
ZyBsaXZlIHJhbmdlcyB0byBjb252ZXJ0IHRvIG5vbi1saXZlCisgICAgICAgICAgd2hlcmVldmVy
IHBvc3NpYmxlLgorICAgICAgICAtIEZpbGVzIHRoYXQgaW5jbHVkZSBUZXh0SXRlcmF0b3IuaCBu
b3cgbmVlZCB0byBpbmNsdWRlIFNpbXBsZVJhbmdlLmggb3IKKyAgICAgICAgICBSYW5nZS5oLCBk
ZXBlbmRpbmcgb24gd2hhdCB0aGV5IHVzZSBmcm9tIFRleHRJdGVyYXRvci5oLiBCZWZvcmUgVGV4
dEl0ZXJhdG9yLmgKKyAgICAgICAgICB3b3VsZCBhbHdheXMgcHVsbCBSYW5nZS5oIGluLgorCisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VHcm91cC5oOiBSZW1vdmVk
IGEgc3RyYXkgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZgorICAgICAgICBTdGF0aWNSYW5nZS4KKyAg
ICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcDogUmVtb3Zl
ZCB1bmVlZGVkIGluY2x1ZGVzIGFuZCBjb2RlLgorCisgICAgICAgICogU291cmNlcy50eHQ6IEFk
ZGVkIEJvdW5kYXJ5UG9pbnQuY3BwIGFuZCBTaW1wbGVSYW5nZS5jcHAuCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBCb3VuZGFyeVBvaW50LmNwcC9o
IGFuZCBTaW1wbGVSYW5nZS5jcHAvaC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRv
T2Zmc2V0SW5SYW5nZSk6IFVzZSAiLiIgaW5zdGVhZCBvZiAiLT4iIHNpbmNlCisgICAgICAgIFRl
eHRJdGVyYXRvcjo6cmFuZ2Ugbm93IHJldHVybnMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIGEgc21h
cnQgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omxlbmd0aEZvclJh
bmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNo
ZXNUZXh0TmVhclJhbmdlKTogVXNlIGNyZWF0ZUxpdmVSYW5nZSBzbyB3ZQorICAgICAgICBjYW4g
Y29udGludWUgdG8gdXNlIGNvZGUgdGhhdCBleHBlY3RzIGEgbGl2ZSByYW5nZS4KKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzQm91bmRhcnkpOiBVc2UgIi4iIGluc3Rl
YWQgb2YgIi0+Ii4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yUmFu
Z2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25z
dCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTpzcGVsbENoZWNrOl0p
OiBEaXR0by4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3RleHRN
YXJrZXJGb3JJbmRleDpdKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKworICAgICAgICAqIGRvbS9C
b3VuZGFyeVBvaW50LmNwcDogQWRkZWQuCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuaDog
QWRkZWQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnVwZGF0ZUhpZ2hsaWdodFBvc2l0aW9ucyk6IFVwZGF0ZWQgc2luY2UKKyAgICAg
ICAgU2ltcGxlUmFuZ2U6OnN0YXJ0Q29udGFpbmVyIGFuZCBTaW1wbGVSYW5nZTo6ZW5kQ29udGFp
bmVyIG5vdyByZXR1cm4gcmVmZXJlbmNlcworICAgICAgICByYXRoZXIgdGhhbiBwb2ludGVycy4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6IFVz
ZSBjcmVhdGVMaXZlUmFuZ2UuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6IEFkZGVkIGlu
Y2x1ZGUuCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDogRGl0dG8uCisgICAgICAgICogZG9t
L1JhbmdlLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBkb20vU2ltcGxlUmFuZ2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vU2ltcGxlUmFuZ2UuaDogQWRkZWQuCisKKyAgICAgICAgKiBkb20v
U3RhdGljUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUmFuZ2U6OlN0YXRpY1Jh
bmdlKTogVGFrZSBhbiBydmFsdWUgcmVmZXJlbmNlIHRvIGEgU2ltcGxlUmFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpTdGF0aWNSYW5nZTo6Y3JlYXRlKTogRGl0dG8uIENoYW5nZWQgdGhlIG90aGVy
IG92ZXJsb2FkcyB0byBjcmVhdGUKKyAgICAgICAgYSBTaW1wbGVSYW5nZSBmaXJzdCB0aGVuIGNh
bGwgdGhyb3VnaCB0byB0aGUgbWFpbiBvbmUuCisgICAgICAgIChXZWJDb3JlOjppc0RvY3VtZW50
VHlwZU9yQXR0cik6IFdyb3RlIGEgbXVjaCBtb3JlIGVmZmljaWVudCB2ZXJzaW9uIG9mIHRoaXMu
CisgICAgICAgIFRoZSBvbGQgdmVyc2lvbiBjYWxsZWQgdGhlIHZpcnR1YWwgZnVuY3Rpb24gbm9k
ZVR5cGUgdHdpY2UuIFRoaXMgY2FsbHMgaXQgYXQKKyAgICAgICAgbW9zdCBvbmNlLCBhbmQgbW9z
dGx5IGRvZXNuJ3QgY2FsbCBpdCBhdCBhbGwuCisgICAgICAgICogZG9tL1N0YXRpY1JhbmdlLmg6
IFNpbXBsaWZpZWQgdGhpcyBjbGFzcywgcHV0dGluZyBtb3N0IG9mIHRoZSBhY3R1YWwgcmFuZ2UK
KyAgICAgICAgbG9naWMgaW50byB0aGUgYmFzZSBjbGFzcy4gTm90ZSB0aGF0IHRoaXMgY2hhbmdl
IGVsaW1pbmF0ZWQgdGhlIHBlY3VsaWFyIGNvZGUKKyAgICAgICAgdGhhdCBpbiB0aGUgPT0gb3Bl
cmF0b3IgdGhhdCBjb21wYXJlZCBub2RlcyB1c2luZyBpc0VxdWFsTm9kZSBpbnN0ZWFkIG9mIHVz
aW5nCisgICAgICAgIG5vZGUgaWRlbnRpdHkuIFRoZXJlIHdhcyBubyBvbmUgd2hvIG5lZWRlZCB0
aGF0IG90aGVyIGJlaGF2aW9yLiBBbHNvIGZpeGVkCisgICAgICAgIG1pc3Rha2VuIHVzZSBvZiB1
bnNpZ25lZCBsb25nIGluIFN0YXRpY1JhbmdlOjpJbml0LiBJdCdzIHVuc2lnbmVkIGxvbmcgaW4K
KyAgICAgICAgdGhlIElETCBmaWxlLCBidXQgY29uZnVzaW5nbHkgdGhhdCdzIGp1c3QgdW5zaWdu
ZWQgaW4gLmNwcCBmaWxlcy4KKworICAgICAgICAqIGRvbS9TdGF0aWNSYW5nZS5pZGw6IFR3ZWFr
ZWQgZm9ybWF0dGluZy4KKworICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjph
cHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOiBVc2UKKyAgICAgICAgY3JlYXRlTGl2ZVJhbmdl
LgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKTogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc2li
bGVQb3NpdGlvbkZvckluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IpOiBEaXR0by4KKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyk6IFVzZSAiLiIgaW5zdGVhZCBvZiAiLT4iIGFuZAorICAgICAgICBjcmVh
dGVMaXZlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNl
cnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6cmFuZ2VPZlN0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3Vu
dE1hdGNoZXNGb3JUZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNjYW5S
YW5nZUZvclRlbGVwaG9uZU51bWJlcnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBl
ZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6IERpdHRv
LgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6OnN1YnJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRp
Y2FsIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYWtlUG9zaXRpb25MZWdhY3lFZGl0aW5nKTogQWRkZWQuIEZv
ciB1c2UgaW4gcGxhY2VzIHdoZXJlIHRoZSBjb2RlCisgICAgICAgIHdhcyBjYWxsaW5nIFJhbmdl
OjpzdGFydFBvc2l0aW9uIG9yIFJhbmdlOjplbmRQb3NpdGlvbi4gSGVyZSBmb3Igbm93LCBidXQK
KyAgICAgICAgd2UgY2FuIG1vdmUgaXQgc29tZXdoZXJlIHdlIGNhbiBzaGFyZSBpdCBvbmNlIHdl
IGZpbmQgbmVlZCBlbHNld2hlcmUuCisgICAgICAgIChXZWJDb3JlOjpmaXJzdE5vZGVMZWdhY3lF
ZGl0aW5nKTogRGl0dG8uIEZvciBSYW5nZTo6Zmlyc3ROb2RlLgorICAgICAgICAoV2ViQ29yZTo6
bmV4dEluUHJlT3JkZXJDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMpOiBNb3ZlZCBmcm9tIGludCB0
bworICAgICAgICB1bnNpZ25lZC4gV2UndmUgbmV2ZXIgdXBkYXRlZCBSYW5nZSB0byB1bnNpZ25l
ZCwgYnV0IFN0YXRpY1JhbmdlLAorICAgICAgICBTaW1wbGVSYW5nZSwgYW5kIEJvdW5kYXJ5UG9p
bnQgYWxsIHVzZSBpdCwgc28gY29udmVydGVkIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6IFVzZSBTaW1wbGVSYW5nZS4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOiBVc2UgdW5zaWduZWQuCisgICAgICAg
IChXZWJDb3JlOjpjb2xsYXBzZWRTcGFjZUxlbmd0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6bWF4T2Zmc2V0SW5jbHVkaW5nQ29sbGFwc2VkU3BhY2VzKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6ZW1pdFRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6cmFuZ2UgY29uc3QpOiBSZXR1cm4gU2ltcGxlUmFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6Om5vZGUgY29uc3QpOiBVc2UgU2ltcGxlUmFuZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlRmly
c3RMZXR0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNU
ZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVySXRlcmF0b3I6OmFkdmFuY2UpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmNoYXJhY3RlclN1YnJhbmdlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVy
SXRlcmF0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2t3YXJkc0NoYXJhY3Rlckl0
ZXJhdG9yOjpyYW5nZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmFja3dhcmRz
Q2hhcmFjdGVySXRlcmF0b3I6OmFkdmFuY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmRBd2FyZUl0ZXJhdG9yOjpXb3JkQXdhcmVJdGVyYXRvcik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6U2VhcmNoQnVmZmVyOjppc1dvcmRFbmRNYXRjaCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjppc1dvcmRTdGFydE1hdGNoIGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3Ro
RnJvbVJhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpoYXNBbnlQbGFpblRleHQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBsYWluVGV4dCk6IERpdHRvLiBSZWZhY3RvcmVkIGFu
ZCBmaXhlZCBhIGJ1ZyB3aGVyZQorICAgICAgICBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29k
aW5nIHdhcyBub3QgY2FsbGVkIGNvcnJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6OnBsYWluVGV4
dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpjb2xsYXBzZWRUb0JvdW5kYXJ5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpmaW5kUGxhaW5UZXh0TWF0Y2hlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cmFuZ2VG
b3JNYXRjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZmluZENsb3Nlc3RQbGFpblRleHQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRQbGFpblRleHQpOiBEaXR0by4KKworICAg
ICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6IFJlbW92ZWQgYWxsIHVzZXMgb2YgbGl2ZSBy
YW5nZXMuCisgICAgICAgIFVzZSBTaW1wbGVSYW5nZSBpbnN0ZWFkLiBVc2UgdW5zaWduZWQgY29u
c2lzdGVudGx5IGluc3RlYWQgb2YgaW50LAorICAgICAgICBvciBzaXplX3QgaW4gYSBjb3VwbGUg
cGxhY2VzIHdoZXJlIGEgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3YXMgdXNpbmcKKyAgICAgICAgc2l6
ZV90IGluIG1vc3QgY2FzZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpvYnNlcnZlUGFyYWdyYXBocyk6IFVzZQorICAgICAgICBjcmVhdGVMaXZlUmFuZ2UuCisK
KyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQpOiBVcGRhdGUgZm9yCisg
ICAgICAgIFN0YXRpY1JhbmdlOjpjcmVhdGUgbmFtZSBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbjo6VmlzaWJsZVNlbGVjdGlvbik6IFVzZSBTaW1wbGVSYW5nZQorICAgICAgICBpbnN0ZWFk
IG9mIFN0YXRpY1JhbmdlLgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6YXBw
ZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKTogVXNlCisgICAgICAgIGNyZWF0ZUxpdmVSYW5nZS4KKyAg
ICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDogVXBkYXRlZCBmb3IgdGhlIGFib3Zl
LgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cHJldmlvdXNCb3VuZGFyeSk6IFVzc2UgIi4iIGluc3RlYWQgb2YgIi0+Ii4KKyAgICAgICAg
KFdlYkNvcmU6Om5leHRCb3VuZGFyeSk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpkZXRl
Y3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZSk6IFVTZSBjcmVhdGVMaXZlUmFuZ2UuCisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkRpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KTogRGl0dG8uCisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UpOiBEaXR0by4KKworICAgICAgICAq
IGVkaXRpbmcvbWFya3VwLmNwcDogVXBkYXRlIGluY2x1ZGVzLgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcDogRGl0dG8uCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOiBE
aXR0by4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBs
YWNlUmFuZ2VzKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKworICAgICAgICAqIHBhZ2UvVGV4dElu
ZGljYXRvci5jcHA6IFVwZGF0ZSBpbmNsdWRlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHA6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6
IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnN1YnJh
bmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJhbmdlT2ZTdHJpbmdO
ZWFyTG9jYXRpb24pOiBEaXR0by4KKwogMjAyMC0wMy0wMSAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW01hcmdpbkNvbGxhcHNpbmddIERvIG5vdCByZS1j
b21wdXRlIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiB2YWx1ZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZWRkNTg5ZjRmZTc5NDlkNjYxYWFmODdlZDE5Zjk3MTdiMjg0MDNjOC4uZjQxZGUzYTllM2M4
ZGFiYjM4YTgwN2M1ODdhYzY2NWVlZWM2NTFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAyMC0wMy0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQmVn
aW4gbW92aW5nIG9mZiBvZiBsaXZlIHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscywgc3RhcnRp
bmcgd2l0aCBUZXh0SXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRpbmdSYW5nZTo6dG9SYW5nZSk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisgICAgICAgIChX
ZWJLaXQ6OkVkaXRpbmdSYW5nZTo6ZnJvbVJhbmdlKTogSW5pdGlhbGl6ZSBsb2NhbCB2YXJpYWJs
ZXMuIEZvciBzb21lIHJlYXNvbiwKKyAgICAgICAgdGhlIGNvbXBpbGVyIG5vdGljZWQgdGhlc2Ug
d2VyZSB1bmluaXRpYWxpemVkLCBidXQgZGlkbid0IGJlZm9yZSB0aGUgcmVmYWN0b3JpbmcuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRl
cmF0b3IubW06CisgICAgICAgICgtW1dLRE9NVGV4dEl0ZXJhdG9yIGN1cnJlbnRSYW5nZV0pOiBV
c2UgY3JlYXRlTGl2ZVJhbmdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbTogRGl0dG8uCisKIDIwMjAtMDMtMDEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjI1NzYxOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjYjk1MWM2
OWYzMGRiNDYyNDBmMTdmNDQzN2VhNzg0MGE2M2FhNzY0Li4wZjg4ODIyMjQyYTA5MjgzMDQzMGMx
ZjVmYzJhZjYxMzA2Nzc3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjAtMDMtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIEJlZ2luIG1vdmluZyBvZmYgb2YgbGl2ZSByYW5nZXMgZm9yIFdlYktpdCBpbnRlcm5h
bHMsIHN0YXJ0aW5nIHdpdGggVGV4dEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bTogVXBkYXRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOiBEaXR0
by4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2NvbnZlcnRUb05TUmFuZ2U6XSk6IFVzZSBjcmVhdGVM
aXZlUmFuZ2UuCisgICAgICAgICgtW1dlYkZyYW1lIF9jb252ZXJ0VG9ET01SYW5nZTpyYW5nZUlz
UmVsYXRpdmVUbzpdKTogVXNlIGF1dG8gdG8gZ2V0IHNpZ25lZC91bnNpZ25lZAorICAgICAgICBy
aWdodCBhbmQgcmVtb3ZlZCB1bm5lZWRlZCBzdGF0aWNfY2FzdCB0byBpbnQuCisgICAgICAgICog
V2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW06CisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBj
dXJyZW50UmFuZ2VdKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKwogMjAyMC0wMi0yOSAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdGQ6OmxvY2tf
Z3VhcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodFJhbmdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGln
aGxpZ2h0UmFuZ2VHcm91cC5jcHAKaW5kZXggZmMxMjk0MDBhZDVjNmEyMGJhYjNlNGQzYWY1Yzky
MjQ1ZWJjM2Y0ZS4uY2FhYTYyNWEwZjM3NDIxZDlmNDY4YTY3NzcwYzRmMzY3YWYxYTE0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VH
cm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0
UmFuZ2VHcm91cC5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJKU0RPTVNldExpa2Uu
aCIKICNpbmNsdWRlICJKU1N0YXRpY1JhbmdlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiU3RhdGljUmFuZ2UuaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTM4LDggKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBIaWdobGlnaHRSYW5nZUdyb3VwOjpIaWdobGlnaHRS
YW5nZUdyb3VwKFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKIHsKLSAgICBhdXRvIG15UmFuZ2Ug
PSBXVEZNb3ZlKHJhbmdlKTsKLSAgICBhZGRUb1NldExpa2UobXlSYW5nZS5nZXQoKSk7CisgICAg
YWRkVG9TZXRMaWtlKHJhbmdlKTsKIH0KIAogUmVmPEhpZ2hsaWdodFJhbmdlR3JvdXA+IEhpZ2hs
aWdodFJhbmdlR3JvdXA6OmNyZWF0ZShTdGF0aWNSYW5nZSYgcmFuZ2UpCkBAIC03MCw5ICs2OCw3
IEBAIGJvb2wgSGlnaGxpZ2h0UmFuZ2VHcm91cDo6YWRkVG9TZXRMaWtlKFN0YXRpY1JhbmdlJiBy
YW5nZSkKICAgICBpZiAobm90Rm91bmQgIT0gbV9yYW5nZXNEYXRhLmZpbmRNYXRjaGluZyhbJnJh
bmdlXShjb25zdCBSZWY8SGlnaGxpZ2h0UmFuZ2VEYXRhPiYgY3VycmVudCkgeyByZXR1cm4gY3Vy
cmVudC5nZXQoKS5yYW5nZS5nZXQoKSA9PSByYW5nZTsgfSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBtX3Jhbmdlc0RhdGEuYXBwZW5kKEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKHJh
bmdlKSk7Ci0gICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VHcm91cC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VHcm91cC5oCmluZGV4
IDRkODFlOWVmNzIzMzQwM2ZjMzM4NWUxNDYzMWZjYjBhOWM1ZWE2MGIuLmNjZTMzZWViZTYyNmJk
ZTAxNTdlMWE5NzcxZjNhNTUyOGJlYjI2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJhbmdlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmgKQEAgLTM0LDcgKzM0LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xh
c3MgRE9NU2V0QWRhcHRlcjsKLWNsYXNzIFN0YXRpY1JhbmdlOwogY2xhc3MgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOwogCiBzdHJ1Y3QgSGlnaGxpZ2h0UmFuZ2VEYXRhIDogUmVmQ291
bnRlZDxIaWdobGlnaHRSYW5nZURhdGE+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SGlnaGxpZ2h0
UmFuZ2VEYXRhPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGY5NzE5YTU1NTAzOTJiZmY0NjYzZDQwYTUy
N2E4MDI1MjA3Mzg1MTguLmFlNTEzZDRlOGRmNWMyYWRlZTFlNWJlMzUxM2FlOGU0MmNmOGM2MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC04MjUsNiArODI1LDcgQEAgZG9tL0F0dHIuY3BwCiBkb20vQmVm
b3JlTG9hZEV2ZW50LmNwcAogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcAogZG9tL0Jl
Zm9yZVVubG9hZEV2ZW50LmNwcAorZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCiBkb20vQ0RBVEFTZWN0
aW9uLmNwcAogZG9tL0NoYXJhY3RlckRhdGEuY3BwCiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5jcHAKQEAgLTk1MCw2ICs5NTEsNyBAQCBkb20vU2VjdXJpdHlPcmlnaW5Qb2xpY3kuY3BwCiBk
b20vU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5jcHAKIGRvbS9TZWxlY3RvclF1ZXJ5LmNw
cAogZG9tL1NoYWRvd1Jvb3QuY3BwCitkb20vU2ltcGxlUmFuZ2UuY3BwCiBkb20vU2ltdWxhdGVk
Q2xpY2suY3BwCiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwCiBkb20vU3BhY2VTcGxpdFN0cmluZy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2NGFlMTU1ZmQ5OWE0ZmExNGZjOWZlYWVjZmYwZWM2NjE2ODc2ZTQ0Li4xMGM5ZGM3
MTI2MGIzZTRiNmY2OGUyMTFkZGM0NzQ4ZTUwMWQ0MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTk5LDYgKzI1OTksOCBA
QAogCQk5MzE1M0JEQTE0MTgxRjdBMDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlQDJ4LnBuZyBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNTNCRDkxNDE4
MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgKi87IH07CiAJCTkzMTUzQkRDMTQx
OTU5QkMwMEZDRjVCRSAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkRCMTQxOTU5QkIwMEZDRjVC
RSAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcgKi87IH07CiAJCTkzMTUzQkUyMTQxOTVBNTcw
MEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JFMTE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0lt
YWdlLnBuZyAqLzsgfTsKKwkJOTMxNkRERkIyNDBDNjRCNDAwOTM0MEFBIC8qIFNpbXBsZVJhbmdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE2RERG
ODI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MzE2REUwMDI0MEM2NEY5MDA5MzQwQUEgLyog
Qm91bmRhcnlQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMxNkRERkUyNDBDNjRGODAwOTM0MEFBIC8qIEJvdW5kYXJ5UG9pbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzFCQ0M2MTExMjRE
RkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFCQ0M2MDExMjRERkNCMDBCRTcwREQgLyog
TWVkaWFDYW5TdGFydExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTMxQ0JEMEQxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0
YXRlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTMxQ0JEMDcxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMUNCRDBGMTYxQTQ0
RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUNCRDA5MTYxQTQ0RTkwMEU0Qzg3
NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA2MjIsNiArMTA2MjQsMTAgQEAKIAkJOTMx
NTNCRDkxNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAi
bWlzc2luZ0ltYWdlQDJ4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTUz
QkRCMTQxOTU5QkIwMEZDRjVCRSAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGgg
PSB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0g
bWlzc2luZ0ltYWdlLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNkRERjgy
NDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNpbXBsZVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
MTZEREZBMjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzMTZEREZEMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJvdW5kYXJ5UG9pbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzE2RERGRTI0MEM2NEY4MDA5MzQwQUEg
LyogQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb3Vu
ZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUFFM0I4MUZCODBF
QUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VmFsdWVJbldyYXBwZWRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMx
QkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQ0JEMDYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9s
bGluZ1N0YXRlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JvbGxpbmdTdGF0ZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgw
MDgsNiArMjgwMTQsOCBAQAogCQkJCTg1MDMxQjI2MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVV
bmxvYWRFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMjcwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9y
ZVVubG9hZEV2ZW50LmggKi8sCiAJCQkJN0MxRThDRkYxRUQwQzJCRTAwQjFEOTgzIC8qIEJlZm9y
ZVVubG9hZEV2ZW50LmlkbCAqLywKKwkJCQk5MzE2RERGRDI0MEM2NEY4MDA5MzQwQUEgLyogQm91
bmRhcnlQb2ludC5jcHAgKi8sCisJCQkJOTMxNkRERkUyNDBDNjRGODAwOTM0MEFBIC8qIEJvdW5k
YXJ5UG9pbnQuaCAqLywKIAkJCQk3QzFFOEQwMDFFRDBDMkJFMDBCMUQ5ODMgLyogQ2FsbGJhY2tS
ZXN1bHQuaCAqLywKIAkJCQk2NTUwQjY5MzA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9u
LmNwcCAqLywKIAkJCQk2NTUwQjY5NDA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmgg
Ki8sCkBAIC0yODQwMiw2ICsyODQxMCw4IEBACiAJCQkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1
IC8qIFNoYWRvd1Jvb3QuaWRsICovLAogCQkJCTQ2REZGNDk2MURDMjYwMTMwMEI4MEI0OCAvKiBT
aGFkb3dSb290TW9kZS5oICovLAogCQkJCTQ2REZGNDk3MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFk
b3dSb290TW9kZS5pZGwgKi8sCisJCQkJOTMxNkRERkEyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBs
ZVJhbmdlLmNwcCAqLywKKwkJCQk5MzE2RERGODI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFu
Z2UuaCAqLywKIAkJCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2su
Y3BwICovLAogCQkJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5o
ICovLAogCQkJCTMxNzQxQUFCMTY2MzVFNDUwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlv
bnMuaCAqLywKQEAgLTI5MjExLDYgKzI5MjIxLDcgQEAKIAkJCQlCQzVFQjVFMTBFODFCRTg3MDBC
MjU5NjUgLyogQm9yZGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTg5NTU2RUQxOEQ0QTQ0
MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNURCMEU4
MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMxNkRF
MDAyNDBDNjRGOTAwOTM0MEFBIC8qIEJvdW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZFRDhDMzdBMTgzQkZGOEMwMDlFNTNCRCAvKiBCb3hTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMzMDlEREIwOTlFNjQ5MjAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyRTFGNDNGMUQ2MjU0RTEwMDk0NjI1QyAvKiBCcmVha0xpbmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTMyMzc0LDYgKzMyMzg1LDcgQEAKIAkJCQkxMTJCMzRENTFF
NjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0RTlCMTE5MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4MkNCMDUzMUE3OEExNEIwMEFGRkNDNCAvKiBT
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkzMTZEREZCMjQwQzY0QjQwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzVBMUVBN0QxNTJCQ0YwODAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRl
ZENsaWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTc0MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyog
U2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDNmMTg1NDRhNzRiYzlkOWNm
MzY2NTgzMzM5YzVlN2UzMjc5OTcyODcuLjYyODRhNjg2YWZmMGYxOWRiZGE0OTgwMGUzNWVlYTAy
MjUwOTkzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcApAQCAtOTksNiArOTksNyBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNs
dWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisj
aW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgogI2lu
Y2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgpAQCAtMTgwMSwxMyArMTgwMiwxMyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNo
ZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogICAg
ICAgICBpbnQgY3VycmVudExlbmd0aCA9IGl0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKTsKICAgICAg
ICAgYm9vbCBoYXNSZXBsYWNlZE5vZGVPckJSID0gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBO
b2RlJiBub2RlID0gaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKKyAgICAgICAg
Tm9kZSYgbm9kZSA9IGl0ZXJhdG9yLnJhbmdlKCkuc3RhcnRDb250YWluZXIoKTsKICAgICAgICAg
Y3VycmVudE5vZGUgPSAmbm9kZTsKICAgICAgICAgCiAgICAgICAgIC8vIFdoZW4gY3VycmVudExl
bmd0aCA9PSAwLCB3ZSBjaGVjayBpZiB0aGVyZSdzIGFueSByZXBsYWNlZCBub2RlLgogICAgICAg
ICAvLyBJZiBub3QsIHdlIHNraXAgdGhlIG5vZGUgd2l0aCBubyBsZW5ndGguCiAgICAgICAgIGlm
ICghY3VycmVudExlbmd0aCkgewotICAgICAgICAgICAgaW50IHN1Yk9mZnNldCA9IGl0ZXJhdG9y
LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRl
cmF0b3IucmFuZ2UoKS5zdGFydE9mZnNldCgpOwogICAgICAgICAgICAgTm9kZSogY2hpbGROb2Rl
ID0gbm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChzdWJPZmZzZXQpOwogICAgICAgICAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKGNoaWxkTm9kZSkp
IHsKICAgICAgICAgICAgICAgICBjdW11bGF0aXZlT2Zmc2V0Kys7CkBAIC0xODIxLDcgKzE4MjIs
NyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFu
Z2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogICAgICAgICAgICAgaWYgKGN1cnJlbnRMZW5n
dGggPT0gMSkgewogICAgICAgICAgICAgICAgIGlmIChpc0hUTUxTcGFjZShpdGVyYXRvci50ZXh0
KClbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIGhhcyBCUiB0YWcs
IHdlIHdhbnQgdG8gc2V0IHRoZSBjdXJyZW50Tm9kZSB0byBpdC4KLSAgICAgICAgICAgICAgICAg
ICAgaW50IHN1Yk9mZnNldCA9IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAg
ICAgICAgICAgICAgICAgIGludCBzdWJPZmZzZXQgPSBpdGVyYXRvci5yYW5nZSgpLnN0YXJ0T2Zm
c2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9IG5vZGUudHJhdmVy
c2VUb0NoaWxkQXQoc3ViT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9k
ZSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVyKCkgJiYgY2hpbGROb2RlLT5yZW5kZXJlcigpLT5pc0JS
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY2hpbGROb2RlOwpA
QCAtMTg1MSwxMSArMTg1MiwxMSBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJh
dmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogCiAgICAgICAg
IGlmIChjdXJyZW50Tm9kZSA9PSBwcmV2aW91c05vZGUpIHsKICAgICAgICAgICAgIGxhc3RMZW5n
dGggKz0gY3VycmVudExlbmd0aDsKLSAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGl0ZXJh
dG9yLnJhbmdlKCktPmVuZE9mZnNldCgpIC0gbGFzdExlbmd0aDsKKyAgICAgICAgICAgIGxhc3RT
dGFydE9mZnNldCA9IGl0ZXJhdG9yLnJhbmdlKCkuZW5kT2Zmc2V0KCkgLSBsYXN0TGVuZ3RoOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbGFzdExlbmd0aCA9IGN1cnJl
bnRMZW5ndGg7Ci0gICAgICAgICAgICBsYXN0U3RhcnRPZmZzZXQgPSBoYXNSZXBsYWNlZE5vZGVP
ckJSID8gMCA6IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgICAgICBs
YXN0U3RhcnRPZmZzZXQgPSBoYXNSZXBsYWNlZE5vZGVPckJSID8gMCA6IGl0ZXJhdG9yLnJhbmdl
KCkuc3RhcnRPZmZzZXQoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQnJlYWsg
ZWFybHkgaWYgd2UgaGF2ZSBhZHZhbmNlZCBlbm91Z2ggY2hhcmFjdGVycy4KQEAgLTE4OTQsOCAr
MTg5NSw4IEBAIGludCBBWE9iamVjdENhY2hlOjpsZW5ndGhGb3JSYW5nZShSYW5nZSogcmFuZ2Up
CiAgICAgICAgICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZv
ciB0aGlzIHJlcGxhY2VkIHJhbmdlCi0gICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2Uo
KS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgp
LT5zdGFydE9mZnNldCgpOworICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdlKCkuc3Rh
cnRDb250YWluZXIoKTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLnN0YXJ0
T2Zmc2V0KCk7CiAgICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZWRO
b2RlTmVlZHNDaGFyYWN0ZXIobm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChvZmZzZXQpKSkKICAgICAg
ICAgICAgICAgICArK2xlbmd0aDsKICAgICAgICAgfQpAQCAtMTk0NCw3ICsxOTQ1LDcgQEAgUmVm
UHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0
cjxSYW5nZT4gb3JpZ2luYWxSYW4KICAgICAKICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOwogICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCksIHRydWUpOwotICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChz
ZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CisgICAgcmV0
dXJuIGNyZWF0ZUxpdmVSYW5nZShmaW5kQ2xvc2VzdFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQo
KSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc1Jl
cGxhY2VkTm9kZU9yQlIoTm9kZSogbm9kZSkKQEAgLTI2NTcsNyArMjY1OCw3IEBAIENoYXJhY3Rl
ck9mZnNldCBBWE9iamVjdENhY2hlOjpwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYgY2hhcmFjdGVyCiAgICAgaWYgKCFuZXh0KQogICAgICAgICByZXR1cm4gaXQuYXRFbmQo
KSA/IHN0YXJ0IDogY2hhcmFjdGVyT2Zmc2V0OwogICAgIAotICAgIE5vZGUmIG5vZGUgPSBpdC5h
dEVuZCgpID8gc2VhcmNoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgOiBpdC5yYW5nZSgpLT5zdGFy
dENvbnRhaW5lcigpOworICAgIE5vZGUmIG5vZGUgPSBpdC5hdEVuZCgpID8gc2VhcmNoUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCkgOiBpdC5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgCiAg
ICAgLy8gU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBpZ25vcmVzIHJlcGxhY2VkIGVs
ZW1lbnRzLgogICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlZE5vZGVOZWVkc0No
YXJhY3RlcihjaGFyYWN0ZXJPZmZzZXQubm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA3MmEyMzcwYjU1ZWM1
YjRlMDEzYjQxODVhODYyNjA1ZDliZTk2NmJiLi5kNzlhYjBmMjhlOGJjNmYyYjMzMGJjZDAzMDE2
ZTY2OGNiMmU1NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJXaWRnZXQuaCIKICNpbmNsdWRlICJSZW5kZXJlZFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2Vy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCkBAIC0xMjgyLDkgKzEyODMsOSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c3RyaW5nRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPiByYW5nZSkgY29uc3QKICAgICAgICAg
ICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0YXJ0aW5nIG9mZnNldCBm
b3IgdGhpcyByZXBsYWNlZCByYW5nZQotICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdl
KCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0gJml0LnJh
bmdlKCktPmVuZENvbnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5n
ZSgpLT5zdGFydE9mZnNldCgpOworICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdlKCku
c3RhcnRDb250YWluZXIoKTsKKyAgICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2Uo
KS5lbmRDb250YWluZXIoKSk7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXQucmFuZ2UoKS5z
dGFydE9mZnNldCgpOwogICAgICAgICAgICAgaWYgKHJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVy
KG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCiAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQob2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIpOwogICAgICAgICB9CkBAIC0xMzA4
LDkgKzEzMDksOSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUgogICAgICAgICAgICAgaXQuYXBw
ZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIGxvY2F0ZSB0aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJl
cGxhY2VkIHJhbmdlCi0gICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRD
b250YWluZXIoKTsKLSAgICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5k
Q29udGFpbmVyKCkpOwotICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0
T2Zmc2V0KCk7CisgICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFydENvbnRh
aW5lcigpOworICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgpLmVuZENvbnRh
aW5lcigpKTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLnN0YXJ0T2Zmc2V0
KCk7CiAgICAgICAgICAgICBpZiAocmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIobm9kZS50cmF2
ZXJzZVRvQ2hpbGRBdChvZmZzZXQpKSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChv
YmplY3RSZXBsYWNlbWVudENoYXJhY3Rlcik7CiAgICAgICAgIH0KQEAgLTEzMzMsOSArMTMzNCw5
IEBAIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5n
ZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nCiAgICAgICAgICAgICBsZW5ndGggKz0gaXQudGV4
dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUg
bm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2VkIHJhbmdlCi0gICAgICAg
ICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAg
ICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKCkpOwotICAgICAg
ICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgICAg
ICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFydENvbnRhaW5lcigpOworICAgICAgICAgICAg
QVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgpLmVuZENvbnRhaW5lcigpKTsKKyAgICAgICAgICAg
IGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLnN0YXJ0T2Zmc2V0KCk7CiAKICAgICAgICAgICAgIGlm
IChyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLnRyYXZlcnNlVG9DaGlsZEF0KG9mZnNl
dCkpKQogICAgICAgICAgICAgICAgICsrbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQppbmRleCAyZmJhY2Y0N2ZhYjdmYTc5YjQ3N2FkMWY0NThkMDZkOTdmMDQ2
MzIxLi5kNTM0ZDkwMzgwZDM4YjM4YzdkNTY3ZjVkMmIxZGQ0ZmNjNjYxM2ZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzAsNiArNzAsNyBAQAogI2ltcG9y
dCAiUmVuZGVyVmlldy5oIgogI2ltcG9ydCAiUmVuZGVyV2lkZ2V0LmgiCiAjaW1wb3J0ICJTY3Jv
bGxWaWV3LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJD
bGllbnQuaCIKICNpbXBvcnQgIlRleHRDaGVja2luZ0hlbHBlci5oIgogI2ltcG9ydCAiVGV4dERl
Y29yYXRpb25QYWludGVyLmgiCkBAIC03OSw2ICs4MCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CisKICNpZiBFTkFCTEUo
VFJFRV9ERUJVR0dJTkcpIHx8IEVOQUJMRShNRVRFUl9FTEVNRU5UKQogI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2VuZGlmCkBAIC0xMjg3LDE0ICsxMjg5LDE0IEBAIC0gKE5T
QXR0cmlidXRlZFN0cmluZyopZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6
KGlkKXRleHRNYXJrZXJSYW5nCiAgICAgICAgIFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7
CiAgICAgICAgIHdoaWxlICghaXQuYXRFbmQoKSkgewogICAgICAgICAgICAgLy8gbG9jYXRlIHRo
ZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmFuZ2UKLSAgICAgICAgICAgIE5v
ZGUmIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAgICAgICAgICAgQVNT
RVJUKCZub2RlID09ICZpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoKSk7Ci0gICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gaXQucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAgIE5vZGUm
IG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBBU1NFUlQo
Jm5vZGUgPT0gJml0LnJhbmdlKCkuZW5kQ29udGFpbmVyKCkpOworICAgICAgICAgICAgaW50IG9m
ZnNldCA9IGl0LnJhbmdlKCkuc3RhcnRPZmZzZXQoKTsKIAogICAgICAgICAgICAgLy8gbm9uLXpl
cm8gbGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQg
bm9kZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgpCiAgICAgICAgICAgICBpZiAoaXQudGV4dCgp
Lmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gQWRkIHRoZSB0ZXh0IG9mIHRoZSBsaXN0
IG1hcmtlciBpdGVtIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1h
cmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQ
b3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24o
KSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxp
dHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBWaXNpYmxl
UG9zaXRpb24oY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpLT5zdGFydFBvc2l0aW9uKCkpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLCAmbm9k
ZSwgbGlzdE1hcmtlclRleHQsIHNwZWxsQ2hlY2spOwogICAgICAgICAgICAgICAgIEFYQXR0cmli
dXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgJm5vZGUsIGl0LnRleHQoKSwgc3BlbGxD
aGVjayk7CkBAIC0zNzE0LDcgKzM3MTYsNyBAQCAtIChpZClfdGV4dE1hcmtlckZvckluZGV4OihO
U0ludGVnZXIpdGV4dEluZGV4CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHRleHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCB0ZXh0
SW5kZXgsIDApOworICAgIFJlZlB0cjxSYW5nZT4gdGV4dFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdl
KFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQtPmRvY3Vt
ZW50RWxlbWVudCgpLCB0ZXh0SW5kZXgsIDApKTsKICAgICBpZiAoIXRleHRSYW5nZSB8fCAhdGV4
dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdlMGYzNjQwN2U3
N2VlOGJjZDUwOTU5OGRiYWM0MGQzNDhjYTQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnQuaCIKKworI2lu
Y2x1ZGUgIk5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCb3VuZGFyeVBvaW50OjpC
b3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQorICAgIDogY29udGFpbmVy
KG90aGVyLmNvbnRhaW5lci5jb3B5UmVmKCkpCisgICAgLCBvZmZzZXQob3RoZXIub2Zmc2V0KQor
eworfQorCitCb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oY29uc3QgQm91
bmRhcnlQb2ludCYgb3RoZXIpCit7CisgICAgY29udGFpbmVyID0gb3RoZXIuY29udGFpbmVyLmNv
cHlSZWYoKTsKKyAgICBvZmZzZXQgPSBvdGhlci5vZmZzZXQ7CisgICAgcmV0dXJuICp0aGlzOwor
fQorCitCb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oQm91bmRhcnlQb2lu
dCYmKSA9IGRlZmF1bHQ7CisKK0RvY3VtZW50JiBCb3VuZGFyeVBvaW50Ojpkb2N1bWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNvbnRhaW5lci0+ZG9jdW1lbnQoKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Cb3VuZGFyeVBvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUxNWU1MTFhNGQ2NmJjODk0MGExYTNi
MTQ5NGNmOTNjMDFkMzYxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9C
b3VuZGFyeVBvaW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IERvY3VtZW50OworY2xhc3MgTm9kZTsKKworc3RydWN0IEJvdW5kYXJ5UG9pbnQgeworICAgIFJl
ZjxOb2RlPiBjb250YWluZXI7CisgICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OworCisgICAgQm91
bmRhcnlQb2ludChSZWY8Tm9kZT4mJiwgdW5zaWduZWQpOworCisgICAgLy8gVW5saWtlIFJlZiwg
d2UgYWxsb3cgY29weWluZyBhIEJvdW5kYXJ5UG9pbnQgd2l0aG91dCBhbiBleHBsaWNpdCBjb3B5
UmVmKCkuCisgICAgQm91bmRhcnlQb2ludChjb25zdCBCb3VuZGFyeVBvaW50Jik7CisgICAgQm91
bmRhcnlQb2ludChCb3VuZGFyeVBvaW50JiYpID0gZGVmYXVsdDsKKyAgICBCb3VuZGFyeVBvaW50
JiBvcGVyYXRvcj0oY29uc3QgQm91bmRhcnlQb2ludCYpOworICAgIEJvdW5kYXJ5UG9pbnQmIG9w
ZXJhdG9yPShCb3VuZGFyeVBvaW50JiYpOworCisgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29u
c3Q7Cit9OworCitib29sIG9wZXJhdG9yPT0oY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJv
dW5kYXJ5UG9pbnQmKTsKKworaW5saW5lIEJvdW5kYXJ5UG9pbnQ6OkJvdW5kYXJ5UG9pbnQoUmVm
PE5vZGU+JiYgY29udGFpbmVyLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgOiBjb250YWluZXIoV1RG
TW92ZShjb250YWluZXIpKQorICAgICwgb2Zmc2V0KG9mZnNldCkKK3sKK30KKworaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBvaW50
JiBiKQoreworICAgIHJldHVybiAmYS5jb250YWluZXIgPT0gJmIuY29udGFpbmVyICYmIGEub2Zm
c2V0ID09IGIub2Zmc2V0OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2MGY1
ZmE2YzJmNTM2MzlmN2YyMzE3MDQwYWExM2NiMmRlODMzZDg3Li5iZmVhYWEwNGE5OWY0NTY0YTM2
MGEwMTZmN2M1YzIxYWRlNGM0NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI3Mzgs
NyArMjczOCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUhpZ2hsaWdodFBvc2l0aW9ucygpCiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHJhbmdlRGF0YSA6IGhpZ2hsaWdodC52YWx1ZS0+cmFuZ2Vz
RGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJhbmdlRGF0YS0+c3RhcnRQb3NpdGlvbiAm
JiByYW5nZURhdGEtPmVuZFBvc2l0aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBpZiAoJnJhbmdlRGF0YS0+cmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkt
PnRyZWVTY29wZSgpICE9ICZyYW5nZURhdGEtPnJhbmdlLT5lbmRDb250YWluZXIoKS0+dHJlZVNj
b3BlKCkpCisgICAgICAgICAgICAgICAgaWYgKCZyYW5nZURhdGEtPnJhbmdlLT5zdGFydENvbnRh
aW5lcigpLnRyZWVTY29wZSgpICE9ICZyYW5nZURhdGEtPnJhbmdlLT5lbmRDb250YWluZXIoKS50
cmVlU2NvcGUoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgcmFuZ2VzRGF0YS5hcHBlbmQobWFrZVdlYWtQdHIocmFuZ2VEYXRhLnB0cigpKSk7CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCmluZGV4IDJiZmUxNWUwMzVhMTc1MDBlODE1YzkxODA2ODNlODliNzQ2OTYwODcuLmJj
NWZhMzFlMjUyMGEyN2U4NGFhNDliOWYyOWFjYjU2Nzk1YmI2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgi
CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIApAQCAtNjQs
NyArNjUsNyBAQCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
Ojpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYgcgogewogICAgIFZlY3RvcjxSZWZQdHI8
UmFuZ2U+PiB0ZXh0UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKCZy
YW5nZSk7ICF0ZXh0SXRlcmF0b3IuYXRFbmQoKTsgdGV4dEl0ZXJhdG9yLmFkdmFuY2UoKSkKLSAg
ICAgICAgdGV4dFJhbmdlLmFwcGVuZCh0ZXh0SXRlcmF0b3IucmFuZ2UoKSk7CisgICAgICAgIHRl
eHRSYW5nZS5hcHBlbmQoY3JlYXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRvci5yYW5nZSgpKSk7CiAg
ICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGNlMmQ3
MWFlY2Q5NjZkODViZWExYTRhNzAzYzYxMzhmMDQzZDM5OTAuLjdkZjJhZmJlMzA1ZDc4OTNjNTg5
MjQyMWRkYzVjZTM1ZmU5Y2VmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEwNCw2ICsx
MDQsNyBAQAogI2luY2x1ZGUgIlNjcm9sbExhdGNoaW5nU3RhdGUuaCIKICNpbmNsdWRlICJTZWxl
Y3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5n
ZS5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrLmgiCiAjaW5jbHVkZSAiU2xvdEFzc2lnbm1l
bnQuaCIKICNpbmNsdWRlICJTdHlsZUludmFsaWRhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cAppbmRleCBiNDdhMjliMWIxMDI0MjEwZDVlZWU5OWMyNDQ3ODgxNzM0MzcyYzc2Li4zM2RiYjRl
MWRlMGQ4MWQ3NTBlMmJmZmNiMzk4NWM5NDI2ZDgyOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm9k
ZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBvc2l0aW9uSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJS
YW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxleGli
bGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA5
YzExMzQwNWUyNzc1Y2Y3ZjA1YzdmOGFjM2ZhMTgwMGIzZDQ1OTdmLi44NzhmNjI1MjU0ZDJmZGZl
YzEyOWM2NjlkZGNkZjY3MWVkYjljYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgog
I2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDlkZjk5Yzg1YmYxZTg1NzFkYmVhYTU5YWNkZTg1YTA1NWUzOTc2NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaW1w
bGVSYW5nZS5oIgorCisjaW5jbHVkZSAiUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgQm91bmRhcnlQb2ludCYgc3RhcnQsIGNv
bnN0IEJvdW5kYXJ5UG9pbnQmIGVuZCkKKyAgICA6IHN0YXJ0KHN0YXJ0KQorICAgICwgZW5kKGVu
ZCkKK3sKK30KKworU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKEJvdW5kYXJ5UG9pbnQmJiBzdGFy
dCwgQm91bmRhcnlQb2ludCYmIGVuZCkKKyAgICA6IHN0YXJ0KFdURk1vdmUoc3RhcnQpKQorICAg
ICwgZW5kKFdURk1vdmUoZW5kKSkKK3sKK30KKworU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNv
bnN0IFJhbmdlJiBvdGhlcikKKyAgICA6IHN0YXJ0KG90aGVyLnN0YXJ0Q29udGFpbmVyKCksIG90
aGVyLnN0YXJ0T2Zmc2V0KCkpCisgICAgLCBlbmQob3RoZXIuZW5kQ29udGFpbmVyKCksIG90aGVy
LmVuZE9mZnNldCgpKQoreworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2Um
IGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBiKQoreworICAgIHJldHVybiBhLnN0YXJ0ID09IGIuc3Rh
cnQgJiYgYS5lbmQgPT0gYi5lbmQ7Cit9CisKK1JlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShyYW5n
ZS5zdGFydC5kb2N1bWVudCgpLCByYW5nZS5zdGFydC5jb250YWluZXIucHRyKCksIHJhbmdlLnN0
YXJ0Lm9mZnNldCwgcmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKSwgcmFuZ2UuZW5kLm9mZnNldCk7
Cit9CisKK1JlZlB0cjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UpCit7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZSgqcmFuZ2UpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW1wbGVSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NWM5YjhhNDk1NzNiZjVlZDdiZGZiYTg5Mzk3
MTA5MjEzOTNhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJCb3VuZGFyeVBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UmFuZ2U7CisKK3N0cnVjdCBTaW1wbGVSYW5nZSB7CisgICAgQm91bmRhcnlQb2ludCBzdGFydDsK
KyAgICBCb3VuZGFyeVBvaW50IGVuZDsKKworICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyKCkgY29u
c3QgeyByZXR1cm4gc3RhcnQuY29udGFpbmVyLmdldCgpOyB9CisgICAgdW5zaWduZWQgc3RhcnRP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdGFydC5vZmZzZXQ7IH0KKyAgICBOb2RlJiBlbmRDb250
YWluZXIoKSBjb25zdCB7IHJldHVybiBlbmQuY29udGFpbmVyLmdldCgpOyB9CisgICAgdW5zaWdu
ZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gZW5kLm9mZnNldDsgfQorCisgICAgYm9vbCBj
b2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBzdGFydCA9PSBlbmQ7IH0KKworICAgIFNpbXBsZVJh
bmdlKGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7CisgICAgU2lt
cGxlUmFuZ2UoQm91bmRhcnlQb2ludCYmLCBCb3VuZGFyeVBvaW50JiYpOworCisgICAgV0VCQ09S
RV9FWFBPUlQgU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UmKTsKKworICAgIC8vIENvbnZlbmllbmNl
IG92ZXJsb2FkcyB0byBoZWxwIHdpdGggdHJhbnNpdGlvbiBmcm9tIHVzaW5nIGEgbG90IG9mIGxp
dmUgcmFuZ2VzLiBDb25zaWRlciByZW1vdmluZyB0aGVzZSBldmVudHVhbGx5LgorICAgIFNpbXBs
ZVJhbmdlKGNvbnN0IFJhbmdlKik7IC8vIENyYXNoZXMgaWYgcGFzc2VkIGEgbnVsbHB0ci4KKyAg
ICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+Jik7Cit9OworCitib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpOworCitXRUJDT1JFX0VYUE9S
VCBSZWY8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYpOworV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+Jik7CisKK2lubGluZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmFu
Z2UqIHJhbmdlKQorICAgIDogU2ltcGxlUmFuZ2UoKnJhbmdlKQoreworfQorCitpbmxpbmUgU2lt
cGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNvbnN0IFJlZjxSYW5nZT4mIHJhbmdlKQorICAgIDogU2lt
cGxlUmFuZ2UocmFuZ2UuZ2V0KCkpCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdGF0aWNSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2Uu
Y3BwCmluZGV4IDgxMzZkYTE5MzMwYTAyY2E5NTM0ZGQ0MGNiZjAzYWVmNWRiOTE3OWYuLjViYzYy
ZjE3NDE0YTg2YmU0MDI4MWEzY2JlZjI3ZmVkY2E0ODNhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRp
Y1JhbmdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiwzNSArMjYsMzQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTdGF0aWNSYW5nZS5oIgogCi0jaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3Rh
dGljUmFuZ2U6OlN0YXRpY1JhbmdlKFJlZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgUmVmPE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgOiBtX3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQotICAg
ICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKLSAgICAsIG1fZW5kQ29udGFpbmVyKFdURk1v
dmUoZW5kQ29udGFpbmVyKSkKLSAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKK1N0YXRpY1Jh
bmdlOjpTdGF0aWNSYW5nZShTaW1wbGVSYW5nZSYmIHJhbmdlKQorICAgIDogU2ltcGxlUmFuZ2Uo
V1RGTW92ZShyYW5nZSkpCiB7CiB9CiAKLVN0YXRpY1JhbmdlOjp+U3RhdGljUmFuZ2UoKSA9IGRl
ZmF1bHQ7Ci0KLVJlZjxTdGF0aWNSYW5nZT4gU3RhdGljUmFuZ2U6OmNyZWF0ZShSZWY8Tm9kZT4m
JiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFJlZjxOb2RlPiYmIGVuZENv
bnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorUmVmPFN0YXRpY1JhbmdlPiBTdGF0aWNSYW5n
ZTo6Y3JlYXRlKFNpbXBsZVJhbmdlJiYgcmFuZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RhdGljUmFuZ2UoV1RGTW92ZShzdGFydENvbnRhaW5lciksIHN0YXJ0T2Zmc2V0LCBXVEZN
b3ZlKGVuZENvbnRhaW5lciksIGVuZE9mZnNldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0YXRpY1JhbmdlKFdURk1vdmUocmFuZ2UpKSk7CiB9CiAKLVJlZjxTdGF0aWNSYW5nZT4gU3Rh
dGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UpCitzdGF0aWMgYm9v
bCBpc0RvY3VtZW50VHlwZU9yQXR0cihOb2RlJiBub2RlKQogewotICAgIHJldHVybiBTdGF0aWNS
YW5nZTo6Y3JlYXRlKHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLnN0YXJ0T2Zmc2V0KCks
IHJhbmdlLmVuZENvbnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSk7Ci19CisgICAgLy8gQmVm
b3JlIGNhbGxpbmcgbm9kZVR5cGUsIGRvIHR3byBmYXN0IG5vbi12aXJ0dWFsIGNoZWNrcyB0aGF0
IGNvdmVyIGFsbW9zdCBhbGwgbm9ybWFsIG5vZGVzLCBidXQgYXJlIGZhbHNlIGZvciBEb2N1bWVu
dFR5cGUgYW5kIEF0dHIuCisgICAgaWYgKGlzPENvbnRhaW5lck5vZGU+KG5vZGUpIHx8IGlzPFRl
eHQ+KG5vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c0RvY3VtZW50VHlwZU9yQXR0cihOb2RlJiBub2RlKQotewotICAgIHJldHVybiBub2RlLmlzRG9j
dW1lbnRUeXBlTm9kZSgpIHx8IG5vZGUuaXNBdHRyaWJ1dGVOb2RlKCk7CisgICAgLy8gQ2FsbCBu
b2RlVHlwZSBleHBsaWNpdGx5IGFuZCB1c2UgYSBzd2l0Y2ggc28gd2UgZG9uJ3QgaGF2ZSB0byBj
YWxsIGl0IHR3aWNlLgorICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSgpKSB7CisgICAgY2FzZSBO
b2RlOjpBVFRSSUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KIH0KIAogRXhjZXB0aW9uT3I8UmVmPFN0YXRpY1JhbmdlPj4gU3RhdGljUmFuZ2U6
OmNyZWF0ZShJbml0JiYgaW5pdCkKQEAgLTYzLDI3ICs2Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxT
dGF0aWNSYW5nZT4+IFN0YXRpY1JhbmdlOjpjcmVhdGUoSW5pdCYmIGluaXQpCiAgICAgQVNTRVJU
KGluaXQuZW5kQ29udGFpbmVyKTsKICAgICBpZiAoaXNEb2N1bWVudFR5cGVPckF0dHIoKmluaXQu
c3RhcnRDb250YWluZXIpIHx8IGlzRG9jdW1lbnRUeXBlT3JBdHRyKCppbml0LmVuZENvbnRhaW5l
cikpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTm9kZVR5cGVFcnJvciB9Owot
ICAgIHJldHVybiBTdGF0aWNSYW5nZTo6Y3JlYXRlKGluaXQuc3RhcnRDb250YWluZXIucmVsZWFz
ZU5vbk51bGwoKSwgaW5pdC5zdGFydE9mZnNldCwgaW5pdC5lbmRDb250YWluZXIucmVsZWFzZU5v
bk51bGwoKSwgaW5pdC5lbmRPZmZzZXQpOwotfQotCi1Ob2RlKiBTdGF0aWNSYW5nZTo6c3RhcnRD
b250YWluZXIoKSBjb25zdAotewotICAgIHJldHVybiAoTm9kZSopbV9zdGFydENvbnRhaW5lci5w
dHIoKTsKLX0KLQotTm9kZSogU3RhdGljUmFuZ2U6OmVuZENvbnRhaW5lcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIChOb2RlKiltX2VuZENvbnRhaW5lci5wdHIoKTsKLX0KLQotYm9vbCBTdGF0aWNS
YW5nZTo6Y29sbGFwc2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGFydE9mZnNldCA9PSBt
X2VuZE9mZnNldCAmJiBtX3N0YXJ0Q29udGFpbmVyLnB0cigpID09IG1fZW5kQ29udGFpbmVyLnB0
cigpOwotfQotCi1ib29sIFN0YXRpY1JhbmdlOjpvcGVyYXRvcj09KGNvbnN0IFN0YXRpY1Jhbmdl
JiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gKG1fc3RhcnRPZmZzZXQgPT0gb3RoZXIuc3Rh
cnRPZmZzZXQoKSAmJiBtX2VuZE9mZnNldCA9PSBvdGhlci5lbmRPZmZzZXQoKSAmJiBtX3N0YXJ0
Q29udGFpbmVyLT5pc0VxdWFsTm9kZShvdGhlci5zdGFydENvbnRhaW5lcigpKSAmJiBtX2VuZENv
bnRhaW5lci0+aXNFcXVhbE5vZGUob3RoZXIuZW5kQ29udGFpbmVyKCkpKTsKKyAgICByZXR1cm4g
Y3JlYXRlKHsgeyBpbml0LnN0YXJ0Q29udGFpbmVyLnJlbGVhc2VOb25OdWxsKCksIGluaXQuc3Rh
cnRPZmZzZXQgfSwgeyBpbml0LmVuZENvbnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBpbml0LmVu
ZE9mZnNldCB9IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3Rh
dGljUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5oCmluZGV4IGY4MGQ4
NWU1Mjg2OGVjNTQwYWM0ZmMzYTQxYjZmOGI1Y2FkZWQ2YjUuLmExOGRhZGE1NWQxNWMzYzdmNDBk
N2RkZDYyODE3MzI0ZDk0MmQxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0
aWNSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ1ICsy
NiwyNSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTm9kZTsKLWNsYXNz
IFJhbmdlOwotCi1jbGFzcyBTdGF0aWNSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpY1Jh
bmdlPiB7CitjbGFzcyBTdGF0aWNSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpY1Jhbmdl
PiwgcHVibGljIFNpbXBsZVJhbmdlIHsKIHB1YmxpYzoKLSAgICB+U3RhdGljUmFuZ2UoKTsKLQot
ICAgIHN0YXRpYyBSZWY8U3RhdGljUmFuZ2U+IGNyZWF0ZUZyb21SYW5nZShjb25zdCBSYW5nZSYp
OwotICAgIHN0YXRpYyBSZWY8U3RhdGljUmFuZ2U+IGNyZWF0ZShSZWY8Tm9kZT4mJiBzdGFydENv
bnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFJlZjxOb2RlPiYmIGVuZENvbnRhaW5lciwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKLQogICAgIHN0cnVjdCBJbml0IHsKICAgICAgICAgUmVmUHRy
PE5vZGU+IHN0YXJ0Q29udGFpbmVyOwotICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0T2Zmc2V0
IHsgMCB9OworICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCB7IDAgfTsKICAgICAgICAgUmVm
UHRyPE5vZGU+IGVuZENvbnRhaW5lcjsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBlbmRPZmZzZXQg
eyAwIH07CisgICAgICAgIHVuc2lnbmVkIGVuZE9mZnNldCB7IDAgfTsKICAgICB9OwogCiAgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTdGF0aWNSYW5nZT4+IGNyZWF0ZShJbml0JiYpOwotCi0g
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9
Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0K
LSAgICBOb2RlKiBzdGFydENvbnRhaW5lcigpIGNvbnN0OwotICAgIE5vZGUqIGVuZENvbnRhaW5l
cigpIGNvbnN0OwotICAgIGJvb2wgY29sbGFwc2VkKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0YXRpY1JhbmdlJikgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdGF0
aWNSYW5nZT4gY3JlYXRlKFNpbXBsZVJhbmdlJiYpOwogCiBwcml2YXRlOgotICAgIFN0YXRpY1Jh
bmdlKFJlZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgUmVm
PE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpOwotCi0gICAgUmVmPE5v
ZGU+IG1fc3RhcnRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9zdGFydE9mZnNldDsKLSAgICBS
ZWY8Tm9kZT4gbV9lbmRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9lbmRPZmZzZXQ7CisgICAg
U3RhdGljUmFuZ2UoU2ltcGxlUmFuZ2UmJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1Jh
bmdlLmlkbAppbmRleCAzMGIwYTE3ZTQ5MDA1MGY1NDc3ZWY5Yjk5M2EzZDg0NzU3NWZjMTc3Li5k
OGI5NDc5Y2Y3ZDhhNGZhYzk0ZTcwZmYzY2NmODdhZjYyOTJjZGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dGF0aWNSYW5nZS5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsOCArMzgsOCBAQAogfTsKIAogZGljdGlvbmFyeSBTdGF0aWNSYW5nZUlu
aXQgewotICByZXF1aXJlZCBOb2RlIHN0YXJ0Q29udGFpbmVyOwotICByZXF1aXJlZCB1bnNpZ25l
ZCBsb25nIHN0YXJ0T2Zmc2V0OwotICByZXF1aXJlZCBOb2RlIGVuZENvbnRhaW5lcjsKLSAgcmVx
dWlyZWQgdW5zaWduZWQgbG9uZyBlbmRPZmZzZXQ7CisgICAgcmVxdWlyZWQgTm9kZSBzdGFydENv
bnRhaW5lcjsKKyAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHN0YXJ0T2Zmc2V0OworICAgIHJl
cXVpcmVkIE5vZGUgZW5kQ29udGFpbmVyOworICAgIHJlcXVpcmVkIHVuc2lnbmVkIGxvbmcgZW5k
T2Zmc2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MjZlZTU3NDRhNmNmMmM3ZTIyYTYzNDM5NzZhOWM4
ZjhiZGEyNzUuLjYwZTMwNzQ3ZDk2OWYwZmFlYmUyZjk1YmIyMDU5YWY4ZDgzMjViZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCisjaW5jbHVkZSAi
U2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxw
ZXIuaCIKQEAgLTIxOSwxMiArMjIwLDEyIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICBp
bnQgcGFyYWdyYXBoU3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoUmFuZ2U6
OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7CiAgICAgU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBhbHRlcm5hdGl2
ZSktPmFwcGx5KCk7CiAgICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uLCBzaW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kIG1vZGlmaWVkIHRoZSBE
T00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVj
dGlvbiBpcyBubyBsb25nZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBCdWd6aWxsYTogODk1MjYK
LSAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFw
aFN0YXJ0SW5kZXgsIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRp
dmUubGVuZ3RoKCkpOworICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0Nv
cnJlY3Rpb24gPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXgsIGNvcnJlY3Rpb25TdGFy
dE9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpKTsKICAgICBpZiAoIXVw
ZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICBzZXRFbmQodXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJl
Y3Rpb24uZ2V0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5n
ZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIGNvcnJlY3Rpb25T
dGFydE9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7CisgICAgUmVmUHRy
PFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBjb3Jy
ZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpKTsKICAg
ICBTdHJpbmcgbmV3VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKTsKIAog
ICAgIC8vIENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDUyZTZlNGUwYjE3ZGRm
OTBkZDFiZWI1ZWRkOTFjMDAxNWRhMzI5NzQuLjI3OTg5YmVmZmQyOGQ1Nzc0MTFjZGJjNGM2YzNk
NzZlM2UyNjUwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRl
ICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0yODUsOCArMjg2LDggQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5
bGUpCiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwg
dHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGF1dG8g
c3RhcnRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKHNjb3BlLCBzdGFydEluZGV4LCAwLCB0cnVlKSk7CisgICAgICAgIGF1dG8g
ZW5kUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAsIHRydWUpKTsKICAgICAgICAgaWYgKHN0YXJ0
UmFuZ2UgJiYgZW5kUmFuZ2UpCiAgICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJhbmdl
LT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXgg
NWRhYjdiYTEwMWEwMTg1ZGNkMjc5YzdjNjNjYTk0NjA4YjA3MjZmMS4uYzM3ODAxYzRkYjM0OGRh
MTFmOTIxN2RhNmVmOWFlMjMwODFmMTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTM4OCw3ICszODgsNyBAQCBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNv
bnN0CiAgICAgaWYgKCFmaXJzdFJhbmdlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0
dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmlyc3RSYW5nZSkgfTsKKyAg
ICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlKCpmaXJzdFJhbmdlKSB9OwogfQogCiBW
ZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJh
bmdlc0ZvckJpbmRpbmdzKCkgY29uc3QKQEAgLTE1MzIsOCArMTUzMiw4IEBAIHZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3Rh
cnRPZlBhcmFncmFwCiAgICAgICAgIC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFwc2VkIGR1
cmluZyB0aGUgbW92ZSBvcGVyYXRpb24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8gaW4gYSBj
YWxsIHRvIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBwYXN0IHRo
ZSBlbmQKICAgICAgICAgLy8gb2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVybiBudWxs
KS4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsg
c3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRl
c3RpbmF0aW9uSW5kZXggKyBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIFJlZlB0cjxSYW5n
ZT4gc3RhcnQgPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBzdGFydElu
ZGV4LCAwLCB0cnVlKSk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0gY3JlYXRlTGl2ZVJh
bmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290
LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpKTsKICAgICAgICAg
aWYgKHN0YXJ0ICYmIGVuZCkKICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxl
U2VsZWN0aW9uKHN0YXJ0LT5zdGFydFBvc2l0aW9uKCksIGVuZC0+c3RhcnRQb3NpdGlvbigpLCBE
T1dOU1RSRUFNLCBvcmlnaW5hbElzRGlyZWN0aW9uYWwpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmNwcAppbmRleCBmZDVlNTk1YWNiNTE1YjRmN2U1NTgyODRjODU1ZWIzZWE0Yzhj
NWVhLi5jZDMxMWUxYWVhNWZhYmU0YjgyYzgyZWU3MDY4Yjk5NjhkOWFkZmQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtMTEw
Niw3ICsxMTA3LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9u
V2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2kKIAogVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUp
CiB7Ci0gICAgYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoc2NvcGUsIGluZGV4LCAwLCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlID0gY3JlYXRlTGl2
ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGlu
ZGV4LCAwLCB0cnVlKSk7CiAgICAgLy8gQ2hlY2sgZm9yIGFuIGludmFsaWQgaW5kZXguIENlcnRh
aW4gZWRpdGluZyBvcGVyYXRpb25zIGludmFsaWRhdGUgaW5kaWNlcyBiZWNhdXNlIAogICAgIC8v
IG9mIHByb2JsZW1zIHdpdGggVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMuCiAgICAgaWYgKCFyYW5nZSkKQEAgLTExMjgsMTAgKzExMjksMTAgQEAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVy
YXRvcihOb2RlJiBub2RlLCBpbnQgaW4KICAgICAgICAgLy8gRklYTUU6IHdvcmthcm91bmQgZm9y
IGNvbGxhcHNlZCByYW5nZSAod2hlcmUgb25seSBzdGFydCBwb3NpdGlvbiBpcyBjb3JyZWN0KSBl
bWl0dGVkIGZvciBzb21lIGVtaXR0ZWQgbmV3bGluZXMuCiAgICAgICAgIGl0LmFkdmFuY2UoMSk7
CiAgICAgICAgIGlmICghaXQuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oaXQucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpLT5zdGFydFBvc2l0aW9u
KCkpOwogICAgIH0KIAotICAgIHJldHVybiB7IGl0LmF0RW5kKCkgPyByYW5nZS0+ZW5kUG9zaXRp
b24oKSA6IGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNIH07CisgICAgcmV0dXJu
IHsgaXQuYXRFbmQoKSA/IHJhbmdlLT5lbmRQb3NpdGlvbigpIDogY3JlYXRlTGl2ZVJhbmdlKGl0
LnJhbmdlKCkpLT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSB9OwogfQogCiAvLyBEZXRlcm1pbmVz
IHdoZXRoZXIgdHdvIHBvc2l0aW9ucyBhcmUgdmlzaWJseSBuZXh0IHRvIGVhY2ggb3RoZXIgKGZp
cnN0IHRoZW4gc2Vjb25kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDZjNmQ4M2E3
MjhmMzAyMDNiOGVmZmNlMGYwOGJhYTQ1NWMzMjZhNmEuLjJhYzJhZGExZjg4NzkyOWI5NzNhNGI2
Mjc3YzNmOGU1ODdjNmEyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIyNDYs
NyArMjI0Niw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgICAgIC8vIFN0b3AgbG9va2luZyBhdCBzdGFy
dCBvZiBuZXh0IG1pc3NwZWxsZWQgd29yZAogICAgICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3Ig
Y2hhcnMoKmdyYW1tYXJTZWFyY2hSYW5nZSk7CiAgICAgICAgICAgICBjaGFycy5hZHZhbmNlKG1p
c3NwZWxsaW5nT2Zmc2V0KTsKLSAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5k
KGNoYXJzLnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCksIGNoYXJzLnJhbmdlKCktPnN0YXJ0T2Zm
c2V0KCkpOworICAgICAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlLT5zZXRFbmQoY2hhcnMucmFu
Z2UoKS5zdGFydENvbnRhaW5lcigpLCBjaGFycy5yYW5nZSgpLnN0YXJ0T2Zmc2V0KCkpOwogICAg
ICAgICB9CiAgICAgCiAgICAgICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKQEAg
LTIyODEsNyArMjI4MSw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
Ym9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgICAgICAgICAvLyBTdG9wIGxvb2tp
bmcgYXQgc3RhcnQgb2YgbmV4dCBtaXNzcGVsbGVkIHdvcmQKICAgICAgICAgICAgICAgICBDaGFy
YWN0ZXJJdGVyYXRvciBjaGFycygqZ3JhbW1hclNlYXJjaFJhbmdlKTsKICAgICAgICAgICAgICAg
ICBjaGFycy5hZHZhbmNlKG1pc3NwZWxsaW5nT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBncmFt
bWFyU2VhcmNoUmFuZ2UtPnNldEVuZChjaGFycy5yYW5nZSgpLT5zdGFydENvbnRhaW5lcigpLCBj
aGFycy5yYW5nZSgpLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBncmFtbWFyU2Vh
cmNoUmFuZ2UtPnNldEVuZChjaGFycy5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCksIGNoYXJzLnJh
bmdlKCkuc3RhcnRPZmZzZXQoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKQEAgLTIzMDMsOCArMjMwMyw4IEBAIHZvaWQgRWRp
dG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikK
ICAgICAgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gIT0gLTEgJiYgZ3JhbW1hckRl
dGFpbC5sZW5ndGggPiAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkxOTA6IFRo
aXMgZ2V0cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVuZCBvZiBh
IHBhcmFncmFwaAotICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCArIGdyYW1t
YXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKLSAgICAgICAgbV9mcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYWRHcmFtbWFyUmFu
Z2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdl
ID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmdyYW1tYXJTZWFyY2hS
YW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCArIGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1t
YXJEZXRhaWwubGVuZ3RoKSk7CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9B
RkZJTklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigp
OwogICAgICAgICAKICAgICAgICAgY2xpZW50KCktPnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1h
clN0cmluZyhiYWRHcmFtbWFyUGhyYXNlLCBncmFtbWFyRGV0YWlsKTsKQEAgLTIzMTUsOCArMjMx
NSw4IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gV2UgZm91bmQgYSBtaXNzcGVsbGluZywgYnV0IG5v
dCBhbnkgZWFybGllciBiYWQgZ3JhbW1hci4gU2VsZWN0IHRoZSBtaXNzcGVsbGluZywgdXBkYXRl
IHRoZSBzcGVsbGluZyBwYW5lbCwgYW5kIHN0b3JlCiAgICAgICAgIC8vIGEgbWFya2VyIHNvIHdl
IGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCi0gICAgICAgIGF1dG8gbWlz
c3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5n
ZSwgbWlzc3BlbGxpbmdPZmZzZXQsIG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKLSAgICAgICAg
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtaXNzcGVs
bGluZ1JhbmdlLCBET1dOU1RSRUFNKSk7CisgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9
IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHNwZWxsaW5nU2VhcmNoUmFu
Z2UsIG1pc3NwZWxsaW5nT2Zmc2V0LCBtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSkpOworICAgICAg
ICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3Nw
ZWxsaW5nUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pKTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rp
b24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKICAgICAgICAgCiAgICAgICAgIGNsaWVudCgpLT51cGRh
dGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKG1pc3NwZWxsZWRXb3JkKTsKQEAgLTI3Nzks
OSArMjc3OSw5IEBAIHN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1Rl
eHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhCiAgICAgLy8gVGV4dENoZWNraW5n
UGFyYWdyYXBoIG1heSBiZSBvcnBoYW5lZCBhZnRlciBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
IG11dGF0ZWQgRE9NLgogICAgIC8vIFNlZSA8cmRhcjovLzEwMzA1MzE1PiwgaHR0cDovL3dlYmtp
dC5vcmcvYi84OTUyNi4KIAotICAgIFJlZlB0cjxSYW5nZT4gbmV3UGFyYWdyYXBoUmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZzY29wZSwgcGFyYWdyYXBo
TG9jYXRpb24sIHBhcmFncmFwaExlbmd0aCArIHJlcGxhY2VtZW50Lmxlbmd0aCgpIC0gcmVzdWx0
TGVuZ3RoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0gY3JlYXRlTGl2
ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnNjb3BlLCBw
YXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkg
LSByZXN1bHRMZW5ndGgpKTsKIAotICAgIGF1dG8gc3BlbGxDaGVja2luZ1JhbmdlID0gVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCByZXBs
YWNlbWVudC5sZW5ndGgoKSk7CisgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSBjcmVhdGVM
aXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3Vs
dExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSkpOwogICAgIHBhcmFncmFwaCA9IFRleHRD
aGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBzcGVsbENoZWNr
aW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CiB9CiAKQEAgLTI4
OTQsNyArMjg5NCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVs
bENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9SZXBsYWNlLCBET1dOU1RSRUFNKTsKKyAgICAgICAg
ICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9SZXBsYWNlLmdl
dCgpLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Ub1JlcGxhY2UgIT0g
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgICAgIGlmICgh
bV9mcmFtZS5zZWxlY3Rpb24oKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uVG9SZXBs
YWNlKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zNDkxLDcgKzM0OTEsNyBA
QCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdl
dCwgUmFuZ2UqIHJlZmVyZW5jZVJhbmdlLAogICAgICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldFN0
YXJ0KCpzaGFkb3dUcmVlUm9vdCwgMCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJhbmdlPiByZXN1
bHRSYW5nZSA9IGZpbmRQbGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoZmluZFBsYWlu
VGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdldCwgb3B0aW9ucykpOwogICAgIC8vIElmIHdlIHN0YXJ0
ZWQgaW4gdGhlIHJlZmVyZW5jZSByYW5nZSBhbmQgdGhlIGZvdW5kIHJhbmdlIGV4YWN0bHkgbWF0
Y2hlcyB0aGUgcmVmZXJlbmNlIHJhbmdlLCBmaW5kIGFnYWluLgogICAgIC8vIEJ1aWxkIGEgc2Vs
ZWN0aW9uIHdpdGggdGhlIGZvdW5kIHJhbmdlIHRvIHJlbW92ZSBjb2xsYXBzZWQgd2hpdGVzcGFj
ZS4KICAgICAvLyBDb21wYXJlIHJhbmdlcyBpbnN0ZWFkIG9mIHNlbGVjdGlvbiBvYmplY3RzIHRv
IGlnbm9yZSB0aGUgd2F5IHRoYXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHdhcyBtYWRlLgpAQCAt
MzUwOSw3ICszNTA5LDcgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29u
c3QgU3RyaW5nJiB0YXJnZXQsIFJhbmdlKiByZWZlcmVuY2VSYW5nZSwKICAgICAgICAgICAgICAg
ICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoKnNoYWRvd1RyZWVSb290LCAwKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHJlc3VsdFJhbmdlID0gZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdl
dCwgb3B0aW9ucyk7CisgICAgICAgIHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGZpbmRQ
bGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICAv
LyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbiB0aGUgc2hhZG93IHRyZWUsIHNlYXJjaCBpbiBtYWlu
IGNvbnRlbnQgZm9sbG93aW5nIHRoZSBzaGFkb3cgdHJlZS4KQEAgLTM1MjIsMTQgKzM1MjIsMTQg
QEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIFJhbmdlKiByZWZlcmVuY2VSYW5nZSwKICAgICAgICAgICAgICAgICBzZWFyY2hSYW5nZS0+
c2V0RW5kQmVmb3JlKCpzaGFkb3dUcmVlUm9vdC0+c2hhZG93SG9zdCgpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHJlc3VsdFJhbmdlID0gZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdl
dCwgb3B0aW9ucyk7CisgICAgICAgIHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGZpbmRQ
bGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICAv
LyBJZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZyBhbmQgd2UncmUgd3JhcHBpbmcsIHNlYXJjaCBh
Z2FpbiBpbiB0aGUgZW50aXJlIGRvY3VtZW50ICh0aGlzIHdpbGwKICAgICAvLyByZWR1bmRhbnRs
eSByZS1zZWFyY2ggdGhlIGFyZWEgYWxyZWFkeSBzZWFyY2hlZCBpbiBzb21lIGNhc2VzKS4KICAg
ICBpZiAocmVzdWx0UmFuZ2UtPmNvbGxhcHNlZCgpICYmIG9wdGlvbnMuY29udGFpbnMoV3JhcEFy
b3VuZCkpIHsKICAgICAgICAgc2VhcmNoUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoZG9jdW1lbnQo
KSk7Ci0gICAgICAgIHJlc3VsdFJhbmdlID0gZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRh
cmdldCwgb3B0aW9ucyk7CisgICAgICAgIHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGZp
bmRQbGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMpKTsKICAgICAgICAgLy8g
V2UgdXNlZCB0byByZXR1cm4gZmFsc2UgaGVyZSBpZiB3ZSBlbmRlZCB1cCB3aXRoIHRoZSBzYW1l
IHJhbmdlIHRoYXQgd2Ugc3RhcnRlZCB3aXRoCiAgICAgICAgIC8vIChlLmcuLCB0aGUgcmVmZXJl
bmNlIHJhbmdlIHdhcyBhbHJlYWR5IHRoZSBvbmx5IGluc3RhbmNlIG9mIHRoaXMgdGV4dCkuIEJ1
dCB3ZSBkZWNpZGVkIHRoYXQKICAgICAgICAgLy8gdGhpcyBzaG91bGQgYmUgYSBzdWNjZXNzIGNh
c2UgaW5zdGVhZCwgc28gd2UnbGwganVzdCBmYWxsIHRocm91Z2ggaW4gdGhhdCBjYXNlLgpAQCAt
MzU2OSw3ICszNTY5LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgIHVuc2lnbmVk
IG1hdGNoQ291bnQgPSAwOwogICAgIGRvIHsKLSAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9IGZp
bmRQbGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMgLSBCYWNrd2FyZHMpOwor
ICAgICAgICBhdXRvIHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGZpbmRQbGFpblRleHQo
KnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMgLSBCYWNrd2FyZHMpKTsKICAgICAgICAgaWYg
KHJlc3VsdFJhbmdlLT5jb2xsYXBzZWQoKSkgewogICAgICAgICAgICAgaWYgKCFyZXN1bHRSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMzczNCw3ICszNzM0LDcgQEAgdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVw
aG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcKICAgICAg
ICAgdW5zaWduZWQgc3VicmFuZ2VPZmZzZXQgPSBzY2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0
YXJ0UG9zaXRpb247CiAgICAgICAgIHVuc2lnbmVkIHN1YnJhbmdlTGVuZ3RoID0gcmVsYXRpdmVF
bmRQb3NpdGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CiAKLSAgICAgICAgYXV0byBz
dWJyYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocmFuZ2UsIHN1YnJhbmdlT2Zmc2V0LCBz
dWJyYW5nZUxlbmd0aCk7CisgICAgICAgIGF1dG8gc3VicmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2Uo
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgc3VicmFuZ2VPZmZzZXQsIHN1YnJhbmdlTGVu
Z3RoKSk7CiAKICAgICAgICAgbWFya2VkUmFuZ2VzLmFwcGVuZChzdWJyYW5nZS5wdHIoKSk7CiAg
ICAgICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKHN1YnJhbmdl
LCBEb2N1bWVudE1hcmtlcjo6VGVsZXBob25lTnVtYmVyKTsKQEAgLTM5NTMsNyArMzk1Myw3IEBA
IFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBU
ZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsCiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNv
bnRleHRSYW5nZSwgcmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICByZXR1cm4g
Y3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVz
dWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpzY2hlZHVs
ZUVkaXRvclVJVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAppbmRleCAwNDFmOWQxMTdkNmEwMWViMmM1ODVh
OGIyMTRkMzNkY2U4ZDg4MDBmLi45ZDE3M2NmNTdmOTEyMWEwZDk2MDk4MjE0OGU3NzEyMWQxOGFi
OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhU
ZXh0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VX
aXRoVGV4dENvbW1hbmQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFJlZlB0cjxEYXRhVHJhbnNmZXI+
IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNv
bnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENv
bW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgMSwgU3RhdGljUmFu
Z2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRvQmVSZXBsYWNlZCkgfTsKKyAgICByZXR1cm4g
eyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3ZGIzZjliNDVkOGIzZjc2NzZlMzBm
OTdlMDc2YTVlYTk4MzgyMzdlLi41MTMzMTQ1MzkzZDE3M2E1NzlkMGE1MGMwYmZmMWM4ZTM1YWQ4
MzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQ6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQoUmFuZ2UmIHJhbmdlVG9CZUNv
cnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQogICAgIDogQ29tcG9zaXRlRWRpdENv
bW1hbmQocmFuZ2VUb0JlQ29ycmVjdGVkLnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgRWRp
dEFjdGlvbjo6SW5zZXJ0UmVwbGFjZW1lbnQpCiAgICAgLCBtX3JhbmdlVG9CZUNvcnJlY3RlZChy
YW5nZVRvQmVDb3JyZWN0ZWQpCi0gICAgLCBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQobV9yYW5n
ZVRvQmVDb3JyZWN0ZWQpCisgICAgLCBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQobV9yYW5nZVRv
QmVDb3JyZWN0ZWQuZ2V0KCkpCiAgICAgLCBtX2NvcnJlY3Rpb24oY29ycmVjdGlvbikKIHsKIH0K
QEAgLTEyNCw3ICsxMjQsNyBAQCBTdHJpbmcgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5w
dXRFdmVudERhdGEoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
eyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVkKSB9
OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGUobV9yYW5nZVRvQmVDb3JyZWN0
ZWQpIH07CiB9CiAKIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDhjMjM0YTRkOTE5NDA4ZGRhYTdkNzE1
MTA4Yjg0YzFmYzMwMmY2ZmEuLjMyNTk0YTU4ODVjNjVhMTc1NTU0YTEyYjQzZWIyYjM2NDMwNzEx
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAK
QEAgLTE2MCw3ICsxNjAsNyBAQCBSYW5nZSYgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpwYXJhZ3Jh
cGhSYW5nZSgpIGNvbnN0CiAKIFJlZjxSYW5nZT4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpzdWJy
YW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgY2hhcmFj
dGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShU
ZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHBhcmFncmFwaFJhbmdlKCksIGNoYXJhY3Rlck9mZnNldCwg
Y2hhcmFjdGVyQ291bnQpKTsKIH0KIAogRXhjZXB0aW9uT3I8aW50PiBUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKQEAgLTI3Nyw3
ICsyNzcsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGlu
ZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogCiAgICAgICAgIGlmIChtaXNzcGVs
bGluZ0xvY2F0aW9uID49IDAgJiYgbWlzc3BlbGxpbmdMZW5ndGggPiAwICYmIG1pc3NwZWxsaW5n
TG9jYXRpb24gPCB0ZXh0TGVuZ3RoICYmIG1pc3NwZWxsaW5nTGVuZ3RoIDw9IHRleHRMZW5ndGgg
JiYgbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoIDw9IHRleHRMZW5ndGgp
IHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgcmFuZ2Ugb2YgbWlzc3BlbGxlZCB3b3JkCi0gICAg
ICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1f
cmFuZ2UsIGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxs
aW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IGNyZWF0ZUxp
dmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGN1cnJlbnRDaHVua09mZnNl
dCArIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKSk7CiAKICAgICAgICAg
ICAgIC8vIFJlbWVtYmVyIGZpcnN0LWVuY291bnRlcmVkIG1pc3NwZWxsaW5nIGFuZCBpdHMgb2Zm
c2V0LgogICAgICAgICAgICAgaWYgKCFmaXJzdE1pc3NwZWxsaW5nKSB7CkBAIC00NTYsNyArNDU2
LDcgQEAgaW50IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25z
dCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAKICAgICAgICAgaWYgKG1hcmtBbGwpIHsKLSAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1h
clJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShtX3JhbmdlLCBiYWRHcmFtbWFyUGhyYXNl
TG9jYXRpb24gLSBzdGFydE9mZnNldCArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+bGVuZ3Ro
KTsKKyAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRl
eHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uIC0g
c3RhcnRPZmZzZXQgKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxlbmd0aCkpOwogICAgICAg
ICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2Vy
cygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBk
ZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01NTYsNyAr
NTU2LDcgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBCYWQgZ3JhbW1hciBhdCBzdGFy
dCBvZiByYW5nZSwgYnV0IGVuZCBvZiBiYWQgZ3JhbW1hciBpcyBiZWZvcmUgb3IgYWZ0ZXIgZW5k
IG9mIHJhbmdlCi0gICAgaWYgKGdyYW1tYXJEZXRhaWwubGVuZ3RoICE9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgobV9yYW5nZS5wdHIoKSkpCisgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4o
Z3JhbW1hckRldGFpbC5sZW5ndGgpICE9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobV9yYW5n
ZS5wdHIoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBVcGRhdGUgdGhl
IHNwZWxsaW5nIHBhbmVsIHRvIGJlIGRpc3BsYXlpbmcgdGhpcyBlcnJvciAod2hldGhlciBvciBu
b3QgdGhlIHNwZWxsaW5nIHBhbmVsIGlzIG9uIHNjcmVlbikuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKaW5kZXggNTNjMmQyNTZlZDI4YTdlNWNjMDNmY2Q2YjZmM2NlOGRj
MzAzNGFkMi4uZDUyMTM4MThmNjYyNDI5MzYzNTQ0NTFiOTRkYzIyOTdhYjFlYTk3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxleGV5IFByb3NrdXJ5YWtvdi4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTE4OCwxMCArMTg4LDMxIEBAIHVuc2lnbmVkIEJpdFN0YWNrOjpzaXplKCkg
Y29uc3QKIAogLy8gLS0tLS0tLS0KIAorc3RhdGljIFBvc2l0aW9uIG1ha2VQb3NpdGlvbkxlZ2Fj
eUVkaXRpbmcoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwb2ludC5jb250YWluZXIucHRyKCksIHBvaW50Lm9mZnNl
dCk7Cit9CisKK3N0YXRpYyBOb2RlKiBmaXJzdE5vZGVMZWdhY3lFZGl0aW5nKGNvbnN0IEJvdW5k
YXJ5UG9pbnQmIHBvaW50KQoreworICAgIGlmIChwb2ludC5jb250YWluZXItPmlzQ2hhcmFjdGVy
RGF0YU5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHBvaW50LmNvbnRhaW5lci5wdHIoKTsKKyAgICBp
ZiAoYXV0byogY2hpbGQgPSBwb2ludC5jb250YWluZXItPnRyYXZlcnNlVG9DaGlsZEF0KHBvaW50
Lm9mZnNldCkpCisgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICBpZiAoIXBvaW50Lm9mZnNldCkK
KyAgICAgICAgcmV0dXJuIHBvaW50LmNvbnRhaW5lci5wdHIoKTsKKyAgICByZXR1cm4gTm9kZVRy
YXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4ocG9pbnQuY29udGFpbmVyKTsKK30KKworc3Rh
dGljIE5vZGUqIGZpcnN0Tm9kZUxlZ2FjeUVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
KQoreworICAgIHJldHVybiBmaXJzdE5vZGVMZWdhY3lFZGl0aW5nKHJhbmdlLnN0YXJ0KTsKK30K
KwogLy8gVGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJhbmdlOjpwYXN0TGFzdE5vZGUsIGV4Y2VwdCBm
b3IgdGhlIGZhY3QgdGhhdCBpdCBjYW4gY2xpbWIgdXAgb3V0IG9mIHNoYWRvdyB0cmVlcy4KLXN0
YXRpYyBOb2RlKiBuZXh0SW5QcmVPcmRlckNyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhOb2RlJiBy
YW5nZUVuZENvbnRhaW5lciwgaW50IHJhbmdlRW5kT2Zmc2V0KQorc3RhdGljIE5vZGUqIG5leHRJ
blByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKE5vZGUmIHJhbmdlRW5kQ29udGFpbmVy
LCB1bnNpZ25lZCByYW5nZUVuZE9mZnNldCkKIHsKLSAgICBpZiAocmFuZ2VFbmRPZmZzZXQgPj0g
MCAmJiAhcmFuZ2VFbmRDb250YWluZXIuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7CisgICAgaWYg
KCFyYW5nZUVuZENvbnRhaW5lci5pc0NoYXJhY3RlckRhdGFOb2RlKCkpIHsKICAgICAgICAgaWYg
KE5vZGUqIG5leHQgPSByYW5nZUVuZENvbnRhaW5lci50cmF2ZXJzZVRvQ2hpbGRBdChyYW5nZUVu
ZE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICB9CkBAIC0zNDAsNyArMzYx
LDYgQEAgdm9pZCBUZXh0SXRlcmF0b3JDb3B5YWJsZVRleHQ6OmFwcGVuZFRvU3RyaW5nQnVpbGRl
cihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb24KIAogLy8gLS0tLS0tLS0KIAotCiBUZXh0SXRl
cmF0b3I6OlRleHRJdGVyYXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICA6IG1fYmVoYXZpb3IoYmVoYXZpb3IpCiB7CkBA
IC0zNjYsMjUgKzM4NiwxNyBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihQb3NpdGlvbiBz
dGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZQogICAgIGluaXQoKTsK
IH0KIAotVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHJhbmdlLCBUZXh0
SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKK1RleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAg
ICAgOiBtX2JlaGF2aW9yKGJlaGF2aW9yKQogewotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHJhbmdlLT5vd25lckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgcmFuZ2Uuc3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgp
LnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgbV9zdGFydENv
bnRhaW5lciA9ICZyYW5nZS0+c3RhcnRDb250YWluZXIoKTsKKyAgICBtX3N0YXJ0Q29udGFpbmVy
ID0gJnJhbmdlLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgbV9zdGFydE9mZnNldCA9IHJhbmdlLnN0
YXJ0T2Zmc2V0KCk7CisgICAgbV9lbmRDb250YWluZXIgPSAmcmFuZ2UuZW5kQ29udGFpbmVyKCk7
CisgICAgbV9lbmRPZmZzZXQgPSByYW5nZS5lbmRPZmZzZXQoKTsKIAotICAgIC8vIENhbGxlcnMg
c2hvdWxkIGJlIGhhbmRpbmcgdXMgd2VsbC1mb3JtZWQgcmFuZ2VzLiBJZiB3ZSBkaXNjb3ZlciB0
aGF0IHRoaXMgaXNuJ3QKLSAgICAvLyB0aGUgY2FzZSwgd2UgY291bGQgY29uc2lkZXIgY2hhbmdp
bmcgdGhpcyBhc3NlcnRpb24gdG8gYW4gZWFybHkgcmV0dXJuLgotICAgIEFTU0VSVChyYW5nZS0+
Ym91bmRhcnlQb2ludHNWYWxpZCgpKTsKLQotICAgIG1fc3RhcnRPZmZzZXQgPSByYW5nZS0+c3Rh
cnRPZmZzZXQoKTsKLSAgICBtX2VuZENvbnRhaW5lciA9ICZyYW5nZS0+ZW5kQ29udGFpbmVyKCk7
Ci0gICAgbV9lbmRPZmZzZXQgPSByYW5nZS0+ZW5kT2Zmc2V0KCk7Ci0KLSAgICBtX25vZGUgPSBy
YW5nZS0+Zmlyc3ROb2RlKCk7CisgICAgbV9ub2RlID0gZmlyc3ROb2RlTGVnYWN5RWRpdGluZyhy
YW5nZSk7CiAgICAgaWYgKCFtX25vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTg3LDcgKzU5
OSw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAKICAgICAvLyBoYW5k
bGUgcHJlLWZvcm1hdHRlZCB0ZXh0CiAgICAgaWYgKCFyZW5kZXJlci5zdHlsZSgpLmNvbGxhcHNl
V2hpdGVTcGFjZSgpKSB7Ci0gICAgICAgIGludCBydW5TdGFydCA9IG1fb2Zmc2V0OworICAgICAg
ICB1bnNpZ25lZCBydW5TdGFydCA9IG1fb2Zmc2V0OwogICAgICAgICBpZiAobV9sYXN0VGV4dE5v
ZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSAmJiBoYXNWaXNpYmxlVGV4dE5vZGUocmVuZGVyZXIp
KSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIHJ1
blN0YXJ0LCBydW5TdGFydCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MDQsOSAr
NjE2LDkgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgfQog
ICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmls
aXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW50IHJlbmRlcmVyVGV4
dExlbmd0aCA9IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKLSAgICAgICAgaW50IGVuZCA9ICgmdGV4
dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOwotICAgICAg
ICBpbnQgcnVuRW5kID0gc3RkOjptaW4ocmVuZGVyZXJUZXh0TGVuZ3RoLCBlbmQpOworICAgICAg
ICB1bnNpZ25lZCByZW5kZXJlclRleHRMZW5ndGggPSByZW5kZXJlclRleHQubGVuZ3RoKCk7Cisg
ICAgICAgIHVuc2lnbmVkIGVuZCA9ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9l
bmRPZmZzZXQgOiBJTlRfTUFYOworICAgICAgICB1bnNpZ25lZCBydW5FbmQgPSBzdGQ6Om1pbihy
ZW5kZXJlclRleHRMZW5ndGgsIGVuZCk7CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0ID49IHJ1bkVu
ZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTMyLDcgKzk0NCw3IEBAIHN0YXRpYyBi
b29sIHNob3VsZEVtaXRFeHRyYU5ld2xpbmVGb3JOb2RlKE5vZGUmIG5vZGUpCiAgICAgcmV0dXJu
IGJvdHRvbU1hcmdpbiAqIDIgPj0gZm9udFNpemU7CiB9CiAKLXN0YXRpYyBpbnQgY29sbGFwc2Vk
U3BhY2VMZW5ndGgoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0RW5kKQorc3RhdGljIHVu
c2lnbmVkIGNvbGxhcHNlZFNwYWNlTGVuZ3RoKFJlbmRlclRleHQmIHJlbmRlcmVyLCB1bnNpZ25l
ZCB0ZXh0RW5kKQogewogICAgIFN0cmluZ0ltcGwmIHRleHQgPSByZW5kZXJlci50ZXh0KCk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKQEAgLTk0Myw5ICs5NTUsOSBAQCBz
dGF0aWMgaW50IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQg
dGV4dEVuZCkKICAgICByZXR1cm4gbGVuZ3RoIC0gdGV4dEVuZDsKIH0KIAotc3RhdGljIGludCBt
YXhPZmZzZXRJbmNsdWRpbmdDb2xsYXBzZWRTcGFjZXMoTm9kZSYgbm9kZSkKK3N0YXRpYyB1bnNp
Z25lZCBtYXhPZmZzZXRJbmNsdWRpbmdDb2xsYXBzZWRTcGFjZXMoTm9kZSYgbm9kZSkKIHsKLSAg
ICBpbnQgb2Zmc2V0ID0gY2FyZXRNYXhPZmZzZXQobm9kZSk7CisgICAgdW5zaWduZWQgb2Zmc2V0
ID0gY2FyZXRNYXhPZmZzZXQobm9kZSk7CiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gbm9kZS5y
ZW5kZXJlcigpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQogICAg
ICAgICAgICAgb2Zmc2V0ICs9IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKGRvd25jYXN0PFJlbmRlclRl
eHQ+KCpyZW5kZXJlciksIG9mZnNldCk7CkBAIC0xMDg3LDcgKzEwOTksNyBAQCB2b2lkIFRleHRJ
dGVyYXRvcjo6ZXhpdE5vZGUoTm9kZSogZXhpdGVkTm9kZSkKICAgICAgICAgZW1pdENoYXJhY3Rl
cignICcsICpiYXNlTm9kZS0+cGFyZW50Tm9kZSgpLCBiYXNlTm9kZSwgMSwgMSk7CiB9CiAKLXZv
aWQgVGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlciwgTm9kZSYgY2hh
cmFjdGVyTm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGlu
dCB0ZXh0RW5kT2Zmc2V0KQordm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIg
Y2hhcmFjdGVyLCBOb2RlJiBjaGFyYWN0ZXJOb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwgdW5z
aWduZWQgdGV4dFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCB0ZXh0RW5kT2Zmc2V0KQogewogICAgIG1f
aGFzRW1pdHRlZCA9IHRydWU7CiAgICAgCkBAIC0xMTAzLDEwICsxMTE1LDggQEAgdm9pZCBUZXh0
SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBOb2RlJiBjaGFyYWN0ZXJO
b2RlLCBOb2RlKiBvZmYKICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNl
ID0gZmFsc2U7CiB9CiAKLXZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChUZXh0JiB0ZXh0Tm9k
ZSwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5k
T2Zmc2V0KQordm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRleHQmIHRleHROb2RlLCBSZW5k
ZXJUZXh0JiByZW5kZXJlciwgdW5zaWduZWQgdGV4dFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCB0ZXh0
RW5kT2Zmc2V0KQogewotICAgIEFTU0VSVCh0ZXh0U3RhcnRPZmZzZXQgPj0gMCk7Ci0gICAgQVNT
RVJUKHRleHRFbmRPZmZzZXQgPj0gMCk7CiAgICAgQVNTRVJUKHRleHRTdGFydE9mZnNldCA8PSB0
ZXh0RW5kT2Zmc2V0KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHlpZWxkcyB0aGUg
d3Jvbmcgb2Zmc2V0cyB3aGVuIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgdHVybnMgYSBzaW5n
bGUgY2hhcmFjdGVyIGludG8gdHdvIGNoYXJhY3RlcnMuCkBAIC0xMTI4LDUwICsxMTM4LDUxIEBA
IHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYg
cmVuZGVyZXIsIGludCB0ZXh0U3RhcnRPCiAgICAgbV9oYXNFbWl0dGVkID0gdHJ1ZTsKIH0KIAot
UmVmPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKK1NpbXBsZVJhbmdlIFRleHRJ
dGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewogICAgIEFTU0VSVCghYXRFbmQoKSk7CiAKLSAgICAv
LyB1c2UgdGhlIGN1cnJlbnQgcnVuIGluZm9ybWF0aW9uLCBpZiB3ZSBoYXZlIGl0CisgICAgLy8g
VXNlIHRoZSBjdXJyZW50IHJ1biBpbmZvcm1hdGlvbiwgaWYgd2UgaGF2ZSBpdC4KICAgICBpZiAo
bV9wb3NpdGlvbk9mZnNldEJhc2VOb2RlKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gbV9w
b3NpdGlvbk9mZnNldEJhc2VOb2RlLT5jb21wdXRlTm9kZUluZGV4KCk7CiAgICAgICAgIG1fcG9z
aXRpb25TdGFydE9mZnNldCArPSBpbmRleDsKICAgICAgICAgbV9wb3NpdGlvbkVuZE9mZnNldCAr
PSBpbmRleDsKICAgICAgICAgbV9wb3NpdGlvbk9mZnNldEJhc2VOb2RlID0gbnVsbHB0cjsKICAg
ICB9Ci0gICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUobV9wb3NpdGlvbk5vZGUtPmRvY3VtZW50KCks
IG1fcG9zaXRpb25Ob2RlLCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQsIG1fcG9zaXRpb25Ob2RlLCBt
X3Bvc2l0aW9uRW5kT2Zmc2V0KTsKKworICAgIHJldHVybiB7IHsgKm1fcG9zaXRpb25Ob2RlLCBt
X3Bvc2l0aW9uU3RhcnRPZmZzZXQgfSwgeyAqbV9wb3NpdGlvbk5vZGUsIG1fcG9zaXRpb25FbmRP
ZmZzZXQgfSB9OwogfQogICAgIAogTm9kZSogVGV4dEl0ZXJhdG9yOjpub2RlKCkgY29uc3QKIHsK
LSAgICBSZWY8UmFuZ2U+IHRleHRSYW5nZSA9IHJhbmdlKCk7CisgICAgYXV0byB0ZXh0UmFuZ2Ug
PSByYW5nZSgpOwogCi0gICAgTm9kZSYgbm9kZSA9IHRleHRSYW5nZS0+c3RhcnRDb250YWluZXIo
KTsKKyAgICBOb2RlJiBub2RlID0gdGV4dFJhbmdlLnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgaWYg
KG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpKQogICAgICAgICByZXR1cm4gJm5vZGU7Ci0gICAg
Ci0gICAgcmV0dXJuIG5vZGUudHJhdmVyc2VUb0NoaWxkQXQodGV4dFJhbmdlLT5zdGFydE9mZnNl
dCgpKTsKKworICAgIHJldHVybiBub2RlLnRyYXZlcnNlVG9DaGlsZEF0KHRleHRSYW5nZS5zdGFy
dE9mZnNldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0KIAotU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFu
Z2UpCitTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICByYW5nZS5vd25l
ckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAg
cmFuZ2Uuc3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwogCiAgICAgTm9kZSogc3RhcnROb2RlID0gJnJhbmdlLnN0YXJ0Q29u
dGFpbmVyKCk7CiAgICAgTm9kZSogZW5kTm9kZSA9ICZyYW5nZS5lbmRDb250YWluZXIoKTsKLSAg
ICBpbnQgc3RhcnRPZmZzZXQgPSByYW5nZS5zdGFydE9mZnNldCgpOwotICAgIGludCBlbmRPZmZz
ZXQgPSByYW5nZS5lbmRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJhbmdl
LnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gcmFuZ2UuZW5kT2Zmc2V0
KCk7CiAKICAgICBpZiAoIXN0YXJ0Tm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7Ci0gICAg
ICAgIGlmIChzdGFydE9mZnNldCA+PSAwICYmIHN0YXJ0T2Zmc2V0IDwgc3RhdGljX2Nhc3Q8aW50
PihzdGFydE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSkgeworICAgICAgICBpZiAoc3RhcnRPZmZz
ZXQgPCBzdGFydE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSB7CiAgICAgICAgICAgICBzdGFydE5v
ZGUgPSBzdGFydE5vZGUtPnRyYXZlcnNlVG9DaGlsZEF0KHN0YXJ0T2Zmc2V0KTsKICAgICAgICAg
ICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIWVuZE5vZGUt
PmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkgewotICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCAmJiBl
bmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50PihlbmROb2RlLT5jb3VudENoaWxkTm9kZXMoKSkp
IHsKKyAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAgJiYgZW5kT2Zmc2V0IDw9IGVuZE5vZGUtPmNv
dW50Q2hpbGROb2RlcygpKSB7CiAgICAgICAgICAgICBlbmROb2RlID0gZW5kTm9kZS0+dHJhdmVy
c2VUb0NoaWxkQXQoZW5kT2Zmc2V0IC0gMSk7CiAgICAgICAgICAgICBlbmRPZmZzZXQgPSBsYXN0
T2Zmc2V0SW5Ob2RlKGVuZE5vZGUpOwogICAgICAgICB9CkBAIC0xMjc0LDggKzEyODUsOCBAQCBi
b29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKIAog
ICAgIG1fbGFzdFRleHROb2RlID0gJnRleHROb2RlOwogCi0gICAgaW50IHN0YXJ0T2Zmc2V0Owot
ICAgIGludCBvZmZzZXRJbk5vZGU7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7CisgICAgdW5z
aWduZWQgb2Zmc2V0SW5Ob2RlOwogICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gaGFuZGxlRmly
c3RMZXR0ZXIoc3RhcnRPZmZzZXQsIG9mZnNldEluTm9kZSk7CiAgICAgaWYgKCFyZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjk3LDcgKzEzMDgsNyBAQCBib29sIFNpbXBsaWZp
ZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICBBU1NFUlQobV9w
b3NpdGlvblN0YXJ0T2Zmc2V0IDwgbV9wb3NpdGlvbkVuZE9mZnNldCk7CiAgICAgQVNTRVJUKG1f
cG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9kZSA+PSAwKTsKICAgICBBU1NFUlQobV9w
b3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSA+IDApOwotICAgIEFTU0VSVChtX3Bvc2l0
aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIDw9IHN0YXRpY19jYXN0PGludD4odGV4dC5sZW5n
dGgoKSkpOworICAgIEFTU0VSVChtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIDw9
IHRleHQubGVuZ3RoKCkpOwogCiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gdGV4dFttX3Bvc2l0aW9u
RW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIC0gMV07CiAgICAgbV9jb3B5YWJsZVRleHQuc2V0KFdU
Rk1vdmUodGV4dCksIG1fcG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9kZSwgbV9wb3Np
dGlvbkVuZE9mZnNldCAtIG1fcG9zaXRpb25TdGFydE9mZnNldCk7CkBAIC0xMzA2LDcgKzEzMTcs
NyBAQCBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KCkKICAgICByZXR1cm4gIW1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXI7CiB9CiAKLVJlbmRlclRl
eHQqIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0TGV0dGVyKGlu
dCYgc3RhcnRPZmZzZXQsIGludCYgb2Zmc2V0SW5Ob2RlKQorUmVuZGVyVGV4dCogU2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlRmlyc3RMZXR0ZXIodW5zaWduZWQmIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCYgb2Zmc2V0SW5Ob2RlKQogewogICAgIFJlbmRlclRleHQmIHJlbmRl
cmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fbm9kZS0+cmVuZGVyZXIoKSk7CiAgICAgc3Rh
cnRPZmZzZXQgPSAobV9ub2RlID09IG1fc3RhcnRDb250YWluZXIpID8gbV9zdGFydE9mZnNldCA6
IDA7CkBAIC0xMzE3LDcgKzEzMjgsNyBAQCBSZW5kZXJUZXh0KiBTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yOjpoYW5kbGVGaXJzdExldHRlcihpbnQmIHN0YXJ0T2Zmc2V0LAogICAgIH0K
IAogICAgIFJlbmRlclRleHRGcmFnbWVudCYgZnJhZ21lbnQgPSBkb3duY2FzdDxSZW5kZXJUZXh0
RnJhZ21lbnQ+KHJlbmRlcmVyKTsKLSAgICBpbnQgb2Zmc2V0QWZ0ZXJGaXJzdExldHRlciA9IGZy
YWdtZW50LnN0YXJ0KCk7CisgICAgdW5zaWduZWQgb2Zmc2V0QWZ0ZXJGaXJzdExldHRlciA9IGZy
YWdtZW50LnN0YXJ0KCk7CiAgICAgaWYgKHN0YXJ0T2Zmc2V0ID49IG9mZnNldEFmdGVyRmlyc3RM
ZXR0ZXIpIHsKICAgICAgICAgQVNTRVJUKCFtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyKTsKICAg
ICAgICAgb2Zmc2V0SW5Ob2RlID0gb2Zmc2V0QWZ0ZXJGaXJzdExldHRlcjsKQEAgLTEzNzYsNyAr
MTM4Nyw3IEBAIHZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6ZXhpdE5vZGUo
KQogICAgIH0KIH0KIAotdm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjplbWl0
Q2hhcmFjdGVyKFVDaGFyIGMsIE5vZGUmIG5vZGUsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9m
ZnNldCkKK3ZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3Rl
cihVQ2hhciBjLCBOb2RlJiBub2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQogewogICAgIG1fcG9zaXRpb25Ob2RlID0gJm5vZGU7CiAgICAgbV9wb3NpdGlvblN0
YXJ0T2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CkBAIC0xMzk3LDE3ICsxNDA4LDE3IEBAIGJvb2wgU2lt
cGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZVJlc3BlY3RpbmdSYW5nZShOb2Rl
KiBuZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWY8UmFuZ2U+IFNpbXBsaWZpZWRCYWNr
d2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKK1NpbXBsZVJhbmdlIFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWF0RW5k
KCkpOwogCi0gICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUobV9wb3NpdGlvbk5vZGUtPmRvY3VtZW50
KCksIG1fcG9zaXRpb25Ob2RlLCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQsIG1fcG9zaXRpb25Ob2Rl
LCBtX3Bvc2l0aW9uRW5kT2Zmc2V0KTsKKyAgICByZXR1cm4geyB7ICptX3Bvc2l0aW9uTm9kZSwg
bV9wb3NpdGlvblN0YXJ0T2Zmc2V0IH0sIHsgKm1fcG9zaXRpb25Ob2RlLCBtX3Bvc2l0aW9uRW5k
T2Zmc2V0IH0gfTsKIH0KIAogLy8gLS0tLS0tLS0KIAotQ2hhcmFjdGVySXRlcmF0b3I6OkNoYXJh
Y3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVo
YXZpb3IpCi0gICAgOiBtX3VuZGVybHlpbmdJdGVyYXRvcigmcmFuZ2UsIGJlaGF2aW9yKQorQ2hh
cmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCisgICAgOiBtX3VuZGVybHlpbmdJdGVy
YXRvcihyYW5nZSwgYmVoYXZpb3IpCiB7CiAgICAgd2hpbGUgKCFhdEVuZCgpICYmICFtX3VuZGVy
bHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIG1fdW5kZXJseWluZ0l0ZXJh
dG9yLmFkdmFuY2UoKTsKQEAgLTE0MjAsMzQgKzE0MzEsMzEgQEAgQ2hhcmFjdGVySXRlcmF0b3I6
OkNoYXJhY3Rlckl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVy
YXRvckIKICAgICAgICAgbV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpOwogfQogCi1SZWY8
UmFuZ2U+IENoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CitTaW1wbGVSYW5nZSBDaGFy
YWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewotICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSBt
X3VuZGVybHlpbmdJdGVyYXRvci5yYW5nZSgpOworICAgIGF1dG8gcmFuZ2UgPSBtX3VuZGVybHlp
bmdJdGVyYXRvci5yYW5nZSgpOwogICAgIGlmICghbV91bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQo
KSkgewogICAgICAgICBpZiAobV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpIDw9
IDEpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3J1bk9mZnNldCA9PSAwKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSByYW5nZS0+c3RhcnRDb250YWluZXIoKTsK
LSAgICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmcmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKLSAg
ICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZS0+c3RhcnRPZmZzZXQoKSArIG1fcnVuT2Zmc2V0
OwotICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KG5vZGUsIG9mZnNldCk7Ci0gICAgICAgICAg
ICByYW5nZS0+c2V0RW5kKG5vZGUsIG9mZnNldCArIDEpOworICAgICAgICAgICAgTm9kZSYgbm9k
ZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0g
JnJhbmdlLmVuZENvbnRhaW5lcigpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHJh
bmdlLnN0YXJ0T2Zmc2V0KCkgKyBtX3J1bk9mZnNldDsKKyAgICAgICAgICAgIHJhbmdlID0geyB7
IG5vZGUsIG9mZnNldCB9LCB7IG5vZGUsIG9mZnNldCArIDEgfSB9OwogICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiByYW5nZTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5j
ZShpbnQgY291bnQpCit2b2lkIENoYXJhY3Rlckl0ZXJhdG9yOjphZHZhbmNlKHVuc2lnbmVkIGNv
dW50KQogewotICAgIGlmIChjb3VudCA8PSAwKSB7Ci0gICAgICAgIEFTU0VSVChjb3VudCA9PSAw
KTsKKyAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAorCiAgICAg
bV9hdEJyZWFrID0gZmFsc2U7CiAKICAgICAvLyBlYXN5IGlmIHRoZXJlIGlzIGVub3VnaCBsZWZ0
IGluIHRoZSBjdXJyZW50IG1fdW5kZXJseWluZ0l0ZXJhdG9yIHJ1bgotICAgIGludCByZW1haW5p
bmcgPSBtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCkgLSBtX3J1bk9mZnNldDsK
KyAgICB1bnNpZ25lZCByZW1haW5pbmcgPSBtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVu
Z3RoKCkgLSBtX3J1bk9mZnNldDsKICAgICBpZiAoY291bnQgPCByZW1haW5pbmcpIHsKICAgICAg
ICAgbV9ydW5PZmZzZXQgKz0gY291bnQ7CiAgICAgICAgIG1fb2Zmc2V0ICs9IGNvdW50OwpAQCAt
MTQ2MCw3ICsxNDY4LDcgQEAgdm9pZCBDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5jZShpbnQgY291
bnQpCiAgICAgCiAgICAgLy8gbW92ZSB0byBhIHN1YnNlcXVlbnQgbV91bmRlcmx5aW5nSXRlcmF0
b3IgcnVuCiAgICAgZm9yIChtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZhbmNlKCk7ICFhdEVuZCgp
OyBtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IHJ1bkxlbmd0
aCA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWdu
ZWQgcnVuTGVuZ3RoID0gbV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpOwogICAg
ICAgICBpZiAoIXJ1bkxlbmd0aCkKICAgICAgICAgICAgIG1fYXRCcmVhayA9IHRydWU7CiAgICAg
ICAgIGVsc2UgewpAQCAtMTQ4MiwyNSArMTQ5MCwyMyBAQCB2b2lkIENoYXJhY3Rlckl0ZXJhdG9y
OjphZHZhbmNlKGludCBjb3VudCkKICAgICBtX3J1bk9mZnNldCA9IDA7CiB9CiAKLXN0YXRpYyBS
ZWY8UmFuZ2U+IGNoYXJhY3RlclN1YnJhbmdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2hhcmFjdGVy
SXRlcmF0b3ImIGl0LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKQorc3RhdGljIFNpbXBsZVJhbmdl
IGNoYXJhY3RlclN1YnJhbmdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2hhcmFjdGVySXRlcmF0b3Im
IGl0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpdC5hZHZhbmNl
KG9mZnNldCk7CiAgICAgaWYgKGl0LmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICAgICAgcmV0dXJuIHsgeyBkb2N1bWVudCwgMCB9LCB7IGRvY3Vt
ZW50LCAwIH0gfTsKIAotICAgIFJlZjxSYW5nZT4gc3RhcnQgPSBpdC5yYW5nZSgpOworICAgIGF1
dG8gc3RhcnQgPSBpdC5yYW5nZSgpLnN0YXJ0OwogCiAgICAgaWYgKGxlbmd0aCA+IDEpCiAgICAg
ICAgIGl0LmFkdmFuY2UobGVuZ3RoIC0gMSk7CiAgICAgaWYgKGl0LmF0RW5kKCkpCi0gICAgICAg
IHJldHVybiBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KTsKLQotICAgIFJlZjxSYW5nZT4gZW5kID0g
aXQucmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIHsgeyBkb2N1bWVudCwgMCB9LCB7IGRvY3VtZW50
LCAwIH0gfTsKIAotICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCAmc3RhcnQtPnN0
YXJ0Q29udGFpbmVyKCksIHN0YXJ0LT5zdGFydE9mZnNldCgpLCAmZW5kLT5lbmRDb250YWluZXIo
KSwgZW5kLT5lbmRPZmZzZXQoKSk7CisgICAgcmV0dXJuIHsgV1RGTW92ZShzdGFydCksIGl0LnJh
bmdlKCkuZW5kIH07CiB9CiAKLUJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHND
aGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCitCYWNrd2FyZHNDaGFyYWN0ZXJJ
dGVyYXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlKQogICAgIDogbV91bmRlcmx5aW5nSXRlcmF0b3IocmFuZ2UpCiAgICAgLCBtX29mZnNldCgw
KQogICAgICwgbV9ydW5PZmZzZXQoMCkKQEAgLTE1MTAsMzMgKzE1MTYsMzAgQEAgQmFja3dhcmRz
Q2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdl
JiByYW5nZSkKICAgICAgICAgbV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpOwogfQogCi1S
ZWY8UmFuZ2U+IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CitTaW1w
bGVSYW5nZSBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewotICAg
IFJlZjxSYW5nZT4gciA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnJhbmdlKCk7CisgICAgYXV0byBy
ID0gbV91bmRlcmx5aW5nSXRlcmF0b3IucmFuZ2UoKTsKICAgICBpZiAoIW1fdW5kZXJseWluZ0l0
ZXJhdG9yLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQo
KS5sZW5ndGgoKSA8PSAxKQogICAgICAgICAgICAgQVNTRVJUKG1fcnVuT2Zmc2V0ID09IDApOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSByLT5zdGFydENvbnRhaW5l
cigpOwotICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZyLT5lbmRDb250YWluZXIoKSk7Ci0g
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gci0+ZW5kT2Zmc2V0KCkgLSBtX3J1bk9mZnNldDsKLSAg
ICAgICAgICAgIHItPnNldFN0YXJ0KG5vZGUsIG9mZnNldCAtIDEpOwotICAgICAgICAgICAgci0+
c2V0RW5kKG5vZGUsIG9mZnNldCk7CisgICAgICAgICAgICBOb2RlJiBub2RlID0gci5zdGFydENv
bnRhaW5lcigpOworICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZyLmVuZENvbnRhaW5lcigp
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHIuZW5kT2Zmc2V0KCkgLSBtX3J1bk9m
ZnNldDsKKyAgICAgICAgICAgIHIgPSB7IHsgbm9kZSwgb2Zmc2V0IC0gMSB9LCB7IG5vZGUsIG9m
ZnNldCB9IH07CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHI7CiB9CiAKLXZvaWQgQmFj
a3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQordm9pZCBCYWNrd2Fy
ZHNDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5jZSh1bnNpZ25lZCBjb3VudCkKIHsKLSAgICBpZiAo
Y291bnQgPD0gMCkgewotICAgICAgICBBU1NFUlQoIWNvdW50KTsKKyAgICBpZiAoIWNvdW50KQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgbV9hdEJyZWFrID0gZmFsc2U7CiAKLSAgICBp
bnQgcmVtYWluaW5nID0gbV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpIC0gbV9y
dW5PZmZzZXQ7CisgICAgdW5zaWduZWQgcmVtYWluaW5nID0gbV91bmRlcmx5aW5nSXRlcmF0b3Iu
dGV4dCgpLmxlbmd0aCgpIC0gbV9ydW5PZmZzZXQ7CiAgICAgaWYgKGNvdW50IDwgcmVtYWluaW5n
KSB7CiAgICAgICAgIG1fcnVuT2Zmc2V0ICs9IGNvdW50OwogICAgICAgICBtX29mZnNldCArPSBj
b3VudDsKQEAgLTE1NDcsNyArMTU1MCw3IEBAIHZvaWQgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0
b3I6OmFkdmFuY2UoaW50IGNvdW50KQogICAgIG1fb2Zmc2V0ICs9IHJlbWFpbmluZzsKIAogICAg
IGZvciAobV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpOyAhYXRFbmQoKTsgbV91bmRlcmx5
aW5nSXRlcmF0b3IuYWR2YW5jZSgpKSB7Ci0gICAgICAgIGludCBydW5MZW5ndGggPSBtX3VuZGVy
bHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVkIHJ1bkxlbmd0
aCA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKTsKICAgICAgICAgaWYgKHJ1
bkxlbmd0aCA9PSAwKQogICAgICAgICAgICAgbV9hdEJyZWFrID0gdHJ1ZTsKICAgICAgICAgZWxz
ZSB7CkBAIC0xNTY4LDggKzE1NzEsOCBAQCB2b2lkIEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9y
OjphZHZhbmNlKGludCBjb3VudCkKIAogLy8gLS0tLS0tLS0KIAotV29yZEF3YXJlSXRlcmF0b3I6
OldvcmRBd2FyZUl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkKLSAgICA6IG1fdW5kZXJseWlu
Z0l0ZXJhdG9yKCZyYW5nZSkKK1dvcmRBd2FyZUl0ZXJhdG9yOjpXb3JkQXdhcmVJdGVyYXRvcihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCisgICAgOiBtX3VuZGVybHlpbmdJdGVyYXRvcihyYW5n
ZSkKICAgICAsIG1fZGlkTG9va0FoZWFkKHRydWUpIC8vIHNvIHdlIGNvbnNpZGVyIHRoZSBmaXJz
dCBjaHVuayBmcm9tIHRoZSB0ZXh0IGl0ZXJhdG9yCiB7CiAgICAgYWR2YW5jZSgpOyAvLyBnZXQg
aW4gcG9zaXRpb24gb3ZlciB0aGUgZmlyc3QgY2h1bmsgb2YgdGV4dApAQCAtMjE1OCw3ICsyMTYx
LDcgQEAgaW5saW5lIGJvb2wgU2VhcmNoQnVmZmVyOjppc1dvcmRFbmRNYXRjaChzaXplX3Qgc3Rh
cnQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgaW50IGVuZFdvcmQ7CiAgICAgLy8gU3RhcnQg
c2VhcmNoaW5nIGF0IHRoZSBlbmQgb2YgbWF0Y2hlZCBzZWFyY2gsIHNvIHRoYXQgbXVsdGlwbGUg
d29yZCBtYXRjaGVzIHN1Y2NlZWQuCiAgICAgZmluZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3
KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSwgc3RhcnQgKyBsZW5ndGggLSAxLCAm
ZW5kV29yZCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZW5kV29yZCkgPT0gKHN0
YXJ0ICsgbGVuZ3RoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihlbmRXb3JkKSA9
PSBzdGFydCArIGxlbmd0aDsKIH0KIAogaW5saW5lIGJvb2wgU2VhcmNoQnVmZmVyOjppc1dvcmRT
dGFydE1hdGNoKHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKQEAgLTIxNjgsOCAr
MjE3MSw4IEBAIGlubGluZSBib29sIFNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXRjaChzaXpl
X3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgaWYgKCFzdGFydCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpbnQgc2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsKLSAgICBpbnQg
b2Zmc2V0ID0gc3RhcnQ7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsKKyAg
ICB1bnNpZ25lZCBvZmZzZXQgPSBzdGFydDsKICAgICBVQ2hhcjMyIGZpcnN0Q2hhcmFjdGVyOwog
ICAgIFUxNl9HRVQobV9idWZmZXIuZGF0YSgpLCAwLCBvZmZzZXQsIHNpemUsIGZpcnN0Q2hhcmFj
dGVyKTsKIApAQCAtMjM5NiwxOCArMjM5OSwxOCBAQCBzaXplX3QgU2VhcmNoQnVmZmVyOjpsZW5n
dGgoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1pbnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorc2l6
ZV90IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBi
b29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKIHsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSAw
OworICAgIHNpemVfdCBsZW5ndGggPSAwOwogICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdl
LCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7
ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGxlbmd0aCArPSBpdC50ZXh0KCku
bGVuZ3RoKCk7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50
IGNoYXJhY3RlckNvdW50KQorU2ltcGxlUmFuZ2UgVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgZW50aXJlUmFuZ2UsIHNpemVfdCBjaGFyYWN0ZXJPZmZzZXQsIHNpemVf
dCBjaGFyYWN0ZXJDb3VudCkKIHsKICAgICBDaGFyYWN0ZXJJdGVyYXRvciBlbnRpcmVSYW5nZUl0
ZXJhdG9yKGVudGlyZVJhbmdlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2UoZW50aXJl
UmFuZ2Uub3duZXJEb2N1bWVudCgpLCBlbnRpcmVSYW5nZUl0ZXJhdG9yLCBjaGFyYWN0ZXJPZmZz
ZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2UoZW50aXJl
UmFuZ2Uuc3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBlbnRpcmVSYW5nZUl0ZXJhdG9yLCBj
aGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKIH0KIAogc3RhdGljIGlubGluZSBib29s
IGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCkBAIC0yNDE4
LDI3ICsyNDIxLDI0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luc2lkZVJlcGxhY2VkRWxlbWVu
dChUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKQogICAgIHJldHVybiBub2RlICYmIGlzUmVuZGVyZXJS
ZXBsYWNlZEVsZW1lbnQobm9kZS0+cmVuZGVyZXIoKSk7CiB9CiAKLVJlZlB0cjxSYW5nZT4gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29w
ZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxlY3Rpb25Q
cmVzZXJ2YXRpb24pCitPcHRpb25hbDxTaW1wbGVSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgc2l6ZV90IHJhbmdlTG9j
YXRpb24sIHNpemVfdCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24p
CiB7Ci0gICAgUmVmPFJhbmdlPiByZXN1bHRSYW5nZSA9IHNjb3BlLT5kb2N1bWVudCgpLmNyZWF0
ZVJhbmdlKCk7CisgICAgU2ltcGxlUmFuZ2UgcmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQo
KS5jcmVhdGVSYW5nZSgpOwogCi0gICAgaW50IGRvY1RleHRQb3NpdGlvbiA9IDA7Ci0gICAgaW50
IHJhbmdlRW5kID0gcmFuZ2VMb2NhdGlvbiArIHJhbmdlTGVuZ3RoOworICAgIHVuc2lnbmVkIGRv
Y1RleHRQb3NpdGlvbiA9IDA7CisgICAgdW5zaWduZWQgcmFuZ2VFbmQgPSByYW5nZUxvY2F0aW9u
ICsgcmFuZ2VMZW5ndGg7CiAgICAgYm9vbCBzdGFydFJhbmdlRm91bmQgPSBmYWxzZTsKIAotICAg
IFJlZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CisgICAg
U2ltcGxlUmFuZ2UgdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CiAKLSAg
ICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLnB0cigpLCBmb3JTZWxlY3Rpb25QcmVzZXJ2
YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0
aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgVGV4dEl0ZXJhdG9yIGl0
KHRleHRSdW5SYW5nZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1p
dHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZh
dWx0QmVoYXZpb3IpOwogICAgIAogICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91
bGRuJ3QgYmUgbmVjZXNzYXJ5LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjI4OT4uCi0gICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5n
ZUxlbmd0aCAmJiBpdC5hdEVuZCgpKSB7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0
ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXN1bHRSYW5nZS0+
c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCk7Ci0gICAgICAgIHJldHVy
biByZXN1bHRSYW5nZTsKLSAgICB9CisgICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxl
bmd0aCAmJiBpdC5hdEVuZCgpKQorICAgICAgICByZXR1cm4gU2ltcGxlUmFuZ2UgeyB0ZXh0UnVu
UmFuZ2Uuc3RhcnQsIHRleHRSdW5SYW5nZS5zdGFydCB9OwogCiAgICAgZm9yICg7ICFpdC5hdEVu
ZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5n
dGgoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gaXQudGV4dCgpLmxlbmd0aCgpOwogICAg
ICAgICB0ZXh0UnVuUmFuZ2UgPSBpdC5yYW5nZSgpOwogCiAgICAgICAgIGJvb2wgZm91bmRTdGFy
dCA9IHJhbmdlTG9jYXRpb24gPj0gZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlTG9jYXRpb24gPD0g
ZG9jVGV4dFBvc2l0aW9uICsgbGVuZ3RoOwpAQCAtMjQ0OSw0MCArMjQ0OSwzOSBAQCBSZWZQdHI8
UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVy
Tm9kZSogc2NvcGUsIGludAogICAgICAgICAgICAgLy8gcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xu
J3Mgb3IgaWYgdGhlIHJlbmRlcmVyIG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBsYWNlZCBl
bGVtZW50LgogICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAxICYmIChpdC50ZXh0KClbMF0gPT0g
J1xuJyB8fCBpc0luc2lkZVJlcGxhY2VkRWxlbWVudChpdCkpKSB7CiAgICAgICAgICAgICAgICAg
aXQuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAgIGlmICghaXQuYXRFbmQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBSZWY8UmFuZ2U+IHJhbmdlID0gaXQucmFuZ2UoKTsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJh
bmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQb3NpdGlv
bigpOworICAgICAgICAgICAgICAgIGlmICghaXQuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgdGV4dFJ1blJhbmdlLmVuZCA9IGl0LnJhbmdlKCkuc3RhcnQ7CisgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gbWFrZVBvc2l0
aW9uTGVnYWN5RWRpdGluZyh0ZXh0UnVuUmFuZ2Uuc3RhcnQpOwogICAgICAgICAgICAgICAgICAg
ICBQb3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24ocnVuU3RhcnQpLm5leHQoKS5kZWVw
RXF1aXZhbGVudCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocnVuRW5kLmlzTm90TnVsbCgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQoKnJ1bkVuZC5j
b250YWluZXJOb2RlKCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9IHsgKnJ1bkVuZC5jb250
YWluZXJOb2RlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihydW5FbmQuY29tcHV0ZU9mZnNldElu
Q29udGFpbmVyTm9kZSgpKSB9OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7CiAgICAgICAgICAgICBzdGFydFJh
bmdlRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRDb250
YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmFu
Z2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5n
ZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0
UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS5z
dGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG9mZnNldCA9IHJhbmdlTG9jYXRpb24gLSBkb2NUZXh0UG9zaXRpb247CisgICAgICAgICAgICAg
ICAgcmVzdWx0UmFuZ2Uuc3RhcnQgPSB7IHRleHRSdW5SYW5nZS5zdGFydENvbnRhaW5lcigpLCBv
ZmZzZXQgKyB0ZXh0UnVuUmFuZ2Uuc3RhcnRPZmZzZXQoKSB9OwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRpb24p
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFJhbmdlLnN0YXJ0ID0gdGV4dFJ1blJhbmdlLnN0YXJ0OwogICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0
YXJ0KHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0
KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IHRleHRSdW5SYW5n
ZS5lbmQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZm91bmRFbmQp
IHsKLSAgICAgICAgICAgIGlmICh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuaXNUZXh0
Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHJhbmdlRW5kIC0gZG9jVGV4
dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJh
bmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0
KCkpOworICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS5zdGFydENvbnRhaW5lcigpLmlzVGV4
dE5vZGUoKSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHJhbmdlRW5kIC0g
ZG9jVGV4dFBvc2l0aW9uOworICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IHsgdGV4
dFJ1blJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIG9mZnNldCArIHRleHRSdW5SYW5nZS5zdGFydE9m
ZnNldCgpIH07CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChyYW5n
ZUVuZCA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdl
LT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCB0ZXh0UnVuUmFuZ2UtPnN0
YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS5lbmQgPSB0ZXh0
UnVuUmFuZ2Uuc3RhcnQ7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRS
dW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS5l
bmQgPSB0ZXh0UnVuUmFuZ2UuZW5kOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9jVGV4
dFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ5MiwxNSArMjQ5
MSwxNSBAQCBSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludAogICAgIH0KICAgICAKICAgICBpZiAoIXN0
YXJ0UmFuZ2VGb3VuZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5kID4gZG9j
VGV4dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAgIHJlc3Vs
dFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdl
LT5lbmRPZmZzZXQoKSk7CisgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IHRleHRSdW5SYW5nZS5l
bmQ7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogfQogCi1ib29sIFRleHRJdGVyYXRv
cjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdl
KiByYW5nZSwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgpCitib29sIFRleHRJdGVy
YXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgpCiB7CiAg
ICAgbG9jYXRpb24gPSBub3RGb3VuZDsKICAgICBsZW5ndGggPSAwOwpAQCAtMjUxMCw2MSArMjUw
OSw0OCBAQCBib29sIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uo
Tm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiByYW5nZQogICAgIC8vIGJlY2F1c2Ugb2YgdGV4dCBm
aWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CiAgICAgLy8gZGly
ZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gZW5zdXJlIHRoYXQgdGhlIHJhbmdlIGRvZXMg
bm90IGNyb3NzIGEKICAgICAvLyBib3VuZGFyeSBvZiBvbmUgb2YgdGhvc2UuCi0gICAgaWYgKCZy
YW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCkuaXNEZXNjZW5kYW50T2Yoc2NvcGUpKQorICAgIGlmICgmcmFuZ2Uuc3RhcnRDb250YWluZXIo
KSAhPSBzY29wZSAmJiAhcmFuZ2Uuc3RhcnRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29w
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoJnJhbmdlLT5lbmRDb250YWluZXIo
KSAhPSBzY29wZSAmJiAhcmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNjb3Bl
KSkKKyAgICBpZiAoJnJhbmdlLmVuZENvbnRhaW5lcigpICE9IHNjb3BlICYmICFyYW5nZS5lbmRD
b250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFJlZjxSYW5nZT4gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1l
bnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zm
c2V0KCkpOwotICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3Bl
KTsKLSAgICBsb2NhdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0
cigpKTsKKyAgICBTaW1wbGVSYW5nZSB0ZXN0UmFuZ2UgeyB7ICpzY29wZSwgMCB9LCByYW5nZS5z
dGFydCB9OworICAgIEFTU0VSVCgmdGVzdFJhbmdlLnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUp
OworICAgIGxvY2F0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UpOwog
Ci0gICAgdGVzdFJhbmdlLT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5k
T2Zmc2V0KCkpOwotICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNj
b3BlKTsKLSAgICBsZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5w
dHIoKSkgLSBsb2NhdGlvbjsKKyAgICB0ZXN0UmFuZ2UuZW5kID0gcmFuZ2UuZW5kOworICAgIEFT
U0VSVCgmdGVzdFJhbmdlLnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOworICAgIGxlbmd0aCA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlKSAtIGxvY2F0aW9uOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiAvLyAtLS0tLS0tLQogCi1ib29sIGhhc0FueVBsYWluVGV4dChjb25z
dCBSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQorLy8gVGhlIGlu
aXRpYWwgYnVmZmVyIHNpemUgY2FuIGJlIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTkyCitzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHBsYWluVGV4dEluaXRpYWxCdWZmZXJDYXBhY2l0eSA9IDEgPDwgMTU7CisKK2Jv
b2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyAm
cmFuZ2UsIGJlaGF2aW9yIH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkp
IHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvciB7IHJhbmdlLCBiZWhhdmlvciB9OyAh
aXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAgICAgIGlmICghaXRl
cmF0b3IudGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBwbGFpblRleHQoUG9zaXRpb24gc3RhcnQs
IFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29s
IGlzRGlzcGxheVN0cmluZykKK1N0cmluZyBwbGFpblRleHQoUG9zaXRpb24gc3RhcnQsIFBvc2l0
aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3Ry
aW5nKQogewotICAgIC8vIFRoZSBpbml0aWFsIGJ1ZmZlciBzaXplIGNhbiBiZSBjcml0aWNhbCBm
b3IgcGVyZm9ybWFuY2U6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTE5MgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkgPSAxIDw8IDE1
OwotCiAgICAgaWYgKCFzdGFydC5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKCpzdGFydC5kb2N1bWVudCgpKTsKLQotICAgIHVuc2ln
bmVkIGJ1ZmZlckxlbmd0aCA9IDA7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1
aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGluaXRpYWxDYXBhY2l0eSk7Ci0gICAgVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgYmVoYXZpb3IgPSBkZWZhdWx0QmVoYXZpb3I7CiAgICAgaWYgKCFpc0Rpc3BsYXlT
dHJpbmcpCiAgICAgICAgIGJlaGF2aW9yID0gc3RhdGljX2Nhc3Q8VGV4dEl0ZXJhdG9yQmVoYXZp
b3I+KGJlaGF2aW9yIHwgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZyk7
Ci0KLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzdGFydCwgZW5kLCBiZWhhdmlvcik7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkocGxhaW5UZXh0SW5pdGlhbEJ1ZmZlckNhcGFjaXR5KTsK
KyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzdGFydCwgZW5kLCBiZWhhdmlvcik7ICFpdC5hdEVu
ZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIo
YnVpbGRlcik7Ci0gICAgICAgIGJ1ZmZlckxlbmd0aCArPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0g
ICAgfQotCi0gICAgaWYgKCFidWZmZXJMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotCiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKLQogICAgIGlm
IChpc0Rpc3BsYXlTdHJpbmcpCi0gICAgICAgIGRvY3VtZW50LT5kaXNwbGF5U3RyaW5nTW9kaWZp
ZWRCeUVuY29kaW5nKHJlc3VsdCk7Ci0KKyAgICAgICAgcmVzdWx0ID0gc3RhcnQuZG9jdW1lbnQo
KS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhyZXN1bHQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTI1NzMsMTQgKzI1NTksMjEgQEAgU3RyaW5nIHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZShQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0
b3IKICAgICByZXR1cm4gcGxhaW5UZXh0KHN0YXJ0LCBlbmQsIGRlZmF1bHRCZWhhdmlvciwgaXNE
aXNwbGF5U3RyaW5nKS5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKIH0KIAotU3RyaW5nIHBs
YWluVGV4dChjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRC
ZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCitTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IsIGJvb2wgaXNE
aXNwbGF5U3RyaW5nKQogewotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwotICAgIHJldHVybiBwbGFpblRleHQocmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcmFu
Z2UtPmVuZFBvc2l0aW9uKCksIGRlZmF1bHRCZWhhdmlvciwgaXNEaXNwbGF5U3RyaW5nKTsKKyAg
ICBpZiAoIWlzRGlzcGxheVN0cmluZykKKyAgICAgICAgYmVoYXZpb3IgPSBzdGF0aWNfY2FzdDxU
ZXh0SXRlcmF0b3JCZWhhdmlvcj4oYmVoYXZpb3IgfCBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0
aG91dFRyYW5zY29kaW5nKTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5yZXNlcnZlQ2FwYWNpdHkocGxhaW5UZXh0SW5pdGlhbEJ1ZmZlckNhcGFjaXR5KTsKKyAgICBm
b3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSwgYmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2
YW5jZSgpKQorICAgICAgICBpdC5hcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKGJ1aWxkZXIpOwor
ICAgIFN0cmluZyByZXN1bHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgaWYgKGlzRGlzcGxh
eVN0cmluZykKKyAgICAgICAgcmVzdWx0ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5kaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotU3RyaW5nIHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhj
b25zdCBSYW5nZSYgcmFuZ2UpCitTdHJpbmcgcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRl
cmF0b3JGb3JUZXN0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAgICBTdHJpbmcg
cmVzdWx0OwogICAgIGZvciAoU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBiYWNrd2Fy
ZHNJdGVyYXRvcihyYW5nZSk7ICFiYWNrd2FyZHNJdGVyYXRvci5hdEVuZCgpOyBiYWNrd2FyZHNJ
dGVyYXRvci5hZHZhbmNlKCkpCkBAIC0yNTg4LDE2ICsyNTgxLDE1IEBAIFN0cmluZyBwbGFpblRl
eHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcoY29uc3QgUmFuZ2UmIHJhbmdl
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UoY29uc3QgUmFuZ2UqIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0
QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nKQorU3RyaW5nIHBsYWluVGV4dFJlcGxhY2lu
Z05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2
aW9yIGRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7CiAgICAgcmV0dXJu
IHBsYWluVGV4dChyYW5nZSwgZGVmYXVsdEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJpbmcpLnJlcGxh
Y2Uobm9CcmVha1NwYWNlLCAnICcpOwogfQogCi1zdGF0aWMgUmVmPFJhbmdlPiBjb2xsYXBzZWRU
b0JvdW5kYXJ5KGNvbnN0IFJhbmdlJiByYW5nZSwgYm9vbCBmb3J3YXJkKQorc3RhdGljIFNpbXBs
ZVJhbmdlIGNvbGxhcHNlZFRvQm91bmRhcnkoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29s
IGZvcndhcmQpCiB7Ci0gICAgUmVmPFJhbmdlPiByZXN1bHQgPSByYW5nZS5jbG9uZVJhbmdlKCk7
Ci0gICAgcmVzdWx0LT5jb2xsYXBzZSghZm9yd2FyZCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICBhdXRvJiBlbmRwb2ludCA9IGZvcndhcmQgPyByYW5nZS5lbmQgOiByYW5nZS5zdGFydDsKKyAg
ICByZXR1cm4geyBlbmRwb2ludCwgZW5kcG9pbnQgfTsKIH0KIAogc3RhdGljIFRleHRJdGVyYXRv
ckJlaGF2aW9yIGZpbmRJdGVyYXRvck9wdGlvbnMoRmluZE9wdGlvbnMgb3B0aW9ucykKQEAgLTI2
MDgsMTMgKzI2MDAsMTIgQEAgc3RhdGljIFRleHRJdGVyYXRvckJlaGF2aW9yIGZpbmRJdGVyYXRv
ck9wdGlvbnMoRmluZE9wdGlvbnMgb3B0aW9ucykKICAgICByZXR1cm4gaXRlcmF0b3JPcHRpb25z
OwogfQogCi1zdGF0aWMgdm9pZCBmaW5kUGxhaW5UZXh0TWF0Y2hlcyhjb25zdCBSYW5nZSYgcmFu
Z2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCBjb25zdCBXVEY6
OkZ1bmN0aW9uPGJvb2woc2l6ZV90LCBzaXplX3QpPiYgbWF0Y2gpCitzdGF0aWMgdm9pZCBmaW5k
UGxhaW5UZXh0TWF0Y2hlcyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woc2l6
ZV90LCBzaXplX3QpPiYgbWF0Y2gpCiB7CiAgICAgU2VhcmNoQnVmZmVyIGJ1ZmZlcih0YXJnZXQs
IG9wdGlvbnMpOwogICAgIGlmIChidWZmZXIubmVlZHNNb3JlQ29udGV4dCgpKSB7Ci0gICAgICAg
IFJlZjxSYW5nZT4gYmVmb3JlU3RhcnRSYW5nZSA9IHJhbmdlLm93bmVyRG9jdW1lbnQoKS5jcmVh
dGVSYW5nZSgpOwotICAgICAgICBiZWZvcmVTdGFydFJhbmdlLT5zZXRFbmQocmFuZ2Uuc3RhcnRD
b250YWluZXIoKSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGZvciAoU2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvciBiYWNrd2FyZHNJdGVyYXRvcihiZWZvcmVTdGFydFJhbmdl
LmdldCgpKTsgIWJhY2t3YXJkc0l0ZXJhdG9yLmF0RW5kKCk7IGJhY2t3YXJkc0l0ZXJhdG9yLmFk
dmFuY2UoKSkgeworICAgICAgICBTaW1wbGVSYW5nZSBiZWZvcmVTdGFydFJhbmdlIHsgeyByYW5n
ZS5zdGFydC5kb2N1bWVudCgpLCAwIH0sIHJhbmdlLnN0YXJ0IH07CisgICAgICAgIGZvciAoU2lt
cGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBiYWNrd2FyZHNJdGVyYXRvcihiZWZvcmVTdGFy
dFJhbmdlKTsgIWJhY2t3YXJkc0l0ZXJhdG9yLmF0RW5kKCk7IGJhY2t3YXJkc0l0ZXJhdG9yLmFk
dmFuY2UoKSkgewogICAgICAgICAgICAgYnVmZmVyLnByZXBlbmRDb250ZXh0KGJhY2t3YXJkc0l0
ZXJhdG9yLnRleHQoKSk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlci5uZWVkc01vcmVDb250ZXh0
KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjQyLDE1ICsyNjMzLDE1IEBAIHN0YXRp
YyB2b2lkIGZpbmRQbGFpblRleHRNYXRjaGVzKGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIEZpbmRPCiAgICAgfQogfQogCi1zdGF0aWMgUmVmPFJhbmdlPiByYW5nZUZv
ck1hdGNoKGNvbnN0IFJhbmdlJiByYW5nZSwgRmluZE9wdGlvbnMgb3B0aW9ucywgc2l6ZV90IG1h
dGNoU3RhcnQsIHNpemVfdCBtYXRjaExlbmd0aCwgYm9vbCBzZWFyY2hGb3J3YXJkKQorc3RhdGlj
IFNpbXBsZVJhbmdlIHJhbmdlRm9yTWF0Y2goY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBGaW5k
T3B0aW9ucyBvcHRpb25zLCBzaXplX3QgbWF0Y2hTdGFydCwgc2l6ZV90IG1hdGNoTGVuZ3RoLCBi
b29sIHNlYXJjaEZvcndhcmQpCiB7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICAgcmV0
dXJuIGNvbGxhcHNlZFRvQm91bmRhcnkocmFuZ2UsIHNlYXJjaEZvcndhcmQpOwogICAgIENoYXJh
Y3Rlckl0ZXJhdG9yIHJhbmdlQ29tcHV0ZUl0ZXJhdG9yKHJhbmdlLCBmaW5kSXRlcmF0b3JPcHRp
b25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2UocmFuZ2Uub3duZXJE
b2N1bWVudCgpLCByYW5nZUNvbXB1dGVJdGVyYXRvciwgbWF0Y2hTdGFydCwgbWF0Y2hMZW5ndGgp
OworICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShyYW5nZS5zdGFydC5kb2N1bWVudCgpLCBy
YW5nZUNvbXB1dGVJdGVyYXRvciwgbWF0Y2hTdGFydCwgbWF0Y2hMZW5ndGgpOwogfQogCi1SZWY8
UmFuZ2U+IGZpbmRDbG9zZXN0UGxhaW5UZXh0KGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIHRhcmdldE9mZnNldCkK
K1NpbXBsZVJhbmdlIGZpbmRDbG9zZXN0UGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIHRh
cmdldE9mZnNldCkKIHsKICAgICBzaXplX3QgbWF0Y2hTdGFydCA9IDA7CiAgICAgc2l6ZV90IG1h
dGNoTGVuZ3RoID0gMDsKQEAgLTI2NjksNyArMjY2MCw3IEBAIFJlZjxSYW5nZT4gZmluZENsb3Nl
c3RQbGFpblRleHQoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmlu
ZE9wCiAgICAgcmV0dXJuIHJhbmdlRm9yTWF0Y2gocmFuZ2UsIG9wdGlvbnMsIG1hdGNoU3RhcnQs
IG1hdGNoTGVuZ3RoLCAhb3B0aW9ucy5jb250YWlucyhCYWNrd2FyZHMpKTsKIH0KIAotUmVmPFJh
bmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCitTaW1wbGVSYW5nZSBmaW5kUGxhaW5UZXh0KGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9w
dGlvbnMpCiB7CiAgICAgYm9vbCBzZWFyY2hGb3J3YXJkID0gIW9wdGlvbnMuY29udGFpbnMoQmFj
a3dhcmRzKTsKICAgICBzaXplX3QgbWF0Y2hTdGFydCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaAppbmRleCAxMDMwNGFmZjg3OGY0ZmZlYzU4YjlmOTAzNWRiOTFmNGQwNWQ3
YjI1Li4xYzM3MzYyODg5YjRhODkxYTllMmYzYzVkMTZjOTAxODAwNTgzZWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRl
ICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKLSNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTQw
LDYgKzM5LDggQEAgY2xhc3MgSW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFz
cyBSZW5kZXJUZXh0RnJhZ21lbnQ7CiAKK3N0cnVjdCBTaW1wbGVSYW5nZTsKKwogbmFtZXNwYWNl
IFNpbXBsZUxpbmVMYXlvdXQgewogY2xhc3MgUnVuUmVzb2x2ZXI7CiB9CkBAIC00NywxMyArNDgs
MTMgQEAgY2xhc3MgUnVuUmVzb2x2ZXI7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0
KFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsK
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUG9z
aXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRl
cmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOwogCi1X
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3Ry
aW5nID0gZmFsc2UpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05v
QnJlYWtTcGFjZShjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJh
dG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKLVdFQkNP
UkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRl
c3RpbmcoY29uc3QgUmFuZ2UmKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHQoY29u
c3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1
bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CitXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFNpbXBsZVJhbmdl
JiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJv
b2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWlu
VGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhjb25zdCBTaW1wbGVSYW5n
ZSYpOwogCi1SZWY8UmFuZ2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucyk7Ci1XRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IGZpbmRDbG9zZXN0
UGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2ln
bmVkKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwg
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworU2lt
cGxlUmFuZ2UgZmluZFBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYs
IEZpbmRPcHRpb25zKTsKK1dFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIGZpbmRDbG9zZXN0UGxh
aW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVu
c2lnbmVkKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFNpbXBs
ZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3IpOwogYm9vbCBmaW5kUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zKTsgLy8gTGV0cyB1cyB1c2UgdGhlIHNlYXJjaCBhbGdvcml0aG0g
b24gYSBzdHJpbmcuCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZm9sZFF1b3RlTWFya3MoY29uc3Qg
U3RyaW5nJik7CiAKQEAgLTEwOCwyMyArMTA5LDIzIEBAIGNsYXNzIFRleHRJdGVyYXRvciB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgVGV4dEl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJ
dGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0
b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgVGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5UZXh0SXRlcmF0b3IoKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVy
biAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsK
IAogICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJu
IG1fdGV4dDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSByYW5nZSgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIE5vZGUqIG5vZGUoKSBjb25zdDsKIAogICAgIGNvbnN0IFRleHRJdGVyYXRvckNv
cHlhYmxlVGV4dCYgY29weWFibGVUZXh0KCkgY29uc3QgeyBBU1NFUlQoIWF0RW5kKCkpOyByZXR1
cm4gbV9jb3B5YWJsZVRleHQ7IH0KICAgICB2b2lkIGFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIo
U3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QgeyBjb3B5YWJsZVRleHQoKS5hcHBlbmRUb1N0
cmluZ0J1aWxkZXIoYnVpbGRlcik7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBpbnQg
cmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqLCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMg
PSBmYWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0
aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZh
bHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9uLCBz
aXplX3QmIGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gc3Vi
cmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFj
dGVyQ291bnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzaXplX3QgcmFuZ2VMZW5ndGgo
Y29uc3QgU2ltcGxlUmFuZ2UmLCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgPSBmYWxz
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgc2l6ZV90IHJhbmdl
TG9jYXRpb24sIHNpemVfdCByYW5nZUxlbmd0aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1l
bnRzID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdldExvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBTaW1wbGVSYW5nZSYsIHNpemVf
dCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U2ltcGxlUmFuZ2Ugc3VicmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGVudGlyZVJhbmdlLCBzaXpl
X3QgY2hhcmFjdGVyT2Zmc2V0LCBzaXplX3QgY2hhcmFjdGVyQ291bnQpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdCgpOwpAQCAtMTM3LDggKzEzOCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBo
YW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZvaWQgaGFuZGxlVGV4dEJveCgpOwogICAgIHZvaWQg
aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihSZW5kZXJUZXh0RnJhZ21lbnQmKTsKLSAgICB2b2lk
IGVtaXRDaGFyYWN0ZXIoVUNoYXIsIE5vZGUmIGNoYXJhY3Rlck5vZGUsIE5vZGUqIG9mZnNldEJh
c2VOb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7Ci0gICAgdm9p
ZCBlbWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYsIGludCB0ZXh0U3RhcnRPZmZz
ZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsKKyAgICB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIsIE5v
ZGUmIGNoYXJhY3Rlck5vZGUsIE5vZGUqIG9mZnNldEJhc2VOb2RlLCB1bnNpZ25lZCB0ZXh0U3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIHRleHRFbmRPZmZzZXQpOworICAgIHZvaWQgZW1pdFRleHQoVGV4
dCYgdGV4dE5vZGUsIFJlbmRlclRleHQmLCB1bnNpZ25lZCB0ZXh0U3RhcnRPZmZzZXQsIHVuc2ln
bmVkIHRleHRFbmRPZmZzZXQpOwogCiAgICAgTm9kZSogYmFzZU5vZGVGb3JFbWl0dGluZ05ld0xp
bmUoKSBjb25zdDsKIApAQCAtMTQ2LDIzICsxNDcsMjMgQEAgcHJpdmF0ZToKIAogICAgIC8vIEN1
cnJlbnQgcG9zaXRpb24sIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyByZXR1cm5l
ZCwgYnV0IHBvc2l0aW9uIGFzIHdlIHdhbGsgdGhyb3VnaCB0aGUgRE9NIHRyZWUuCiAgICAgTm9k
ZSogbV9ub2RlIHsgbnVsbHB0ciB9OwotICAgIGludCBtX29mZnNldCB7IDAgfTsKKyAgICB1bnNp
Z25lZCBtX29mZnNldCB7IDAgfTsKICAgICBib29sIG1faGFuZGxlZE5vZGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9oYW5kbGVkQ2hpbGRyZW4geyBmYWxzZSB9OwogICAgIEJpdFN0YWNrIG1fZnVs
bHlDbGlwcGVkU3RhY2s7CiAKICAgICAvLyBUaGUgcmFuZ2UuCiAgICAgTm9kZSogbV9zdGFydENv
bnRhaW5lciB7IG51bGxwdHIgfTsKLSAgICBpbnQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICB1
bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwogICAgIE5vZGUqIG1fZW5kQ29udGFpbmVyIHsg
bnVsbHB0ciB9OwotICAgIGludCBtX2VuZE9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2Vu
ZE9mZnNldCB7IDAgfTsKICAgICBOb2RlKiBtX3Bhc3RFbmROb2RlIHsgbnVsbHB0ciB9OwogCiAg
ICAgLy8gVGhlIGN1cnJlbnQgdGV4dCBhbmQgaXRzIHBvc2l0aW9uLCBpbiB0aGUgZm9ybSB0byBi
ZSByZXR1cm5lZCBmcm9tIHRoZSBpdGVyYXRvci4KICAgICBOb2RlKiBtX3Bvc2l0aW9uTm9kZSB7
IG51bGxwdHIgfTsKICAgICBtdXRhYmxlIE5vZGUqIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSB7
IG51bGxwdHIgfTsKLSAgICBtdXRhYmxlIGludCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgeyAwIH07
Ci0gICAgbXV0YWJsZSBpbnQgbV9wb3NpdGlvbkVuZE9mZnNldCB7IDAgfTsKKyAgICBtdXRhYmxl
IHVuc2lnbmVkIG1fcG9zaXRpb25TdGFydE9mZnNldCB7IDAgfTsKKyAgICBtdXRhYmxlIHVuc2ln
bmVkIG1fcG9zaXRpb25FbmRPZmZzZXQgeyAwIH07CiAgICAgVGV4dEl0ZXJhdG9yQ29weWFibGVU
ZXh0IG1fY29weWFibGVUZXh0OwogICAgIFN0cmluZ1ZpZXcgbV90ZXh0OwogCkBAIC0xOTMsNDMg
KzE5NCw0MyBAQCBwcml2YXRlOgogLy8gY2h1bmtzIHNvIGFzIHRvIG9wdGltaXplIGZvciBwZXJm
b3JtYW5jZSBvZiB0aGUgaXRlcmF0aW9uLgogY2xhc3MgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcihjb25zdCBSYW5nZSYpOworICAgIGV4cGxpY2l0IFNpbXBsaWZpZWRCYWNrd2FyZHNU
ZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25z
dCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICB2b2lkIGFkdmFuY2UoKTsKIAogICAg
IFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fdGV4
dDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSByYW5nZSgpIGNvbnN0OwogICAgIE5vZGUqIG5vZGUo
KSBjb25zdCB7IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX25vZGU7IH0KIAogcHJpdmF0ZToK
ICAgICB2b2lkIGV4aXROb2RlKCk7CiAgICAgYm9vbCBoYW5kbGVUZXh0Tm9kZSgpOwotICAgIFJl
bmRlclRleHQqIGhhbmRsZUZpcnN0TGV0dGVyKGludCYgc3RhcnRPZmZzZXQsIGludCYgb2Zmc2V0
SW5Ob2RlKTsKKyAgICBSZW5kZXJUZXh0KiBoYW5kbGVGaXJzdExldHRlcih1bnNpZ25lZCYgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkJiBvZmZzZXRJbk5vZGUpOwogICAgIGJvb2wgaGFuZGxlUmVwbGFj
ZWRFbGVtZW50KCk7CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwotICAgIHZvaWQgZW1p
dENoYXJhY3RlcihVQ2hhciwgTm9kZSYsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7
CisgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2RlJiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAgICAgYm9vbCBhZHZhbmNlUmVzcGVjdGluZ1Jhbmdl
KE5vZGUqKTsKIAogICAgIGNvbnN0IFRleHRJdGVyYXRvckJlaGF2aW9yIG1fYmVoYXZpb3IgeyBU
ZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IgfTsKIAogICAgIC8vIEN1cnJlbnQgcG9zaXRpb24s
IG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyByZXR1cm5lZCwgYnV0IHBvc2l0aW9u
IGFzIHdlIHdhbGsgdGhyb3VnaCB0aGUgRE9NIHRyZWUuCiAgICAgTm9kZSogbV9ub2RlIHsgbnVs
bHB0ciB9OwotICAgIGludCBtX29mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX29mZnNldCB7
IDAgfTsKICAgICBib29sIG1faGFuZGxlZE5vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYW5k
bGVkQ2hpbGRyZW4geyBmYWxzZSB9OwogICAgIEJpdFN0YWNrIG1fZnVsbHlDbGlwcGVkU3RhY2s7
CiAKICAgICAvLyBUaGUgcmFuZ2UuCiAgICAgTm9kZSogbV9zdGFydENvbnRhaW5lciB7IG51bGxw
dHIgfTsKLSAgICBpbnQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3N0YXJ0
T2Zmc2V0IHsgMCB9OwogICAgIE5vZGUqIG1fZW5kQ29udGFpbmVyIHsgbnVsbHB0ciB9OwotICAg
IGludCBtX2VuZE9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsK
ICAgICAKICAgICAvLyBUaGUgY3VycmVudCB0ZXh0IGFuZCBpdHMgcG9zaXRpb24sIGluIHRoZSBm
b3JtIHRvIGJlIHJldHVybmVkIGZyb20gdGhlIGl0ZXJhdG9yLgogICAgIE5vZGUqIG1fcG9zaXRp
b25Ob2RlIHsgbnVsbHB0ciB9OwotICAgIGludCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgeyAwIH07
Ci0gICAgaW50IG1fcG9zaXRpb25FbmRPZmZzZXQgeyAwIH07CisgICAgdW5zaWduZWQgbV9wb3Np
dGlvblN0YXJ0T2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIG1fcG9zaXRpb25FbmRPZmZzZXQg
eyAwIH07CiAgICAgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0IG1fY29weWFibGVUZXh0OwogICAg
IFN0cmluZ1ZpZXcgbV90ZXh0OwogCkBAIC0yNDgsNDAgKzI0OSw0MCBAQCBwcml2YXRlOgogLy8g
Y2hhcmFjdGVyIGF0IGEgdGltZSwgb3IgZmFzdGVyLCBhcyBuZWVkZWQuIFVzZWZ1bCBmb3Igc2Vh
cmNoaW5nLgogY2xhc3MgQ2hhcmFjdGVySXRlcmF0b3IgewogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJiwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQ
b3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJl
aGF2aW9yKTsKICAgICAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5
aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZShp
bnQgbnVtQ2hhcmFjdGVycyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZHZhbmNlKHVuc2ln
bmVkIG51bUNoYXJhY3RlcnMpOwogICAgIAogICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5zdWJzdHJpbmcobV9ydW5PZmZzZXQp
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiByYW5nZSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIHJhbmdlKCkgY29uc3Q7CiAKICAgICBib29sIGF0QnJl
YWsoKSBjb25zdCB7IHJldHVybiBtX2F0QnJlYWs7IH0KLSAgICBpbnQgY2hhcmFjdGVyT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogCiBwcml2YXRlOgogICAgIFRleHRJdGVy
YXRvciBtX3VuZGVybHlpbmdJdGVyYXRvcjsKIAotICAgIGludCBtX29mZnNldCB7IDAgfTsKLSAg
ICBpbnQgbV9ydW5PZmZzZXQgeyAwIH07CisgICAgdW5zaWduZWQgbV9vZmZzZXQgeyAwIH07Cisg
ICAgdW5zaWduZWQgbV9ydW5PZmZzZXQgeyAwIH07CiAgICAgYm9vbCBtX2F0QnJlYWsgeyB0cnVl
IH07CiB9OwogICAgIAogY2xhc3MgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJik7
CisgICAgZXhwbGljaXQgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2ltcGxlUmFu
Z2UmKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybHlpbmdJdGVy
YXRvci5hdEVuZCgpOyB9Ci0gICAgdm9pZCBhZHZhbmNlKGludCBudW1DaGFyYWN0ZXJzKTsKKyAg
ICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbnVtQ2hhcmFjdGVycyk7CiAKLSAgICBSZWY8UmFuZ2U+
IHJhbmdlKCkgY29uc3Q7CisgICAgU2ltcGxlUmFuZ2UgcmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIG1fdW5kZXJseWluZ0l0ZXJh
dG9yOwogCi0gICAgaW50IG1fb2Zmc2V0OwotICAgIGludCBtX3J1bk9mZnNldDsKKyAgICB1bnNp
Z25lZCBtX29mZnNldDsKKyAgICB1bnNpZ25lZCBtX3J1bk9mZnNldDsKICAgICBib29sIG1fYXRC
cmVhazsKIH07CiAKQEAgLTI4OSw3ICsyOTAsNyBAQCBwcml2YXRlOgogLy8gdGhleSBuZXZlciBz
cGxpdCB1cCBhIHdvcmQuIFRoaXMgaXMgdXNlZnVsIGZvciBzcGVsbCBjaGVja2luZyBhbmQgcGVy
aGFwcyBvbmUgZGF5IGZvciBzZWFyY2hpbmcgYXMgd2VsbC4KIGNsYXNzIFdvcmRBd2FyZUl0ZXJh
dG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JkQXdhcmVJdGVyYXRvcihjb25zdCBSYW5n
ZSYpOworICAgIGV4cGxpY2l0IFdvcmRBd2FyZUl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJik7
CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fZGlkTG9va0FoZWFkICYmIG1f
dW5kZXJseWluZ0l0ZXJhdG9yLmF0RW5kKCk7IH0KICAgICB2b2lkIGFkdmFuY2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5j
cHAKaW5kZXggZDA1YWY0NGZkOGVhYTM0ZThiMzI0MGJjODRjNzc1MGJkNDA2M2E2Yy4uNmY0Nzcy
NTA0NWFjMmE4NDg4ZTIwZTI4ZmQ4ZWVmNTljNmU2ZWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE1Myw3
ICsxNTMsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpvYnNlcnZlUGFyYWdy
YXBocyhWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBWaXNpYgogICAgICAgICBTdHJpbmdWaWV3IGN1
cnJlbnRUZXh0ID0gaXRlcmF0b3IudGV4dCgpOwogCiAgICAgICAgIGlmIChzdGFydE9mQ3VycmVu
dFBhcmFncmFwaC5pc051bGwoKSkKLSAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBo
ID0gaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpOworICAgICAgICAgICAgc3RhcnRP
ZkN1cnJlbnRQYXJhZ3JhcGggPSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0b3IucmFuZ2UoKSktPnN0
YXJ0UG9zaXRpb24oKTsKIAogICAgICAgICBpZiAoYXV0byogY3VycmVudE5vZGUgPSBpdGVyYXRv
ci5ub2RlKCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8RWxlbWVudD4gY3VycmVudEVsZW1l
bnRBbmNlc3RvciA9IGlzPEVsZW1lbnQ+KGN1cnJlbnROb2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+
KGN1cnJlbnROb2RlKSA6IGN1cnJlbnROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkp
IHsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpv
YnNlcnZlUGFyYWdyYXBocyhWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBWaXNpYgogICAgICAgICAg
ICAgICAgIHRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4g
eyBtX3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCBzdHJpbmdVbnRpbEVuZE9mTGluZSwgZXhj
bHVzaW9uUnVsZU1hdGNoZXIuaXNFeGNsdWRlZChpdGVyYXRvci5ub2RlKCkpIH0pOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGxhc3RSYW5nZSA9IGl0ZXJhdG9yLnJhbmdlKCk7
CisgICAgICAgICAgICBhdXRvIGxhc3RSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShpdGVyYXRvci5y
YW5nZSgpKTsKICAgICAgICAgICAgIGlmIChvZmZzZXRPZk5leHROZXdMaW5lIDwgY3VycmVudFRl
eHQubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBsYXN0UmFuZ2UtPnNldFN0YXJ0KGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShpdGVyYXRvci5ub2RlKCkpKTsgLy8gTW92ZSB0aGUgc3Rh
cnQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBub2RlLgogICAgICAgICAgICAgICAg
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobGFzdFJhbmdlLCAwLCBvZmZzZXRPZk5leHROZXdMaW5l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDAxZjUzZGJh
MDNiZWFjNzk3ZDc2YWE4YWU1NjZkMmZkMTI1YzgyM2QuLmM0ZDgwZmI1NTA4ZjFlMjZjNjg5MTg1
MzgyYWVmYzBjZmRiOWEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIGJvb2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGlu
Z1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIFRleHRHCiAgICAgaWYg
KCFyYW5nZSB8fCBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCiAgICAgICAgIHJldHVy
biBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5kaW5ncygpKTsKIAotICAgIHJldHVybiBmcmFtZSgp
LmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0
ZUZyb21SYW5nZSgqcmFuZ2UpIH0pOworICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxB
cHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpIH0pOwog
fQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChFVHlwaW5n
Q29tbWFuZCBjb21tYW5kVHlwZUZvckFkZGVkVHlwaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggZjMyN2NiMzAzMDFiNjgwMjkxYTM4OWU5MTkz
OTMyYjZiOGQ5NjExOC4uZjkyZTNkZDgxZGU5M2MzZDEwOWU4MzI0ZjUxODFhN2YxMmVlOWJjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBAIC0zMiw3
ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlN0YXRpY1JhbmdlLmgi
CisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtOTcsMTMgKzk3
LDEzIEBAIFZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUmFuZ2UmIHJh
bmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wKICAgICB2YWxpZGF0ZSgpOwogfQogCi1WaXNp
YmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFN0YXRpY1JhbmdlJiBzdGF0aWNS
YW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwpCi0gICAgOiBtX2Jh
c2UoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRpY1JhbmdlLnN0YXJ0Q29udGFpbmVy
KCksIHN0YXRpY1JhbmdlLnN0YXJ0T2Zmc2V0KCkpKQotICAgICwgbV9leHRlbnQoY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRpY1JhbmdlLmVuZENvbnRhaW5lcigpLCBzdGF0aWNSYW5n
ZS5lbmRPZmZzZXQoKSkpCitWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9u
YWwpCisgICAgOiBtX2Jhc2UoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZyYW5nZS5zdGFy
dENvbnRhaW5lcigpLCByYW5nZS5zdGFydE9mZnNldCgpKSkKKyAgICAsIG1fZXh0ZW50KGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigmcmFuZ2UuZW5kQ29udGFpbmVyKCksIHJhbmdlLmVuZE9m
ZnNldCgpKSkKICAgICAsIG1fYWZmaW5pdHkoYWZmaW5pdHkpCiAgICAgLCBtX2lzRGlyZWN0aW9u
YWwoaXNEaXJlY3Rpb25hbCkKIHsKLSAgICBBU1NFUlQoJnN0YXRpY1JhbmdlLnN0YXJ0Q29udGFp
bmVyKCktPnRyZWVTY29wZSgpID09ICZzdGF0aWNSYW5nZS5lbmRDb250YWluZXIoKS0+dHJlZVNj
b3BlKCkpOworICAgIEFTU0VSVCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKSA9
PSAmcmFuZ2UuZW5kQ29udGFpbmVyKCkudHJlZVNjb3BlKCkpOwogICAgIHZhbGlkYXRlKCk7CiB9
CiAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OmFwcGVuZFRyYWls
aW5nV2hpdGVzcGFjZSgpCiAgICAgICAgIFVDaGFyIGMgPSBjaGFySXQudGV4dCgpWzBdOwogICAg
ICAgICBpZiAoKCFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMgIT0gbm9CcmVha1NwYWNlKSB8fCBj
ID09ICdcbicpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgbV9lbmQgPSBjaGFySXQucmFu
Z2UoKS0+ZW5kUG9zaXRpb24oKTsKKyAgICAgICAgbV9lbmQgPSBjcmVhdGVMaXZlUmFuZ2UoY2hh
ckl0LnJhbmdlKCkpLT5lbmRQb3NpdGlvbigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAppbmRleCAyZDQyZDhmN2VmMWZhMjFmMjg5MDMzZmFk
NmI4MzFlYTBjM2UzZGRjLi4xYjlhMzcyZDhiNzFlYjg2ZjIxZTNkOGJmZWEzYWQ3N2IyNzhhNDRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaApAQCAtMzEsNyAr
MzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQb3NpdGlvbjsKLWNsYXNzIFN0
YXRpY1JhbmdlOworCitzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKIGNvbnN0IEVBZmZpbml0eSBTRUxf
REVGQVVMVF9BRkZJTklUWSA9IERPV05TVFJFQU07CiBlbnVtIFNlbGVjdGlvbkRpcmVjdGlvbiA6
IHVpbnQ4X3QgeyBEaXJlY3Rpb25Gb3J3YXJkLCBEaXJlY3Rpb25CYWNrd2FyZCwgRGlyZWN0aW9u
UmlnaHQsIERpcmVjdGlvbkxlZnQgfTsKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIFZp
c2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0
eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFJhbmdlJiwgRUFmZmlu
aXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFN0YXRpY1JhbmdlJiwg
RUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZh
bHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFNpbXBsZVJh
bmdlJiwgRUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJlY3Rpb25h
bCA9IGZhbHNlKTsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA0NDc4YWRmMjJiYWY5ZThmYzU4
MmFkMjc1MjhhMDM0YzVlNGNjODQ1Li42Y2EzNjYxMDVmYTQyNDc2MTc3NTAyZTNjOWJmMmQwMThk
NWZhMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC02MzUs
NyArNjM1LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2gKICAgICBpZiAoIW5leHQpCiAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oaXQuYXRFbmQoKSA/IHNlYXJjaFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCkgOiBwb3MsIERPV05TVFJFQU0pOwogCi0gICAgTm9kZSYgbm9kZSA9IGl0LmF0
RW5kKCkgPyBzZWFyY2hSYW5nZS0+c3RhcnRDb250YWluZXIoKSA6IGl0LnJhbmdlKCktPnN0YXJ0
Q29udGFpbmVyKCk7CisgICAgTm9kZSYgbm9kZSA9IGl0LmF0RW5kKCkgPyBzZWFyY2hSYW5nZS0+
c3RhcnRDb250YWluZXIoKSA6IGl0LnJhbmdlKCkuc3RhcnRDb250YWluZXIoKTsKICAgICBpZiAo
KCFzdWZmaXhMZW5ndGggJiYgbm9kZS5pc1RleHROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8aW50Pihu
ZXh0KSA8PSBub2RlLm1heENoYXJhY3Rlck9mZnNldCgpKSB8fCAobm9kZS5yZW5kZXJlcigpICYm
IG5vZGUucmVuZGVyZXIoKS0+aXNCUigpICYmICFuZXh0KSkgewogICAgICAgICAvLyBUaGUgbmV4
dCB2YXJpYWJsZSBjb250YWlucyBhIHVzYWJsZSBpbmRleCBpbnRvIGEgdGV4dCBub2RlCiAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZu
b2RlLCBuZXh0KSwgRE9XTlNUUkVBTSk7CkBAIC02NDYsNyArNjQ2LDcgQEAgc3RhdGljIFZpc2li
bGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91
bmRhcnlTZWFyY2gKICAgICBpZiAobmV4dCA8IHN0cmluZy5zaXplKCkgLSBzdWZmaXhMZW5ndGgp
CiAgICAgICAgIGNoYXJJdC5hZHZhbmNlKHN0cmluZy5zaXplKCkgLSBzdWZmaXhMZW5ndGggLSBu
ZXh0KTsKICAgICAvLyBGSVhNRTogY2hhckl0IGNhbiBnZXQgb3V0IG9mIHNoYWRvdyBob3N0Lgot
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oY2hhckl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCks
IERPV05TVFJFQU0pOworICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGl2ZVJhbmdl
KGNoYXJJdC5yYW5nZSgpKS0+ZW5kUG9zaXRpb24oKSwgRE9XTlNUUkVBTSk7CiB9CiAKIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywg
Qm91bmRhcnlTZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlvbikKQEAgLTY4Miw3ICs2ODIsNyBA
QCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogICAgICAgICAvLyBVc2UgdGhlIGNoYXJhY3RlciBp
dGVyYXRvciB0byB0cmFuc2xhdGUgdGhlIG5leHQgdmFsdWUgaW50byBhIERPTSBwb3NpdGlvbi4K
ICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2hhckl0KHNlYXJjaFJhbmdlLCBUZXh0SXRlcmF0
b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgICAgIGNo
YXJJdC5hZHZhbmNlKG5leHQgLSBwcmVmaXhMZW5ndGggLSAxKTsKLSAgICAgICAgUmVmUHRyPFJh
bmdlPiBjaGFyYWN0ZXJSYW5nZSA9IGNoYXJJdC5yYW5nZSgpOworICAgICAgICBSZWZQdHI8UmFu
Z2U+IGNoYXJhY3RlclJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGNoYXJJdC5yYW5nZSgpKTsKICAg
ICAgICAgcG9zID0gY2hhcmFjdGVyUmFuZ2UtPmVuZFBvc2l0aW9uKCk7CiAgICAgICAgIAogICAg
ICAgICBpZiAoY2hhckl0LnRleHQoKVswXSA9PSAnXG4nKSB7CkBAIC02OTAsNyArNjkwLDcgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNQ
b3MgPSBWaXNpYmxlUG9zaXRpb24ocG9zKTsKICAgICAgICAgICAgIGlmICh2aXNQb3MgPT0gVmlz
aWJsZVBvc2l0aW9uKGNoYXJhY3RlclJhbmdlLT5zdGFydFBvc2l0aW9uKCkpKSB7CiAgICAgICAg
ICAgICAgICAgY2hhckl0LmFkdmFuY2UoMSk7Ci0gICAgICAgICAgICAgICAgcG9zID0gY2hhckl0
LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24oKTsKKyAgICAgICAgICAgICAgICBwb3MgPSBjcmVhdGVM
aXZlUmFuZ2UoY2hhckl0LnJhbmdlKCkpLT5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24ubW0KaW5kZXggYzg5YjkwYzg4MWFkODE2ZGY5ZDY4NTY4OGEwZmI5Y2ViZmIzMGE4
Ni4uZGQwYTVkYmYzOThmZTVlOTNhNGRmYjU3ZDlkOTVhYWE5YzFmYTMxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNDMsNiArNDMsNyBA
QAogI2ltcG9ydCAiTm9kZVRyYXZlcnNhbC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQg
IlJlbmRlck9iamVjdC5oIgorI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlN0eWxl
UHJvcGVydGllcy5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgi
CkBAIC05NCw3ICs5NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRl
Y3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZShWaXNpYmxlUG9zaXRpb24KICAgICAgICAgQ0ZSYW5n
ZSByZXN1bHRSYW5nZUluQ29udGV4dCA9IEREUmVzdWx0R2V0UmFuZ2UocmVzdWx0KTsKICAgICAg
ICAgaWYgKGhpdExvY2F0aW9uID49IHJlc3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uICYmICho
aXRMb2NhdGlvbiAtIHJlc3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uKSA8IHJlc3VsdFJhbmdl
SW5Db250ZXh0Lmxlbmd0aCkgewogICAgICAgICAgICAgbWFpblJlc3VsdCA9IHJlc3VsdDsKLSAg
ICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRl
eHRSYW5nZSwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24sIHJlc3VsdFJhbmdlSW5Db250
ZXh0Lmxlbmd0aCk7CisgICAgICAgICAgICBtYWluUmVzdWx0UmFuZ2UgPSBjcmVhdGVMaXZlUmFu
Z2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHRSYW5nZUluQ29u
dGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCBkMzU1MzlhOWRmZDhkNDdlZTRlMDExNzBk
NWIyOGNmMTUxMDNlZDcyLi44MzE5NWQxYTJhMzcyOTNiNmQxZmU1MGJmMGRlZjYyY2YyOGQ5Y2Nh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29r
dXAubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3Vw
Lm1tCkBAIC0yODksNyArMjg5LDcgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rp
b25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY28KICAgICBSZXRh
aW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRX
aXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKTsKICAgICBOU1Jh
bmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKICAgICAKLSAg
ICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhp
Z2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsKKyAg
ICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENo
YXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiwgaGlnaGxpZ2h0UmFuZ2UubGVu
Z3RoKSksIG5pbCB9OwogICAgIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAg
CkBAIC0zNjQsNyArMzY0LDcgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25h
cnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQKICAgICBpZiAoaGln
aGxpZ2h0UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhaGlnaGxpZ2h0UmFuZ2UubGVu
Z3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKICAgICAKLSAgICByZXR1cm4g
eyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJh
bmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsKKyAgICByZXR1cm4g
eyBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJh
bmdlLCBoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiwgaGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKSksIG5p
bCB9OwogICAgIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggYzM5NTkyNGJk
ODVmODRhMGFlMmFmMzM3NDNlZDlmOWY3YzZhM2IxMS4uYjBhZDBiMmVjNDdkMzU5NjgxYTA3Nzg3
NDdiNDY3ZjNhODEyOWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbQpAQCAtNTgsOCArNTgsMTAgQEAKICNpbXBvcnQgIkhUTUxUYWJsZUNlbGxF
bGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW1wb3J0ICJMb2Fk
ZXJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlckltYWdl
LmgiCiAjaW1wb3J0ICJSZW5kZXJUZXh0LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgogI2lt
cG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJTdHlsZWRFbGVtZW50LmgiCiAjaW1w
b3J0ICJUZXh0SXRlcmF0b3IuaCIKQEAgLTIzOTUsNyArMjM5Nyw3IEBAIE5TQXR0cmlidXRlZFN0
cmluZyAqZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoUmFuZ2UmIHJhbmdlLCBJbmNs
dWRlSW1hZ2VzCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0dHJzID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIGZvciAoVGV4
dEl0ZXJhdG9yIGl0KCZyYW5nZSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAg
ICAgUmVmUHRyPFJhbmdlPiBjdXJyZW50VGV4dFJhbmdlID0gaXQucmFuZ2UoKTsKKyAgICAgICAg
UmVmUHRyPFJhbmdlPiBjdXJyZW50VGV4dFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdl
KCkpOwogICAgICAgICBOb2RlJiBzdGFydENvbnRhaW5lciA9IGN1cnJlbnRUZXh0UmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCk7CiAgICAgICAgIE5vZGUmIGVuZENvbnRhaW5lciA9IGN1cnJlbnRUZXh0
UmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBjdXJyZW50
VGV4dFJhbmdlLT5zdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4
IDdlMjJjNTIyYWRjOGUyMjdiNjM5YmNlZTZkYjQ2ZDBhMzkyOTNkNTMuLjA0YjE4ZGMyZGJmYzJm
ZjljN2M4ZTM1YjU1NjI2OWYwY2M0MWM1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
QEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUg
IlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDM3NDE4NTYzNjc4OTdjYzNl
YWZhYzg2ZjgxOTEwNTI2ODZmZDFkYWEuLjUxMWRiMWE2ZjQ1YTZlMTBlNjhhYzczZmI2M2JhOTRk
ZjA5NGVlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNs
dWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRl
ICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA2
ODg4NzhkZDFiYWI3MWI1MmFkYzM0N2QzYzFiMWE3N2Q0N2UyY2EwLi44MmNlNGNhNDhmNzdjNjY0
NzBjZGUyZTVkMWY4YWZkNGY4ZDE4MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJU
eXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC03Myw3ICs3NCw2IEBACiAjaW5jbHVkZSA8d3Rm
L1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZTM0Y2QxNjc1ZjEzMzg3OWU0NWM2
OTExZDZkYWI2MmJiOTQ3MjUxNC4uMDZjMDU1Yjc1ZTJmMmQ5NmUxNDEzODk4MjczMzhiYjkzMmNi
NmFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtOTIsNiArOTIsNyBA
QAogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiU3Bh
dGlhbE5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJTdGF0aWNQYXN0ZWJvYXJkLmgiCiAjaW5jbHVk
ZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTkxZTg2ZTg2YTAy
MDkxNGY0OGVmOTUxMmQ4NjcxY2JjZjVjMmRjNC4uZDkxM2E5NmUyMTg4NzhmNWMwNmQyZjBhYjBi
NGJlMTg5NDFkZWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMDksNiArMTA5LDcgQEAKICNp
bmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNs
dWRlICJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgpAQCAtODUzLDcgKzg1NCw3IEBAIHN0YXRpYyB2b2lkIHJl
cGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdl
PiYgcmFuZ2VzCiAgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggcmFuZ2VzIHdo
ZW4gcmVwbGFjaW5nIHRleHQsIHN1Y2ggdGhhdCBlYXJsaWVyIHRleHQgcmVwbGFjZW1lbnRzIGRv
bid0IGNsb2JiZXIgcmVwbGFjZW1lbnQgcmFuZ2VzIGxhdGVyIG9uLgogICAgICAgICBhdXRvJiBy
YW5nZXMgPSByYW5nZXNCeUNvbnRhaW5lck5vZGUuZmluZChjb250YWluZXIpLT52YWx1ZTsKICAg
ICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFuZ2VzLnJiZWdpbigpOyBpdGVyYXRvciAhPSBy
YW5nZXMucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIuZ2V0KCksIGl0
ZXJhdG9yLT5sb2NhdGlvbiwgaXRlcmF0b3ItPmxlbmd0aCk7CisgICAgICAgICAgICBhdXRvIHJh
bmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoY29udGFpbmVyLmdldCgpLCBpdGVyYXRvci0+bG9jYXRpb24sIGl0ZXJhdG9yLT5sZW5n
dGgpKTsKICAgICAgICAgICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPmNvbGxhcHNlZCgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNw
cAppbmRleCAyYjkzOTBjMWM2M2I1YTA4YzYyOWJiMjgwMGIzOTg1OTA1MGUwMjUyLi41YjI1OWNk
NzQ4NmQyZmQ3YzE5OGZmN2I0ZGVhYzI2MTQ5ZmIyOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4
dEluZGljYXRvci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgor
I2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCmluZGV4IDgyMjA0MjRhMjI3NTBhN2U4MmY0NjMzODUwYTAzZGFhNmNmNDdk
NjguLmM1MzAxOTE5NzEwYjRmZjg4YzkzYzEwZTE0MWFkNzIyZTg2NzkxMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJTVkdJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgIlZpc2libGVVbml0cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDg4ZjdhN2M3ZDI5ODUyNjRjNzI0NzZjOTFlNzEwY2ZlMjk1N2U4N2EuLmQ4ZTU0MmI3YTA0NzUw
YzI0ZWZmMTcyNmY1ZjA1NzA1OWUxNWMxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTE3NCw2ICsxNzQsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpA
QCAtMjAwMyw3ICsyMDA0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjppbnZhbGlk
YXRlQ29udHJvbFRpbnRzKCkKIAogUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJh
bmdlTGVuZ3RoKQogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKCZzY29wZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVy
biBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aCgmc2NvcGUsIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKSk7CiB9CiAKIHVuc2lnbmVkIElu
dGVybmFsczo6bG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJiBy
YW5nZSkKQEAgLTIwMzQsMTIgKzIwMzUsMTIgQEAgU3RyaW5nIEludGVybmFsczo6cmFuZ2VBc1Rl
eHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCiAKIFJlZjxS
YW5nZT4gSW50ZXJuYWxzOjpzdWJyYW5nZShSYW5nZSYgcmFuZ2UsIGludCByYW5nZUxvY2F0aW9u
LCBpbnQgcmFuZ2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uo
cmFuZ2UsIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2
ZVJhbmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocmFuZ2UsIHJhbmdlTG9jYXRpb24sIHJhbmdl
TGVuZ3RoKSk7CiB9CiAKIFJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZU9mU3RyaW5nTmVh
ckxvY2F0aW9uKGNvbnN0IFJhbmdlJiBzZWFyY2hSYW5nZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCB1
bnNpZ25lZCB0YXJnZXRPZmZzZXQpCiB7Ci0gICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0
KHNlYXJjaFJhbmdlLCB0ZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CisgICAgcmV0dXJuIGNyZWF0
ZUxpdmVSYW5nZShmaW5kQ2xvc2VzdFBsYWluVGV4dChzZWFyY2hSYW5nZSwgdGV4dCwgeyB9LCB0
YXJnZXRPZmZzZXQpKTsKIH0KIAogI2lmICFQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RWRpdGluZ1JhbmdlLmNwcAppbmRleCBjZjFjMDNhYWE1OWRlODRjZTgzYTQ5ODM1MDFkNGVjZTky
ZGMyZTdjLi4wOGY3YmJjOGJmZmZkNTgzMjlmYjJkMTI1OWZjYzcxNGMwODg3NmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lU2VsZWN0aW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KIApAQCAtNTMs
NyArNTQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShX
ZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRpbgogICAgICAgICAvLyBkaXJlY3RseSBp
biB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIg
c29sdXRpb24gaXMKICAgICAgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQg
b2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAgICAgICAv
LyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVu
dCgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3Ro
KSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CkBAIC02NywxNyArNjgsMTcgQEAgUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUm
IGZyYW1lLCBjb25zdCBFZGl0aW4KICAgICBpZiAoIXBhcmFncmFwaFJhbmdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFdlYkNvcmU6OkNvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0g
cGFyYWdyYXBoUmFuZ2UuZ2V0KCktPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5v
ZGUoKTsKKyAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFJhbmdlLmdldCgpLT5zdGFydENv
bnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CiAgICAgaW50IHBhcmFncmFwaFN0YXJ0
SW5kZXggPSBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKFdlYkNvcmU6OlJhbmdl
OjpjcmVhdGUocm9vdE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2RlLCAwLCAmcGFyYWdyYXBoUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydE9mZnNldCgpKS5wdHIo
KSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgc3RhdGljX2Nhc3Q8aW50
PihyYW5nZS5sb2NhdGlvbiksIGxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9k
ZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24p
LCBsZW5ndGgpKTsKIH0KIAogRWRpdGluZ1JhbmdlIEVkaXRpbmdSYW5nZTo6ZnJvbVJhbmdlKFdl
YkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlLCBFZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQogewogICAgIEFTU0VS
VChlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpF
ZGl0YWJsZVJvb3QpOwogCi0gICAgc2l6ZV90IGxvY2F0aW9uOwotICAgIHNpemVfdCBsZW5ndGg7
CisgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsKKyAgICBzaXplX3QgbGVuZ3RoID0gMDsKICAgICBp
ZiAoIXJhbmdlIHx8ICFXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3Ro
RnJvbVJhbmdlKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50
RWxlbWVudCgpLCByYW5nZSwgbG9jYXRpb24sIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXggMDg0ZjMwMDVk
NjEwM2Q0ZTI1MDMzYzI1NmM3MGMwZTA2NDA0MWNkOC4uNzliMmU0ZjU3ZjdiMTViZTBjOTliM2Iz
MTg2NWVmOGRjN2I0MTc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3Iu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiV0tET01JbnRlcm5hbHMuaCIKICNpbXBv
cnQgIldLRE9NUmFuZ2UuaCIKKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAKIEBpbnRlcmZhY2UgV0tET01UZXh0SXRlcmF0
b3IgKCkgewpAQCAtNjIsNyArNjMsNyBAQCAtIChCT09MKWF0RW5kCiAKIC0gKFdLRE9NUmFuZ2Ug
KiljdXJyZW50UmFuZ2UKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NUmFuZ2UoX3RleHRJ
dGVyYXRvci0+cmFuZ2UoKS5wdHIoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTVJhbmdl
KGNyZWF0ZUxpdmVSYW5nZShfdGV4dEl0ZXJhdG9yLT5yYW5nZSgpKS5wdHIoKSk7CiB9CiAKIC8v
IEZJWE1FOiBDb25zaWRlciBkZXByZWNhdGluZyB0aGlzIG1ldGhvZCBhbmQgY3JlYXRpbmcgb25l
IHRoYXQgZG9lcyBub3QgcmVxdWlyZSBjb3B5aW5nIDgtYml0IGNoYXJhY3RlcnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCmluZGV4IDllMjQ3NThjZDkyY2Y3NTA4NmZjYzIxODI0YjM1Yzg4MDcxMjMy
NzMuLjJjZmNkY2IyMWEwN2I2ZmQ1NGZjNTEwYTViNmVlOTFkNzZhYTY2NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVSYW5n
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlbGxDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgpA
QCAtNjUsOCArNjYsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgdWlu
dDY0X3QgZ2VuZXJhdGVUZXh0Q2hlY2tpbmdSZXF1ZXN0SUQoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDRiYmFmNzkzZjdhNjVkMzZj
MzQ1N2VhMDJmZDQ0ZjMyZDQxYzFhYzUuLjNkMDIzOWY2MjJjODlhYmIzODIyMWFhZjdlZmQyYWYy
ZGVjMmQ4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1Rl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVSYW5nZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RleHRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rl
ci5oPgpAQCAtOTEsOCArOTIsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNp
bmcgbmFtZXNwYWNlIEpTQzsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBERUZJTkVfREVC
VUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHdlYkZyYW1lQ291bnRl
ciwgKCJXZWJGcmFtZSIpKTsKIApAQCAtNzEyLDcgKzcxMSw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0
b3BMb2FkaW5nKCkKIFdlYkZyYW1lKiBXZWJGcmFtZTo6ZnJhbWVGb3JDb250ZXh0KEpTQ29udGV4
dFJlZiBjb250ZXh0KQogewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdE9i
aiA9IHRvSlMoY29udGV4dCk7Ci0gICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nh
c3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3RPYmotPnZtKCksIGdsb2JhbE9iamVjdE9iaik7
CisgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRv
dyo+KGdsb2JhbE9iamVjdE9iai0+dm0oKSwgZ2xvYmFsT2JqZWN0T2JqKTsKICAgICBpZiAoIXdp
bmRvdykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byogY29yZUZyYW1lID0gd2lu
ZG93LT53cmFwcGVkKCkuZnJhbWUoKTsKQEAgLTcyOCw3ICs3MjcsNyBAQCBKU1ZhbHVlUmVmIFdl
YkZyYW1lOjpqc1dyYXBwZXJGb3JXb3JsZChJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUqIG5vZGVI
YW5kbGUsIEluagogCiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IG1fY29yZUZyYW1l
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKTsKIAotICAgIEpTTG9j
a0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiB0b1JlZihnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsIG5vZGVIYW5kbGUtPmNvcmVOb2RlKCkpKTsKIH0KIApAQCAt
NzM5LDcgKzczOCw3IEBAIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmpzV3JhcHBlckZvcldvcmxkKElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUqIHJhbmdlSGFuZGxlLCBJCiAKICAgICBKU0RPTVdpbmRv
dyogZ2xvYmFsT2JqZWN0ID0gbV9jb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3Js
ZC0+Y29yZVdvcmxkKCkpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHRv
UmVmKGdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgcmFuZ2VI
YW5kbGUtPmNvcmVSYW5nZSgpKSk7CiB9CiAKQEAgLTc0OCw3ICs3NDcsNyBAQCBTdHJpbmcgV2Vi
RnJhbWU6OmNvdW50ZXJWYWx1ZShKU09iamVjdFJlZiBlbGVtZW50KQogICAgIGlmICghdG9KUyhl
bGVtZW50KS0+aW5oZXJpdHM8SlNFbGVtZW50Pih0b0pTKGVsZW1lbnQpLT52bSgpKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQo
JmpzQ2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKS0+d3JhcHBlZCgpKTsKKyAgICByZXR1
cm4gY291bnRlclZhbHVlRm9yRWxlbWVudCgmSlNDOjpqc0Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhl
bGVtZW50KSktPndyYXBwZWQoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6cHJvdmlzaW9uYWxV
UkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQppbmRleCAwYWU0ZWFmZDhmNDExOWFhYjUzMGFlMTM2YWM5MGMwNTVjNDc1
MjM1Li5iNDliMTU0Y2M5ZDNiZmM5NjE2ZmNmZWY0ZjgwODYzNTRlYmM3YzkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
ODYsNiArODYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3Jv
bGxWaWV3Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1N0eWxlSW5oZXJpdGVkRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3Iu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CkBAIC05OSw3ICsxMDAsNiBAQAog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKQEAgLTQwNyw4ICs0MDcsNiBA
QCB2b2lkIFdlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvbnRBdFNlbGVjdGlvbkNhbGxiYWNr
KHsgYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3Iu
Z2V0KCkpKSB9LCBDVEZvbnRHZXRTaXplKGN0Rm9udCksIHNlbGVjdGlvbkhhc011bHRpcGxlRm9u
dHMsIGNhbGxiYWNrSUQpKTsKIH0KLSAgICAKLQogCiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4p
CiAKQEAgLTUwNyw2ICs1MDUsNyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVo
YXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlibwogfQogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKIHN0YXRpYyBTdHJpbmcmIHJlcGxhY2VTZWxlY3Rp
b25QYXN0ZWJvYXJkTmFtZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
c3RyaW5nKCJSZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZCIpOwpAQCAtNTIzLDYgKzUyMiw3IEBA
IHZvaWQgV2ViUGFnZTo6cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCiAg
ICAgICAgIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMo
KS5yZW1vdmVPdmVycmlkZShyZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgdHlwZSk7
CiB9CisKICNlbmRpZgogCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JL
ZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikKQEAgLTc5MCw2ICs3OTAsNyBAQCB2b2lk
IFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGRnJvbVBERkRvY3VtZW50KENHQ29udGV4dFJlZiBjb250
ZXh0LCBQREZEb2N1bWVudCAqcAogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQorCiBXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICB1aW50MzJfdCBwb2xpY3lSZXN1bHQgPSAwOwpAQCAt
ODA5LDE2ICs4MTAsMjAgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSogZnJhbWUsIGNvbnMKIAogICAgIHJldHVybiBX
ZWJHTEFsbG93Q3JlYXRpb247CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKICNpZiBF
TkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCisKIHZvaWQgV2ViUGFnZTo6aGFuZGxl
VGVsZXBob25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBudW1iZXIsIGNvbnN0IEludFBvaW50
JiBwb2ludCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dUZWxlcGhv
bmVOdW1iZXJNZW51KG51bWJlciwgcG9pbnQpKTsKIH0KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9DT05UUk9MUykKKwogdm9pZCBXZWJQYWdlOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNl
Q2xpY2soRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBo
b25lTnVtYmVycywgY29uc3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwpAQCAtODM3LDYgKzg0
Miw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKEZyYW1lU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IFZlY3RvCiAgICAgZmx1c2hQZW5kaW5nRWRpdG9yU3Rh
dGVVcGRhdGUoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb250ZXh0
TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhKHBvaW50LCBzZWxlY3Rpb25EYXRhVmVjdG9yLCBw
aG9uZU51bWJlcnMsIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSwg
VXNlckRhdGEoKSkpOwogfQorCiAjZW5kaWYKIAogU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNl
ckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CkBAIC0xMDMwLDcgKzEwMzYsOCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mbyYsIE1vbgogewogfQogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKKwogdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKHVpbnQ2NF90
IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRh
cmdldENvbnRleHQpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkg
ewpAQCAtMTA2MCw2ICsxMDY3LDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgbV9wYWdlLT5wbGF5YmFj
a1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChjb250ZXh0SWQpOwogfQorCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggMjczYWRlMTA2NDEwNjVl
MjJhNTQ3Zjk0NWNjNDI5MzcyNGVlYmQ3Ni4uZjBlMDg0ODU5MDdjYWVjZDU3YWE0MTBiOTc2Mzgx
NGU3MGFiNTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNzEsNiArNzEsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TcGVsbENoZWNr
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RleHRJdGVyYXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KaW5kZXggNzQwMDM1M2IxZjU5OGIyMTA4ZDk5NTAyZjY4YmU0NDNlYTQ2NTRjMi4u
MjRhYWNlNzQyODllNDE3NTkyNmNmZDIyNzgwMGZhMjkwNDgzZjhiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xMDAsNiArMTAwLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU21h
cnRSZXBsYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TdWJmcmFtZUxvYWRlci5oPgpAQCAtODA2LDggKzgwNyw4IEBAIC0gKE5TUmFu
Z2UpX2NvbnZlcnRUb05TUmFuZ2U6KFdlYkNvcmU6OlJhbmdlICopcmFuZ2UKICAgICBpZiAoIXJh
bmdlKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAKLSAgICBz
aXplX3QgbG9jYXRpb247Ci0gICAgc2l6ZV90IGxlbmd0aDsKKyAgICBzaXplX3QgbG9jYXRpb24g
PSAwOworICAgIHNpemVfdCBsZW5ndGggPSAwOwogICAgIGlmICghV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShfcHJpdmF0ZS0+Y29yZUZyYW1lLT5z
ZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2Us
IGxvY2F0aW9uLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCk7CiAKQEAgLTgzNiw3ICs4MzcsNyBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9j
b252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOgogICAg
ICAgICBhdXRvKiBlbGVtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9v
dEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVu
dCkKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2UubG9j
YXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQs
IG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKSk7CiAgICAgfQogCiAgICAgQVNTRVJU
KHJhbmdlSXNSZWxhdGl2ZVRvID09IFdlYlJhbmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwpA
QCAtODUxLDggKzg1Miw4IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RP
TVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgYXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhSYW5nZS5nZXQoKS0+
c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGludCBwYXJhZ3Jh
cGhTdGFydEluZGV4ID0gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChXZWJDb3Jl
OjpSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9kZSwgMCwgJnBhcmFn
cmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRPZmZzZXQo
KSkucHRyKCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIHN0YXRpY19j
YXN0PGludD4obnNyYW5nZS5sb2NhdGlvbiksIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBhdXRvIHBh
cmFncmFwaFN0YXJ0SW5kZXggPSBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKFdl
YkNvcmU6OlJhbmdlOjpjcmVhdGUocm9vdE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2RlLCAwLCAm
cGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydE9m
ZnNldCgpKS5wdHIoKSk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBo
U3RhcnRJbmRleCArIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKSk7CiB9CiAKIC0g
KERPTVJhbmdlICopX2NvbnZlcnROU1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRv
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1t
CmluZGV4IDQ3NmI4NzEwYTI2ZjYwODc3OTA0Njc4OTc2YzQzNGRmMWMxMThkY2YuLjczMzYyMDcz
ZTBiNWMzNWM4OWU0YmVhYmRjNGJlMjYwOWJjNDBhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYg
KzI5LDggQEAKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlR5cGVz
SW50ZXJuYWwuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFu
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KQEAgLTg1LDEwICs4NywxMCBAQCAt
IChCT09MKWF0RW5kCiAKIC0gKERPTVJhbmdlICopY3VycmVudFJhbmdlCiB7Ci0gICAgV2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0b3IgPSAqX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3I7
Ci0gICAgaWYgKHRleHRJdGVyYXRvci5hdEVuZCgpKQorICAgIGF1dG8mIGl0ZXJhdG9yID0gKl9w
cml2YXRlLT5fdGV4dEl0ZXJhdG9yOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4ga2l0KHRleHRJdGVyYXRvci5yYW5nZSgpLnB0
cigpKTsKKyAgICByZXR1cm4ga2l0KGNyZWF0ZUxpdmVSYW5nZShpdGVyYXRvci5yYW5nZSgpKS5w
dHIoKSk7CiB9CiAKIC8vIEZJWE1FOiBDb25zaWRlciBkZXByZWNhdGluZyB0aGlzIG1ldGhvZCBh
bmQgY3JlYXRpbmcgb25lIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBjb3B5aW5nIDgtYml0IGNoYXJh
Y3RlcnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392110</attachid>
            <date>2020-03-01 16:56:12 -0800</date>
            <delta_ts>2020-03-01 18:53:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208432-20200301165608.patch</filename>
            <type>text/plain</type>
            <size>152273</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNkNTZmNTE1MTQzZWNm
ZjRjM2NmMTFhODc0NTc2YzhlYTJmZDFjMC4uNTdlOTg0NGJiY2VjOWI1ZTEzMzIxOThhNzlmMDdj
NTkyZDhlOTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMC0wMy0wMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQmVnaW4gbW92aW5nIG9mZiBv
ZiBsaXZlIHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscywgc3RhcnRpbmcgd2l0aCBUZXh0SXRl
cmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBET00gUmFuZ2UgY2xhc3MgaXMgYSBsaXZlIHJhbmdlLiBUaGUgbGl2ZSB1cGRhdGluZyBmZWF0
dXJlIG9mIHRoZXNlIHJhbmdlcyBtZWFuCisgICAgICAgIHRoZXkgYXJlIGV4cGVuc2l2ZSB0byBj
cmVhdGUgYW5kIGRlc3Ryb3kgYW5kIGFsc28gbWFrZSBhbGwgRE9NIG11dGF0aW9uIG1vcmUgZXhw
ZW5zaXZlCisgICAgICAgIHdoaWxlIHRoZXkgYXJlIGFsaXZlLiBXZSB3aWxsIGJlIGFibGUgdG8g
c3BlZWQgdXAsIGxpa2VseSBtZWFzdXJhYmxlIG9uIFNwZWVkb21ldGVyLAorICAgICAgICBpZiB3
ZSBjYW4gY3V0IGRvd24gdXNlcyBvZiBsaXZlIHJhbmdlcy4KKworICAgICAgICAtIFJlZmFjdG9y
ZWQgdGhlIFN0YXRpY1JhbmdlIGNsYXNzIHRvIGNyZWF0ZSB0d28gbmV3IHN0cnVjdHMuCisgICAg
ICAgIC0gVGhlIEJvdW5kYXJ5UG9pbnQgc3RydWN0IGltcGxlbWVudHMgd2hhdCB0aGUgRE9NIHN0
YW5kYXJkIGNhbGxzIGEgYm91bmRhcnkgcG9pbnQsCisgICAgICAgICAgYSBub2RlIGFuZCBvZmZz
ZXQuIFNpbWlsYXIgdG8gdGhlIFJhbmdlQm91bmRhcnlQb2ludCBjbGFzcywgd2hpY2ggc3VwcG9y
dHMKKyAgICAgICAgICBiZWluZyB0aGUgYm91bmRhcnkgcG9pbnQgb2YgYSBsaXZlIHJhbmdlLCBi
dXQgc2ltcGxlciB0byB1c2UuCisgICAgICAgIC0gVGhlIFNpbXBsZVJhbmdlIHN0cnVjdCBpbXBs
ZW1lbnRzIHdoYXQgdGhlIERPTSBzdGFuZGFyZCBjYWxscyBhIHJhbmdlIChub3QgYSBsaXZlCisg
ICAgICAgICAgcmFuZ2UpLiBUaGlzIGlzIGxpa2UgU3RhdGljUmFuZ2UgYnV0IHdpdGhvdXQgdGhl
IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgRE9NIGJpbmRpbmcuCisgICAgICAgIC0gU2luY2UgU3Rh
dGljUmFuZ2UgaXMgZGVyaXZlZCBwdWJsaWNseSBmcm9tIFNpbXBsZVJhbmdlIHlvdSBjYW4gcGFz
cyBlaXRoZXIgdG8gYW55CisgICAgICAgICAgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIFN0YXRpY1Jh
bmdlLiBBbmQgc2luY2UgdGhlcmUgaXMgYSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgYQorICAgICAg
ICAgIFN0YXRpY1JhbmdlIGZyb20gYSBSYW5nZSB5b3UgY2FuIHBhc3MgYSBSYW5nZSB0byB0aG9z
ZSBmdW5jdGlvbnMgdG9vLgorICAgICAgICAtIFJlbmFtZWQgU3RhdGljUmFuZ2U6OmNyZWF0ZUZy
b21SYW5nZSB0byBqdXN0IFN0YXRpY1JhbmdlOjpjcmVhdGUuCisKKyAgICAgICAgLSBDaGFuZ2Vk
IHRoZSBmdW5jdGlvbnMgaW4gVGV4dEl0ZXJhdG9yIHRvIGJvdGggdGFrZSBhbmQgcmV0dXJuIFNp
bXBsZVJhbmdlIGluc3RlYWQKKyAgICAgICAgICBvZiBSYW5nZS4gQmVzaWRlcyBiZWluZyBhIGZp
cnN0IHN0ZXAgaW4gdGhlIHVzZSBvZiBsaXZlIHJhbmdlcywgdGhpcyBzaW1wbGlmaWVzCisgICAg
ICAgICAgdGhpbmdzIHNpbmNlIFNpbXBsZVJhbmdlIGNhbiBiZSBwYXNzZWQgYnkgdmFsdWUgYW5k
IHdlIGRvbid0IG5lZWQgdG8gdXNlIFJlZjw+CisgICAgICAgICAgYW5kIFJlZlB0cjw+LiBOb25l
IG9mIHRoZSBUZXh0SXRlcmF0b3IgZnVuY3Rpb25zIHN1cHBvcnQgd29ya2luZyBvbiBhIGRvY3Vt
ZW50CisgICAgICAgICAgdGhhdCBpcyBiZWluZyBtb2RpZmllZCwgc28gdGhlIGxpdmUgZmVhdHVy
ZXMgb2YgbGl2ZSByYW5nZSB3ZXJlIG5vdCBuZWVkZWQuCisgICAgICAgIC0gQ2hhbmdlZCB0aGUg
aW1wbGVtZW50YXRpb24gaW4gVGV4dEl0ZXJhdG9yIHRvIG5vdCB1c2UgbGl2ZSByYW5nZXMuCisg
ICAgICAgIC0gVXBkYXRlZCBhbGwgY2FsbGVycyBmb3IgdGhpcyBjaGFuZ2UsIGRvaW5nIG1pbmlt
YWwgY29udmVyc2lvbiwgYW5kIGNyZWF0aW5nIGxpdmUKKyAgICAgICAgICByYW5nZXMgYXMgbmVl
ZGVkLiBJdCB3YXNuJ3QgYSBnb2FsIHRvIGNvbnZlcnQgYWxsIG9mIHRoZW0uIFdlJ2xsIGdldCB0
byB0aGVtCisgICAgICAgICAgZXZlbnR1YWxseSBhcyB3ZSB2aXNpdCBhbGwgY29kZSBjcmVhdGlu
ZyBsaXZlIHJhbmdlcyB0byBjb252ZXJ0IHRvIG5vbi1saXZlCisgICAgICAgICAgd2hlcmVldmVy
IHBvc3NpYmxlLgorICAgICAgICAtIEZpbGVzIHRoYXQgaW5jbHVkZSBUZXh0SXRlcmF0b3IuaCBu
b3cgbmVlZCB0byBpbmNsdWRlIFNpbXBsZVJhbmdlLmggb3IKKyAgICAgICAgICBSYW5nZS5oLCBk
ZXBlbmRpbmcgb24gd2hhdCB0aGV5IHVzZSBmcm9tIFRleHRJdGVyYXRvci5oLiBCZWZvcmUgVGV4
dEl0ZXJhdG9yLmgKKyAgICAgICAgICB3b3VsZCBhbHdheXMgcHVsbCBSYW5nZS5oIGluLgorCisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VHcm91cC5oOiBSZW1vdmVk
IGEgc3RyYXkgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZgorICAgICAgICBTdGF0aWNSYW5nZS4KKyAg
ICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcDogUmVtb3Zl
ZCB1bmVlZGVkIGluY2x1ZGVzIGFuZCBjb2RlLgorCisgICAgICAgICogU291cmNlcy50eHQ6IEFk
ZGVkIEJvdW5kYXJ5UG9pbnQuY3BwIGFuZCBTaW1wbGVSYW5nZS5jcHAuCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBCb3VuZGFyeVBvaW50LmNwcC9o
IGFuZCBTaW1wbGVSYW5nZS5jcHAvaC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRv
T2Zmc2V0SW5SYW5nZSk6IFVzZSAiLiIgaW5zdGVhZCBvZiAiLT4iIHNpbmNlCisgICAgICAgIFRl
eHRJdGVyYXRvcjo6cmFuZ2Ugbm93IHJldHVybnMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIGEgc21h
cnQgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omxlbmd0aEZvclJh
bmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNo
ZXNUZXh0TmVhclJhbmdlKTogVXNlIGNyZWF0ZUxpdmVSYW5nZSBzbyB3ZQorICAgICAgICBjYW4g
Y29udGludWUgdG8gdXNlIGNvZGUgdGhhdCBleHBlY3RzIGEgbGl2ZSByYW5nZS4KKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzQm91bmRhcnkpOiBVc2UgIi4iIGluc3Rl
YWQgb2YgIi0+Ii4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yUmFu
Z2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZSBjb25z
dCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsu
Y3BwOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SW50ZXJmYWNlVGV4dC5jcHA6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVVdGlsLmNwcDogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06IERpdHRvLgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29udmVydFRvRE9NUmFuZ2U6XSk6IFVz
ZSBjcmVhdGVMaXZlUmFuZ2UuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlOnNwZWxs
Q2hlY2s6XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBfdGV4dE1hcmtlckZvckluZGV4Ol0pOiBVc2UgY3JlYXRlTGl2ZVJhbmdlLgorCisgICAgICAg
ICogZG9tL0JvdW5kYXJ5UG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBkb20vQm91bmRhcnlQ
b2ludC5oOiBBZGRlZC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSGlnaGxpZ2h0UG9zaXRpb25zKTogVXBkYXRlZCBzaW5j
ZQorICAgICAgICBTaW1wbGVSYW5nZTo6c3RhcnRDb250YWluZXIgYW5kIFNpbXBsZVJhbmdlOjpl
bmRDb250YWluZXIgbm93IHJldHVybiByZWZlcmVuY2VzCisgICAgICAgIHJhdGhlciB0aGFuIHBv
aW50ZXJzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFu
Z2VzKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDog
QWRkZWQgaW5jbHVkZS4KKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOiBEaXR0by4KKyAgICAg
ICAgKiBkb20vUmFuZ2UuY3BwOiBEaXR0by4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5j
cHA6IEFkZGVkLgorICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5oOiBBZGRlZC4KKworICAgICAg
ICAqIGRvbS9TdGF0aWNSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNSYW5nZTo6
U3RhdGljUmFuZ2UpOiBUYWtlIGFuIHJ2YWx1ZSByZWZlcmVuY2UgdG8gYSBTaW1wbGVSYW5nZS4K
KyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1JhbmdlOjpjcmVhdGUpOiBEaXR0by4gQ2hhbmdlZCB0
aGUgb3RoZXIgb3ZlcmxvYWRzIHRvIGNyZWF0ZQorICAgICAgICBhIFNpbXBsZVJhbmdlIGZpcnN0
IHRoZW4gY2FsbCB0aHJvdWdoIHRvIHRoZSBtYWluIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6Omlz
RG9jdW1lbnRUeXBlT3JBdHRyKTogV3JvdGUgYSBtdWNoIG1vcmUgZWZmaWNpZW50IHZlcnNpb24g
b2YgdGhpcy4KKyAgICAgICAgVGhlIG9sZCB2ZXJzaW9uIGNhbGxlZCB0aGUgdmlydHVhbCBmdW5j
dGlvbiBub2RlVHlwZSB0d2ljZS4gVGhpcyBjYWxscyBpdCBhdAorICAgICAgICBtb3N0IG9uY2Us
IGFuZCBtb3N0bHkgZG9lc24ndCBjYWxsIGl0IGF0IGFsbC4KKyAgICAgICAgKiBkb20vU3RhdGlj
UmFuZ2UuaDogU2ltcGxpZmllZCB0aGlzIGNsYXNzLCBwdXR0aW5nIG1vc3Qgb2YgdGhlIGFjdHVh
bCByYW5nZQorICAgICAgICBsb2dpYyBpbnRvIHRoZSBiYXNlIGNsYXNzLiBOb3RlIHRoYXQgdGhp
cyBjaGFuZ2UgZWxpbWluYXRlZCB0aGUgcGVjdWxpYXIgY29kZQorICAgICAgICB0aGF0IGluIHRo
ZSA9PSBvcGVyYXRvciB0aGF0IGNvbXBhcmVkIG5vZGVzIHVzaW5nIGlzRXF1YWxOb2RlIGluc3Rl
YWQgb2YgdXNpbmcKKyAgICAgICAgbm9kZSBpZGVudGl0eS4gVGhlcmUgd2FzIG5vIG9uZSB3aG8g
bmVlZGVkIHRoYXQgb3RoZXIgYmVoYXZpb3IuIEFsc28gZml4ZWQKKyAgICAgICAgbWlzdGFrZW4g
dXNlIG9mIHVuc2lnbmVkIGxvbmcgaW4gU3RhdGljUmFuZ2U6OkluaXQuIEl0J3MgdW5zaWduZWQg
bG9uZyBpbgorICAgICAgICB0aGUgSURMIGZpbGUsIGJ1dCBjb25mdXNpbmdseSB0aGF0J3MganVz
dCB1bnNpZ25lZCBpbiAuY3BwIGZpbGVzLgorCisgICAgICAgICogZG9tL1N0YXRpY1JhbmdlLmlk
bDogVHdlYWtlZCBmb3JtYXR0aW5nLgorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZSk6IFVzZQorICAgICAgICBjcmVhdGVM
aXZlUmFuZ2UuCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKTogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzIGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMp
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnZp
c2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcik6IERpdHRvLgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2
YW5jZVRvTmV4dE1pc3NwZWxsaW5nKTogVXNlICIuIiBpbnN0ZWFkIG9mICItPiIgYW5kCisgICAg
ICAgIGNyZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvcnJlY3RTcGVsbGNoZWNr
aW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpyYW5nZU9mU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6c2NhblJhbmdlRm9yVGVsZXBob25lTnVtYmVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdCBjb25zdCk6IERpdHRvLgorICAg
ICAgICAqIGVkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzIGNvbnN0
KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIGVk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVj
a2luZ1BhcmFncmFwaDo6c3VicmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbCBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjppc1Vu
Z3JhbW1hdGljYWwgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VQb3NpdGlvbkxlZ2FjeUVkaXRpbmcpOiBB
ZGRlZC4gRm9yIHVzZSBpbiBwbGFjZXMgd2hlcmUgdGhlIGNvZGUKKyAgICAgICAgd2FzIGNhbGxp
bmcgUmFuZ2U6OnN0YXJ0UG9zaXRpb24gb3IgUmFuZ2U6OmVuZFBvc2l0aW9uLiBIZXJlIGZvciBu
b3csIGJ1dAorICAgICAgICB3ZSBjYW4gbW92ZSBpdCBzb21ld2hlcmUgd2UgY2FuIHNoYXJlIGl0
IG9uY2Ugd2UgZmluZCBuZWVkIGVsc2V3aGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0Tm9k
ZUxlZ2FjeUVkaXRpbmcpOiBEaXR0by4gRm9yIFJhbmdlOjpmaXJzdE5vZGUuCisgICAgICAgIChX
ZWJDb3JlOjpuZXh0SW5QcmVPcmRlckNyb3NzaW5nU2hhZG93Qm91bmRhcmllcyk6IE1vdmVkIGZy
b20gaW50IHRvCisgICAgICAgIHVuc2lnbmVkLiBXZSd2ZSBuZXZlciB1cGRhdGVkIFJhbmdlIHRv
IHVuc2lnbmVkLCBidXQgU3RhdGljUmFuZ2UsCisgICAgICAgIFNpbXBsZVJhbmdlLCBhbmQgQm91
bmRhcnlQb2ludCBhbGwgdXNlIGl0LCBzbyBjb252ZXJ0ZWQgaGVyZS4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKTogVXNlIFNpbXBsZVJhbmdlLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6IFVzZSB1bnNpZ25lZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbGxhcHNlZFNwYWNlTGVuZ3RoKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjptYXhPZmZzZXRJbmNsdWRpbmdDb2xsYXBzZWRTcGFjZXMpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3Rlcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjplbWl0VGV4dCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZSBjb25zdCk6IFJldHVybiBTaW1wbGVSYW5nZS4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6bm9kZSBjb25zdCk6IFVzZSBTaW1wbGVS
YW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6
OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpo
YW5kbGVGaXJzdExldHRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3Rlcik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6cmFuZ2UgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlIGNv
bnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5j
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVyU3VicmFuZ2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHND
aGFyYWN0ZXJJdGVyYXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmFja3dhcmRzQ2hh
cmFjdGVySXRlcmF0b3I6OnJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpC
YWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5jZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6V29yZEF3YXJlSXRlcmF0b3I6OldvcmRBd2FyZUl0ZXJhdG9yKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTZWFyY2hCdWZmZXI6OmlzV29yZEVuZE1hdGNoIGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZmZXI6OmlzV29yZFN0YXJ0TWF0Y2ggY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6c3VicmFuZ2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25B
bmRMZW5ndGhGcm9tUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omhhc0FueVBsYWlu
VGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cGxhaW5UZXh0KTogRGl0dG8uIFJlZmFj
dG9yZWQgYW5kIGZpeGVkIGEgYnVnIHdoZXJlCisgICAgICAgIGRpc3BsYXlTdHJpbmdNb2RpZmll
ZEJ5RW5jb2Rpbmcgd2FzIG5vdCBjYWxsZWQgY29ycmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6
cGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3JGb3JUZXN0aW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbGxhcHNlZFRvQm91bmRhcnkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRQbGFpblRleHRNYXRjaGVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpyYW5nZUZvck1hdGNoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmaW5kQ2xvc2VzdFBs
YWluVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZmluZFBsYWluVGV4dCk6IERpdHRv
LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDogUmVtb3ZlZCBhbGwgdXNlcyBv
ZiBsaXZlIHJhbmdlcy4KKyAgICAgICAgVXNlIFNpbXBsZVJhbmdlIGluc3RlYWQuIFVzZSB1bnNp
Z25lZCBjb25zaXN0ZW50bHkgaW5zdGVhZCBvZiBpbnQsCisgICAgICAgIG9yIHNpemVfdCBpbiBh
IGNvdXBsZSBwbGFjZXMgd2hlcmUgYSBmYW1pbHkgb2YgZnVuY3Rpb25zIHdhcyB1c2luZworICAg
ICAgICBzaXplX3QgaW4gbW9zdCBjYXNlcy4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKTogVXNlCisgICAgICAgIGNyZWF0ZUxpdmVS
YW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZCk6IFVwZGF0
ZSBmb3IKKyAgICAgICAgU3RhdGljUmFuZ2U6OmNyZWF0ZSBuYW1lIGNoYW5nZS4KKworICAgICAg
ICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKTogVXNlIFNpbXBsZVJhbmdlCisgICAgICAg
IGluc3RlYWQgb2YgU3RhdGljUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0
aW9uOjphcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOiBVc2UKKyAgICAgICAgY3JlYXRlTGl2ZVJh
bmdlLgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oOiBVcGRhdGVkIGZvciB0
aGUgYWJvdmUuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwcmV2aW91c0JvdW5kYXJ5KTogVXNzZSAiLiIgaW5zdGVhZCBvZiAiLT4iLgor
ICAgICAgICAoV2ViQ29yZTo6bmV4dEJvdW5kYXJ5KTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKwor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVjdEl0ZW1BdFBvc2l0aW9uV2l0aFJhbmdlKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4K
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgIChX
ZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQpOiBE
aXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAg
IChXZWJDb3JlOjplZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSk6IERpdHRvLgorCisg
ICAgICAgICogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbTogVXBkYXRlZCBp
bmNsdWRlcy4KKworICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDogVXBkYXRlIGluY2x1ZGVz
LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6IERpdHRvLgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDogRGl0dG8uCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmFuZ2VzKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKwor
ICAgICAgICAqIHBhZ2UvVGV4dEluZGljYXRvci5jcHA6IFVwZGF0ZSBpbmNsdWRlcy4KKyAgICAg
ICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6IERpdHRvLgorCisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aCk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnN1YnJhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24pOiBEaXR0by4KKwogMjAyMC0wMi0yOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2xpbSBkb3duIHNvbWUg
Q1NTIHBhcnNpbmcgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZGQ1ODlmNGZlNzk0OWQ2NjFhYWY4N2VkMTlm
OTcxN2IyODQwM2M4Li5mNDFkZTNhOWUzYzhkYWJiMzhhODA3YzU4N2FjNjY1ZWVlYzY1MWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAzLTAxICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9mIGxpdmUgcmFuZ2VzIGZv
ciBXZWJLaXQgaW50ZXJuYWxzLCBzdGFydGluZyB3aXRoIFRleHRJdGVyYXRvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvRWRpdGluZ1Jh
bmdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdGluZ1JhbmdlOjp0b1JhbmdlKTogVXNlIGNy
ZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKFdlYktpdDo6RWRpdGluZ1JhbmdlOjpmcm9tUmFuZ2Up
OiBJbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlcy4gRm9yIHNvbWUgcmVhc29uLAorICAgICAgICB0
aGUgY29tcGlsZXIgbm90aWNlZCB0aGVzZSB3ZXJlIHVuaW5pdGlhbGl6ZWQsIGJ1dCBkaWRuJ3Qg
YmVmb3JlIHRoZSByZWZhY3RvcmluZy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0
SXRlcmF0b3IgY3VycmVudFJhbmdlXSk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6IFVwZGF0ZWQg
aW5jbHVkZXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDogRGl0
dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOiBEaXR0
by4KKwogMjAyMC0wMy0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU3NjE4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IGNiOTUxYzY5ZjMwZGI0NjI0MGYxN2Y0NDM3ZWE3ODQwYTYzYWE3
NjQuLjBmODg4MjIyNDJhMDkyODMwNDMwYzFmNWZjMmFmNjEzMDY3Nzc1ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMy0wMSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQmVnaW4gbW92aW5nIG9mZiBvZiBsaXZl
IHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscywgc3RhcnRpbmcgd2l0aCBUZXh0SXRlcmF0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOiBVcGRhdGVkIGluY2x1ZGVzLgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06IERpdHRvLgorICAgICAgICAoLVtXZWJGcmFtZSBfY29udmVy
dFRvTlNSYW5nZTpdKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKC1bV2ViRnJhbWUg
X2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlSXNSZWxhdGl2ZVRvOl0pOiBVc2UgYXV0byB0byBnZXQg
c2lnbmVkL3Vuc2lnbmVkCisgICAgICAgIHJpZ2h0IGFuZCByZW1vdmVkIHVubmVlZGVkIHN0YXRp
Y19jYXN0IHRvIGludC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAg
ICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGN1cnJlbnRSYW5nZV0pOiBVc2UgY3JlYXRlTGl2ZVJh
bmdlLgorCiAyMDIwLTAyLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHN0ZDo6bG9ja19ndWFyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcAppbmRleCBmYzEy
OTQwMGFkNWM2YTIwYmFiM2U0ZDNhZjVjOTIyNDVlYmMzZjRlLi5jYWFhNjI1YTBmMzc0MjFkOWY0
NjhhNjc3NzBjNGYzNjdhZjFhMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkpTRE9NU2V0TGlrZS5oIgogI2luY2x1ZGUgIkpTU3RhdGljUmFuZ2UuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJT
dGF0aWNSYW5nZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIApAQCAtMzgsOCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEhpZ2hs
aWdodFJhbmdlR3JvdXA6OkhpZ2hsaWdodFJhbmdlR3JvdXAoUmVmPFN0YXRpY1JhbmdlPiYmIHJh
bmdlKQogewotICAgIGF1dG8gbXlSYW5nZSA9IFdURk1vdmUocmFuZ2UpOwotICAgIGFkZFRvU2V0
TGlrZShteVJhbmdlLmdldCgpKTsKKyAgICBhZGRUb1NldExpa2UocmFuZ2UpOwogfQogCiBSZWY8
SGlnaGxpZ2h0UmFuZ2VHcm91cD4gSGlnaGxpZ2h0UmFuZ2VHcm91cDo6Y3JlYXRlKFN0YXRpY1Jh
bmdlJiByYW5nZSkKQEAgLTcwLDkgKzY4LDcgQEAgYm9vbCBIaWdobGlnaHRSYW5nZUdyb3VwOjph
ZGRUb1NldExpa2UoU3RhdGljUmFuZ2UmIHJhbmdlKQogICAgIGlmIChub3RGb3VuZCAhPSBtX3Jh
bmdlc0RhdGEuZmluZE1hdGNoaW5nKFsmcmFuZ2VdKGNvbnN0IFJlZjxIaWdobGlnaHRSYW5nZURh
dGE+JiBjdXJyZW50KSB7IHJldHVybiBjdXJyZW50LmdldCgpLnJhbmdlLmdldCgpID09IHJhbmdl
OyB9KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fcmFuZ2VzRGF0YS5hcHBlbmQoSGln
aGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUocmFuZ2UpKTsKLSAgICAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9I
aWdobGlnaHRSYW5nZUdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9I
aWdobGlnaHRSYW5nZUdyb3VwLmgKaW5kZXggNGQ4MWU5ZWY3MjMzNDAzZmMzMzg1ZTE0NjMxZmNi
MGE5YzVlYTYwYi4uY2NlMzNlZWJlNjI2YmRlMDE1N2UxYTk3NzFmM2E1NTI4YmViMjYxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VH
cm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJh
bmdlR3JvdXAuaApAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBET01TZXRBZGFwdGVyOwotY2xhc3MgU3RhdGlj
UmFuZ2U7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247CiAKIHN0cnVjdCBI
aWdobGlnaHRSYW5nZURhdGEgOiBSZWZDb3VudGVkPEhpZ2hsaWdodFJhbmdlRGF0YT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxIaWdobGlnaHRSYW5nZURhdGE+IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YTcyMWZiYjFhZDhhNWFhNmJkYTA5YjYzYjNhMmE5ZDk5N2M5MTEyZi4uMDQxMjljYjg1ZjMxMTlh
NGYxYmUyODAzYmJlYzY4ZjkxOGUxOWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTgyNCw2ICs4MjQs
NyBAQCBkb20vQXR0ci5jcHAKIGRvbS9CZWZvcmVMb2FkRXZlbnQuY3BwCiBkb20vQmVmb3JlVGV4
dEluc2VydGVkRXZlbnQuY3BwCiBkb20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwCitkb20vQm91bmRh
cnlQb2ludC5jcHAKIGRvbS9DREFUQVNlY3Rpb24uY3BwCiBkb20vQ2hhcmFjdGVyRGF0YS5jcHAK
IGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtOTQ5LDYgKzk1MCw3IEBAIGRvbS9T
ZWN1cml0eU9yaWdpblBvbGljeS5jcHAKIGRvbS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50
LmNwcAogZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiBkb20vU2hhZG93Um9vdC5jcHAKK2RvbS9TaW1w
bGVSYW5nZS5jcHAKIGRvbS9TaW11bGF0ZWRDbGljay5jcHAKIGRvbS9TbG90QXNzaWdubWVudC5j
cHAKIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU4YmRlNDZjNDk5Zjc0ZTUxZTQyNTQx
MGMwYWMzMTliMGY3M2M3Y2QuLjMyZTdjYmJiMzFkZjQ3MTU3ZTJhYjYwZjY0MmE4YjFkZjIzYTY1
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTI1OTksNiArMjU5OSw4IEBACiAJCTkzMTUzQkRBMTQxODFGN0EwMEZDRjVCRSAv
KiBtaXNzaW5nSW1hZ2VAMngucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzE1M0JEOTE0MTgxRjdBMDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlQDJ4
LnBuZyAqLzsgfTsKIAkJOTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXpl
Q29ybmVyLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMxNTNCREIxNDE5NTlCQjAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnBuZyAq
LzsgfTsKIAkJOTMxNTNCRTIxNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkUxMTQx
OTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nICovOyB9OworCQk5MzE2RERGQjI0MEM2
NEI0MDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTZEREY4MjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5n
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkz
MTZERTAwMjQwQzY0RjkwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE2RERGRTI0MEM2NEY4MDA5MzQwQUEg
LyogQm91bmRhcnlQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzMUJDQzYxMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzFDQkQwRDE2MUE0
NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFDQkQwNzE2MUE0NEU5MDBFNEM4NzQgLyogU2Ny
b2xsaW5nU3RhdGVOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTMxQ0JEMEYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMxQ0JEMDkxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MDYyMiw2ICsxMDYyNCwxMCBAQAogCQk5MzE1M0JEOTE0MTgxRjdBMDBGQ0Y1QkUgLyogbWlzc2lu
Z0ltYWdlQDJ4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJtaXNzaW5nSW1hZ2VAMngucG5nIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNTNCREIxNDE5NTlCQjAwRkNGNUJFIC8qIHRleHRBcmVh
UmVzaXplQ29ybmVyLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IHRleHRBcmVhUmVzaXplQ29ybmVyLnBuZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNTNCRTExNDE5NUE1NzAwRkNGNUJFIC8qIG1p
c3NpbmdJbWFnZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBtaXNzaW5nSW1hZ2UucG5nOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5MzE2RERGODI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlUmFuZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNkRERkEyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBs
ZVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZVJh
bmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNkRERkQyNDBDNjRGODAw
OTM0MEFBIC8qIEJvdW5kYXJ5UG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQm91bmRhcnlQb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvdW5kYXJ5UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTMxQUUzQjgxRkI4MEVBRTAwRjVFRkIyIC8qIEpTVmFsdWVJbldyYXBwZWRP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzFCQ0M2MDExMjRERkNCMDBCRTcwREQgLyogTWVkaWFD
YW5TdGFydExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzFDQkQw
NjE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlTm9kZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODAwNiw2ICsyODAxMiw4IEBACiAJCQkJODUwMzFCMjYw
QTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIy
NzBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuaCAqLywKIAkJCQk3QzFFOENG
RjFFRDBDMkJFMDBCMUQ5ODMgLyogQmVmb3JlVW5sb2FkRXZlbnQuaWRsICovLAorCQkJCTkzMTZE
REZEMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmNwcCAqLywKKwkJCQk5MzE2RERG
RTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovLAogCQkJCTdDMUU4RDAwMUVE
MEMyQkUwMEIxRDk4MyAvKiBDYWxsYmFja1Jlc3VsdC5oICovLAogCQkJCTY1NTBCNjkzMDk5REYw
MjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwICovLAogCQkJCTY1NTBCNjk0MDk5REYwMjcw
MDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCAqLywKQEAgLTI4NDAwLDYgKzI4NDA4LDggQEAKIAkJ
CQk5QjE5QjY3RTFCOTY0RTUyMDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8sCiAJCQkJNDZE
RkY0OTYxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmggKi8sCiAJCQkJNDZERkY0
OTcxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmlkbCAqLywKKwkJCQk5MzE2RERG
QTI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovLAorCQkJCTkzMTZEREY4MjQw
QzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5oICovLAogCQkJCTU3MkE3RjIyMUM2RTVBNjYw
MDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi8sCiAJCQkJNTcyQTdGMjAxQzZFNTcxOTAw
OUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi8sCiAJCQkJMzE3NDFBQUIxNjYzNUU0NTAwOEE1
QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovLApAQCAtMjkyMDksNiArMjkyMTksNyBA
QAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5MzE2REUwMDI0MEM2NEY5MDA5MzQwQUEgLyogQm91bmRhcnlQ
b2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVEOEMzN0ExODNCRkY4QzAwOUU1M0JEIC8qIEJv
eFNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREQjA5OUU2NDkyMDA1NkU1ODEgLyog
QnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJFMUY0M0YxRDYy
NTRFMTAwOTQ2MjVDIC8qIEJyZWFrTGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzIzNzIsNiAr
MzIzODMsNyBAQAogCQkJCTExMkIzNEQ1MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5
b3V0UGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFOUIxMTkxODEwOTE2RjAwM0FD
Q0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgy
Q0IwNTMxQTc4QTE0QjAwQUZGQ0M0IC8qIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMxNkRERkIyNDBDNjRCNDAwOTM0MEFBIC8qIFNp
bXBsZVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUExRUE3RDE1MkJDRjA4MDA0RDAwQjYg
LyogU2ltcGxpZnlNYXJrdXBDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJBN0YyMTFD
NkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
NzQxQUFEMTY2MzY2MDkwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKaW5kZXggM2YxODU0NGE3NGJjOWQ5Y2YzNjY1ODMzMzljNWU3ZTMyNzk5NzI4Ny4uNjI4NGE2
ODZhZmYwZjE5ZGJkYTQ5ODAwZTM1ZWVhMDIyNTA5OTMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC05OSw2ICs5OSw3IEBACiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgog
I2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1
ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0xODAxLDEzICsxODAyLDEzIEBAIENo
YXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+cmFuZ2UsIGludCBvCiAgICAgICAgIGludCBjdXJyZW50TGVuZ3RoID0gaXRlcmF0
b3IudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBib29sIGhhc1JlcGxhY2VkTm9kZU9yQlIgPSBm
YWxzZTsKICAgICAgICAgCi0gICAgICAgIE5vZGUmIG5vZGUgPSBpdGVyYXRvci5yYW5nZSgpLT5z
dGFydENvbnRhaW5lcigpOworICAgICAgICBOb2RlJiBub2RlID0gaXRlcmF0b3IucmFuZ2UoKS5z
dGFydENvbnRhaW5lcigpOwogICAgICAgICBjdXJyZW50Tm9kZSA9ICZub2RlOwogICAgICAgICAK
ICAgICAgICAgLy8gV2hlbiBjdXJyZW50TGVuZ3RoID09IDAsIHdlIGNoZWNrIGlmIHRoZXJlJ3Mg
YW55IHJlcGxhY2VkIG5vZGUuCiAgICAgICAgIC8vIElmIG5vdCwgd2Ugc2tpcCB0aGUgbm9kZSB3
aXRoIG5vIGxlbmd0aC4KICAgICAgICAgaWYgKCFjdXJyZW50TGVuZ3RoKSB7Ci0gICAgICAgICAg
ICBpbnQgc3ViT2Zmc2V0ID0gaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAg
ICAgICAgIGludCBzdWJPZmZzZXQgPSBpdGVyYXRvci5yYW5nZSgpLnN0YXJ0T2Zmc2V0KCk7CiAg
ICAgICAgICAgICBOb2RlKiBjaGlsZE5vZGUgPSBub2RlLnRyYXZlcnNlVG9DaGlsZEF0KHN1Yk9m
ZnNldCk7CiAgICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZWROb2Rl
TmVlZHNDaGFyYWN0ZXIoY2hpbGROb2RlKSkgewogICAgICAgICAgICAgICAgIGN1bXVsYXRpdmVP
ZmZzZXQrKzsKQEAgLTE4MjEsNyArMTgyMiw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENh
Y2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBvCiAg
ICAgICAgICAgICBpZiAoY3VycmVudExlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGlzSFRNTFNwYWNlKGl0ZXJhdG9yLnRleHQoKVswXSkpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhlIG5vZGUgaGFzIEJSIHRhZywgd2Ugd2FudCB0byBzZXQgdGhlIGN1cnJlbnROb2Rl
IHRvIGl0LgotICAgICAgICAgICAgICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRlcmF0b3IucmFu
Z2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHN1Yk9mZnNldCA9
IGl0ZXJhdG9yLnJhbmdlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgTm9k
ZSogY2hpbGROb2RlID0gbm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChzdWJPZmZzZXQpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlICYmIGNoaWxkTm9kZS0+cmVuZGVyZXIoKSAmJiBj
aGlsZE5vZGUtPnJlbmRlcmVyKCktPmlzQlIoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
Y3VycmVudE5vZGUgPSBjaGlsZE5vZGU7CkBAIC0xODUxLDExICsxODUyLDExIEBAIENoYXJhY3Rl
ck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFu
Z2U+cmFuZ2UsIGludCBvCiAKICAgICAgICAgaWYgKGN1cnJlbnROb2RlID09IHByZXZpb3VzTm9k
ZSkgewogICAgICAgICAgICAgbGFzdExlbmd0aCArPSBjdXJyZW50TGVuZ3RoOwotICAgICAgICAg
ICAgbGFzdFN0YXJ0T2Zmc2V0ID0gaXRlcmF0b3IucmFuZ2UoKS0+ZW5kT2Zmc2V0KCkgLSBsYXN0
TGVuZ3RoOworICAgICAgICAgICAgbGFzdFN0YXJ0T2Zmc2V0ID0gaXRlcmF0b3IucmFuZ2UoKS5l
bmRPZmZzZXQoKSAtIGxhc3RMZW5ndGg7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBsYXN0TGVuZ3RoID0gY3VycmVudExlbmd0aDsKLSAgICAgICAgICAgIGxhc3RTdGFy
dE9mZnNldCA9IGhhc1JlcGxhY2VkTm9kZU9yQlIgPyAwIDogaXRlcmF0b3IucmFuZ2UoKS0+c3Rh
cnRPZmZzZXQoKTsKKyAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGhhc1JlcGxhY2VkTm9k
ZU9yQlIgPyAwIDogaXRlcmF0b3IucmFuZ2UoKS5zdGFydE9mZnNldCgpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICAvLyBCcmVhayBlYXJseSBpZiB3ZSBoYXZlIGFkdmFuY2VkIGVub3Vn
aCBjaGFyYWN0ZXJzLgpAQCAtMTg5NCw4ICsxODk1LDggQEAgaW50IEFYT2JqZWN0Q2FjaGU6Omxl
bmd0aEZvclJhbmdlKFJhbmdlKiByYW5nZSkKICAgICAgICAgICAgIGxlbmd0aCArPSBpdC50ZXh0
KCkubGVuZ3RoKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gbG9jYXRlIHRoZSBu
b2RlIGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmVwbGFjZWQgcmFuZ2UKLSAgICAgICAg
ICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAgICAgICAg
ICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgICAgICBO
b2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFydENvbnRhaW5lcigpOworICAgICAgICAgICAgaW50
IG9mZnNldCA9IGl0LnJhbmdlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLnRyYXZlcnNl
VG9DaGlsZEF0KG9mZnNldCkpKQogICAgICAgICAgICAgICAgICsrbGVuZ3RoOwogICAgICAgICB9
CkBAIC0xOTQ0LDcgKzE5NDUsNyBAQCBSZWZQdHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdl
TWF0Y2hlc1RleHROZWFyUmFuZ2UoUmVmUHRyPFJhbmdlPiBvcmlnaW5hbFJhbgogICAgIAogICAg
IGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9y
aWdpbmFsUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7Ci0gICAgcmV0
dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsg
fSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKGZpbmRDbG9zZXN0
UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0
KSk7CiB9CiAKIHN0YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2RlKQpAQCAt
MjY1Nyw3ICsyNjU4LDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnByZXZpb3Vz
Qm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXIKICAgICBpZiAoIW5leHQp
CiAgICAgICAgIHJldHVybiBpdC5hdEVuZCgpID8gc3RhcnQgOiBjaGFyYWN0ZXJPZmZzZXQ7CiAg
ICAgCi0gICAgTm9kZSYgbm9kZSA9IGl0LmF0RW5kKCkgPyBzZWFyY2hSYW5nZS0+c3RhcnRDb250
YWluZXIoKSA6IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7CisgICAgTm9kZSYgbm9kZSA9
IGl0LmF0RW5kKCkgPyBzZWFyY2hSYW5nZS0+c3RhcnRDb250YWluZXIoKSA6IGl0LnJhbmdlKCku
c3RhcnRDb250YWluZXIoKTsKICAgICAKICAgICAvLyBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yIGlnbm9yZXMgcmVwbGFjZWQgZWxlbWVudHMuCiAgICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKGNoYXJhY3Rlck9mZnNldC5ub2RlKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCmluZGV4IDcyYTIzNzBiNTVlYzViNGUwMTNiNDE4NWE4NjI2MDVkOWJlOTY2YmIuLmQ3
OWFiMGYyOGU4YmM2ZjJiMzMwYmNkMDMwMTZlNjY4Y2IyZTU2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNzYs
NiArNzYsNyBAQAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlJlbmRlcmVk
UG9zaXRpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdl
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tp
bmdIZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTEyODIsOSArMTI4Myw5
IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JSYW5nZShSZWZQdHI8UmFu
Z2U+IHJhbmdlKSBjb25zdAogICAgICAgICAgICAgaXQuYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRl
cihidWlsZGVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUg
bm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2VkIHJhbmdlCi0gICAgICAg
ICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAg
ICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKCkpOwotICAgICAg
ICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgICAg
ICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFydENvbnRhaW5lcigpOworICAgICAgICAgICAg
QVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgpLmVuZENvbnRhaW5lcigpKTsKKyAgICAgICAgICAg
IGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAgICBpZiAo
cmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIobm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChvZmZzZXQp
KSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVudENoYXJh
Y3Rlcik7CiAgICAgICAgIH0KQEAgLTEzMDgsOSArMTMwOSw5IEBAIFN0cmluZyBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9z
aXRpb25SCiAgICAgICAgICAgICBpdC5hcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKGJ1aWxkZXIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gbG9jYXRlIHRoZSBub2RlIGFuZCBz
dGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmVwbGFjZWQgcmFuZ2UKLSAgICAgICAgICAgIE5vZGUm
IG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAgICAgICAgICAgQVNTRVJU
KCZub2RlID09ICZpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoKSk7Ci0gICAgICAgICAgICBpbnQg
b2Zmc2V0ID0gaXQucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAgIE5vZGUmIG5v
ZGUgPSBpdC5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBBU1NFUlQoJm5v
ZGUgPT0gJml0LnJhbmdlKCkuZW5kQ29udGFpbmVyKCkpOworICAgICAgICAgICAgaW50IG9mZnNl
dCA9IGl0LnJhbmdlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChyZXBsYWNlZE5v
ZGVOZWVkc0NoYXJhY3Rlcihub2RlLnRyYXZlcnNlVG9DaGlsZEF0KG9mZnNldCkpKQogICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyKTsKICAg
ICAgICAgfQpAQCAtMTMzMyw5ICsxMzM0LDkgQEAgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxl
bmd0aEZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmcKICAg
ICAgICAgICAgIGxlbmd0aCArPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgLy8gbG9jYXRlIHRoZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRo
aXMgcmVwbGFjZWQgcmFuZ2UKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLT5z
dGFydENvbnRhaW5lcigpOwotICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgp
LT5lbmRDb250YWluZXIoKSk7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXQucmFuZ2UoKS0+
c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0
Q29udGFpbmVyKCk7CisgICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0gJml0LnJhbmdlKCkuZW5k
Q29udGFpbmVyKCkpOworICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCkuc3RhcnRP
ZmZzZXQoKTsKIAogICAgICAgICAgICAgaWYgKHJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKG5v
ZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCiAgICAgICAgICAgICAgICAgKytsZW5ndGg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENh
Y2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2Fj
aGVBdGsuY3BwCmluZGV4IGZlMTI2MGQ3ZmRjZjY4ODk4YWQ4NTU3ODRiMDUxZDNkNzIxZDEwNmYu
LjMwMDc0NmEyNDQ0YTRiMzYxNzYyOTVhY2FjZGJlNDk4MGYzODhjMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTZWxl
Y3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGUu
aCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcAppbmRleCBiMjcxNWM3YzUzY2FlOWQwNGFmM2U0YzBmOTNhZjk3NWY2M2Ri
NTI1Li42ZWJlZTg3ZWZhY2MwNGZlNmQwYWYyZTRhNmExNDZhNmRmNDliZTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJs
ZVVuaXRzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKaW5kZXggNTYzOTJjMGJkODNkMWEyYTdjYjc2YTc1
NGI5ZWI4ODNmMjBjZmY1ZS4uOGE3NTE2NWJhNTVkYTYwNTc4NzE0MGVkMmU0YjM2NGIyZmQ4MThk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVVdGlsLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1
ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVNlbGVjdGlvbi5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCmluZGV4IDgwNjM2YzdjMGViNDNmZTM2NjBjODM0NTA4MzFkZjNhMWVmZjMzYjIuLjI1YTM1
MDEzYjNjMjFiZTIxMGVmZTZiMjVmYjU5YWFjYjljZWJmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0ICJTVkdOYW1l
cy5oIgogI2ltcG9ydCAiU1ZHRWxlbWVudC5oIgogI2ltcG9ydCAiU2VsZWN0aW9uUmVjdC5oIgor
I2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgogI2ltcG9y
dCAiV0FLU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV0FLV2luZG93LmgiCkBAIC0yMzUzLDcgKzIz
NTQsNyBAQCAtIChSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3Jh
bmdlCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3Vt
ZW50KCk7CiAgICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgRWxlbWVu
dCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChzY29wZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAg
IHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChzY29wZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpKTsKIH0KIAog
Ly8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2Vu
dGluZyBhIFZpc2libGVQb3NpdGlvbiBhbmQgY29udmVydCBpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAyZmJhY2Y0N2ZhYjdmYTc5YjQ3N2FkMWY0NThkMDZk
OTdmMDQ2MzIxLi5kNTM0ZDkwMzgwZDM4YjM4YzdkNTY3ZjVkMmIxZGQ0ZmNjNjYxM2ZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzAsNiArNzAsNyBAQAog
I2ltcG9ydCAiUmVuZGVyVmlldy5oIgogI2ltcG9ydCAiUmVuZGVyV2lkZ2V0LmgiCiAjaW1wb3J0
ICJTY3JvbGxWaWV3LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiVGV4dENo
ZWNrZXJDbGllbnQuaCIKICNpbXBvcnQgIlRleHRDaGVja2luZ0hlbHBlci5oIgogI2ltcG9ydCAi
VGV4dERlY29yYXRpb25QYWludGVyLmgiCkBAIC03OSw2ICs4MCw3IEBACiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElT
ZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CisKICNpZiBF
TkFCTEUoVFJFRV9ERUJVR0dJTkcpIHx8IEVOQUJMRShNRVRFUl9FTEVNRU5UKQogI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2VuZGlmCkBAIC0xMjg3LDE0ICsxMjg5LDE0IEBA
IC0gKE5TQXR0cmlidXRlZFN0cmluZyopZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2U6KGlkKXRleHRNYXJrZXJSYW5nCiAgICAgICAgIFRleHRJdGVyYXRvciBpdChyYW5nZS5n
ZXQoKSk7CiAgICAgICAgIHdoaWxlICghaXQuYXRFbmQoKSkgewogICAgICAgICAgICAgLy8gbG9j
YXRlIHRoZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmFuZ2UKLSAgICAgICAg
ICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAgICAgICAg
ICAgQVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoKSk7Ci0gICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gaXQucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAg
IE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBB
U1NFUlQoJm5vZGUgPT0gJml0LnJhbmdlKCkuZW5kQ29udGFpbmVyKCkpOworICAgICAgICAgICAg
aW50IG9mZnNldCA9IGl0LnJhbmdlKCkuc3RhcnRPZmZzZXQoKTsKIAogICAgICAgICAgICAgLy8g
bm9uLXplcm8gbGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVw
bGFjZWQgbm9kZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgpCiAgICAgICAgICAgICBpZiAoaXQu
dGV4dCgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gQWRkIHRoZSB0ZXh0IG9mIHRo
ZSBsaXN0IG1hcmtlciBpdGVtIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgICAgICAgICBTdHJpbmcg
bGlzdE1hcmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5v
ZGVBbmRQb3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9z
aXRpb24oKSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vz
c2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBW
aXNpYmxlUG9zaXRpb24oY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpLT5zdGFydFBvc2l0aW9u
KCkpKTsKICAgICAgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5n
LCAmbm9kZSwgbGlzdE1hcmtlclRleHQsIHNwZWxsQ2hlY2spOwogICAgICAgICAgICAgICAgIEFY
QXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgJm5vZGUsIGl0LnRleHQoKSwg
c3BlbGxDaGVjayk7CkBAIC0zNzE0LDcgKzM3MTYsNyBAQCAtIChpZClfdGV4dE1hcmtlckZvcklu
ZGV4OihOU0ludGVnZXIpdGV4dEluZGV4CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHRleHRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
LCB0ZXh0SW5kZXgsIDApOworICAgIFJlZlB0cjxSYW5nZT4gdGV4dFJhbmdlID0gY3JlYXRlTGl2
ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQt
PmRvY3VtZW50RWxlbWVudCgpLCB0ZXh0SW5kZXgsIDApKTsKICAgICBpZiAoIXRleHRSYW5nZSB8
fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdlMGYz
NjQwN2U3N2VlOGJjZDUwOTU5OGRiYWM0MGQzNDhjYTQzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnQuaCIK
KworI2luY2x1ZGUgIk5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCb3VuZGFyeVBv
aW50OjpCb3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQorICAgIDogY29u
dGFpbmVyKG90aGVyLmNvbnRhaW5lci5jb3B5UmVmKCkpCisgICAgLCBvZmZzZXQob3RoZXIub2Zm
c2V0KQoreworfQorCitCb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oY29u
c3QgQm91bmRhcnlQb2ludCYgb3RoZXIpCit7CisgICAgY29udGFpbmVyID0gb3RoZXIuY29udGFp
bmVyLmNvcHlSZWYoKTsKKyAgICBvZmZzZXQgPSBvdGhlci5vZmZzZXQ7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitCb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oQm91bmRh
cnlQb2ludCYmKSA9IGRlZmF1bHQ7CisKK0RvY3VtZW50JiBCb3VuZGFyeVBvaW50Ojpkb2N1bWVu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRhaW5lci0+ZG9jdW1lbnQoKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUxNWU1MTFhNGQ2NmJjODk0
MGExYTNiMTQ5NGNmOTNjMDFkMzYxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Cb3VuZGFyeVBvaW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIERvY3VtZW50OworY2xhc3MgTm9kZTsKKworc3RydWN0IEJvdW5kYXJ5UG9pbnQgewor
ICAgIFJlZjxOb2RlPiBjb250YWluZXI7CisgICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OworCisg
ICAgQm91bmRhcnlQb2ludChSZWY8Tm9kZT4mJiwgdW5zaWduZWQpOworCisgICAgLy8gVW5saWtl
IFJlZiwgd2UgYWxsb3cgY29weWluZyBhIEJvdW5kYXJ5UG9pbnQgd2l0aG91dCBhbiBleHBsaWNp
dCBjb3B5UmVmKCkuCisgICAgQm91bmRhcnlQb2ludChjb25zdCBCb3VuZGFyeVBvaW50Jik7Cisg
ICAgQm91bmRhcnlQb2ludChCb3VuZGFyeVBvaW50JiYpID0gZGVmYXVsdDsKKyAgICBCb3VuZGFy
eVBvaW50JiBvcGVyYXRvcj0oY29uc3QgQm91bmRhcnlQb2ludCYpOworICAgIEJvdW5kYXJ5UG9p
bnQmIG9wZXJhdG9yPShCb3VuZGFyeVBvaW50JiYpOworCisgICAgRG9jdW1lbnQmIGRvY3VtZW50
KCkgY29uc3Q7Cit9OworCitib29sIG9wZXJhdG9yPT0oY29uc3QgQm91bmRhcnlQb2ludCYsIGNv
bnN0IEJvdW5kYXJ5UG9pbnQmKTsKKworaW5saW5lIEJvdW5kYXJ5UG9pbnQ6OkJvdW5kYXJ5UG9p
bnQoUmVmPE5vZGU+JiYgY29udGFpbmVyLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgOiBjb250YWlu
ZXIoV1RGTW92ZShjb250YWluZXIpKQorICAgICwgb2Zmc2V0KG9mZnNldCkKK3sKK30KKworaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFy
eVBvaW50JiBiKQoreworICAgIHJldHVybiAmYS5jb250YWluZXIgPT0gJmIuY29udGFpbmVyICYm
IGEub2Zmc2V0ID09IGIub2Zmc2V0OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA2MGY1ZmE2YzJmNTM2MzlmN2YyMzE3MDQwYWExM2NiMmRlODMzZDg3Li5iZmVhYWEwNGE5OWY0
NTY0YTM2MGEwMTZmN2M1YzIxYWRlNGM0NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTI3MzgsNyArMjczOCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUhpZ2hsaWdodFBvc2l0aW9u
cygpCiAgICAgICAgICAgICBmb3IgKGF1dG8mIHJhbmdlRGF0YSA6IGhpZ2hsaWdodC52YWx1ZS0+
cmFuZ2VzRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJhbmdlRGF0YS0+c3RhcnRQb3Np
dGlvbiAmJiByYW5nZURhdGEtPmVuZFBvc2l0aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoJnJhbmdlRGF0YS0+cmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCktPnRyZWVTY29wZSgpICE9ICZyYW5nZURhdGEtPnJhbmdlLT5lbmRDb250YWluZXIoKS0+
dHJlZVNjb3BlKCkpCisgICAgICAgICAgICAgICAgaWYgKCZyYW5nZURhdGEtPnJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLnRyZWVTY29wZSgpICE9ICZyYW5nZURhdGEtPnJhbmdlLT5lbmRDb250YWlu
ZXIoKS50cmVlU2NvcGUoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgcmFuZ2VzRGF0YS5hcHBlbmQobWFrZVdlYWtQdHIocmFuZ2VEYXRhLnB0cigpKSk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCmluZGV4IDJiZmUxNWUwMzVhMTc1MDBlODE1YzkxODA2ODNlODliNzQ2OTYw
ODcuLmJjNWZhMzFlMjUyMGEyN2U4NGFhNDliOWYyOWFjYjU2Nzk1YmI2MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIlNpbXBsZVJh
bmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIApA
QCAtNjQsNyArNjUsNyBAQCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYgcgogewogICAgIFZlY3RvcjxS
ZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJh
dG9yKCZyYW5nZSk7ICF0ZXh0SXRlcmF0b3IuYXRFbmQoKTsgdGV4dEl0ZXJhdG9yLmFkdmFuY2Uo
KSkKLSAgICAgICAgdGV4dFJhbmdlLmFwcGVuZCh0ZXh0SXRlcmF0b3IucmFuZ2UoKSk7CisgICAg
ICAgIHRleHRSYW5nZS5hcHBlbmQoY3JlYXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRvci5yYW5nZSgp
KSk7CiAgICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGNlMmQ3MWFlY2Q5NjZkODViZWExYTRhNzAzYzYxMzhmMDQzZDM5OTAuLjdkZjJhZmJlMzA1ZDc4
OTNjNTg5MjQyMWRkYzVjZTM1ZmU5Y2VmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEw
NCw2ICsxMDQsNyBAQAogI2luY2x1ZGUgIlNjcm9sbExhdGNoaW5nU3RhdGUuaCIKICNpbmNsdWRl
ICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaW1w
bGVSYW5nZS5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrLmgiCiAjaW5jbHVkZSAiU2xvdEFz
c2lnbm1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUludmFsaWRhdG9yLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmNwcAppbmRleCBiNDdhMjliMWIxMDI0MjEwZDVlZWU5OWMyNDQ3ODgxNzM0MzcyYzc2Li4z
M2RiYjRlMWRlMGQ4MWQ3NTBlMmJmZmNiMzk4NWM5NDI2ZDgyOGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBvc2l0aW9uSXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RmxleGlibGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApp
bmRleCA5YzExMzQwNWUyNzc1Y2Y3ZjA1YzdmOGFjM2ZhMTgwMGIzZDQ1OTdmLi44NzhmNjI1MjU0
ZDJmZGZlYzEyOWM2NjlkZGNkZjY3MWVkYjljYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5n
ZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlv
bi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDlkZjk5Yzg1YmYxZTg1NzFkYmVhYTU5YWNkZTg1YTA1NWUzOTc2Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTaW1wbGVSYW5nZS5oIgorCisjaW5jbHVkZSAiUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgQm91bmRhcnlQb2ludCYgc3Rh
cnQsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGVuZCkKKyAgICA6IHN0YXJ0KHN0YXJ0KQorICAgICwg
ZW5kKGVuZCkKK3sKK30KKworU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKEJvdW5kYXJ5UG9pbnQm
JiBzdGFydCwgQm91bmRhcnlQb2ludCYmIGVuZCkKKyAgICA6IHN0YXJ0KFdURk1vdmUoc3RhcnQp
KQorICAgICwgZW5kKFdURk1vdmUoZW5kKSkKK3sKK30KKworU2ltcGxlUmFuZ2U6OlNpbXBsZVJh
bmdlKGNvbnN0IFJhbmdlJiBvdGhlcikKKyAgICA6IHN0YXJ0KG90aGVyLnN0YXJ0Q29udGFpbmVy
KCksIG90aGVyLnN0YXJ0T2Zmc2V0KCkpCisgICAgLCBlbmQob3RoZXIuZW5kQ29udGFpbmVyKCks
IG90aGVyLmVuZE9mZnNldCgpKQoreworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxl
UmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBiKQoreworICAgIHJldHVybiBhLnN0YXJ0ID09
IGIuc3RhcnQgJiYgYS5lbmQgPT0gYi5lbmQ7Cit9CisKK1JlZjxSYW5nZT4gY3JlYXRlTGl2ZVJh
bmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gUmFuZ2U6OmNyZWF0
ZShyYW5nZS5zdGFydC5kb2N1bWVudCgpLCByYW5nZS5zdGFydC5jb250YWluZXIucHRyKCksIHJh
bmdlLnN0YXJ0Lm9mZnNldCwgcmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKSwgcmFuZ2UuZW5kLm9m
ZnNldCk7Cit9CisKK1JlZlB0cjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2UpCit7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZSgqcmFuZ2UpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaW1wbGVSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NWM5YjhhNDk1NzNiZjVlZDdiZGZi
YTg5Mzk3MTA5MjEzOTNhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2ltcGxlUmFuZ2UuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJCb3VuZGFyeVBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUmFuZ2U7CisKK3N0cnVjdCBTaW1wbGVSYW5nZSB7CisgICAgQm91bmRhcnlQb2ludCBz
dGFydDsKKyAgICBCb3VuZGFyeVBvaW50IGVuZDsKKworICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVy
KCkgY29uc3QgeyByZXR1cm4gc3RhcnQuY29udGFpbmVyLmdldCgpOyB9CisgICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdGFydC5vZmZzZXQ7IH0KKyAgICBOb2RlJiBl
bmRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBlbmQuY29udGFpbmVyLmdldCgpOyB9CisgICAg
dW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gZW5kLm9mZnNldDsgfQorCisgICAg
Ym9vbCBjb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBzdGFydCA9PSBlbmQ7IH0KKworICAgIFNp
bXBsZVJhbmdlKGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Cisg
ICAgU2ltcGxlUmFuZ2UoQm91bmRhcnlQb2ludCYmLCBCb3VuZGFyeVBvaW50JiYpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UmKTsKKworICAgIC8vIENvbnZl
bmllbmNlIG92ZXJsb2FkcyB0byBoZWxwIHdpdGggdHJhbnNpdGlvbiBmcm9tIHVzaW5nIGEgbG90
IG9mIGxpdmUgcmFuZ2VzLiBDb25zaWRlciByZW1vdmluZyB0aGVzZSBldmVudHVhbGx5LgorICAg
IFNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlKik7IC8vIENyYXNoZXMgaWYgcGFzc2VkIGEgbnVsbHB0
ci4KKyAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+Jik7Cit9OworCitib29sIG9wZXJh
dG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpOworCitXRUJDT1JF
X0VYUE9SVCBSZWY8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYpOwor
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+Jik7CisKK2lubGluZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29u
c3QgUmFuZ2UqIHJhbmdlKQorICAgIDogU2ltcGxlUmFuZ2UoKnJhbmdlKQoreworfQorCitpbmxp
bmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNvbnN0IFJlZjxSYW5nZT4mIHJhbmdlKQorICAg
IDogU2ltcGxlUmFuZ2UocmFuZ2UuZ2V0KCkpCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGlj
UmFuZ2UuY3BwCmluZGV4IDgxMzZkYTE5MzMwYTAyY2E5NTM0ZGQ0MGNiZjAzYWVmNWRiOTE3OWYu
LjViYzYyZjE3NDE0YTg2YmU0MDI4MWEzY2JlZjI3ZmVkY2E0ODNhN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1N0YXRpY1JhbmdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiwzNSArMjYsMzQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTdGF0aWNSYW5nZS5oIgogCi0jaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCi0jaW5j
bHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU3RhdGljUmFuZ2U6OlN0YXRpY1JhbmdlKFJlZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgUmVmPE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBl
bmRPZmZzZXQpCi0gICAgOiBtX3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIp
KQotICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKLSAgICAsIG1fZW5kQ29udGFpbmVy
KFdURk1vdmUoZW5kQ29udGFpbmVyKSkKLSAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKK1N0
YXRpY1JhbmdlOjpTdGF0aWNSYW5nZShTaW1wbGVSYW5nZSYmIHJhbmdlKQorICAgIDogU2ltcGxl
UmFuZ2UoV1RGTW92ZShyYW5nZSkpCiB7CiB9CiAKLVN0YXRpY1JhbmdlOjp+U3RhdGljUmFuZ2Uo
KSA9IGRlZmF1bHQ7Ci0KLVJlZjxTdGF0aWNSYW5nZT4gU3RhdGljUmFuZ2U6OmNyZWF0ZShSZWY8
Tm9kZT4mJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFJlZjxOb2RlPiYm
IGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorUmVmPFN0YXRpY1JhbmdlPiBTdGF0
aWNSYW5nZTo6Y3JlYXRlKFNpbXBsZVJhbmdlJiYgcmFuZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3RhdGljUmFuZ2UoV1RGTW92ZShzdGFydENvbnRhaW5lciksIHN0YXJ0T2Zmc2V0
LCBXVEZNb3ZlKGVuZENvbnRhaW5lciksIGVuZE9mZnNldCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0YXRpY1JhbmdlKFdURk1vdmUocmFuZ2UpKSk7CiB9CiAKLVJlZjxTdGF0aWNSYW5n
ZT4gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UpCitzdGF0
aWMgYm9vbCBpc0RvY3VtZW50VHlwZU9yQXR0cihOb2RlJiBub2RlKQogewotICAgIHJldHVybiBT
dGF0aWNSYW5nZTo6Y3JlYXRlKHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLnN0YXJ0T2Zm
c2V0KCksIHJhbmdlLmVuZENvbnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSk7Ci19CisgICAg
Ly8gQmVmb3JlIGNhbGxpbmcgbm9kZVR5cGUsIGRvIHR3byBmYXN0IG5vbi12aXJ0dWFsIGNoZWNr
cyB0aGF0IGNvdmVyIGFsbW9zdCBhbGwgbm9ybWFsIG5vZGVzLCBidXQgYXJlIGZhbHNlIGZvciBE
b2N1bWVudFR5cGUgYW5kIEF0dHIuCisgICAgaWYgKGlzPENvbnRhaW5lck5vZGU+KG5vZGUpIHx8
IGlzPFRleHQ+KG5vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0RvY3VtZW50VHlwZU9yQXR0cihOb2RlJiBub2RlKQotewotICAgIHJldHVybiBub2Rl
LmlzRG9jdW1lbnRUeXBlTm9kZSgpIHx8IG5vZGUuaXNBdHRyaWJ1dGVOb2RlKCk7CisgICAgLy8g
Q2FsbCBub2RlVHlwZSBleHBsaWNpdGx5IGFuZCB1c2UgYSBzd2l0Y2ggc28gd2UgZG9uJ3QgaGF2
ZSB0byBjYWxsIGl0IHR3aWNlLgorICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSgpKSB7CisgICAg
Y2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVf
Tk9ERToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KIH0KIAogRXhjZXB0aW9uT3I8UmVmPFN0YXRpY1JhbmdlPj4gU3RhdGlj
UmFuZ2U6OmNyZWF0ZShJbml0JiYgaW5pdCkKQEAgLTYzLDI3ICs2Miw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxTdGF0aWNSYW5nZT4+IFN0YXRpY1JhbmdlOjpjcmVhdGUoSW5pdCYmIGluaXQpCiAgICAg
QVNTRVJUKGluaXQuZW5kQ29udGFpbmVyKTsKICAgICBpZiAoaXNEb2N1bWVudFR5cGVPckF0dHIo
KmluaXQuc3RhcnRDb250YWluZXIpIHx8IGlzRG9jdW1lbnRUeXBlT3JBdHRyKCppbml0LmVuZENv
bnRhaW5lcikpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTm9kZVR5cGVFcnJv
ciB9OwotICAgIHJldHVybiBTdGF0aWNSYW5nZTo6Y3JlYXRlKGluaXQuc3RhcnRDb250YWluZXIu
cmVsZWFzZU5vbk51bGwoKSwgaW5pdC5zdGFydE9mZnNldCwgaW5pdC5lbmRDb250YWluZXIucmVs
ZWFzZU5vbk51bGwoKSwgaW5pdC5lbmRPZmZzZXQpOwotfQotCi1Ob2RlKiBTdGF0aWNSYW5nZTo6
c3RhcnRDb250YWluZXIoKSBjb25zdAotewotICAgIHJldHVybiAoTm9kZSopbV9zdGFydENvbnRh
aW5lci5wdHIoKTsKLX0KLQotTm9kZSogU3RhdGljUmFuZ2U6OmVuZENvbnRhaW5lcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIChOb2RlKiltX2VuZENvbnRhaW5lci5wdHIoKTsKLX0KLQotYm9vbCBT
dGF0aWNSYW5nZTo6Y29sbGFwc2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGFydE9mZnNl
dCA9PSBtX2VuZE9mZnNldCAmJiBtX3N0YXJ0Q29udGFpbmVyLnB0cigpID09IG1fZW5kQ29udGFp
bmVyLnB0cigpOwotfQotCi1ib29sIFN0YXRpY1JhbmdlOjpvcGVyYXRvcj09KGNvbnN0IFN0YXRp
Y1JhbmdlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gKG1fc3RhcnRPZmZzZXQgPT0gb3Ro
ZXIuc3RhcnRPZmZzZXQoKSAmJiBtX2VuZE9mZnNldCA9PSBvdGhlci5lbmRPZmZzZXQoKSAmJiBt
X3N0YXJ0Q29udGFpbmVyLT5pc0VxdWFsTm9kZShvdGhlci5zdGFydENvbnRhaW5lcigpKSAmJiBt
X2VuZENvbnRhaW5lci0+aXNFcXVhbE5vZGUob3RoZXIuZW5kQ29udGFpbmVyKCkpKTsKKyAgICBy
ZXR1cm4gY3JlYXRlKHsgeyBpbml0LnN0YXJ0Q29udGFpbmVyLnJlbGVhc2VOb25OdWxsKCksIGlu
aXQuc3RhcnRPZmZzZXQgfSwgeyBpbml0LmVuZENvbnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBp
bml0LmVuZE9mZnNldCB9IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU3RhdGljUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5oCmluZGV4
IGY4MGQ4NWU1Mjg2OGVjNTQwYWM0ZmMzYTQxYjZmOGI1Y2FkZWQ2YjUuLmExOGRhZGE1NWQxNWMz
YzdmNDBkN2RkZDYyODE3MzI0ZDk0MmQxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdGF0aWNSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDQ1ICsyNiwyNSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgot
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTm9kZTsK
LWNsYXNzIFJhbmdlOwotCi1jbGFzcyBTdGF0aWNSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
YXRpY1JhbmdlPiB7CitjbGFzcyBTdGF0aWNSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRp
Y1JhbmdlPiwgcHVibGljIFNpbXBsZVJhbmdlIHsKIHB1YmxpYzoKLSAgICB+U3RhdGljUmFuZ2Uo
KTsKLQotICAgIHN0YXRpYyBSZWY8U3RhdGljUmFuZ2U+IGNyZWF0ZUZyb21SYW5nZShjb25zdCBS
YW5nZSYpOwotICAgIHN0YXRpYyBSZWY8U3RhdGljUmFuZ2U+IGNyZWF0ZShSZWY8Tm9kZT4mJiBz
dGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFJlZjxOb2RlPiYmIGVuZENvbnRh
aW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKLQogICAgIHN0cnVjdCBJbml0IHsKICAgICAgICAg
UmVmUHRyPE5vZGU+IHN0YXJ0Q29udGFpbmVyOwotICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0
T2Zmc2V0IHsgMCB9OworICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCB7IDAgfTsKICAgICAg
ICAgUmVmUHRyPE5vZGU+IGVuZENvbnRhaW5lcjsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBlbmRP
ZmZzZXQgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIGVuZE9mZnNldCB7IDAgfTsKICAgICB9Owog
CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTdGF0aWNSYW5nZT4+IGNyZWF0ZShJbml0JiYp
OwotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zm
c2V0OyB9Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZz
ZXQ7IH0KLSAgICBOb2RlKiBzdGFydENvbnRhaW5lcigpIGNvbnN0OwotICAgIE5vZGUqIGVuZENv
bnRhaW5lcigpIGNvbnN0OwotICAgIGJvb2wgY29sbGFwc2VkKCkgY29uc3Q7Ci0gICAgCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0YXRpY1JhbmdlJikgY29uc3Q7CisgICAgc3RhdGljIFJl
ZjxTdGF0aWNSYW5nZT4gY3JlYXRlKFNpbXBsZVJhbmdlJiYpOwogCiBwcml2YXRlOgotICAgIFN0
YXRpY1JhbmdlKFJlZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgUmVmPE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpOwotCi0gICAg
UmVmPE5vZGU+IG1fc3RhcnRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9zdGFydE9mZnNldDsK
LSAgICBSZWY8Tm9kZT4gbV9lbmRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9lbmRPZmZzZXQ7
CisgICAgU3RhdGljUmFuZ2UoU2ltcGxlUmFuZ2UmJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
YXRpY1JhbmdlLmlkbAppbmRleCAzMGIwYTE3ZTQ5MDA1MGY1NDc3ZWY5Yjk5M2EzZDg0NzU3NWZj
MTc3Li5kOGI5NDc5Y2Y3ZDhhNGZhYzk0ZTcwZmYzY2NmODdhZjYyOTJjZGI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdGF0aWNSYW5nZS5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsOCArMzgsOCBAQAogfTsKIAogZGljdGlvbmFyeSBTdGF0aWNS
YW5nZUluaXQgewotICByZXF1aXJlZCBOb2RlIHN0YXJ0Q29udGFpbmVyOwotICByZXF1aXJlZCB1
bnNpZ25lZCBsb25nIHN0YXJ0T2Zmc2V0OwotICByZXF1aXJlZCBOb2RlIGVuZENvbnRhaW5lcjsK
LSAgcmVxdWlyZWQgdW5zaWduZWQgbG9uZyBlbmRPZmZzZXQ7CisgICAgcmVxdWlyZWQgTm9kZSBz
dGFydENvbnRhaW5lcjsKKyAgICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHN0YXJ0T2Zmc2V0Owor
ICAgIHJlcXVpcmVkIE5vZGUgZW5kQ29udGFpbmVyOworICAgIHJlcXVpcmVkIHVuc2lnbmVkIGxv
bmcgZW5kT2Zmc2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MjZlZTU3NDRhNmNmMmM3ZTIyYTYzNDM5
NzZhOWM4ZjhiZGEyNzUuLjYwZTMwNzQ3ZDk2OWYwZmFlYmUyZjk1YmIyMDU5YWY4ZDgzMjViZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCisjaW5j
bHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tp
bmdIZWxwZXIuaCIKQEAgLTIxOSwxMiArMjIwLDEyIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwK
ICAgICBpbnQgcGFyYWdyYXBoU3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
UmFuZ2U6OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3Jh
cGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhS
YW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7CiAgICAgU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBhbHRl
cm5hdGl2ZSktPmFwcGx5KCk7CiAgICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLCBzaW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kIG1vZGlmaWVk
IHRoZSBET00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5n
Q29ycmVjdGlvbiBpcyBubyBsb25nZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBCdWd6aWxsYTog
ODk1MjYKLSAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBh
cmFncmFwaFN0YXJ0SW5kZXgsIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoICsgYWx0
ZXJuYXRpdmUubGVuZ3RoKCkpOworICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFp
bmluZ0NvcnJlY3Rpb24gPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXgsIGNvcnJlY3Rp
b25TdGFydE9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpKTsKICAgICBp
ZiAoIXVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCisKICAgICBzZXRFbmQodXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24uZ2V0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQo
KSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpz
dWJyYW5nZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIGNvcnJl
Y3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7CisgICAg
UmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkp
KTsKICAgICBTdHJpbmcgbmV3VGV4dCA9IHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgp
KTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDUyZTZlNGUw
YjE3ZGRmOTBkZDFiZWI1ZWRkOTFjMDAxNWRhMzI5NzQuLjI3OTg5YmVmZmQyOGQ1Nzc0MTFjZGJj
NGM2YzNkNzZlM2UyNjUwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKyNp
bmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2lu
Y2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0yODUsOCArMjg2
LDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHls
ZSYgc3R5bGUpCiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgYXV0byBzdGFydFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRl
eCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAg
IGF1dG8gc3RhcnRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBzdGFydEluZGV4LCAwLCB0cnVlKSk7CisgICAgICAg
IGF1dG8gZW5kUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAsIHRydWUpKTsKICAgICAgICAgaWYg
KHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCiAgICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFy
dFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAK
aW5kZXggNWRhYjdiYTEwMWEwMTg1ZGNkMjc5YzdjNjNjYTk0NjA4YjA3MjZmMS4uYzM3ODAxYzRk
YjM0OGRhMTFmOTIxN2RhNmVmOWFlMjMwODFmMTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTM4OCw3ICszODgsNyBAQCBWZWN0
b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdl
cygpIGNvbnN0CiAgICAgaWYgKCFmaXJzdFJhbmdlKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmlyc3RSYW5nZSkg
fTsKKyAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlKCpmaXJzdFJhbmdlKSB9Owog
fQogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRh
cmdldFJhbmdlc0ZvckJpbmRpbmdzKCkgY29uc3QKQEAgLTE1MzIsOCArMTUzMiw4IEBAIHZvaWQg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgc3RhcnRPZlBhcmFncmFwCiAgICAgICAgIC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFw
c2VkIGR1cmluZyB0aGUgbW92ZSBvcGVyYXRpb24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8g
aW4gYSBjYWxsIHRvIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBw
YXN0IHRoZSBlbmQKICAgICAgICAgLy8gb2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVy
biBudWxsKS4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbklu
ZGV4ICsgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0
KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIFJlZlB0
cjxSYW5nZT4gc3RhcnQgPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBz
dGFydEluZGV4LCAwLCB0cnVlKSk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0gY3JlYXRl
TGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFi
bGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpKTsKICAg
ICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkKICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKHN0YXJ0LT5zdGFydFBvc2l0aW9uKCksIGVuZC0+c3RhcnRQb3NpdGlv
bigpLCBET1dOU1RSRUFNLCBvcmlnaW5hbElzRGlyZWN0aW9uYWwpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCBmZDVlNTk1YWNiNTE1YjRmN2U1NTgyODRjODU1ZWIz
ZWE0YzhjNWVhLi5jZDMxMWUxYWVhNWZhYmU0YjgyYzgyZWU3MDY4Yjk5NjhkOWFkZmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dC5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpA
QCAtMTEwNiw3ICsxMTA3LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBv
c2l0aW9uV2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2kKIAogVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSog
c2NvcGUpCiB7Ci0gICAgYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoc2NvcGUsIGluZGV4LCAwLCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlID0gY3Jl
YXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2Nv
cGUsIGluZGV4LCAwLCB0cnVlKSk7CiAgICAgLy8gQ2hlY2sgZm9yIGFuIGludmFsaWQgaW5kZXgu
IENlcnRhaW4gZWRpdGluZyBvcGVyYXRpb25zIGludmFsaWRhdGUgaW5kaWNlcyBiZWNhdXNlIAog
ICAgIC8vIG9mIHByb2JsZW1zIHdpdGggVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMuCiAgICAgaWYgKCFyYW5nZSkKQEAgLTExMjgsMTAgKzExMjks
MTAgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0
ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW4KICAgICAgICAgLy8gRklYTUU6IHdvcmthcm91
bmQgZm9yIGNvbGxhcHNlZCByYW5nZSAod2hlcmUgb25seSBzdGFydCBwb3NpdGlvbiBpcyBjb3Jy
ZWN0KSBlbWl0dGVkIGZvciBzb21lIGVtaXR0ZWQgbmV3bGluZXMuCiAgICAgICAgIGl0LmFkdmFu
Y2UoMSk7CiAgICAgICAgIGlmICghaXQuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpLT5zdGFydFBv
c2l0aW9uKCkpOwogICAgIH0KIAotICAgIHJldHVybiB7IGl0LmF0RW5kKCkgPyByYW5nZS0+ZW5k
UG9zaXRpb24oKSA6IGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNIH07CisgICAg
cmV0dXJuIHsgaXQuYXRFbmQoKSA/IHJhbmdlLT5lbmRQb3NpdGlvbigpIDogY3JlYXRlTGl2ZVJh
bmdlKGl0LnJhbmdlKCkpLT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSB9OwogfQogCiAvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgdHdvIHBvc2l0aW9ucyBhcmUgdmlzaWJseSBuZXh0IHRvIGVhY2ggb3Ro
ZXIgKGZpcnN0IHRoZW4gc2Vjb25kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDZj
NmQ4M2E3MjhmMzAyMDNiOGVmZmNlMGYwOGJhYTQ1NWMzMjZhNmEuLjJhYzJhZGExZjg4NzkyOWI5
NzNhNGI2Mjc3YzNmOGU1ODdjNmEyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTIyNDYsNyArMjI0Niw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
Ym9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgICAgIC8vIFN0b3AgbG9va2luZyBh
dCBzdGFydCBvZiBuZXh0IG1pc3NwZWxsZWQgd29yZAogICAgICAgICAgICAgQ2hhcmFjdGVySXRl
cmF0b3IgY2hhcnMoKmdyYW1tYXJTZWFyY2hSYW5nZSk7CiAgICAgICAgICAgICBjaGFycy5hZHZh
bmNlKG1pc3NwZWxsaW5nT2Zmc2V0KTsKLSAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+
c2V0RW5kKGNoYXJzLnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCksIGNoYXJzLnJhbmdlKCktPnN0
YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlLT5zZXRFbmQoY2hh
cnMucmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLCBjaGFycy5yYW5nZSgpLnN0YXJ0T2Zmc2V0KCkp
OwogICAgICAgICB9CiAgICAgCiAgICAgICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQo
KSkKQEAgLTIyODEsNyArMjI4MSw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgICAgICAgICAvLyBTdG9w
IGxvb2tpbmcgYXQgc3RhcnQgb2YgbmV4dCBtaXNzcGVsbGVkIHdvcmQKICAgICAgICAgICAgICAg
ICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFycygqZ3JhbW1hclNlYXJjaFJhbmdlKTsKICAgICAgICAg
ICAgICAgICBjaGFycy5hZHZhbmNlKG1pc3NwZWxsaW5nT2Zmc2V0KTsKLSAgICAgICAgICAgICAg
ICBncmFtbWFyU2VhcmNoUmFuZ2UtPnNldEVuZChjaGFycy5yYW5nZSgpLT5zdGFydENvbnRhaW5l
cigpLCBjaGFycy5yYW5nZSgpLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBncmFt
bWFyU2VhcmNoUmFuZ2UtPnNldEVuZChjaGFycy5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCksIGNo
YXJzLnJhbmdlKCkuc3RhcnRPZmZzZXQoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKQEAgLTIzMDMsOCArMjMwMyw4IEBAIHZv
aWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVj
dGlvbikKICAgICAgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gIT0gLTEgJiYgZ3Jh
bW1hckRldGFpbC5sZW5ndGggPiAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkx
OTA6IFRoaXMgZ2V0cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVu
ZCBvZiBhIHBhcmFncmFwaAotICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCAr
IGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKLSAgICAgICAg
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYWRHcmFt
bWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgIGF1dG8gYmFkR3JhbW1h
clJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmdyYW1tYXJT
ZWFyY2hSYW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCArIGdyYW1tYXJEZXRhaWwubG9jYXRpb24s
IGdyYW1tYXJEZXRhaWwubGVuZ3RoKSk7CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlLmdldCgpLCBTRUxfREVG
QVVMVF9BRkZJTklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVj
dGlvbigpOwogICAgICAgICAKICAgICAgICAgY2xpZW50KCktPnVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZyhiYWRHcmFtbWFyUGhyYXNlLCBncmFtbWFyRGV0YWlsKTsKQEAgLTIzMTUs
OCArMjMxNSw4IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gV2UgZm91bmQgYSBtaXNzcGVsbGluZywg
YnV0IG5vdCBhbnkgZWFybGllciBiYWQgZ3JhbW1hci4gU2VsZWN0IHRoZSBtaXNzcGVsbGluZywg
dXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCwgYW5kIHN0b3JlCiAgICAgICAgIC8vIGEgbWFya2Vy
IHNvIHdlIGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCi0gICAgICAgIGF1
dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uoc3BlbGxpbmdTZWFy
Y2hSYW5nZSwgbWlzc3BlbGxpbmdPZmZzZXQsIG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKLSAg
ICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiht
aXNzcGVsbGluZ1JhbmdlLCBET1dOU1RSRUFNKSk7CisgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdS
YW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHNwZWxsaW5nU2Vh
cmNoUmFuZ2UsIG1pc3NwZWxsaW5nT2Zmc2V0LCBtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSkpOwor
ICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pKTsKICAgICAgICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKICAgICAgICAgCiAgICAgICAgIGNsaWVudCgp
LT51cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKG1pc3NwZWxsZWRXb3JkKTsKQEAg
LTI3NzksOSArMjc3OSw5IEBAIHN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2Vy
dmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhCiAgICAgLy8gVGV4dENo
ZWNraW5nUGFyYWdyYXBoIG1heSBiZSBvcnBoYW5lZCBhZnRlciBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kIG11dGF0ZWQgRE9NLgogICAgIC8vIFNlZSA8cmRhcjovLzEwMzA1MzE1PiwgaHR0cDov
L3dlYmtpdC5vcmcvYi84OTUyNi4KIAotICAgIFJlZlB0cjxSYW5nZT4gbmV3UGFyYWdyYXBoUmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZzY29wZSwgcGFy
YWdyYXBoTG9jYXRpb24sIHBhcmFncmFwaExlbmd0aCArIHJlcGxhY2VtZW50Lmxlbmd0aCgpIC0g
cmVzdWx0TGVuZ3RoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0gY3Jl
YXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnNj
b3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQubGVu
Z3RoKCkgLSByZXN1bHRMZW5ndGgpKTsKIAotICAgIGF1dG8gc3BlbGxDaGVja2luZ1JhbmdlID0g
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9u
LCByZXBsYWNlbWVudC5sZW5ndGgoKSk7CisgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSBj
cmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2Us
IHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSkpOwogICAgIHBhcmFncmFwaCA9
IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBzcGVs
bENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CiB9CiAK
QEAgLTI4OTQsNyArMjg5NCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25z
dCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9SZXBsYWNlLCBET1dOU1RSRUFNKTsKKyAg
ICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9SZXBs
YWNlLmdldCgpLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Ub1JlcGxh
Y2UgIT0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgICAg
IGlmICghbV9mcmFtZS5zZWxlY3Rpb24oKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9u
VG9SZXBsYWNlKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zNDkxLDcgKzM0
OTEsNyBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcm
IHRhcmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhbmdlLAogICAgICAgICAgICAgc2VhcmNoUmFuZ2Ut
PnNldFN0YXJ0KCpzaGFkb3dUcmVlUm9vdCwgMCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJhbmdl
PiByZXN1bHRSYW5nZSA9IGZpbmRQbGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlv
bnMpOworICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoZmlu
ZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdldCwgb3B0aW9ucykpOwogICAgIC8vIElmIHdl
IHN0YXJ0ZWQgaW4gdGhlIHJlZmVyZW5jZSByYW5nZSBhbmQgdGhlIGZvdW5kIHJhbmdlIGV4YWN0
bHkgbWF0Y2hlcyB0aGUgcmVmZXJlbmNlIHJhbmdlLCBmaW5kIGFnYWluLgogICAgIC8vIEJ1aWxk
IGEgc2VsZWN0aW9uIHdpdGggdGhlIGZvdW5kIHJhbmdlIHRvIHJlbW92ZSBjb2xsYXBzZWQgd2hp
dGVzcGFjZS4KICAgICAvLyBDb21wYXJlIHJhbmdlcyBpbnN0ZWFkIG9mIHNlbGVjdGlvbiBvYmpl
Y3RzIHRvIGlnbm9yZSB0aGUgd2F5IHRoYXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHdhcyBtYWRl
LgpAQCAtMzUwOSw3ICszNTA5LDcgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJp
bmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFJhbmdlKiByZWZlcmVuY2VSYW5nZSwKICAgICAgICAg
ICAgICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoKnNoYWRvd1RyZWVSb290LCAwKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHJlc3VsdFJhbmdlID0gZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2Us
IHRhcmdldCwgb3B0aW9ucyk7CisgICAgICAgIHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdl
KGZpbmRQbGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMpKTsKICAgICB9CiAK
ICAgICAvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbiB0aGUgc2hhZG93IHRyZWUsIHNlYXJjaCBp
biBtYWluIGNvbnRlbnQgZm9sbG93aW5nIHRoZSBzaGFkb3cgdHJlZS4KQEAgLTM1MjIsMTQgKzM1
MjIsMTQgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIFJhbmdlKiByZWZlcmVuY2VSYW5nZSwKICAgICAgICAgICAgICAgICBzZWFyY2hS
YW5nZS0+c2V0RW5kQmVmb3JlKCpzaGFkb3dUcmVlUm9vdC0+c2hhZG93SG9zdCgpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHJlc3VsdFJhbmdlID0gZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2Us
IHRhcmdldCwgb3B0aW9ucyk7CisgICAgICAgIHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdl
KGZpbmRQbGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMpKTsKICAgICB9CiAK
ICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZyBhbmQgd2UncmUgd3JhcHBpbmcsIHNl
YXJjaCBhZ2FpbiBpbiB0aGUgZW50aXJlIGRvY3VtZW50ICh0aGlzIHdpbGwKICAgICAvLyByZWR1
bmRhbnRseSByZS1zZWFyY2ggdGhlIGFyZWEgYWxyZWFkeSBzZWFyY2hlZCBpbiBzb21lIGNhc2Vz
KS4KICAgICBpZiAocmVzdWx0UmFuZ2UtPmNvbGxhcHNlZCgpICYmIG9wdGlvbnMuY29udGFpbnMo
V3JhcEFyb3VuZCkpIHsKICAgICAgICAgc2VhcmNoUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoZG9j
dW1lbnQoKSk7Ci0gICAgICAgIHJlc3VsdFJhbmdlID0gZmluZFBsYWluVGV4dCgqc2VhcmNoUmFu
Z2UsIHRhcmdldCwgb3B0aW9ucyk7CisgICAgICAgIHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJh
bmdlKGZpbmRQbGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMpKTsKICAgICAg
ICAgLy8gV2UgdXNlZCB0byByZXR1cm4gZmFsc2UgaGVyZSBpZiB3ZSBlbmRlZCB1cCB3aXRoIHRo
ZSBzYW1lIHJhbmdlIHRoYXQgd2Ugc3RhcnRlZCB3aXRoCiAgICAgICAgIC8vIChlLmcuLCB0aGUg
cmVmZXJlbmNlIHJhbmdlIHdhcyBhbHJlYWR5IHRoZSBvbmx5IGluc3RhbmNlIG9mIHRoaXMgdGV4
dCkuIEJ1dCB3ZSBkZWNpZGVkIHRoYXQKICAgICAgICAgLy8gdGhpcyBzaG91bGQgYmUgYSBzdWNj
ZXNzIGNhc2UgaW5zdGVhZCwgc28gd2UnbGwganVzdCBmYWxsIHRocm91Z2ggaW4gdGhhdCBjYXNl
LgpAQCAtMzU2OSw3ICszNTY5LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JU
ZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgIHVu
c2lnbmVkIG1hdGNoQ291bnQgPSAwOwogICAgIGRvIHsKLSAgICAgICAgYXV0byByZXN1bHRSYW5n
ZSA9IGZpbmRQbGFpblRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMgLSBCYWNrd2Fy
ZHMpOworICAgICAgICBhdXRvIHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGZpbmRQbGFp
blRleHQoKnNlYXJjaFJhbmdlLCB0YXJnZXQsIG9wdGlvbnMgLSBCYWNrd2FyZHMpKTsKICAgICAg
ICAgaWYgKHJlc3VsdFJhbmdlLT5jb2xsYXBzZWQoKSkgewogICAgICAgICAgICAgaWYgKCFyZXN1
bHRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzczNCw3ICszNzM0LDcgQEAgdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZv
clRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcK
ICAgICAgICAgdW5zaWduZWQgc3VicmFuZ2VPZmZzZXQgPSBzY2FubmVyUG9zaXRpb24gKyByZWxh
dGl2ZVN0YXJ0UG9zaXRpb247CiAgICAgICAgIHVuc2lnbmVkIHN1YnJhbmdlTGVuZ3RoID0gcmVs
YXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CiAKLSAgICAgICAg
YXV0byBzdWJyYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocmFuZ2UsIHN1YnJhbmdlT2Zm
c2V0LCBzdWJyYW5nZUxlbmd0aCk7CisgICAgICAgIGF1dG8gc3VicmFuZ2UgPSBjcmVhdGVMaXZl
UmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgc3VicmFuZ2VPZmZzZXQsIHN1YnJh
bmdlTGVuZ3RoKSk7CiAKICAgICAgICAgbWFya2VkUmFuZ2VzLmFwcGVuZChzdWJyYW5nZS5wdHIo
KSk7CiAgICAgICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKHN1
YnJhbmdlLCBEb2N1bWVudE1hcmtlcjo6VGVsZXBob25lTnVtYmVyKTsKQEAgLTM5NTMsNyArMzk1
Myw3IEBAIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdChj
b25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsCiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICBy
ZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRleHRSYW5n
ZSwgcmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpz
Y2hlZHVsZUVkaXRvclVJVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAppbmRleCAwNDFmOWQxMTdkNmEwMWVi
MmM1ODVhOGIyMTRkMzNkY2U4ZDg4MDBmLi45ZDE3M2NmNTdmOTEyMWEwZDk2MDk4MjE0OGU3NzEy
MWQxOGFiOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
UmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFJlZlB0cjxEYXRhVHJh
bnNmZXI+IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2Zl
cigpIGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBSZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgMSwgU3Rh
dGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRvQmVSZXBsYWNlZCkgfTsKKyAgICBy
ZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3ZGIzZjliNDVkOGIzZjc2
NzZlMzBmOTdlMDc2YTVlYTk4MzgyMzdlLi41MTMzMTQ1MzkzZDE3M2E1NzlkMGE1MGMwYmZmMWM4
ZTM1YWQ4MzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIFNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQoUmFuZ2UmIHJhbmdl
VG9CZUNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQogICAgIDogQ29tcG9zaXRl
RWRpdENvbW1hbmQocmFuZ2VUb0JlQ29ycmVjdGVkLnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KSwgRWRpdEFjdGlvbjo6SW5zZXJ0UmVwbGFjZW1lbnQpCiAgICAgLCBtX3JhbmdlVG9CZUNvcnJl
Y3RlZChyYW5nZVRvQmVDb3JyZWN0ZWQpCi0gICAgLCBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQo
bV9yYW5nZVRvQmVDb3JyZWN0ZWQpCisgICAgLCBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQobV9y
YW5nZVRvQmVDb3JyZWN0ZWQuZ2V0KCkpCiAgICAgLCBtX2NvcnJlY3Rpb24oY29ycmVjdGlvbikK
IHsKIH0KQEAgLTEyNCw3ICsxMjQsNyBAQCBTdHJpbmcgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZDo6aW5wdXRFdmVudERhdGEoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4g
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVj
dGVkKSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGUobV9yYW5nZVRvQmVD
b3JyZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDhjMjM0YTRkOTE5NDA4ZGRh
YTdkNzE1MTA4Yjg0YzFmYzMwMmY2ZmEuLjMyNTk0YTU4ODVjNjVhMTc1NTU0YTEyYjQzZWIyYjM2
NDMwNzExMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBSYW5nZSYgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpw
YXJhZ3JhcGhSYW5nZSgpIGNvbnN0CiAKIFJlZjxSYW5nZT4gVGV4dENoZWNraW5nUGFyYWdyYXBo
OjpzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwg
Y2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVS
YW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHBhcmFncmFwaFJhbmdlKCksIGNoYXJhY3Rlck9m
ZnNldCwgY2hhcmFjdGVyQ291bnQpKTsKIH0KIAogRXhjZXB0aW9uT3I8aW50PiBUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKQEAg
LTI3Nyw3ICsyNzcsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogCiAgICAgICAgIGlmICht
aXNzcGVsbGluZ0xvY2F0aW9uID49IDAgJiYgbWlzc3BlbGxpbmdMZW5ndGggPiAwICYmIG1pc3Nw
ZWxsaW5nTG9jYXRpb24gPCB0ZXh0TGVuZ3RoICYmIG1pc3NwZWxsaW5nTGVuZ3RoIDw9IHRleHRM
ZW5ndGggJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoIDw9IHRleHRM
ZW5ndGgpIHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgcmFuZ2Ugb2YgbWlzc3BlbGxlZCB3b3Jk
Ci0gICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlKG1fcmFuZ2UsIGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1p
c3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IGNy
ZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGN1cnJlbnRDaHVu
a09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKSk7CiAKICAg
ICAgICAgICAgIC8vIFJlbWVtYmVyIGZpcnN0LWVuY291bnRlcmVkIG1pc3NwZWxsaW5nIGFuZCBp
dHMgb2Zmc2V0LgogICAgICAgICAgICAgaWYgKCFmaXJzdE1pc3NwZWxsaW5nKSB7CkBAIC00NTYs
NyArNDU2LDcgQEAgaW50IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFp
bChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW0KICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAKICAgICAgICAgaWYgKG1hcmtBbGwpIHsKLSAgICAgICAgICAgIGF1dG8gYmFk
R3JhbW1hclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShtX3JhbmdlLCBiYWRHcmFtbWFy
UGhyYXNlTG9jYXRpb24gLSBzdGFydE9mZnNldCArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+
bGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gY3JlYXRlTGl2ZVJh
bmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgYmFkR3JhbW1hclBocmFzZUxvY2F0
aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxlbmd0aCkpOwog
ICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCku
bWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFt
bWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01
NTYsNyArNTU2LDcgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBCYWQgZ3JhbW1hciBh
dCBzdGFydCBvZiByYW5nZSwgYnV0IGVuZCBvZiBiYWQgZ3JhbW1hciBpcyBiZWZvcmUgb3IgYWZ0
ZXIgZW5kIG9mIHJhbmdlCi0gICAgaWYgKGdyYW1tYXJEZXRhaWwubGVuZ3RoICE9IFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgobV9yYW5nZS5wdHIoKSkpCisgICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4oZ3JhbW1hckRldGFpbC5sZW5ndGgpICE9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
bV9yYW5nZS5wdHIoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBVcGRh
dGUgdGhlIHNwZWxsaW5nIHBhbmVsIHRvIGJlIGRpc3BsYXlpbmcgdGhpcyBlcnJvciAod2hldGhl
ciBvciBub3QgdGhlIHNwZWxsaW5nIHBhbmVsIGlzIG9uIHNjcmVlbikuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNTNjMmQyNTZlZDI4YTdlNWNjMDNmY2Q2YjZm
M2NlOGRjMzAzNGFkMi4uZDUyMTM4MThmNjYyNDI5MzYzNTQ0NTFiOTRkYzIyOTdhYjFlYTk3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxleGV5IFByb3NrdXJ5YWtvdi4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTE4OCwxMCArMTg4LDMxIEBAIHVuc2lnbmVkIEJpdFN0YWNrOjpz
aXplKCkgY29uc3QKIAogLy8gLS0tLS0tLS0KIAorc3RhdGljIFBvc2l0aW9uIG1ha2VQb3NpdGlv
bkxlZ2FjeUVkaXRpbmcoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJu
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwb2ludC5jb250YWluZXIucHRyKCksIHBvaW50
Lm9mZnNldCk7Cit9CisKK3N0YXRpYyBOb2RlKiBmaXJzdE5vZGVMZWdhY3lFZGl0aW5nKGNvbnN0
IEJvdW5kYXJ5UG9pbnQmIHBvaW50KQoreworICAgIGlmIChwb2ludC5jb250YWluZXItPmlzQ2hh
cmFjdGVyRGF0YU5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHBvaW50LmNvbnRhaW5lci5wdHIoKTsK
KyAgICBpZiAoYXV0byogY2hpbGQgPSBwb2ludC5jb250YWluZXItPnRyYXZlcnNlVG9DaGlsZEF0
KHBvaW50Lm9mZnNldCkpCisgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICBpZiAoIXBvaW50Lm9m
ZnNldCkKKyAgICAgICAgcmV0dXJuIHBvaW50LmNvbnRhaW5lci5wdHIoKTsKKyAgICByZXR1cm4g
Tm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4ocG9pbnQuY29udGFpbmVyKTsKK30K
Kworc3RhdGljIE5vZGUqIGZpcnN0Tm9kZUxlZ2FjeUVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlKQoreworICAgIHJldHVybiBmaXJzdE5vZGVMZWdhY3lFZGl0aW5nKHJhbmdlLnN0YXJ0
KTsKK30KKwogLy8gVGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJhbmdlOjpwYXN0TGFzdE5vZGUsIGV4
Y2VwdCBmb3IgdGhlIGZhY3QgdGhhdCBpdCBjYW4gY2xpbWIgdXAgb3V0IG9mIHNoYWRvdyB0cmVl
cy4KLXN0YXRpYyBOb2RlKiBuZXh0SW5QcmVPcmRlckNyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhO
b2RlJiByYW5nZUVuZENvbnRhaW5lciwgaW50IHJhbmdlRW5kT2Zmc2V0KQorc3RhdGljIE5vZGUq
IG5leHRJblByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKE5vZGUmIHJhbmdlRW5kQ29u
dGFpbmVyLCB1bnNpZ25lZCByYW5nZUVuZE9mZnNldCkKIHsKLSAgICBpZiAocmFuZ2VFbmRPZmZz
ZXQgPj0gMCAmJiAhcmFuZ2VFbmRDb250YWluZXIuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7Cisg
ICAgaWYgKCFyYW5nZUVuZENvbnRhaW5lci5pc0NoYXJhY3RlckRhdGFOb2RlKCkpIHsKICAgICAg
ICAgaWYgKE5vZGUqIG5leHQgPSByYW5nZUVuZENvbnRhaW5lci50cmF2ZXJzZVRvQ2hpbGRBdChy
YW5nZUVuZE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICB9CkBAIC0zNDAs
NyArMzYxLDYgQEAgdm9pZCBUZXh0SXRlcmF0b3JDb3B5YWJsZVRleHQ6OmFwcGVuZFRvU3RyaW5n
QnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb24KIAogLy8gLS0tLS0tLS0KIAotCiBU
ZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBU
ZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICA6IG1fYmVoYXZpb3IoYmVoYXZpb3Ip
CiB7CkBAIC0zNjYsMjUgKzM4NiwxNyBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihQb3Np
dGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZQogICAgIGlu
aXQoKTsKIH0KIAotVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHJhbmdl
LCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKK1RleHRJdGVyYXRvcjo6VGV4dEl0ZXJh
dG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZp
b3IpCiAgICAgOiBtX2JlaGF2aW9yKGJlaGF2aW9yKQogewotICAgIGlmICghcmFuZ2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHJhbmdlLT5vd25lckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgcmFuZ2Uuc3RhcnRDb250YWluZXIoKS5kb2N1
bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgbV9z
dGFydENvbnRhaW5lciA9ICZyYW5nZS0+c3RhcnRDb250YWluZXIoKTsKKyAgICBtX3N0YXJ0Q29u
dGFpbmVyID0gJnJhbmdlLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgbV9zdGFydE9mZnNldCA9IHJh
bmdlLnN0YXJ0T2Zmc2V0KCk7CisgICAgbV9lbmRDb250YWluZXIgPSAmcmFuZ2UuZW5kQ29udGFp
bmVyKCk7CisgICAgbV9lbmRPZmZzZXQgPSByYW5nZS5lbmRPZmZzZXQoKTsKIAotICAgIC8vIENh
bGxlcnMgc2hvdWxkIGJlIGhhbmRpbmcgdXMgd2VsbC1mb3JtZWQgcmFuZ2VzLiBJZiB3ZSBkaXNj
b3ZlciB0aGF0IHRoaXMgaXNuJ3QKLSAgICAvLyB0aGUgY2FzZSwgd2UgY291bGQgY29uc2lkZXIg
Y2hhbmdpbmcgdGhpcyBhc3NlcnRpb24gdG8gYW4gZWFybHkgcmV0dXJuLgotICAgIEFTU0VSVChy
YW5nZS0+Ym91bmRhcnlQb2ludHNWYWxpZCgpKTsKLQotICAgIG1fc3RhcnRPZmZzZXQgPSByYW5n
ZS0+c3RhcnRPZmZzZXQoKTsKLSAgICBtX2VuZENvbnRhaW5lciA9ICZyYW5nZS0+ZW5kQ29udGFp
bmVyKCk7Ci0gICAgbV9lbmRPZmZzZXQgPSByYW5nZS0+ZW5kT2Zmc2V0KCk7Ci0KLSAgICBtX25v
ZGUgPSByYW5nZS0+Zmlyc3ROb2RlKCk7CisgICAgbV9ub2RlID0gZmlyc3ROb2RlTGVnYWN5RWRp
dGluZyhyYW5nZSk7CiAgICAgaWYgKCFtX25vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTg3
LDcgKzU5OSw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAKICAgICAv
LyBoYW5kbGUgcHJlLWZvcm1hdHRlZCB0ZXh0CiAgICAgaWYgKCFyZW5kZXJlci5zdHlsZSgpLmNv
bGxhcHNlV2hpdGVTcGFjZSgpKSB7Ci0gICAgICAgIGludCBydW5TdGFydCA9IG1fb2Zmc2V0Owor
ICAgICAgICB1bnNpZ25lZCBydW5TdGFydCA9IG1fb2Zmc2V0OwogICAgICAgICBpZiAobV9sYXN0
VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSAmJiBoYXNWaXNpYmxlVGV4dE5vZGUocmVu
ZGVyZXIpKSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxw
dHIsIHJ1blN0YXJ0LCBydW5TdGFydCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MDQsOSArNjE2LDkgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAg
ICAgfQogICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVW
aXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW50IHJlbmRl
cmVyVGV4dExlbmd0aCA9IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKLSAgICAgICAgaW50IGVuZCA9
ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOwot
ICAgICAgICBpbnQgcnVuRW5kID0gc3RkOjptaW4ocmVuZGVyZXJUZXh0TGVuZ3RoLCBlbmQpOwor
ICAgICAgICB1bnNpZ25lZCByZW5kZXJlclRleHRMZW5ndGggPSByZW5kZXJlclRleHQubGVuZ3Ro
KCk7CisgICAgICAgIHVuc2lnbmVkIGVuZCA9ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250YWluZXIp
ID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOworICAgICAgICB1bnNpZ25lZCBydW5FbmQgPSBzdGQ6
Om1pbihyZW5kZXJlclRleHRMZW5ndGgsIGVuZCk7CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0ID49
IHJ1bkVuZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTMyLDcgKzk0NCw3IEBAIHN0
YXRpYyBib29sIHNob3VsZEVtaXRFeHRyYU5ld2xpbmVGb3JOb2RlKE5vZGUmIG5vZGUpCiAgICAg
cmV0dXJuIGJvdHRvbU1hcmdpbiAqIDIgPj0gZm9udFNpemU7CiB9CiAKLXN0YXRpYyBpbnQgY29s
bGFwc2VkU3BhY2VMZW5ndGgoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0RW5kKQorc3Rh
dGljIHVuc2lnbmVkIGNvbGxhcHNlZFNwYWNlTGVuZ3RoKFJlbmRlclRleHQmIHJlbmRlcmVyLCB1
bnNpZ25lZCB0ZXh0RW5kKQogewogICAgIFN0cmluZ0ltcGwmIHRleHQgPSByZW5kZXJlci50ZXh0
KCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKQEAgLTk0Myw5ICs5NTUs
OSBAQCBzdGF0aWMgaW50IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKFJlbmRlclRleHQmIHJlbmRlcmVy
LCBpbnQgdGV4dEVuZCkKICAgICByZXR1cm4gbGVuZ3RoIC0gdGV4dEVuZDsKIH0KIAotc3RhdGlj
IGludCBtYXhPZmZzZXRJbmNsdWRpbmdDb2xsYXBzZWRTcGFjZXMoTm9kZSYgbm9kZSkKK3N0YXRp
YyB1bnNpZ25lZCBtYXhPZmZzZXRJbmNsdWRpbmdDb2xsYXBzZWRTcGFjZXMoTm9kZSYgbm9kZSkK
IHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FyZXRNYXhPZmZzZXQobm9kZSk7CisgICAgdW5zaWduZWQg
b2Zmc2V0ID0gY2FyZXRNYXhPZmZzZXQobm9kZSk7CiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
bm9kZS5yZW5kZXJlcigpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIp
KQogICAgICAgICAgICAgb2Zmc2V0ICs9IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKGRvd25jYXN0PFJl
bmRlclRleHQ+KCpyZW5kZXJlciksIG9mZnNldCk7CkBAIC0xMDg3LDcgKzEwOTksNyBAQCB2b2lk
IFRleHRJdGVyYXRvcjo6ZXhpdE5vZGUoTm9kZSogZXhpdGVkTm9kZSkKICAgICAgICAgZW1pdENo
YXJhY3RlcignICcsICpiYXNlTm9kZS0+cGFyZW50Tm9kZSgpLCBiYXNlTm9kZSwgMSwgMSk7CiB9
CiAKLXZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlciwgTm9k
ZSYgY2hhcmFjdGVyTm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZz
ZXQsIGludCB0ZXh0RW5kT2Zmc2V0KQordm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIo
VUNoYXIgY2hhcmFjdGVyLCBOb2RlJiBjaGFyYWN0ZXJOb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9k
ZSwgdW5zaWduZWQgdGV4dFN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCB0ZXh0RW5kT2Zmc2V0KQogewog
ICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiAgICAgCkBAIC0xMTAzLDEwICsxMTE1LDggQEAgdm9p
ZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBOb2RlJiBjaGFy
YWN0ZXJOb2RlLCBOb2RlKiBvZmYKICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNl
ZFNwYWNlID0gZmFsc2U7CiB9CiAKLXZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChUZXh0JiB0
ZXh0Tm9kZSwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0
ZXh0RW5kT2Zmc2V0KQordm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRleHQmIHRleHROb2Rl
LCBSZW5kZXJUZXh0JiByZW5kZXJlciwgdW5zaWduZWQgdGV4dFN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCB0ZXh0RW5kT2Zmc2V0KQogewotICAgIEFTU0VSVCh0ZXh0U3RhcnRPZmZzZXQgPj0gMCk7Ci0g
ICAgQVNTRVJUKHRleHRFbmRPZmZzZXQgPj0gMCk7CiAgICAgQVNTRVJUKHRleHRTdGFydE9mZnNl
dCA8PSB0ZXh0RW5kT2Zmc2V0KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHlpZWxk
cyB0aGUgd3Jvbmcgb2Zmc2V0cyB3aGVuIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgdHVybnMg
YSBzaW5nbGUgY2hhcmFjdGVyIGludG8gdHdvIGNoYXJhY3RlcnMuCkBAIC0xMTI4LDUwICsxMTM4
LDUxIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVy
VGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0U3RhcnRPCiAgICAgbV9oYXNFbWl0dGVkID0gdHJ1ZTsK
IH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKK1NpbXBsZVJhbmdl
IFRleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewogICAgIEFTU0VSVCghYXRFbmQoKSk7CiAK
LSAgICAvLyB1c2UgdGhlIGN1cnJlbnQgcnVuIGluZm9ybWF0aW9uLCBpZiB3ZSBoYXZlIGl0Cisg
ICAgLy8gVXNlIHRoZSBjdXJyZW50IHJ1biBpbmZvcm1hdGlvbiwgaWYgd2UgaGF2ZSBpdC4KICAg
ICBpZiAobV9wb3NpdGlvbk9mZnNldEJhc2VOb2RlKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4
ID0gbV9wb3NpdGlvbk9mZnNldEJhc2VOb2RlLT5jb21wdXRlTm9kZUluZGV4KCk7CiAgICAgICAg
IG1fcG9zaXRpb25TdGFydE9mZnNldCArPSBpbmRleDsKICAgICAgICAgbV9wb3NpdGlvbkVuZE9m
ZnNldCArPSBpbmRleDsKICAgICAgICAgbV9wb3NpdGlvbk9mZnNldEJhc2VOb2RlID0gbnVsbHB0
cjsKICAgICB9Ci0gICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUobV9wb3NpdGlvbk5vZGUtPmRvY3Vt
ZW50KCksIG1fcG9zaXRpb25Ob2RlLCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQsIG1fcG9zaXRpb25O
b2RlLCBtX3Bvc2l0aW9uRW5kT2Zmc2V0KTsKKworICAgIHJldHVybiB7IHsgKm1fcG9zaXRpb25O
b2RlLCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgfSwgeyAqbV9wb3NpdGlvbk5vZGUsIG1fcG9zaXRp
b25FbmRPZmZzZXQgfSB9OwogfQogICAgIAogTm9kZSogVGV4dEl0ZXJhdG9yOjpub2RlKCkgY29u
c3QKIHsKLSAgICBSZWY8UmFuZ2U+IHRleHRSYW5nZSA9IHJhbmdlKCk7CisgICAgYXV0byB0ZXh0
UmFuZ2UgPSByYW5nZSgpOwogCi0gICAgTm9kZSYgbm9kZSA9IHRleHRSYW5nZS0+c3RhcnRDb250
YWluZXIoKTsKKyAgICBOb2RlJiBub2RlID0gdGV4dFJhbmdlLnN0YXJ0Q29udGFpbmVyKCk7CiAg
ICAgaWYgKG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpKQogICAgICAgICByZXR1cm4gJm5vZGU7
Ci0gICAgCi0gICAgcmV0dXJuIG5vZGUudHJhdmVyc2VUb0NoaWxkQXQodGV4dFJhbmdlLT5zdGFy
dE9mZnNldCgpKTsKKworICAgIHJldHVybiBub2RlLnRyYXZlcnNlVG9DaGlsZEF0KHRleHRSYW5n
ZS5zdGFydE9mZnNldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0KIAotU2ltcGxpZmllZEJhY2t3YXJk
c1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5n
ZSYgcmFuZ2UpCitTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICByYW5n
ZS5vd25lckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CisgICAgcmFuZ2Uuc3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgTm9kZSogc3RhcnROb2RlID0gJnJhbmdlLnN0
YXJ0Q29udGFpbmVyKCk7CiAgICAgTm9kZSogZW5kTm9kZSA9ICZyYW5nZS5lbmRDb250YWluZXIo
KTsKLSAgICBpbnQgc3RhcnRPZmZzZXQgPSByYW5nZS5zdGFydE9mZnNldCgpOwotICAgIGludCBl
bmRPZmZzZXQgPSByYW5nZS5lbmRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9
IHJhbmdlLnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gcmFuZ2UuZW5k
T2Zmc2V0KCk7CiAKICAgICBpZiAoIXN0YXJ0Tm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7
Ci0gICAgICAgIGlmIChzdGFydE9mZnNldCA+PSAwICYmIHN0YXJ0T2Zmc2V0IDwgc3RhdGljX2Nh
c3Q8aW50PihzdGFydE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSkgeworICAgICAgICBpZiAoc3Rh
cnRPZmZzZXQgPCBzdGFydE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSB7CiAgICAgICAgICAgICBz
dGFydE5vZGUgPSBzdGFydE5vZGUtPnRyYXZlcnNlVG9DaGlsZEF0KHN0YXJ0T2Zmc2V0KTsKICAg
ICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIWVu
ZE5vZGUtPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkgewotICAgICAgICBpZiAoZW5kT2Zmc2V0ID4g
MCAmJiBlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50PihlbmROb2RlLT5jb3VudENoaWxkTm9k
ZXMoKSkpIHsKKyAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAgJiYgZW5kT2Zmc2V0IDw9IGVuZE5v
ZGUtPmNvdW50Q2hpbGROb2RlcygpKSB7CiAgICAgICAgICAgICBlbmROb2RlID0gZW5kTm9kZS0+
dHJhdmVyc2VUb0NoaWxkQXQoZW5kT2Zmc2V0IC0gMSk7CiAgICAgICAgICAgICBlbmRPZmZzZXQg
PSBsYXN0T2Zmc2V0SW5Ob2RlKGVuZE5vZGUpOwogICAgICAgICB9CkBAIC0xMjc0LDggKzEyODUs
OCBAQCBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KCkKIAogICAgIG1fbGFzdFRleHROb2RlID0gJnRleHROb2RlOwogCi0gICAgaW50IHN0YXJ0T2Zm
c2V0OwotICAgIGludCBvZmZzZXRJbk5vZGU7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7Cisg
ICAgdW5zaWduZWQgb2Zmc2V0SW5Ob2RlOwogICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gaGFu
ZGxlRmlyc3RMZXR0ZXIoc3RhcnRPZmZzZXQsIG9mZnNldEluTm9kZSk7CiAgICAgaWYgKCFyZW5k
ZXJlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjk3LDcgKzEzMDgsNyBAQCBib29sIFNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICBBU1NF
UlQobV9wb3NpdGlvblN0YXJ0T2Zmc2V0IDwgbV9wb3NpdGlvbkVuZE9mZnNldCk7CiAgICAgQVNT
RVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9kZSA+PSAwKTsKICAgICBBU1NF
UlQobV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSA+IDApOwotICAgIEFTU0VSVCht
X3Bvc2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIDw9IHN0YXRpY19jYXN0PGludD4odGV4
dC5sZW5ndGgoKSkpOworICAgIEFTU0VSVChtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5O
b2RlIDw9IHRleHQubGVuZ3RoKCkpOwogCiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gdGV4dFttX3Bv
c2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIC0gMV07CiAgICAgbV9jb3B5YWJsZVRleHQu
c2V0KFdURk1vdmUodGV4dCksIG1fcG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9kZSwg
bV9wb3NpdGlvbkVuZE9mZnNldCAtIG1fcG9zaXRpb25TdGFydE9mZnNldCk7CkBAIC0xMzA2LDcg
KzEzMTcsNyBAQCBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHROb2RlKCkKICAgICByZXR1cm4gIW1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXI7CiB9CiAKLVJl
bmRlclRleHQqIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0TGV0
dGVyKGludCYgc3RhcnRPZmZzZXQsIGludCYgb2Zmc2V0SW5Ob2RlKQorUmVuZGVyVGV4dCogU2lt
cGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlRmlyc3RMZXR0ZXIodW5zaWduZWQm
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCYgb2Zmc2V0SW5Ob2RlKQogewogICAgIFJlbmRlclRleHQm
IHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fbm9kZS0+cmVuZGVyZXIoKSk7CiAg
ICAgc3RhcnRPZmZzZXQgPSAobV9ub2RlID09IG1fc3RhcnRDb250YWluZXIpID8gbV9zdGFydE9m
ZnNldCA6IDA7CkBAIC0xMzE3LDcgKzEzMjgsNyBAQCBSZW5kZXJUZXh0KiBTaW1wbGlmaWVkQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVGaXJzdExldHRlcihpbnQmIHN0YXJ0T2Zmc2V0LAog
ICAgIH0KIAogICAgIFJlbmRlclRleHRGcmFnbWVudCYgZnJhZ21lbnQgPSBkb3duY2FzdDxSZW5k
ZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsKLSAgICBpbnQgb2Zmc2V0QWZ0ZXJGaXJzdExldHRl
ciA9IGZyYWdtZW50LnN0YXJ0KCk7CisgICAgdW5zaWduZWQgb2Zmc2V0QWZ0ZXJGaXJzdExldHRl
ciA9IGZyYWdtZW50LnN0YXJ0KCk7CiAgICAgaWYgKHN0YXJ0T2Zmc2V0ID49IG9mZnNldEFmdGVy
Rmlyc3RMZXR0ZXIpIHsKICAgICAgICAgQVNTRVJUKCFtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVy
KTsKICAgICAgICAgb2Zmc2V0SW5Ob2RlID0gb2Zmc2V0QWZ0ZXJGaXJzdExldHRlcjsKQEAgLTEz
NzYsNyArMTM4Nyw3IEBAIHZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6ZXhp
dE5vZGUoKQogICAgIH0KIH0KIAotdm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9y
OjplbWl0Q2hhcmFjdGVyKFVDaGFyIGMsIE5vZGUmIG5vZGUsIGludCBzdGFydE9mZnNldCwgaW50
IGVuZE9mZnNldCkKK3ZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6ZW1pdENo
YXJhY3RlcihVQ2hhciBjLCBOb2RlJiBub2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQogewogICAgIG1fcG9zaXRpb25Ob2RlID0gJm5vZGU7CiAgICAgbV9wb3Np
dGlvblN0YXJ0T2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CkBAIC0xMzk3LDE3ICsxNDA4LDE3IEBAIGJv
b2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZVJlc3BlY3RpbmdSYW5n
ZShOb2RlKiBuZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWY8UmFuZ2U+IFNpbXBsaWZp
ZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKK1NpbXBsZVJhbmdlIFNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
IWF0RW5kKCkpOwogCi0gICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUobV9wb3NpdGlvbk5vZGUtPmRv
Y3VtZW50KCksIG1fcG9zaXRpb25Ob2RlLCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQsIG1fcG9zaXRp
b25Ob2RlLCBtX3Bvc2l0aW9uRW5kT2Zmc2V0KTsKKyAgICByZXR1cm4geyB7ICptX3Bvc2l0aW9u
Tm9kZSwgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0IH0sIHsgKm1fcG9zaXRpb25Ob2RlLCBtX3Bvc2l0
aW9uRW5kT2Zmc2V0IH0gfTsKIH0KIAogLy8gLS0tLS0tLS0KIAotQ2hhcmFjdGVySXRlcmF0b3I6
OkNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgYmVoYXZpb3IpCi0gICAgOiBtX3VuZGVybHlpbmdJdGVyYXRvcigmcmFuZ2UsIGJlaGF2aW9y
KQorQ2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdl
JiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCisgICAgOiBtX3VuZGVybHlp
bmdJdGVyYXRvcihyYW5nZSwgYmVoYXZpb3IpCiB7CiAgICAgd2hpbGUgKCFhdEVuZCgpICYmICFt
X3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIG1fdW5kZXJseWlu
Z0l0ZXJhdG9yLmFkdmFuY2UoKTsKQEAgLTE0MjAsMzQgKzE0MzEsMzEgQEAgQ2hhcmFjdGVySXRl
cmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRl
eHRJdGVyYXRvckIKICAgICAgICAgbV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpOwogfQog
Ci1SZWY8UmFuZ2U+IENoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CitTaW1wbGVSYW5n
ZSBDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewotICAgIFJlZjxSYW5nZT4gcmFu
Z2UgPSBtX3VuZGVybHlpbmdJdGVyYXRvci5yYW5nZSgpOworICAgIGF1dG8gcmFuZ2UgPSBtX3Vu
ZGVybHlpbmdJdGVyYXRvci5yYW5nZSgpOwogICAgIGlmICghbV91bmRlcmx5aW5nSXRlcmF0b3Iu
YXRFbmQoKSkgewogICAgICAgICBpZiAobV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0
aCgpIDw9IDEpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3J1bk9mZnNldCA9PSAwKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSByYW5nZS0+c3RhcnRDb250YWlu
ZXIoKTsKLSAgICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmcmFuZ2UtPmVuZENvbnRhaW5lcigp
KTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZS0+c3RhcnRPZmZzZXQoKSArIG1fcnVu
T2Zmc2V0OwotICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KG5vZGUsIG9mZnNldCk7Ci0gICAg
ICAgICAgICByYW5nZS0+c2V0RW5kKG5vZGUsIG9mZnNldCArIDEpOworICAgICAgICAgICAgTm9k
ZSYgbm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBBU1NFUlQoJm5v
ZGUgPT0gJnJhbmdlLmVuZENvbnRhaW5lcigpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCA9IHJhbmdlLnN0YXJ0T2Zmc2V0KCkgKyBtX3J1bk9mZnNldDsKKyAgICAgICAgICAgIHJhbmdl
ID0geyB7IG5vZGUsIG9mZnNldCB9LCB7IG5vZGUsIG9mZnNldCArIDEgfSB9OwogICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiByYW5nZTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJJdGVyYXRvcjo6
YWR2YW5jZShpbnQgY291bnQpCit2b2lkIENoYXJhY3Rlckl0ZXJhdG9yOjphZHZhbmNlKHVuc2ln
bmVkIGNvdW50KQogewotICAgIGlmIChjb3VudCA8PSAwKSB7Ci0gICAgICAgIEFTU0VSVChjb3Vu
dCA9PSAwKTsKKyAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAor
CiAgICAgbV9hdEJyZWFrID0gZmFsc2U7CiAKICAgICAvLyBlYXN5IGlmIHRoZXJlIGlzIGVub3Vn
aCBsZWZ0IGluIHRoZSBjdXJyZW50IG1fdW5kZXJseWluZ0l0ZXJhdG9yIHJ1bgotICAgIGludCBy
ZW1haW5pbmcgPSBtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCkgLSBtX3J1bk9m
ZnNldDsKKyAgICB1bnNpZ25lZCByZW1haW5pbmcgPSBtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0
KCkubGVuZ3RoKCkgLSBtX3J1bk9mZnNldDsKICAgICBpZiAoY291bnQgPCByZW1haW5pbmcpIHsK
ICAgICAgICAgbV9ydW5PZmZzZXQgKz0gY291bnQ7CiAgICAgICAgIG1fb2Zmc2V0ICs9IGNvdW50
OwpAQCAtMTQ2MCw3ICsxNDY4LDcgQEAgdm9pZCBDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5jZShp
bnQgY291bnQpCiAgICAgCiAgICAgLy8gbW92ZSB0byBhIHN1YnNlcXVlbnQgbV91bmRlcmx5aW5n
SXRlcmF0b3IgcnVuCiAgICAgZm9yIChtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZhbmNlKCk7ICFh
dEVuZCgpOyBtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IHJ1
bkxlbmd0aCA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAg
dW5zaWduZWQgcnVuTGVuZ3RoID0gbV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgp
OwogICAgICAgICBpZiAoIXJ1bkxlbmd0aCkKICAgICAgICAgICAgIG1fYXRCcmVhayA9IHRydWU7
CiAgICAgICAgIGVsc2UgewpAQCAtMTQ4MiwyNSArMTQ5MCwyMyBAQCB2b2lkIENoYXJhY3Rlckl0
ZXJhdG9yOjphZHZhbmNlKGludCBjb3VudCkKICAgICBtX3J1bk9mZnNldCA9IDA7CiB9CiAKLXN0
YXRpYyBSZWY8UmFuZ2U+IGNoYXJhY3RlclN1YnJhbmdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2hh
cmFjdGVySXRlcmF0b3ImIGl0LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKQorc3RhdGljIFNpbXBs
ZVJhbmdlIGNoYXJhY3RlclN1YnJhbmdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2hhcmFjdGVySXRl
cmF0b3ImIGl0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpdC5h
ZHZhbmNlKG9mZnNldCk7CiAgICAgaWYgKGl0LmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBSYW5n
ZTo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgcmV0dXJuIHsgeyBkb2N1bWVudCwgMCB9LCB7
IGRvY3VtZW50LCAwIH0gfTsKIAotICAgIFJlZjxSYW5nZT4gc3RhcnQgPSBpdC5yYW5nZSgpOwor
ICAgIGF1dG8gc3RhcnQgPSBpdC5yYW5nZSgpLnN0YXJ0OwogCiAgICAgaWYgKGxlbmd0aCA+IDEp
CiAgICAgICAgIGl0LmFkdmFuY2UobGVuZ3RoIC0gMSk7CiAgICAgaWYgKGl0LmF0RW5kKCkpCi0g
ICAgICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KTsKLQotICAgIFJlZjxSYW5nZT4g
ZW5kID0gaXQucmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIHsgeyBkb2N1bWVudCwgMCB9LCB7IGRv
Y3VtZW50LCAwIH0gfTsKIAotICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCAmc3Rh
cnQtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0LT5zdGFydE9mZnNldCgpLCAmZW5kLT5lbmRDb250
YWluZXIoKSwgZW5kLT5lbmRPZmZzZXQoKSk7CisgICAgcmV0dXJuIHsgV1RGTW92ZShzdGFydCks
IGl0LnJhbmdlKCkuZW5kIH07CiB9CiAKLUJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNr
d2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCitCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2ltcGxlUmFu
Z2UmIHJhbmdlKQogICAgIDogbV91bmRlcmx5aW5nSXRlcmF0b3IocmFuZ2UpCiAgICAgLCBtX29m
ZnNldCgwKQogICAgICwgbV9ydW5PZmZzZXQoMCkKQEAgLTE1MTAsMzMgKzE1MTYsMzAgQEAgQmFj
a3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0
IFJhbmdlJiByYW5nZSkKICAgICAgICAgbV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpOwog
fQogCi1SZWY8UmFuZ2U+IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0
CitTaW1wbGVSYW5nZSBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAog
ewotICAgIFJlZjxSYW5nZT4gciA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnJhbmdlKCk7CisgICAg
YXV0byByID0gbV91bmRlcmx5aW5nSXRlcmF0b3IucmFuZ2UoKTsKICAgICBpZiAoIW1fdW5kZXJs
eWluZ0l0ZXJhdG9yLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKG1fdW5kZXJseWluZ0l0ZXJhdG9y
LnRleHQoKS5sZW5ndGgoKSA8PSAxKQogICAgICAgICAgICAgQVNTRVJUKG1fcnVuT2Zmc2V0ID09
IDApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSByLT5zdGFydENv
bnRhaW5lcigpOwotICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZyLT5lbmRDb250YWluZXIo
KSk7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gci0+ZW5kT2Zmc2V0KCkgLSBtX3J1bk9mZnNl
dDsKLSAgICAgICAgICAgIHItPnNldFN0YXJ0KG5vZGUsIG9mZnNldCAtIDEpOwotICAgICAgICAg
ICAgci0+c2V0RW5kKG5vZGUsIG9mZnNldCk7CisgICAgICAgICAgICBOb2RlJiBub2RlID0gci5z
dGFydENvbnRhaW5lcigpOworICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZyLmVuZENvbnRh
aW5lcigpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHIuZW5kT2Zmc2V0KCkgLSBt
X3J1bk9mZnNldDsKKyAgICAgICAgICAgIHIgPSB7IHsgbm9kZSwgb2Zmc2V0IC0gMSB9LCB7IG5v
ZGUsIG9mZnNldCB9IH07CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHI7CiB9CiAKLXZv
aWQgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQordm9pZCBC
YWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5jZSh1bnNpZ25lZCBjb3VudCkKIHsKLSAg
ICBpZiAoY291bnQgPD0gMCkgewotICAgICAgICBBU1NFUlQoIWNvdW50KTsKKyAgICBpZiAoIWNv
dW50KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgbV9hdEJyZWFrID0gZmFsc2U7CiAK
LSAgICBpbnQgcmVtYWluaW5nID0gbV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgp
IC0gbV9ydW5PZmZzZXQ7CisgICAgdW5zaWduZWQgcmVtYWluaW5nID0gbV91bmRlcmx5aW5nSXRl
cmF0b3IudGV4dCgpLmxlbmd0aCgpIC0gbV9ydW5PZmZzZXQ7CiAgICAgaWYgKGNvdW50IDwgcmVt
YWluaW5nKSB7CiAgICAgICAgIG1fcnVuT2Zmc2V0ICs9IGNvdW50OwogICAgICAgICBtX29mZnNl
dCArPSBjb3VudDsKQEAgLTE1NDcsNyArMTU1MCw3IEBAIHZvaWQgQmFja3dhcmRzQ2hhcmFjdGVy
SXRlcmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQogICAgIG1fb2Zmc2V0ICs9IHJlbWFpbmluZzsK
IAogICAgIGZvciAobV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpOyAhYXRFbmQoKTsgbV91
bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpKSB7Ci0gICAgICAgIGludCBydW5MZW5ndGggPSBt
X3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVkIHJ1
bkxlbmd0aCA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKTsKICAgICAgICAg
aWYgKHJ1bkxlbmd0aCA9PSAwKQogICAgICAgICAgICAgbV9hdEJyZWFrID0gdHJ1ZTsKICAgICAg
ICAgZWxzZSB7CkBAIC0xNTY4LDggKzE1NzEsOCBAQCB2b2lkIEJhY2t3YXJkc0NoYXJhY3Rlckl0
ZXJhdG9yOjphZHZhbmNlKGludCBjb3VudCkKIAogLy8gLS0tLS0tLS0KIAotV29yZEF3YXJlSXRl
cmF0b3I6OldvcmRBd2FyZUl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkKLSAgICA6IG1fdW5k
ZXJseWluZ0l0ZXJhdG9yKCZyYW5nZSkKK1dvcmRBd2FyZUl0ZXJhdG9yOjpXb3JkQXdhcmVJdGVy
YXRvcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCisgICAgOiBtX3VuZGVybHlpbmdJdGVyYXRv
cihyYW5nZSkKICAgICAsIG1fZGlkTG9va0FoZWFkKHRydWUpIC8vIHNvIHdlIGNvbnNpZGVyIHRo
ZSBmaXJzdCBjaHVuayBmcm9tIHRoZSB0ZXh0IGl0ZXJhdG9yCiB7CiAgICAgYWR2YW5jZSgpOyAv
LyBnZXQgaW4gcG9zaXRpb24gb3ZlciB0aGUgZmlyc3QgY2h1bmsgb2YgdGV4dApAQCAtMjE1OCw3
ICsyMTYxLDcgQEAgaW5saW5lIGJvb2wgU2VhcmNoQnVmZmVyOjppc1dvcmRFbmRNYXRjaChzaXpl
X3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgaW50IGVuZFdvcmQ7CiAgICAgLy8g
U3RhcnQgc2VhcmNoaW5nIGF0IHRoZSBlbmQgb2YgbWF0Y2hlZCBzZWFyY2gsIHNvIHRoYXQgbXVs
dGlwbGUgd29yZCBtYXRjaGVzIHN1Y2NlZWQuCiAgICAgZmluZEVuZFdvcmRCb3VuZGFyeShTdHJp
bmdWaWV3KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSwgc3RhcnQgKyBsZW5ndGgg
LSAxLCAmZW5kV29yZCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZW5kV29yZCkg
PT0gKHN0YXJ0ICsgbGVuZ3RoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihlbmRX
b3JkKSA9PSBzdGFydCArIGxlbmd0aDsKIH0KIAogaW5saW5lIGJvb2wgU2VhcmNoQnVmZmVyOjpp
c1dvcmRTdGFydE1hdGNoKHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKQEAgLTIx
NjgsOCArMjE3MSw4IEBAIGlubGluZSBib29sIFNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXRj
aChzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgaWYgKCFzdGFydCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpbnQgc2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsKLSAg
ICBpbnQgb2Zmc2V0ID0gc3RhcnQ7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1fYnVmZmVyLnNpemUo
KTsKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSBzdGFydDsKICAgICBVQ2hhcjMyIGZpcnN0Q2hhcmFj
dGVyOwogICAgIFUxNl9HRVQobV9idWZmZXIuZGF0YSgpLCAwLCBvZmZzZXQsIHNpemUsIGZpcnN0
Q2hhcmFjdGVyKTsKIApAQCAtMjM5NiwxOCArMjM5OSwxOCBAQCBzaXplX3QgU2VhcmNoQnVmZmVy
OjpsZW5ndGgoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1pbnQgVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9u
KQorc2l6ZV90IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKIHsKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOworICAgIHNpemVfdCBsZW5ndGggPSAwOwogICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0
KHJhbmdlLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJh
Y3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhh
dmlvcik7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGxlbmd0aCArPSBpdC50
ZXh0KCkubGVuZ3RoKCk7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNl
dCwgaW50IGNoYXJhY3RlckNvdW50KQorU2ltcGxlUmFuZ2UgVGV4dEl0ZXJhdG9yOjpzdWJyYW5n
ZShjb25zdCBTaW1wbGVSYW5nZSYgZW50aXJlUmFuZ2UsIHNpemVfdCBjaGFyYWN0ZXJPZmZzZXQs
IHNpemVfdCBjaGFyYWN0ZXJDb3VudCkKIHsKICAgICBDaGFyYWN0ZXJJdGVyYXRvciBlbnRpcmVS
YW5nZUl0ZXJhdG9yKGVudGlyZVJhbmdlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2Uo
ZW50aXJlUmFuZ2Uub3duZXJEb2N1bWVudCgpLCBlbnRpcmVSYW5nZUl0ZXJhdG9yLCBjaGFyYWN0
ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2Uo
ZW50aXJlUmFuZ2Uuc3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBlbnRpcmVSYW5nZUl0ZXJh
dG9yLCBjaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKIH0KIAogc3RhdGljIGlubGlu
ZSBib29sIGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCkBA
IC0yNDE4LDI3ICsyNDIxLDI0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luc2lkZVJlcGxhY2Vk
RWxlbWVudChUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKQogICAgIHJldHVybiBub2RlICYmIGlzUmVu
ZGVyZXJSZXBsYWNlZEVsZW1lbnQobm9kZS0+cmVuZGVyZXIoKSk7CiB9CiAKLVJlZlB0cjxSYW5n
ZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2Rl
KiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxl
Y3Rpb25QcmVzZXJ2YXRpb24pCitPcHRpb25hbDxTaW1wbGVSYW5nZT4gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgc2l6ZV90IHJh
bmdlTG9jYXRpb24sIHNpemVfdCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2
YXRpb24pCiB7Ci0gICAgUmVmPFJhbmdlPiByZXN1bHRSYW5nZSA9IHNjb3BlLT5kb2N1bWVudCgp
LmNyZWF0ZVJhbmdlKCk7CisgICAgU2ltcGxlUmFuZ2UgcmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9j
dW1lbnQoKS5jcmVhdGVSYW5nZSgpOwogCi0gICAgaW50IGRvY1RleHRQb3NpdGlvbiA9IDA7Ci0g
ICAgaW50IHJhbmdlRW5kID0gcmFuZ2VMb2NhdGlvbiArIHJhbmdlTGVuZ3RoOworICAgIHVuc2ln
bmVkIGRvY1RleHRQb3NpdGlvbiA9IDA7CisgICAgdW5zaWduZWQgcmFuZ2VFbmQgPSByYW5nZUxv
Y2F0aW9uICsgcmFuZ2VMZW5ndGg7CiAgICAgYm9vbCBzdGFydFJhbmdlRm91bmQgPSBmYWxzZTsK
IAotICAgIFJlZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7
CisgICAgU2ltcGxlUmFuZ2UgdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7
CiAKLSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLnB0cigpLCBmb3JTZWxlY3Rpb25Q
cmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJs
ZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgVGV4dEl0ZXJh
dG9yIGl0KHRleHRSdW5SYW5nZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJh
dG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0
b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIAogICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVj
ayBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4OT4uCi0gICAgaWYgKCFyYW5nZUxvY2F0aW9uICYm
ICFyYW5nZUxlbmd0aCAmJiBpdC5hdEVuZCgpKSB7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRT
dGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXN1bHRS
YW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCk7Ci0gICAgICAg
IHJldHVybiByZXN1bHRSYW5nZTsKLSAgICB9CisgICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFy
YW5nZUxlbmd0aCAmJiBpdC5hdEVuZCgpKQorICAgICAgICByZXR1cm4gU2ltcGxlUmFuZ2UgeyB0
ZXh0UnVuUmFuZ2Uuc3RhcnQsIHRleHRSdW5SYW5nZS5zdGFydCB9OwogCiAgICAgZm9yICg7ICFp
dC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQo
KS5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gaXQudGV4dCgpLmxlbmd0aCgp
OwogICAgICAgICB0ZXh0UnVuUmFuZ2UgPSBpdC5yYW5nZSgpOwogCiAgICAgICAgIGJvb2wgZm91
bmRTdGFydCA9IHJhbmdlTG9jYXRpb24gPj0gZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlTG9jYXRp
b24gPD0gZG9jVGV4dFBvc2l0aW9uICsgbGVuZ3RoOwpAQCAtMjQ0OSw0MCArMjQ0OSwzOSBAQCBS
ZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29u
dGFpbmVyTm9kZSogc2NvcGUsIGludAogICAgICAgICAgICAgLy8gcG9zaXRpb24gZm9yIGVtaXR0
ZWQgJ1xuJ3Mgb3IgaWYgdGhlIHJlbmRlcmVyIG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBs
YWNlZCBlbGVtZW50LgogICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAxICYmIChpdC50ZXh0KClb
MF0gPT0gJ1xuJyB8fCBpc0luc2lkZVJlcGxhY2VkRWxlbWVudChpdCkpKSB7CiAgICAgICAgICAg
ICAgICAgaXQuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAgIGlmICghaXQuYXRFbmQoKSkgewot
ICAgICAgICAgICAgICAgICAgICBSZWY8UmFuZ2U+IHJhbmdlID0gaXQucmFuZ2UoKTsKLSAgICAg
ICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQocmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCksIHJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQ
b3NpdGlvbigpOworICAgICAgICAgICAgICAgIGlmICghaXQuYXRFbmQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9IGl0LnJhbmdlKCkuc3RhcnQ7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gbWFr
ZVBvc2l0aW9uTGVnYWN5RWRpdGluZyh0ZXh0UnVuUmFuZ2Uuc3RhcnQpOwogICAgICAgICAgICAg
ICAgICAgICBQb3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24ocnVuU3RhcnQpLm5leHQo
KS5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocnVuRW5kLmlzTm90
TnVsbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQoKnJ1
bkVuZC5jb250YWluZXJOb2RlKCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2Rl
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9IHsgKnJ1bkVu
ZC5jb250YWluZXJOb2RlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihydW5FbmQuY29tcHV0ZU9m
ZnNldEluQ29udGFpbmVyTm9kZSgpKSB9OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7CiAgICAgICAgICAgICBz
dGFydFJhbmdlRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3Rh
cnRDb250YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gcmFuZ2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1
bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQg
KyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgaWYgKHRleHRSdW5S
YW5nZS5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgeworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIG9mZnNldCA9IHJhbmdlTG9jYXRpb24gLSBkb2NUZXh0UG9zaXRpb247CisgICAgICAg
ICAgICAgICAgcmVzdWx0UmFuZ2Uuc3RhcnQgPSB7IHRleHRSdW5SYW5nZS5zdGFydENvbnRhaW5l
cigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2Uuc3RhcnRPZmZzZXQoKSB9OwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9z
aXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVu
UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLnN0YXJ0ID0gdGV4dFJ1blJhbmdlLnN0YXJ0
OwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2Ut
PnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+ZW5k
T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IHRleHRS
dW5SYW5nZS5lbmQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZm91
bmRFbmQpIHsKLSAgICAgICAgICAgIGlmICh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHJhbmdlRW5kIC0g
ZG9jVGV4dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4
dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0
T2Zmc2V0KCkpOworICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS5zdGFydENvbnRhaW5lcigp
LmlzVGV4dE5vZGUoKSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHJhbmdl
RW5kIC0gZG9jVGV4dFBvc2l0aW9uOworICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9
IHsgdGV4dFJ1blJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIG9mZnNldCArIHRleHRSdW5SYW5nZS5z
dGFydE9mZnNldCgpIH07CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlm
IChyYW5nZUVuZCA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCB0ZXh0UnVuUmFu
Z2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS5lbmQg
PSB0ZXh0UnVuUmFuZ2Uuc3RhcnQ7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCks
IHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRS
YW5nZS5lbmQgPSB0ZXh0UnVuUmFuZ2UuZW5kOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ5Miwx
NSArMjQ5MSwxNSBAQCBSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludAogICAgIH0KICAgICAKICAgICBp
ZiAoIXN0YXJ0UmFuZ2VGb3VuZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5k
ID4gZG9jVGV4dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAg
IHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1
blJhbmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IHRleHRSdW5S
YW5nZS5lbmQ7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogfQogCi1ib29sIFRleHRJ
dGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0
IFJhbmdlKiByYW5nZSwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgpCitib29sIFRl
eHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgp
CiB7CiAgICAgbG9jYXRpb24gPSBub3RGb3VuZDsKICAgICBsZW5ndGggPSAwOwpAQCAtMjUxMCw2
MSArMjUwOSw0OCBAQCBib29sIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9t
UmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiByYW5nZQogICAgIC8vIGJlY2F1c2Ugb2Yg
dGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CiAgICAg
Ly8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gZW5zdXJlIHRoYXQgdGhlIHJhbmdl
IGRvZXMgbm90IGNyb3NzIGEKICAgICAvLyBib3VuZGFyeSBvZiBvbmUgb2YgdGhvc2UuCi0gICAg
aWYgKCZyYW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkuaXNEZXNjZW5kYW50T2Yoc2NvcGUpKQorICAgIGlmICgmcmFuZ2Uuc3RhcnRDb250
YWluZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2Uuc3RhcnRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRP
ZihzY29wZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoJnJhbmdlLT5lbmRDb250
YWluZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9m
KHNjb3BlKSkKKyAgICBpZiAoJnJhbmdlLmVuZENvbnRhaW5lcigpICE9IHNjb3BlICYmICFyYW5n
ZS5lbmRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFJlZjxSYW5nZT4gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+
ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0
YXJ0T2Zmc2V0KCkpOwotICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09
IHNjb3BlKTsKLSAgICBsb2NhdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJh
bmdlLnB0cigpKTsKKyAgICBTaW1wbGVSYW5nZSB0ZXN0UmFuZ2UgeyB7ICpzY29wZSwgMCB9LCBy
YW5nZS5zdGFydCB9OworICAgIEFTU0VSVCgmdGVzdFJhbmdlLnN0YXJ0Q29udGFpbmVyKCkgPT0g
c2NvcGUpOworICAgIGxvY2F0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFu
Z2UpOwogCi0gICAgdGVzdFJhbmdlLT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5n
ZS0+ZW5kT2Zmc2V0KCkpOwotICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigp
ID09IHNjb3BlKTsKLSAgICBsZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RS
YW5nZS5wdHIoKSkgLSBsb2NhdGlvbjsKKyAgICB0ZXN0UmFuZ2UuZW5kID0gcmFuZ2UuZW5kOwor
ICAgIEFTU0VSVCgmdGVzdFJhbmdlLnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOworICAgIGxl
bmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlKSAtIGxvY2F0aW9uOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiAvLyAtLS0tLS0tLQogCi1ib29sIGhhc0FueVBsYWluVGV4
dChjb25zdCBSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQorLy8g
VGhlIGluaXRpYWwgYnVmZmVyIHNpemUgY2FuIGJlIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTkyCitzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIHBsYWluVGV4dEluaXRpYWxCdWZmZXJDYXBhY2l0eSA9IDEgPDwgMTU7
CisKK2Jvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0
b3IgeyAmcmFuZ2UsIGJlaGF2aW9yIH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZh
bmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvciB7IHJhbmdlLCBiZWhhdmlv
ciB9OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAgICAgIGlm
ICghaXRlcmF0b3IudGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBwbGFpblRleHQoUG9zaXRpb24g
c3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9y
LCBib29sIGlzRGlzcGxheVN0cmluZykKK1N0cmluZyBwbGFpblRleHQoUG9zaXRpb24gc3RhcnQs
IFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IsIGJvb2wgaXNEaXNw
bGF5U3RyaW5nKQogewotICAgIC8vIFRoZSBpbml0aWFsIGJ1ZmZlciBzaXplIGNhbiBiZSBjcml0
aWNhbCBmb3IgcGVyZm9ybWFuY2U6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MTE5MgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkgPSAx
IDw8IDE1OwotCiAgICAgaWYgKCFzdGFydC5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4geyB9
OwotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKCpzdGFydC5kb2N1bWVudCgpKTsKLQotICAg
IHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCA9IDA7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGluaXRpYWxDYXBhY2l0eSk7Ci0gICAgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IgPSBkZWZhdWx0QmVoYXZpb3I7CiAgICAgaWYgKCFpc0Rp
c3BsYXlTdHJpbmcpCiAgICAgICAgIGJlaGF2aW9yID0gc3RhdGljX2Nhc3Q8VGV4dEl0ZXJhdG9y
QmVoYXZpb3I+KGJlaGF2aW9yIHwgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2Nv
ZGluZyk7Ci0KLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzdGFydCwgZW5kLCBiZWhhdmlvcik7
ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkocGxhaW5UZXh0SW5pdGlhbEJ1ZmZlckNhcGFj
aXR5KTsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzdGFydCwgZW5kLCBiZWhhdmlvcik7ICFp
dC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1
aWxkZXIoYnVpbGRlcik7Ci0gICAgICAgIGJ1ZmZlckxlbmd0aCArPSBpdC50ZXh0KCkubGVuZ3Ro
KCk7Ci0gICAgfQotCi0gICAgaWYgKCFidWZmZXJMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwotCiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKLQog
ICAgIGlmIChpc0Rpc3BsYXlTdHJpbmcpCi0gICAgICAgIGRvY3VtZW50LT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKHJlc3VsdCk7Ci0KKyAgICAgICAgcmVzdWx0ID0gc3RhcnQuZG9j
dW1lbnQoKS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhyZXN1bHQpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTI1NzMsMTQgKzI1NTksMjEgQEAgU3RyaW5nIHBsYWluVGV4
dFJlcGxhY2luZ05vQnJlYWtTcGFjZShQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0
SXRlcmF0b3IKICAgICByZXR1cm4gcGxhaW5UZXh0KHN0YXJ0LCBlbmQsIGRlZmF1bHRCZWhhdmlv
ciwgaXNEaXNwbGF5U3RyaW5nKS5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKIH0KIAotU3Ry
aW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRl
ZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCitTdHJpbmcgcGxhaW5UZXh0KGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IsIGJv
b2wgaXNEaXNwbGF5U3RyaW5nKQogewotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwotICAgIHJldHVybiBwbGFpblRleHQocmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgcmFuZ2UtPmVuZFBvc2l0aW9uKCksIGRlZmF1bHRCZWhhdmlvciwgaXNEaXNwbGF5U3RyaW5n
KTsKKyAgICBpZiAoIWlzRGlzcGxheVN0cmluZykKKyAgICAgICAgYmVoYXZpb3IgPSBzdGF0aWNf
Y2FzdDxUZXh0SXRlcmF0b3JCZWhhdmlvcj4oYmVoYXZpb3IgfCBUZXh0SXRlcmF0b3JFbWl0c1Rl
eHRzV2l0aG91dFRyYW5zY29kaW5nKTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkocGxhaW5UZXh0SW5pdGlhbEJ1ZmZlckNhcGFjaXR5KTsK
KyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSwgYmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsg
aXQuYWR2YW5jZSgpKQorICAgICAgICBpdC5hcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKGJ1aWxk
ZXIpOworICAgIFN0cmluZyByZXN1bHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgaWYgKGlz
RGlzcGxheVN0cmluZykKKyAgICAgICAgcmVzdWx0ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5k
aXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotU3RyaW5nIHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVz
dGluZyhjb25zdCBSYW5nZSYgcmFuZ2UpCitTdHJpbmcgcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNU
ZXh0SXRlcmF0b3JGb3JUZXN0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAgICBT
dHJpbmcgcmVzdWx0OwogICAgIGZvciAoU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBi
YWNrd2FyZHNJdGVyYXRvcihyYW5nZSk7ICFiYWNrd2FyZHNJdGVyYXRvci5hdEVuZCgpOyBiYWNr
d2FyZHNJdGVyYXRvci5hZHZhbmNlKCkpCkBAIC0yNTg4LDE2ICsyNTgxLDE1IEBAIFN0cmluZyBw
bGFpblRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcoY29uc3QgUmFuZ2Um
IHJhbmdlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBwbGFpblRleHRSZXBsYWNp
bmdOb0JyZWFrU3BhY2UoY29uc3QgUmFuZ2UqIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBk
ZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nKQorU3RyaW5nIHBsYWluVGV4dFJl
cGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRv
ckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7CiAgICAg
cmV0dXJuIHBsYWluVGV4dChyYW5nZSwgZGVmYXVsdEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJpbmcp
LnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcpOwogfQogCi1zdGF0aWMgUmVmPFJhbmdlPiBjb2xs
YXBzZWRUb0JvdW5kYXJ5KGNvbnN0IFJhbmdlJiByYW5nZSwgYm9vbCBmb3J3YXJkKQorc3RhdGlj
IFNpbXBsZVJhbmdlIGNvbGxhcHNlZFRvQm91bmRhcnkoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
LCBib29sIGZvcndhcmQpCiB7Ci0gICAgUmVmPFJhbmdlPiByZXN1bHQgPSByYW5nZS5jbG9uZVJh
bmdlKCk7Ci0gICAgcmVzdWx0LT5jb2xsYXBzZSghZm9yd2FyZCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICBhdXRvJiBlbmRwb2ludCA9IGZvcndhcmQgPyByYW5nZS5lbmQgOiByYW5nZS5zdGFy
dDsKKyAgICByZXR1cm4geyBlbmRwb2ludCwgZW5kcG9pbnQgfTsKIH0KIAogc3RhdGljIFRleHRJ
dGVyYXRvckJlaGF2aW9yIGZpbmRJdGVyYXRvck9wdGlvbnMoRmluZE9wdGlvbnMgb3B0aW9ucykK
QEAgLTI2MDgsMTMgKzI2MDAsMTIgQEAgc3RhdGljIFRleHRJdGVyYXRvckJlaGF2aW9yIGZpbmRJ
dGVyYXRvck9wdGlvbnMoRmluZE9wdGlvbnMgb3B0aW9ucykKICAgICByZXR1cm4gaXRlcmF0b3JP
cHRpb25zOwogfQogCi1zdGF0aWMgdm9pZCBmaW5kUGxhaW5UZXh0TWF0Y2hlcyhjb25zdCBSYW5n
ZSYgcmFuZ2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCBjb25z
dCBXVEY6OkZ1bmN0aW9uPGJvb2woc2l6ZV90LCBzaXplX3QpPiYgbWF0Y2gpCitzdGF0aWMgdm9p
ZCBmaW5kUGxhaW5UZXh0TWF0Y2hlcyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2woc2l6ZV90LCBzaXplX3QpPiYgbWF0Y2gpCiB7CiAgICAgU2VhcmNoQnVmZmVyIGJ1ZmZlcih0
YXJnZXQsIG9wdGlvbnMpOwogICAgIGlmIChidWZmZXIubmVlZHNNb3JlQ29udGV4dCgpKSB7Ci0g
ICAgICAgIFJlZjxSYW5nZT4gYmVmb3JlU3RhcnRSYW5nZSA9IHJhbmdlLm93bmVyRG9jdW1lbnQo
KS5jcmVhdGVSYW5nZSgpOwotICAgICAgICBiZWZvcmVTdGFydFJhbmdlLT5zZXRFbmQocmFuZ2Uu
c3RhcnRDb250YWluZXIoKSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGZvciAoU2lt
cGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBiYWNrd2FyZHNJdGVyYXRvcihiZWZvcmVTdGFy
dFJhbmdlLmdldCgpKTsgIWJhY2t3YXJkc0l0ZXJhdG9yLmF0RW5kKCk7IGJhY2t3YXJkc0l0ZXJh
dG9yLmFkdmFuY2UoKSkgeworICAgICAgICBTaW1wbGVSYW5nZSBiZWZvcmVTdGFydFJhbmdlIHsg
eyByYW5nZS5zdGFydC5kb2N1bWVudCgpLCAwIH0sIHJhbmdlLnN0YXJ0IH07CisgICAgICAgIGZv
ciAoU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBiYWNrd2FyZHNJdGVyYXRvcihiZWZv
cmVTdGFydFJhbmdlKTsgIWJhY2t3YXJkc0l0ZXJhdG9yLmF0RW5kKCk7IGJhY2t3YXJkc0l0ZXJh
dG9yLmFkdmFuY2UoKSkgewogICAgICAgICAgICAgYnVmZmVyLnByZXBlbmRDb250ZXh0KGJhY2t3
YXJkc0l0ZXJhdG9yLnRleHQoKSk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlci5uZWVkc01vcmVD
b250ZXh0KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjQyLDE1ICsyNjMzLDE1IEBA
IHN0YXRpYyB2b2lkIGZpbmRQbGFpblRleHRNYXRjaGVzKGNvbnN0IFJhbmdlJiByYW5nZSwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPCiAgICAgfQogfQogCi1zdGF0aWMgUmVmPFJhbmdlPiBy
YW5nZUZvck1hdGNoKGNvbnN0IFJhbmdlJiByYW5nZSwgRmluZE9wdGlvbnMgb3B0aW9ucywgc2l6
ZV90IG1hdGNoU3RhcnQsIHNpemVfdCBtYXRjaExlbmd0aCwgYm9vbCBzZWFyY2hGb3J3YXJkKQor
c3RhdGljIFNpbXBsZVJhbmdlIHJhbmdlRm9yTWF0Y2goY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
LCBGaW5kT3B0aW9ucyBvcHRpb25zLCBzaXplX3QgbWF0Y2hTdGFydCwgc2l6ZV90IG1hdGNoTGVu
Z3RoLCBib29sIHNlYXJjaEZvcndhcmQpCiB7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGNvbGxhcHNlZFRvQm91bmRhcnkocmFuZ2UsIHNlYXJjaEZvcndhcmQpOwogICAg
IENoYXJhY3Rlckl0ZXJhdG9yIHJhbmdlQ29tcHV0ZUl0ZXJhdG9yKHJhbmdlLCBmaW5kSXRlcmF0
b3JPcHRpb25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2UocmFuZ2Uu
b3duZXJEb2N1bWVudCgpLCByYW5nZUNvbXB1dGVJdGVyYXRvciwgbWF0Y2hTdGFydCwgbWF0Y2hM
ZW5ndGgpOworICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShyYW5nZS5zdGFydC5kb2N1bWVu
dCgpLCByYW5nZUNvbXB1dGVJdGVyYXRvciwgbWF0Y2hTdGFydCwgbWF0Y2hMZW5ndGgpOwogfQog
Ci1SZWY8UmFuZ2U+IGZpbmRDbG9zZXN0UGxhaW5UZXh0KGNvbnN0IFJhbmdlJiByYW5nZSwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIHRhcmdldE9m
ZnNldCkKK1NpbXBsZVJhbmdlIGZpbmRDbG9zZXN0UGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdl
JiByYW5nZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIHRhcmdldE9mZnNldCkKIHsKICAgICBzaXplX3QgbWF0Y2hTdGFydCA9IDA7CiAgICAgc2l6
ZV90IG1hdGNoTGVuZ3RoID0gMDsKQEAgLTI2NjksNyArMjY2MCw3IEBAIFJlZjxSYW5nZT4gZmlu
ZENsb3Nlc3RQbGFpblRleHQoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdl
dCwgRmluZE9wCiAgICAgcmV0dXJuIHJhbmdlRm9yTWF0Y2gocmFuZ2UsIG9wdGlvbnMsIG1hdGNo
U3RhcnQsIG1hdGNoTGVuZ3RoLCAhb3B0aW9ucy5jb250YWlucyhCYWNrd2FyZHMpKTsKIH0KIAot
UmVmPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5n
JiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCitTaW1wbGVSYW5nZSBmaW5kUGxhaW5UZXh0
KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRp
b25zIG9wdGlvbnMpCiB7CiAgICAgYm9vbCBzZWFyY2hGb3J3YXJkID0gIW9wdGlvbnMuY29udGFp
bnMoQmFja3dhcmRzKTsKICAgICBzaXplX3QgbWF0Y2hTdGFydCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAxMDMwNGFmZjg3OGY0ZmZlYzU4YjlmOTAzNWRiOTFm
NGQwNWQ3YjI1Li4xYzM3MzYyODg5YjRhODkxYTllMmYzYzVkMTZjOTAxODAwNTgzZWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIK
LSNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
QEAgLTQwLDYgKzM5LDggQEAgY2xhc3MgSW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclRleHQ7
CiBjbGFzcyBSZW5kZXJUZXh0RnJhZ21lbnQ7CiAKK3N0cnVjdCBTaW1wbGVSYW5nZTsKKwogbmFt
ZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewogY2xhc3MgUnVuUmVzb2x2ZXI7CiB9CkBAIC00Nywx
MyArNDgsMTMgQEAgY2xhc3MgUnVuUmVzb2x2ZXI7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxh
aW5UZXh0KFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9y
ID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZh
bHNlKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBU
ZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2Up
OwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNw
bGF5U3RyaW5nID0gZmFsc2UpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZShjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsK
LVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRv
ckZvclRlc3RpbmcoY29uc3QgUmFuZ2UmKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRl
eHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CitXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFNpbXBs
ZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhjb25zdCBTaW1w
bGVSYW5nZSYpOwogCi1SZWY8UmFuZ2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25z
dCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7Ci1XRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IGZpbmRD
bG9zZXN0UGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMs
IHVuc2lnbmVkKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFJh
bmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ip
OworU2ltcGxlUmFuZ2UgZmluZFBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zKTsKK1dFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIGZpbmRDbG9z
ZXN0UGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMsIHVuc2lnbmVkKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0
IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IpOwogYm9vbCBmaW5kUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsgLy8gTGV0cyB1cyB1c2UgdGhlIHNlYXJjaCBhbGdv
cml0aG0gb24gYSBzdHJpbmcuCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZm9sZFF1b3RlTWFya3Mo
Y29uc3QgU3RyaW5nJik7CiAKQEAgLTEwOCwyMyArMTA5LDIzIEBAIGNsYXNzIFRleHRJdGVyYXRv
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgVGV4dEl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQs
IFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqLCBUZXh0
SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgVGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5UZXh0SXRlcmF0b3IoKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7
IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFu
Y2UoKTsKIAogICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsg
cmV0dXJuIG1fdGV4dDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gcmFuZ2UoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSByYW5nZSgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIE5vZGUqIG5vZGUoKSBjb25zdDsKIAogICAgIGNvbnN0IFRleHRJdGVy
YXRvckNvcHlhYmxlVGV4dCYgY29weWFibGVUZXh0KCkgY29uc3QgeyBBU1NFUlQoIWF0RW5kKCkp
OyByZXR1cm4gbV9jb3B5YWJsZVRleHQ7IH0KICAgICB2b2lkIGFwcGVuZFRleHRUb1N0cmluZ0J1
aWxkZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QgeyBjb3B5YWJsZVRleHQoKS5hcHBl
bmRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBpbnQgcmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqLCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxl
bWVudHMgPSBmYWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4g
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5n
ZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50
cyA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0
aW9uLCBzaXplX3QmIGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5n
ZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQg
Y2hhcmFjdGVyQ291bnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzaXplX3QgcmFuZ2VM
ZW5ndGgoY29uc3QgU2ltcGxlUmFuZ2UmLCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMg
PSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgc2l6ZV90
IHJhbmdlTG9jYXRpb24sIHNpemVfdCByYW5nZUxlbmd0aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNl
ZEVsZW1lbnRzID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdldExv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBTaW1wbGVSYW5nZSYs
IHNpemVfdCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU2ltcGxlUmFuZ2Ugc3VicmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGVudGlyZVJhbmdl
LCBzaXplX3QgY2hhcmFjdGVyT2Zmc2V0LCBzaXplX3QgY2hhcmFjdGVyQ291bnQpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgaW5pdCgpOwpAQCAtMTM3LDggKzEzOCw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZvaWQgaGFuZGxlVGV4dEJveCgpOwogICAg
IHZvaWQgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihSZW5kZXJUZXh0RnJhZ21lbnQmKTsKLSAg
ICB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIsIE5vZGUmIGNoYXJhY3Rlck5vZGUsIE5vZGUqIG9m
ZnNldEJhc2VOb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7Ci0g
ICAgdm9pZCBlbWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYsIGludCB0ZXh0U3Rh
cnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsKKyAgICB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNo
YXIsIE5vZGUmIGNoYXJhY3Rlck5vZGUsIE5vZGUqIG9mZnNldEJhc2VOb2RlLCB1bnNpZ25lZCB0
ZXh0U3RhcnRPZmZzZXQsIHVuc2lnbmVkIHRleHRFbmRPZmZzZXQpOworICAgIHZvaWQgZW1pdFRl
eHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRlclRleHQmLCB1bnNpZ25lZCB0ZXh0U3RhcnRPZmZzZXQs
IHVuc2lnbmVkIHRleHRFbmRPZmZzZXQpOwogCiAgICAgTm9kZSogYmFzZU5vZGVGb3JFbWl0dGlu
Z05ld0xpbmUoKSBjb25zdDsKIApAQCAtMTQ2LDIzICsxNDcsMjMgQEAgcHJpdmF0ZToKIAogICAg
IC8vIEN1cnJlbnQgcG9zaXRpb24sIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyBy
ZXR1cm5lZCwgYnV0IHBvc2l0aW9uIGFzIHdlIHdhbGsgdGhyb3VnaCB0aGUgRE9NIHRyZWUuCiAg
ICAgTm9kZSogbV9ub2RlIHsgbnVsbHB0ciB9OwotICAgIGludCBtX29mZnNldCB7IDAgfTsKKyAg
ICB1bnNpZ25lZCBtX29mZnNldCB7IDAgfTsKICAgICBib29sIG1faGFuZGxlZE5vZGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYW5kbGVkQ2hpbGRyZW4geyBmYWxzZSB9OwogICAgIEJpdFN0YWNr
IG1fZnVsbHlDbGlwcGVkU3RhY2s7CiAKICAgICAvLyBUaGUgcmFuZ2UuCiAgICAgTm9kZSogbV9z
dGFydENvbnRhaW5lciB7IG51bGxwdHIgfTsKLSAgICBpbnQgbV9zdGFydE9mZnNldCB7IDAgfTsK
KyAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwogICAgIE5vZGUqIG1fZW5kQ29udGFp
bmVyIHsgbnVsbHB0ciB9OwotICAgIGludCBtX2VuZE9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25l
ZCBtX2VuZE9mZnNldCB7IDAgfTsKICAgICBOb2RlKiBtX3Bhc3RFbmROb2RlIHsgbnVsbHB0ciB9
OwogCiAgICAgLy8gVGhlIGN1cnJlbnQgdGV4dCBhbmQgaXRzIHBvc2l0aW9uLCBpbiB0aGUgZm9y
bSB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBpdGVyYXRvci4KICAgICBOb2RlKiBtX3Bvc2l0aW9u
Tm9kZSB7IG51bGxwdHIgfTsKICAgICBtdXRhYmxlIE5vZGUqIG1fcG9zaXRpb25PZmZzZXRCYXNl
Tm9kZSB7IG51bGxwdHIgfTsKLSAgICBtdXRhYmxlIGludCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQg
eyAwIH07Ci0gICAgbXV0YWJsZSBpbnQgbV9wb3NpdGlvbkVuZE9mZnNldCB7IDAgfTsKKyAgICBt
dXRhYmxlIHVuc2lnbmVkIG1fcG9zaXRpb25TdGFydE9mZnNldCB7IDAgfTsKKyAgICBtdXRhYmxl
IHVuc2lnbmVkIG1fcG9zaXRpb25FbmRPZmZzZXQgeyAwIH07CiAgICAgVGV4dEl0ZXJhdG9yQ29w
eWFibGVUZXh0IG1fY29weWFibGVUZXh0OwogICAgIFN0cmluZ1ZpZXcgbV90ZXh0OwogCkBAIC0x
OTMsNDMgKzE5NCw0MyBAQCBwcml2YXRlOgogLy8gY2h1bmtzIHNvIGFzIHRvIG9wdGltaXplIGZv
ciBwZXJmb3JtYW5jZSBvZiB0aGUgaXRlcmF0aW9uLgogY2xhc3MgU2ltcGxpZmllZEJhY2t3YXJk
c1RleHRJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2ltcGxpZmllZEJhY2t3YXJk
c1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYpOworICAgIGV4cGxpY2l0IFNpbXBsaWZpZWRCYWNr
d2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogICAgIGJvb2wgYXRFbmQo
KSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICB2b2lkIGFkdmFuY2UoKTsK
IAogICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJu
IG1fdGV4dDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSByYW5nZSgpIGNvbnN0OwogICAgIE5vZGUq
IG5vZGUoKSBjb25zdCB7IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX25vZGU7IH0KIAogcHJp
dmF0ZToKICAgICB2b2lkIGV4aXROb2RlKCk7CiAgICAgYm9vbCBoYW5kbGVUZXh0Tm9kZSgpOwot
ICAgIFJlbmRlclRleHQqIGhhbmRsZUZpcnN0TGV0dGVyKGludCYgc3RhcnRPZmZzZXQsIGludCYg
b2Zmc2V0SW5Ob2RlKTsKKyAgICBSZW5kZXJUZXh0KiBoYW5kbGVGaXJzdExldHRlcih1bnNpZ25l
ZCYgc3RhcnRPZmZzZXQsIHVuc2lnbmVkJiBvZmZzZXRJbk5vZGUpOwogICAgIGJvb2wgaGFuZGxl
UmVwbGFjZWRFbGVtZW50KCk7CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwotICAgIHZv
aWQgZW1pdENoYXJhY3RlcihVQ2hhciwgTm9kZSYsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9m
ZnNldCk7CisgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2RlJiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAgICAgYm9vbCBhZHZhbmNlUmVzcGVjdGlu
Z1JhbmdlKE5vZGUqKTsKIAogICAgIGNvbnN0IFRleHRJdGVyYXRvckJlaGF2aW9yIG1fYmVoYXZp
b3IgeyBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IgfTsKIAogICAgIC8vIEN1cnJlbnQgcG9z
aXRpb24sIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyByZXR1cm5lZCwgYnV0IHBv
c2l0aW9uIGFzIHdlIHdhbGsgdGhyb3VnaCB0aGUgRE9NIHRyZWUuCiAgICAgTm9kZSogbV9ub2Rl
IHsgbnVsbHB0ciB9OwotICAgIGludCBtX29mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX29m
ZnNldCB7IDAgfTsKICAgICBib29sIG1faGFuZGxlZE5vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9oYW5kbGVkQ2hpbGRyZW4geyBmYWxzZSB9OwogICAgIEJpdFN0YWNrIG1fZnVsbHlDbGlwcGVk
U3RhY2s7CiAKICAgICAvLyBUaGUgcmFuZ2UuCiAgICAgTm9kZSogbV9zdGFydENvbnRhaW5lciB7
IG51bGxwdHIgfTsKLSAgICBpbnQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X3N0YXJ0T2Zmc2V0IHsgMCB9OwogICAgIE5vZGUqIG1fZW5kQ29udGFpbmVyIHsgbnVsbHB0ciB9
OwotICAgIGludCBtX2VuZE9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCB7
IDAgfTsKICAgICAKICAgICAvLyBUaGUgY3VycmVudCB0ZXh0IGFuZCBpdHMgcG9zaXRpb24sIGlu
IHRoZSBmb3JtIHRvIGJlIHJldHVybmVkIGZyb20gdGhlIGl0ZXJhdG9yLgogICAgIE5vZGUqIG1f
cG9zaXRpb25Ob2RlIHsgbnVsbHB0ciB9OwotICAgIGludCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQg
eyAwIH07Ci0gICAgaW50IG1fcG9zaXRpb25FbmRPZmZzZXQgeyAwIH07CisgICAgdW5zaWduZWQg
bV9wb3NpdGlvblN0YXJ0T2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIG1fcG9zaXRpb25FbmRP
ZmZzZXQgeyAwIH07CiAgICAgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0IG1fY29weWFibGVUZXh0
OwogICAgIFN0cmluZ1ZpZXcgbV90ZXh0OwogCkBAIC0yNDgsNDAgKzI0OSw0MCBAQCBwcml2YXRl
OgogLy8gY2hhcmFjdGVyIGF0IGEgdGltZSwgb3IgZmFzdGVyLCBhcyBuZWVkZWQuIFVzZWZ1bCBm
b3Igc2VhcmNoaW5nLgogY2xhc3MgQ2hhcmFjdGVySXRlcmF0b3IgewogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJiwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdl
JiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKFBvc2l0aW9uIHN0
YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVm
YXVsdEJlaGF2aW9yKTsKICAgICAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV91
bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2
YW5jZShpbnQgbnVtQ2hhcmFjdGVycyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZHZhbmNl
KHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpOwogICAgIAogICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5zdWJzdHJpbmcobV9ydW5P
ZmZzZXQpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiByYW5nZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIHJhbmdlKCkgY29uc3Q7CiAKICAgICBib29s
IGF0QnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2F0QnJlYWs7IH0KLSAgICBpbnQgY2hhcmFjdGVy
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCBjaGFyYWN0
ZXJPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogCiBwcml2YXRlOgogICAgIFRl
eHRJdGVyYXRvciBtX3VuZGVybHlpbmdJdGVyYXRvcjsKIAotICAgIGludCBtX29mZnNldCB7IDAg
fTsKLSAgICBpbnQgbV9ydW5PZmZzZXQgeyAwIH07CisgICAgdW5zaWduZWQgbV9vZmZzZXQgeyAw
IH07CisgICAgdW5zaWduZWQgbV9ydW5PZmZzZXQgeyAwIH07CiAgICAgYm9vbCBtX2F0QnJlYWsg
eyB0cnVlIH07CiB9OwogICAgIAogY2xhc3MgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3Igewog
cHVibGljOgotICAgIGV4cGxpY2l0IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJh
bmdlJik7CisgICAgZXhwbGljaXQgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2lt
cGxlUmFuZ2UmKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybHlp
bmdJdGVyYXRvci5hdEVuZCgpOyB9Ci0gICAgdm9pZCBhZHZhbmNlKGludCBudW1DaGFyYWN0ZXJz
KTsKKyAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbnVtQ2hhcmFjdGVycyk7CiAKLSAgICBSZWY8
UmFuZ2U+IHJhbmdlKCkgY29uc3Q7CisgICAgU2ltcGxlUmFuZ2UgcmFuZ2UoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIG1fdW5kZXJseWlu
Z0l0ZXJhdG9yOwogCi0gICAgaW50IG1fb2Zmc2V0OwotICAgIGludCBtX3J1bk9mZnNldDsKKyAg
ICB1bnNpZ25lZCBtX29mZnNldDsKKyAgICB1bnNpZ25lZCBtX3J1bk9mZnNldDsKICAgICBib29s
IG1fYXRCcmVhazsKIH07CiAKQEAgLTI4OSw3ICsyOTAsNyBAQCBwcml2YXRlOgogLy8gdGhleSBu
ZXZlciBzcGxpdCB1cCBhIHdvcmQuIFRoaXMgaXMgdXNlZnVsIGZvciBzcGVsbCBjaGVja2luZyBh
bmQgcGVyaGFwcyBvbmUgZGF5IGZvciBzZWFyY2hpbmcgYXMgd2VsbC4KIGNsYXNzIFdvcmRBd2Fy
ZUl0ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JkQXdhcmVJdGVyYXRvcihjb25z
dCBSYW5nZSYpOworICAgIGV4cGxpY2l0IFdvcmRBd2FyZUl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJh
bmdlJik7CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fZGlkTG9va0FoZWFk
ICYmIG1fdW5kZXJseWluZ0l0ZXJhdG9yLmF0RW5kKCk7IH0KICAgICB2b2lkIGFkdmFuY2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggZDA1YWY0NGZkOGVhYTM0ZThiMzI0MGJjODRjNzc1MGJkNDA2M2E2Yy4u
NmY0NzcyNTA0NWFjMmE4NDg4ZTIwZTI4ZmQ4ZWVmNTljNmU2ZWQ3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpvYnNlcnZl
UGFyYWdyYXBocyhWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBWaXNpYgogICAgICAgICBTdHJpbmdW
aWV3IGN1cnJlbnRUZXh0ID0gaXRlcmF0b3IudGV4dCgpOwogCiAgICAgICAgIGlmIChzdGFydE9m
Q3VycmVudFBhcmFncmFwaC5pc051bGwoKSkKLSAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50UGFy
YWdyYXBoID0gaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpOworICAgICAgICAgICAg
c3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggPSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0b3IucmFuZ2Uo
KSktPnN0YXJ0UG9zaXRpb24oKTsKIAogICAgICAgICBpZiAoYXV0byogY3VycmVudE5vZGUgPSBp
dGVyYXRvci5ub2RlKCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8RWxlbWVudD4gY3VycmVu
dEVsZW1lbnRBbmNlc3RvciA9IGlzPEVsZW1lbnQ+KGN1cnJlbnROb2RlKSA/IGRvd25jYXN0PEVs
ZW1lbnQ+KGN1cnJlbnROb2RlKSA6IGN1cnJlbnROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3RFbGVt
ZW50KCkpIHsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpvYnNlcnZlUGFyYWdyYXBocyhWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBWaXNpYgogICAg
ICAgICAgICAgICAgIHRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9u
VG9rZW4geyBtX3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCBzdHJpbmdVbnRpbEVuZE9mTGlu
ZSwgZXhjbHVzaW9uUnVsZU1hdGNoZXIuaXNFeGNsdWRlZChpdGVyYXRvci5ub2RlKCkpIH0pOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGxhc3RSYW5nZSA9IGl0ZXJhdG9yLnJh
bmdlKCk7CisgICAgICAgICAgICBhdXRvIGxhc3RSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShpdGVy
YXRvci5yYW5nZSgpKTsKICAgICAgICAgICAgIGlmIChvZmZzZXRPZk5leHROZXdMaW5lIDwgY3Vy
cmVudFRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBsYXN0UmFuZ2UtPnNldFN0YXJ0
KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShpdGVyYXRvci5ub2RlKCkpKTsgLy8gTW92ZSB0
aGUgc3RhcnQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBub2RlLgogICAgICAgICAg
ICAgICAgIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobGFzdFJhbmdlLCAwLCBvZmZzZXRPZk5leHRO
ZXdMaW5lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDAx
ZjUzZGJhMDNiZWFjNzk3ZDc2YWE4YWU1NjZkMmZkMTI1YzgyM2QuLmM0ZDgwZmI1NTA4ZjFlMjZj
Njg5MTg1MzgyYWVmYzBjZmRiOWEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIGJvb2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFk
ZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIFRleHRHCiAg
ICAgaWYgKCFyYW5nZSB8fCBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCiAgICAgICAg
IHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5kaW5ncygpKTsKIAotICAgIHJldHVybiBm
cmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgU3RhdGljUmFuZ2U6
OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2UpIH0pOworICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigp
LndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2Up
IH0pOwogfQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChF
VHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZUZvckFkZGVkVHlwaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggZjMyN2NiMzAzMDFiNjgwMjkxYTM4
OWU5MTkzOTMyYjZiOGQ5NjExOC4uZjkyZTNkZDgxZGU5M2MzZDEwOWU4MzI0ZjUxODFhN2YxMmVl
OWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlN0YXRpY1Jh
bmdlLmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtOTcs
MTMgKzk3LDEzIEBAIFZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUmFu
Z2UmIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wKICAgICB2YWxpZGF0ZSgpOwogfQog
Ci1WaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFN0YXRpY1JhbmdlJiBz
dGF0aWNSYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwpCi0gICAg
OiBtX2Jhc2UoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRpY1JhbmdlLnN0YXJ0Q29u
dGFpbmVyKCksIHN0YXRpY1JhbmdlLnN0YXJ0T2Zmc2V0KCkpKQotICAgICwgbV9leHRlbnQoY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHN0YXRpY1JhbmdlLmVuZENvbnRhaW5lcigpLCBzdGF0
aWNSYW5nZS5lbmRPZmZzZXQoKSkpCitWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9u
KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGlzRGly
ZWN0aW9uYWwpCisgICAgOiBtX2Jhc2UoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZyYW5n
ZS5zdGFydENvbnRhaW5lcigpLCByYW5nZS5zdGFydE9mZnNldCgpKSkKKyAgICAsIG1fZXh0ZW50
KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigmcmFuZ2UuZW5kQ29udGFpbmVyKCksIHJhbmdl
LmVuZE9mZnNldCgpKSkKICAgICAsIG1fYWZmaW5pdHkoYWZmaW5pdHkpCiAgICAgLCBtX2lzRGly
ZWN0aW9uYWwoaXNEaXJlY3Rpb25hbCkKIHsKLSAgICBBU1NFUlQoJnN0YXRpY1JhbmdlLnN0YXJ0
Q29udGFpbmVyKCktPnRyZWVTY29wZSgpID09ICZzdGF0aWNSYW5nZS5lbmRDb250YWluZXIoKS0+
dHJlZVNjb3BlKCkpOworICAgIEFTU0VSVCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKS50cmVlU2Nv
cGUoKSA9PSAmcmFuZ2UuZW5kQ29udGFpbmVyKCkudHJlZVNjb3BlKCkpOwogICAgIHZhbGlkYXRl
KCk7CiB9CiAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OmFwcGVu
ZFRyYWlsaW5nV2hpdGVzcGFjZSgpCiAgICAgICAgIFVDaGFyIGMgPSBjaGFySXQudGV4dCgpWzBd
OwogICAgICAgICBpZiAoKCFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMgIT0gbm9CcmVha1NwYWNl
KSB8fCBjID09ICdcbicpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgbV9lbmQgPSBjaGFy
SXQucmFuZ2UoKS0+ZW5kUG9zaXRpb24oKTsKKyAgICAgICAgbV9lbmQgPSBjcmVhdGVMaXZlUmFu
Z2UoY2hhckl0LnJhbmdlKCkpLT5lbmRQb3NpdGlvbigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAppbmRleCAyZDQyZDhmN2VmMWZhMjFmMjg5
MDMzZmFkNmI4MzFlYTBjM2UzZGRjLi4xYjlhMzcyZDhiNzFlYjg2ZjIxZTNkOGJmZWEzYWQ3N2Iy
NzhhNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaApAQCAt
MzEsNyArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQb3NpdGlvbjsKLWNs
YXNzIFN0YXRpY1JhbmdlOworCitzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKIGNvbnN0IEVBZmZpbml0
eSBTRUxfREVGQVVMVF9BRkZJTklUWSA9IERPV05TVFJFQU07CiBlbnVtIFNlbGVjdGlvbkRpcmVj
dGlvbiA6IHVpbnQ4X3QgeyBEaXJlY3Rpb25Gb3J3YXJkLCBEaXJlY3Rpb25CYWNrd2FyZCwgRGly
ZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxlZnQgfTsKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgog
ICAgIFZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIEVB
ZmZpbml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxz
ZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFJhbmdlJiwg
RUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZh
bHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFN0YXRpY1Jh
bmdlJiwgRUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJlY3Rpb25h
bCA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFNp
bXBsZVJhbmdlJiwgRUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJl
Y3Rpb25hbCA9IGZhbHNlKTsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA0NDc4YWRmMjJiYWY5
ZThmYzU4MmFkMjc1MjhhMDM0YzVlNGNjODQ1Li42Y2EzNjYxMDVmYTQyNDc2MTc3NTAyZTNjOWJm
MmQwMThkNWZhMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBA
IC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2gKICAgICBpZiAoIW5leHQp
CiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oaXQuYXRFbmQoKSA/IHNlYXJjaFJhbmdl
LT5zdGFydFBvc2l0aW9uKCkgOiBwb3MsIERPV05TVFJFQU0pOwogCi0gICAgTm9kZSYgbm9kZSA9
IGl0LmF0RW5kKCkgPyBzZWFyY2hSYW5nZS0+c3RhcnRDb250YWluZXIoKSA6IGl0LnJhbmdlKCkt
PnN0YXJ0Q29udGFpbmVyKCk7CisgICAgTm9kZSYgbm9kZSA9IGl0LmF0RW5kKCkgPyBzZWFyY2hS
YW5nZS0+c3RhcnRDb250YWluZXIoKSA6IGl0LnJhbmdlKCkuc3RhcnRDb250YWluZXIoKTsKICAg
ICBpZiAoKCFzdWZmaXhMZW5ndGggJiYgbm9kZS5pc1RleHROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8
aW50PihuZXh0KSA8PSBub2RlLm1heENoYXJhY3Rlck9mZnNldCgpKSB8fCAobm9kZS5yZW5kZXJl
cigpICYmIG5vZGUucmVuZGVyZXIoKS0+aXNCUigpICYmICFuZXh0KSkgewogICAgICAgICAvLyBU
aGUgbmV4dCB2YXJpYWJsZSBjb250YWlucyBhIHVzYWJsZSBpbmRleCBpbnRvIGEgdGV4dCBub2Rl
CiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKCZub2RlLCBuZXh0KSwgRE9XTlNUUkVBTSk7CkBAIC02NDYsNyArNjQ2LDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
YywgQm91bmRhcnlTZWFyY2gKICAgICBpZiAobmV4dCA8IHN0cmluZy5zaXplKCkgLSBzdWZmaXhM
ZW5ndGgpCiAgICAgICAgIGNoYXJJdC5hZHZhbmNlKHN0cmluZy5zaXplKCkgLSBzdWZmaXhMZW5n
dGggLSBuZXh0KTsKICAgICAvLyBGSVhNRTogY2hhckl0IGNhbiBnZXQgb3V0IG9mIHNoYWRvdyBo
b3N0LgotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oY2hhckl0LnJhbmdlKCktPmVuZFBvc2l0
aW9uKCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGl2
ZVJhbmdlKGNoYXJJdC5yYW5nZSgpKS0+ZW5kUG9zaXRpb24oKSwgRE9XTlNUUkVBTSk7CiB9CiAK
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYgYywgQm91bmRhcnlTZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlvbikKQEAgLTY4Miw3ICs2
ODIsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogICAgICAgICAvLyBVc2UgdGhlIGNoYXJh
Y3RlciBpdGVyYXRvciB0byB0cmFuc2xhdGUgdGhlIG5leHQgdmFsdWUgaW50byBhIERPTSBwb3Np
dGlvbi4KICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2hhckl0KHNlYXJjaFJhbmdlLCBUZXh0
SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAgICAg
ICAgIGNoYXJJdC5hZHZhbmNlKG5leHQgLSBwcmVmaXhMZW5ndGggLSAxKTsKLSAgICAgICAgUmVm
UHRyPFJhbmdlPiBjaGFyYWN0ZXJSYW5nZSA9IGNoYXJJdC5yYW5nZSgpOworICAgICAgICBSZWZQ
dHI8UmFuZ2U+IGNoYXJhY3RlclJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGNoYXJJdC5yYW5nZSgp
KTsKICAgICAgICAgcG9zID0gY2hhcmFjdGVyUmFuZ2UtPmVuZFBvc2l0aW9uKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAoY2hhckl0LnRleHQoKVswXSA9PSAnXG4nKSB7CkBAIC02OTAsNyArNjkw
LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlv
biB2aXNQb3MgPSBWaXNpYmxlUG9zaXRpb24ocG9zKTsKICAgICAgICAgICAgIGlmICh2aXNQb3Mg
PT0gVmlzaWJsZVBvc2l0aW9uKGNoYXJhY3RlclJhbmdlLT5zdGFydFBvc2l0aW9uKCkpKSB7CiAg
ICAgICAgICAgICAgICAgY2hhckl0LmFkdmFuY2UoMSk7Ci0gICAgICAgICAgICAgICAgcG9zID0g
Y2hhckl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24oKTsKKyAgICAgICAgICAgICAgICBwb3MgPSBj
cmVhdGVMaXZlUmFuZ2UoY2hhckl0LnJhbmdlKCkpLT5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggYzg5YjkwYzg4MWFkODE2ZGY5ZDY4NTY4OGEwZmI5Y2Vi
ZmIzMGE4Ni4uZGQwYTVkYmYzOThmZTVlOTNhNGRmYjU3ZDlkOTVhYWE5YzFmYTMxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNDMsNiAr
NDMsNyBAQAogI2ltcG9ydCAiTm9kZVRyYXZlcnNhbC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNp
bXBvcnQgIlJlbmRlck9iamVjdC5oIgorI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQg
IlN0eWxlUHJvcGVydGllcy5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVGV4dEl0ZXJh
dG9yLmgiCkBAIC05NCw3ICs5NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0
PiBkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZShWaXNpYmxlUG9zaXRpb24KICAgICAgICAg
Q0ZSYW5nZSByZXN1bHRSYW5nZUluQ29udGV4dCA9IEREUmVzdWx0R2V0UmFuZ2UocmVzdWx0KTsK
ICAgICAgICAgaWYgKGhpdExvY2F0aW9uID49IHJlc3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9u
ICYmIChoaXRMb2NhdGlvbiAtIHJlc3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uKSA8IHJlc3Vs
dFJhbmdlSW5Db250ZXh0Lmxlbmd0aCkgewogICAgICAgICAgICAgbWFpblJlc3VsdCA9IHJlc3Vs
dDsKLSAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uo
KmNvbnRleHRSYW5nZSwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24sIHJlc3VsdFJhbmdl
SW5Db250ZXh0Lmxlbmd0aCk7CisgICAgICAgICAgICBtYWluUmVzdWx0UmFuZ2UgPSBjcmVhdGVM
aXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHRSYW5n
ZUluQ29udGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCBkMzU1MzlhOWRmZDhkNDdlZTRl
MDExNzBkNWIyOGNmMTUxMDNlZDcyLi44MzE5NWQxYTJhMzcyOTNiNmQxZmU1MGJmMGRlZjYyY2Yy
OGQ5Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25h
cnlMb29rdXAubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5
TG9va3VwLm1tCkBAIC0yODksNyArMjg5LDcgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBO
U0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY28KICAg
ICBSZXRhaW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgp
IGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKTsKICAg
ICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKICAg
ICAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFu
Z2UsIGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwg
fTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgq
ZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiwgaGlnaGxpZ2h0UmFu
Z2UubGVuZ3RoKSksIG5pbCB9OwogICAgIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CiAgICAgCkBAIC0zNjQsNyArMzY0LDcgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0Rp
Y3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQKICAgICBp
ZiAoaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhaGlnaGxpZ2h0UmFu
Z2UubGVuZ3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKICAgICAKLSAgICBy
ZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hs
aWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsKKyAgICBy
ZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJh
Y3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiwgaGlnaGxpZ2h0UmFuZ2UubGVuZ3Ro
KSksIG5pbCB9OwogICAgIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggYzM5
NTkyNGJkODVmODRhMGFlMmFmMzM3NDNlZDlmOWY3YzZhM2IxMS4uYjBhZDBiMmVjNDdkMzU5Njgx
YTA3Nzg3NDdiNDY3ZjNhODEyOWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNTgsOCArNTgsMTAgQEAKICNpbXBvcnQgIkhUTUxUYWJs
ZUNlbGxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW1wb3J0
ICJMb2FkZXJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRl
ckltYWdlLmgiCiAjaW1wb3J0ICJSZW5kZXJUZXh0LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5o
IgogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJTdHlsZWRFbGVtZW50Lmgi
CiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKQEAgLTIzOTUsNyArMjM5Nyw3IEBAIE5TQXR0cmli
dXRlZFN0cmluZyAqZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoUmFuZ2UmIHJhbmdl
LCBJbmNsdWRlSW1hZ2VzCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0dHJz
ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIGZv
ciAoVGV4dEl0ZXJhdG9yIGl0KCZyYW5nZSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsK
LSAgICAgICAgUmVmUHRyPFJhbmdlPiBjdXJyZW50VGV4dFJhbmdlID0gaXQucmFuZ2UoKTsKKyAg
ICAgICAgUmVmUHRyPFJhbmdlPiBjdXJyZW50VGV4dFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0
LnJhbmdlKCkpOwogICAgICAgICBOb2RlJiBzdGFydENvbnRhaW5lciA9IGN1cnJlbnRUZXh0UmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAgIE5vZGUmIGVuZENvbnRhaW5lciA9IGN1cnJl
bnRUZXh0UmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBj
dXJyZW50VGV4dFJhbmdlLT5zdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KaW5kZXggMTYxNTkwN2Q2OTEx
MGM2ODVmNzczMDczMThiYjJhNTU3MTk2OGE0ZS4uYmQ4NDA2NTEyZTQ1ODkwMTNkOTczMGRhOTY5
NTVkNzI4NTk4NDdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGlj
dGlvbmFyeUxvb2t1cExlZ2FjeS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9E
aWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJQYWdl
LmgiCiAjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAiUmVuZGVyT2JqZWN0LmgiCisjaW1wb3J0
ICJTaW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJWaXNp
YmxlUG9zaXRpb24uaCIKICNpbXBvcnQgIlZpc2libGVTZWxlY3Rpb24uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAppbmRleCA3ZTIyYzUyMmFkYzhlMjI3YjYzOWJjZWU2ZGI0NmQwYTM5Mjkz
ZDUzLi4wNGIxOGRjMmRiZmMyZmY5YzdjOGUzNWI1NTYyNjlmMGNjNDFjNWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQmxv
Y2suaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlNvY2tldFByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRl
eCAzNzQxODU2MzY3ODk3Y2MzZWFmYWM4NmY4MTkxMDUyNjg2ZmQxZGFhLi41MTFkYjFhNmY0NWE2
ZTEwZTY4YWM3M2ZiNjNiYTk0ZGYwOTRlZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJMb2NhbGl6
ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRl
ICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKaW5kZXggNjg4ODc4ZGQxYmFiNzFiNTJhZGMzNDdkM2MxYjFhNzdkNDdlMmNh
MC4uODJjZTRjYTQ4Zjc3YzY2NDcwY2RlMmU1ZDFmOGFmZDRmOGQxODA4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNjQsNiArNjQsNyBA
QAogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5n
ZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQu
aCIKICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNzMsNyArNzQs
NiBAQAogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0No
YXJhY3Rlck5hbWVzLmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV1RGOjpVbmljb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGUz
NGNkMTY3NWYxMzM4NzllNDVjNjkxMWQ2ZGFiNjJiYjk0NzI1MTQuLjA2YzA1NWI3NWUyZjJkOTZl
MTQxMzg5ODI3MzM4YmI5MzJjYjZhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5n
ZS5oIgogI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiU3RhdGljUGFz
dGVib2FyZC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IGE5MWU4NmU4NmEwMjA5MTRmNDhlZjk1MTJkODY3MWNiY2Y1YzJkYzQuLmQ5MTNhOTZl
MjE4ODc4ZjVjMDZkMmYwYWIwYjRiZTE4OTQxZGVhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MTA5LDYgKzEwOSw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNp
bXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdG9y
YWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKQEAgLTg1Myw3ICs4NTQs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxG
aW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICAvLyBJdGVyYXRlIGJhY2t3YXJk
cyB0aHJvdWdoIHJhbmdlcyB3aGVuIHJlcGxhY2luZyB0ZXh0LCBzdWNoIHRoYXQgZWFybGllciB0
ZXh0IHJlcGxhY2VtZW50cyBkb24ndCBjbG9iYmVyIHJlcGxhY2VtZW50IHJhbmdlcyBsYXRlciBv
bi4KICAgICAgICAgYXV0byYgcmFuZ2VzID0gcmFuZ2VzQnlDb250YWluZXJOb2RlLmZpbmQoY29u
dGFpbmVyKS0+dmFsdWU7CiAgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHJhbmdlcy5yYmVn
aW4oKTsgaXRlcmF0b3IgIT0gcmFuZ2VzLnJlbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAg
ICAgYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
Y29udGFpbmVyLmdldCgpLCBpdGVyYXRvci0+bG9jYXRpb24sIGl0ZXJhdG9yLT5sZW5ndGgpOwor
ICAgICAgICAgICAgYXV0byByYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lci5nZXQoKSwgaXRlcmF0b3ItPmxvY2F0
aW9uLCBpdGVyYXRvci0+bGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAoIXJhbmdlIHx8IHJhbmdl
LT5jb2xsYXBzZWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXggMmI5MzkwYzFjNjNiNWEwOGM2MjliYjI4MDBiMzk4
NTkwNTBlMDI1Mi4uNWIyNTljZDc0ODZkMmZkN2MxOThmZjdiNGRlYWMyNjE0OWZiMjhjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1
ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA4MjIwNDI0YTIyNzUwYTdlODJm
NDYzMzg1MGEwM2RhYTZjZjQ3ZDY4Li5jNTMwMTkxOTcxMGI0ZmY4OGM5M2MxMGUxNDFhZDcyMmU4
Njc5MTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBA
IC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNpbXBsZVJh
bmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA4OGY3YTdjN2QyOTg1MjY0YzcyNDc2YzkxZTcxMGNmZTI5NTdl
ODdhLi5kOGU1NDJiN2EwNDc1MGMyNGVmZjE3MjZmNWYwNTcwNTllMTVjMTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNzQsNiArMTc0LDcgQEAKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVk
ZSAiU291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAi
U3RhdGljTm9kZUxpc3QuaCIKQEAgLTIwMDMsNyArMjAwNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEludGVybmFsczo6aW52YWxpZGF0ZUNvbnRyb2xUaW50cygpCiAKIFJlZlB0cjxSYW5nZT4gSW50
ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgaW50IHJh
bmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHJhbmdlTG9jYXRpb24sIHJhbmdl
TGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoJnNjb3BlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCkp
OwogfQogCiB1bnNpZ25lZCBJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNj
b3BlLCBjb25zdCBSYW5nZSYgcmFuZ2UpCkBAIC0yMDM0LDEyICsyMDM1LDEyIEBAIFN0cmluZyBJ
bnRlcm5hbHM6OnJhbmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFu
Z2UmIHJhbmdlKQogCiBSZWY8UmFuZ2U+IEludGVybmFsczo6c3VicmFuZ2UoUmFuZ2UmIHJhbmdl
LCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQogewotICAgIHJldHVybiBUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7Cisg
ICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBy
YW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCkpOwogfQogCiBSZWZQdHI8UmFuZ2U+IEludGVybmFs
czo6cmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihjb25zdCBSYW5nZSYgc2VhcmNoUmFuZ2UsIGNv
bnN0IFN0cmluZyYgdGV4dCwgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0KQogewotICAgIHJldHVybiBm
aW5kQ2xvc2VzdFBsYWluVGV4dChzZWFyY2hSYW5nZSwgdGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQp
OworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoZmluZENsb3Nlc3RQbGFpblRleHQoc2VhcmNo
UmFuZ2UsIHRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KSk7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKaW5kZXggY2YxYzAzYWFhNTlkZTg0
Y2U4M2E0OTgzNTAxZDRlY2U5MmRjMmU3Yy4uMDhmN2JiYzhiZmZmZDU4MzI5ZmIyZDEyNTlmY2M3
MTRjMDg4NzZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1Jhbmdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZVNlbGVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJs
ZVVuaXRzLmg+CiAKQEAgLTUzLDcgKzU0LDcgQEAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBFZGl0
aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW4KICAg
ICAgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBp
cyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzCiAgICAgICAgIC8vIHRvIHVzZSB0aGUgcm9v
dCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9u
YWwgYmFzZS4KICAgICAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBp
bnB1dCBjb250ZXh0LgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVt
ZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sb2NhdGlvbiks
IGxlbmd0aCk7CisgICAgICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290
RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc3RhdGljX2Nhc3Q8aW50PihyYW5n
ZS5sb2NhdGlvbiksIGxlbmd0aCkpOwogICAgIH0KIAogICAgIEFTU0VSVChlZGl0aW5nUmFuZ2VJ
c1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwpAQCAt
NjcsMTcgKzY4LDE3IEBAIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1Jh
bmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluCiAgICAgaWYgKCFwYXJhZ3Jh
cGhSYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBXZWJDb3JlOjpDb250YWlu
ZXJOb2RlJiByb290Tm9kZSA9IHBhcmFncmFwaFJhbmdlLmdldCgpLT5zdGFydENvbnRhaW5lcigp
LnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CisgICAgYXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhS
YW5nZS5nZXQoKS0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwogICAg
IGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9k
ZSwgMCwgJnBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZS0+
c3RhcnRPZmZzZXQoKSkucHRyKCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRl
eCArIHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOworICAgIHJldHVy
biBjcmVhdGVMaXZlUmFuZ2UoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBzdGF0aWNfY2FzdDxp
bnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKSk7CiB9CiAKIEVkaXRpbmdSYW5nZSBFZGl0aW5n
UmFuZ2U6OmZyb21SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJh
bmdlKiByYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbykKIHsKICAgICBBU1NFUlQoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09IEVkaXRpbmdS
YW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KTsKIAotICAgIHNpemVfdCBsb2NhdGlvbjsK
LSAgICBzaXplX3QgbGVuZ3RoOworICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CisgICAgc2l6ZV90
IGxlbmd0aCA9IDA7CiAgICAgaWYgKCFyYW5nZSB8fCAhV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpn
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFi
bGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UsIGxvY2F0aW9uLCBsZW5ndGgpKQog
ICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9y
Lm1tCmluZGV4IDA4NGYzMDA1ZDYxMDNkNGUyNTAzM2MyNTZjNzBjMGUwNjQwNDFjZDguLjc5YjJl
NGY1N2Y3YjE1YmUwYzk5YjNiMzE4NjVlZjhkYzdiNDE3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9y
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NVGV4dEl0ZXJhdG9yLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldLRE9N
SW50ZXJuYWxzLmgiCiAjaW1wb3J0ICJXS0RPTVJhbmdlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1Np
bXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogCiBAaW50ZXJm
YWNlIFdLRE9NVGV4dEl0ZXJhdG9yICgpIHsKQEAgLTYyLDcgKzYzLDcgQEAgLSAoQk9PTClhdEVu
ZAogCiAtIChXS0RPTVJhbmdlICopY3VycmVudFJhbmdlCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6
dG9XS0RPTVJhbmdlKF90ZXh0SXRlcmF0b3ItPnJhbmdlKCkucHRyKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvV0tET01SYW5nZShjcmVhdGVMaXZlUmFuZ2UoX3RleHRJdGVyYXRvci0+cmFuZ2Uo
KSkucHRyKCkpOwogfQogCiAvLyBGSVhNRTogQ29uc2lkZXIgZGVwcmVjYXRpbmcgdGhpcyBtZXRo
b2QgYW5kIGNyZWF0aW5nIG9uZSB0aGF0IGRvZXMgbm90IHJlcXVpcmUgY29weWluZyA4LWJpdCBj
aGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA5ZTI0NzU4Y2Q5MmNmNzUwODZm
Y2MyMTgyNGIzNWM4ODA3MTIzMjczLi4yY2ZjZGNiMjFhMDdiNmZkNTRmYzUxMGE1YjZlZTkxZDc2
YWE2NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWxsQ2hlY2tlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0SXRlcmF0b3IuaD4KQEAgLTY1LDggKzY2LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlVGV4dENoZWNraW5nUmVxdWVzdElEKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCA0YmJhZjc5M2Y3YTY1ZDM2YzM0NTdlYTAyZmQ0NGYzMmQ0MWMxYWM1Li4zZDAyMzlmNjIyYzg5
YWJiMzgyMjFhYWY3ZWZkMmFmMmRlYzJkOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRSZXNvdXJjZURlY29kZXIuaD4KQEAgLTkxLDggKzkyLDYgQEAKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3Vu
dGVyLCB3ZWJGcmFtZUNvdW50ZXIsICgiV2ViRnJhbWUiKSk7CiAKQEAgLTcxMiw3ICs3MTEsNyBA
QCB2b2lkIFdlYkZyYW1lOjpzdG9wTG9hZGluZygpCiBXZWJGcmFtZSogV2ViRnJhbWU6OmZyYW1l
Rm9yQ29udGV4dChKU0NvbnRleHRSZWYgY29udGV4dCkKIHsKICAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3RPYmogPSB0b0pTKGNvbnRleHQpOwotICAgIEpTRE9NV2luZG93KiB3
aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0T2JqLT52bSgp
LCBnbG9iYWxPYmplY3RPYmopOworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBKU0M6OmpzRHlu
YW1pY0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3RPYmotPnZtKCksIGdsb2JhbE9iamVj
dE9iaik7CiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1
dG8qIGNvcmVGcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCk7CkBAIC03MjgsNyArNzI3
LDcgQEAgSlNWYWx1ZVJlZiBXZWJGcmFtZTo6anNXcmFwcGVyRm9yV29ybGQoSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlKiBub2RlSGFuZGxlLCBJbmoKIAogICAgIEpTRE9NV2luZG93KiBnbG9iYWxP
YmplY3QgPSBtX2NvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkLT5jb3JlV29y
bGQoKSk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOworICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gdG9SZWYoZ2xvYmFs
T2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBub2RlSGFuZGxlLT5jb3Jl
Tm9kZSgpKSk7CiB9CiAKQEAgLTczOSw3ICs3MzgsNyBAQCBKU1ZhbHVlUmVmIFdlYkZyYW1lOjpq
c1dyYXBwZXJGb3JXb3JsZChJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlKiByYW5nZUhhbmRsZSwg
SQogCiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IG1fY29yZUZyYW1lLT5zY3JpcHQo
KS5nbG9iYWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKTsKIAotICAgIEpTTG9ja0hvbGRlciBs
b2NrKGdsb2JhbE9iamVjdCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiB0b1JlZihnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHJhbmdlSGFuZGxlLT5jb3JlUmFuZ2UoKSkpOwogfQogCkBAIC03NDgsNyAr
NzQ3LDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpjb3VudGVyVmFsdWUoSlNPYmplY3RSZWYgZWxlbWVu
dCkKICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzPEpTRWxlbWVudD4odG9KUyhlbGVt
ZW50KS0+dm0oKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBjb3Vu
dGVyVmFsdWVGb3JFbGVtZW50KCZqc0Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSktPndy
YXBwZWQoKSk7CisgICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoJkpTQzo6anNDYXN0
PEpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpLT53cmFwcGVkKCkpOwogfQogCiBTdHJpbmcgV2Vi
RnJhbWU6OnByb3Zpc2lvbmFsVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMGFlNGVhZmQ4ZjQxMTlhYWI1
MzBhZTEzNmFjOTBjMDU1YzQ3NTIzNS4uYjQ5YjE1NGNjOWQzYmZjOTYxNmZjZmVmNGY4MDg2MzU0
ZWJjN2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KQEAgLTg2LDYgKzg2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
Vmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5n
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZUluaGVyaXRlZERhdGEuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgpA
QCAtOTksNyArMTAwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7
CkBAIC00MDcsOCArNDA3LDYgQEAgdm9pZCBXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24oQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb250
QXRTZWxlY3Rpb25DYWxsYmFjayh7IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1
dGVzKGZvbnREZXNjcmlwdG9yLmdldCgpKSkgfSwgQ1RGb250R2V0U2l6ZShjdEZvbnQpLCBzZWxl
Y3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBjYWxsYmFja0lEKSk7CiB9Ci0gICAgCi0KIAogI2lmIEVO
QUJMRShQREZLSVRfUExVR0lOKQogCkBAIC01MDcsNiArNTA1LDcgQEAgYm9vbCBXZWJQYWdlOjpw
ZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rv
ciwgS2V5Ym8KIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCiBzdGF0aWMgU3Ry
aW5nJiByZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IHN0cmluZygiUmVwbGFjZVNlbGVjdGlvblBhc3RlYm9hcmQiKTsK
QEAgLTUyMyw2ICs1MjIsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFz
dGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgIGZvciAoYXV0
byYgdHlwZSA6IHR5cGVzKQogICAgICAgICBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQ
YXN0ZWJvYXJkT3ZlcnJpZGVzKCkucmVtb3ZlT3ZlcnJpZGUocmVwbGFjZVNlbGVjdGlvblBhc3Rl
Ym9hcmROYW1lKCksIHR5cGUpOwogfQorCiAjZW5kaWYKIAogYm9vbCBXZWJQYWdlOjpwZXJmb3Jt
RGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpCkBAIC03
OTAsNiArNzkwLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkZyb21QREZEb2N1bWVu
dChDR0NvbnRleHRSZWYgY29udGV4dCwgUERGRG9jdW1lbnQgKnAKIH0KIAogI2lmIEVOQUJMRShX
RUJHTCkKKwogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OndlYkdMUG9saWN5Rm9y
VVJMKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgdWludDMyX3QgcG9s
aWN5UmVzdWx0ID0gMDsKQEAgLTgwOSwxNiArODEwLDIwIEBAIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1lLCBj
b25zCiAKICAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOwogfQorCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQorCiB2
b2lkIFdlYlBhZ2U6OmhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVt
YmVyLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTaG93VGVsZXBob25lTnVtYmVyTWVudShudW1iZXIsIHBvaW50KSk7CiB9CisKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKIHZvaWQgV2ViUGFnZTo6aGFu
ZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwaG9uZU51bWJlcnMsIGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsK
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLmZpcnN0UmFu
Z2UoKTsKQEAgLTgzNyw2ICs4NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVNlbGVjdGlvblNl
cnZpY2VDbGljayhGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBWZWN0bwogICAgIGZs
dXNoUGVuZGluZ0VkaXRvclN0YXRlVXBkYXRlKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YShwb2ludCwgc2Vs
ZWN0aW9uRGF0YVZlY3RvciwgcGhvbmVOdW1iZXJzLCBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXND
b250ZW50RWRpdGFibGUoKSksIFVzZXJEYXRhKCkpKTsKIH0KKwogI2VuZGlmCiAKIFN0cmluZyBX
ZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdApAQCAtMTAzMCw3ICsx
MDM2LDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mLCBNb24KIHsKIH0KIAotI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKIHZvaWQgV2ViUGFnZTo6cGxheWJhY2tUYXJn
ZXRTZWxlY3RlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb250ZXh0JiB0YXJnZXRDb250ZXh0KSBjb25zdAogewogICAgIHN3aXRjaCAodGFy
Z2V0Q29udGV4dC50eXBlKCkpIHsKQEAgLTEwNjAsNiArMTA2Nyw3IEBAIHZvaWQgV2ViUGFnZTo6
cGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQodWludDY0X3QgY29udGV4dElkKQogewog
ICAgIG1fcGFnZS0+cGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoY29udGV4dElkKTsK
IH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmlu
ZGV4IDI3M2FkZTEwNjQxMDY1ZTIyYTU0N2Y5NDVjYzQyOTM3MjRlZWJkNzYuLmYwZTA4NDg1OTA3
Y2FlY2Q1N2FhNDEwYjk3NjM4MTRlNzBhYjU5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTcx
LDYgKzcxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU3BlbGxDaGVja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGll
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDc0MDAzNTNiMWY1OThiMjEwOGQ5OTUw
MmY2OGJlNDQzZWE0NjU0YzIuLjI0YWFjZTc0Mjg5ZTQxNzU5MjZjZmQyMjc4MDBmYTI5MDQ4M2Y4
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
MTAwLDYgKzEwMCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NtYXJ0UmVwbGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KQEAgLTgwNiw4
ICs4MDcsOCBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihXZWJDb3JlOjpSYW5nZSAq
KXJhbmdlCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90
Rm91bmQsIDApOwogCi0gICAgc2l6ZV90IGxvY2F0aW9uOwotICAgIHNpemVfdCBsZW5ndGg7Cisg
ICAgc2l6ZV90IGxvY2F0aW9uID0gMDsKKyAgICBzaXplX3QgbGVuZ3RoID0gMDsKICAgICBpZiAo
IVdlYkNvcmU6OlRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoX3By
aXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1l
bnRFbGVtZW50KCksIHJhbmdlLCBsb2NhdGlvbiwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIE5T
TWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCkBAIC04MzYsNyArODM3LDcgQEAgLSAoUmVmUHRy
PFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5n
ZUlzUmVsYXRpdmVUbzoKICAgICAgICAgYXV0byogZWxlbWVudCA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOwog
ICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChl
bGVtZW50LCBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgICAgIHJldHVy
biBjcmVhdGVMaXZlUmFuZ2UoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChlbGVtZW50LCBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCkpOwog
ICAgIH0KIAogICAgIEFTU0VSVChyYW5nZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRp
dmVUbzo6UGFyYWdyYXBoKTsKQEAgLTg1MSw4ICs4NTIsOCBAQCAtIChSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2
ZVRvOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8mIHJvb3ROb2RlID0gcGFy
YWdyYXBoUmFuZ2UuZ2V0KCktPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUo
KTsKLSAgICBpbnQgcGFyYWdyYXBoU3RhcnRJbmRleCA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAm
cm9vdE5vZGUsIDAsICZwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpLnB0cigpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0
YXJ0SW5kZXggKyBzdGF0aWNfY2FzdDxpbnQ+KG5zcmFuZ2UubG9jYXRpb24pLCBuc3JhbmdlLmxl
bmd0aCk7CisgICAgYXV0byBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50
KCksICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBwYXJh
Z3JhcGhSYW5nZS0+c3RhcnRPZmZzZXQoKSkucHRyKCkpOworICAgIHJldHVybiBjcmVhdGVMaXZl
UmFuZ2UoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgm
cm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBuc3JhbmdlLmxvY2F0aW9uLCBuc3Jhbmdl
Lmxlbmd0aCkpOwogfQogCiAtIChET01SYW5nZSAqKV9jb252ZXJ0TlNSYW5nZVRvRE9NUmFuZ2U6
KE5TUmFuZ2UpbnNyYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJUZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlRleHRJdGVyYXRvci5tbQppbmRleCA0NzZiODcxMGEyNmY2MDg3NzkwNDY3ODk3NmM0MzRk
ZjFjMTE4ZGNmLi43MzM2MjA3M2UwYjVjMzVjODllNGJlYWJkYzRiZTI2MDliYzQwYTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTQg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIw
MjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSw2ICsyOSw4IEBACiAjaW1wb3J0ICJET01SYW5nZUludGVybmFsLmgi
CiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9J
bml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CkBA
IC04NSwxMCArODcsMTAgQEAgLSAoQk9PTClhdEVuZAogCiAtIChET01SYW5nZSAqKWN1cnJlbnRS
YW5nZQogewotICAgIFdlYkNvcmU6OlRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yID0gKl9wcml2
YXRlLT5fdGV4dEl0ZXJhdG9yOwotICAgIGlmICh0ZXh0SXRlcmF0b3IuYXRFbmQoKSkKKyAgICBh
dXRvJiBpdGVyYXRvciA9ICpfcHJpdmF0ZS0+X3RleHRJdGVyYXRvcjsKKyAgICBpZiAoaXRlcmF0
b3IuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGtpdCh0ZXh0
SXRlcmF0b3IucmFuZ2UoKS5wdHIoKSk7CisgICAgcmV0dXJuIGtpdChjcmVhdGVMaXZlUmFuZ2Uo
aXRlcmF0b3IucmFuZ2UoKSkucHRyKCkpOwogfQogCiAvLyBGSVhNRTogQ29uc2lkZXIgZGVwcmVj
YXRpbmcgdGhpcyBtZXRob2QgYW5kIGNyZWF0aW5nIG9uZSB0aGF0IGRvZXMgbm90IHJlcXVpcmUg
Y29weWluZyA4LWJpdCBjaGFyYWN0ZXJzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392114</attachid>
            <date>2020-03-01 18:53:46 -0800</date>
            <delta_ts>2020-03-05 21:45:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208432-20200301185343.patch</filename>
            <type>text/plain</type>
            <size>162154</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNkNTZmNTE1MTQzZWNm
ZjRjM2NmMTFhODc0NTc2YzhlYTJmZDFjMC4uODAzMDcyNWM1NWQyOGRmMDg4NWZmZTcyZmVhODg5
NGU1MDEwODAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0MSBAQAorMjAyMC0wMy0wMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQmVnaW4gbW92aW5nIG9mZiBv
ZiBsaXZlIHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscywgc3RhcnRpbmcgd2l0aCBUZXh0SXRl
cmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBET00gUmFuZ2UgY2xhc3MgaXMgYSBsaXZlIHJhbmdlLiBUaGUgbGl2ZSB1cGRhdGluZyBmZWF0
dXJlIG9mIHRoZXNlIHJhbmdlcyBtZWFuCisgICAgICAgIHRoZXkgYXJlIGV4cGVuc2l2ZSB0byBj
cmVhdGUgYW5kIGRlc3Ryb3kgYW5kIGFsc28gbWFrZSBhbGwgRE9NIG11dGF0aW9uIG1vcmUgZXhw
ZW5zaXZlCisgICAgICAgIHdoaWxlIHRoZXkgYXJlIGFsaXZlLiBXZSB3aWxsIGJlIGFibGUgdG8g
c3BlZWQgdXAsIGxpa2VseSBtZWFzdXJhYmxlIG9uIFNwZWVkb21ldGVyLAorICAgICAgICBpZiB3
ZSBjYW4gY3V0IGRvd24gdXNlcyBvZiBsaXZlIHJhbmdlcy4KKworICAgICAgICAtIFJlZmFjdG9y
ZWQgdGhlIFN0YXRpY1JhbmdlIGNsYXNzIHRvIGNyZWF0ZSB0d28gbmV3IHN0cnVjdHMuCisgICAg
ICAgIC0gVGhlIEJvdW5kYXJ5UG9pbnQgc3RydWN0IGltcGxlbWVudHMgd2hhdCB0aGUgRE9NIHN0
YW5kYXJkIGNhbGxzIGEgYm91bmRhcnkgcG9pbnQsCisgICAgICAgICAgYSBub2RlIGFuZCBvZmZz
ZXQuIFNpbWlsYXIgdG8gdGhlIFJhbmdlQm91bmRhcnlQb2ludCBjbGFzcywgd2hpY2ggc3VwcG9y
dHMKKyAgICAgICAgICBiZWluZyB0aGUgYm91bmRhcnkgcG9pbnQgb2YgYSBsaXZlIHJhbmdlLCBi
dXQgc2ltcGxlciB0byB1c2UuCisgICAgICAgIC0gVGhlIFNpbXBsZVJhbmdlIHN0cnVjdCBpbXBs
ZW1lbnRzIHdoYXQgdGhlIERPTSBzdGFuZGFyZCBjYWxscyBhIHJhbmdlIChub3QgYSBsaXZlCisg
ICAgICAgICAgcmFuZ2UpLiBUaGlzIGlzIGxpa2UgU3RhdGljUmFuZ2UgYnV0IHdpdGhvdXQgdGhl
IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgRE9NIGJpbmRpbmcuCisgICAgICAgIC0gU2luY2UgU3Rh
dGljUmFuZ2UgaXMgZGVyaXZlZCBwdWJsaWNseSBmcm9tIFNpbXBsZVJhbmdlIHlvdSBjYW4gcGFz
cyBlaXRoZXIgdG8gYW55CisgICAgICAgICAgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIFN0YXRpY1Jh
bmdlLiBBbmQgc2luY2UgdGhlcmUgaXMgYSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgYQorICAgICAg
ICAgIFN0YXRpY1JhbmdlIGZyb20gYSBSYW5nZSB5b3UgY2FuIHBhc3MgYSBSYW5nZSB0byB0aG9z
ZSBmdW5jdGlvbnMgdG9vLgorICAgICAgICAtIFJlbmFtZWQgU3RhdGljUmFuZ2U6OmNyZWF0ZUZy
b21SYW5nZSB0byBqdXN0IFN0YXRpY1JhbmdlOjpjcmVhdGUuCisKKyAgICAgICAgLSBDaGFuZ2Vk
IHRoZSBmdW5jdGlvbnMgaW4gVGV4dEl0ZXJhdG9yIHRvIGJvdGggdGFrZSBhbmQgcmV0dXJuIFNp
bXBsZVJhbmdlIGluc3RlYWQKKyAgICAgICAgICBvZiBSYW5nZS4gQmVzaWRlcyBiZWluZyBhIGZp
cnN0IHN0ZXAgaW4gdGhlIHVzZSBvZiBsaXZlIHJhbmdlcywgdGhpcyBzaW1wbGlmaWVzCisgICAg
ICAgICAgdGhpbmdzIHNpbmNlIFNpbXBsZVJhbmdlIGNhbiBiZSBwYXNzZWQgYnkgdmFsdWUgYW5k
IHdlIGRvbid0IG5lZWQgdG8gdXNlIFJlZjw+CisgICAgICAgICAgYW5kIFJlZlB0cjw+LiBOb25l
IG9mIHRoZSBUZXh0SXRlcmF0b3IgZnVuY3Rpb25zIHN1cHBvcnQgd29ya2luZyBvbiBhIGRvY3Vt
ZW50CisgICAgICAgICAgdGhhdCBpcyBiZWluZyBtb2RpZmllZCwgc28gdGhlIGxpdmUgZmVhdHVy
ZXMgb2YgbGl2ZSByYW5nZSB3ZXJlIG5vdCBuZWVkZWQuCisgICAgICAgIC0gQ2hhbmdlZCB0aGUg
aW1wbGVtZW50YXRpb24gaW4gVGV4dEl0ZXJhdG9yIHRvIG5vdCB1c2UgbGl2ZSByYW5nZXMuCisg
ICAgICAgIC0gVXBkYXRlZCBhbGwgY2FsbGVycyBmb3IgdGhpcyBjaGFuZ2UsIGRvaW5nIG1pbmlt
YWwgY29udmVyc2lvbiwgYW5kIGNyZWF0aW5nIGxpdmUKKyAgICAgICAgICByYW5nZXMgYXMgbmVl
ZGVkLiBJdCB3YXNuJ3QgYSBnb2FsIHRvIGNvbnZlcnQgYWxsIG9mIHRoZW0uIFdlJ2xsIGdldCB0
byB0aGVtCisgICAgICAgICAgZXZlbnR1YWxseSBhcyB3ZSB2aXNpdCBhbGwgY29kZSBjcmVhdGlu
ZyBsaXZlIHJhbmdlcyB0byBjb252ZXJ0IHRvIG5vbi1saXZlCisgICAgICAgICAgd2hlcmVldmVy
IHBvc3NpYmxlLgorICAgICAgICAtIEZpbGVzIHRoYXQgaW5jbHVkZSBUZXh0SXRlcmF0b3IuaCBu
b3cgbmVlZCB0byBpbmNsdWRlIFNpbXBsZVJhbmdlLmggb3IKKyAgICAgICAgICBSYW5nZS5oLCBk
ZXBlbmRpbmcgb24gd2hhdCB0aGV5IHVzZSBmcm9tIFRleHRJdGVyYXRvci5oLiBCZWZvcmUgVGV4
dEl0ZXJhdG9yLmgKKyAgICAgICAgICB3b3VsZCBhbHdheXMgcHVsbCBSYW5nZS5oIGluLgorCisg
ICAgICAgIFNUQVJUIE5FVyBDSEFOR0VTIE5FRUQgQ09NTUVOVFMKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhcnJheU9mVGV4dEZvclRleHRNYXJr
ZXJzOmF0dHJpYnV0ZWQ6XSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFu
Z2UpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSk6CisgICAgICAgICog
cGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgor
CisgICAgICAgIEVORCBORVcgQ0hBTkdFUyBORUVEIENPTU1FTlRTCisKKyAgICAgICAgKiBNb2R1
bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmg6IFJlbW92ZWQgYSBzdHJheSBmb3J3
YXJkIGRlY2xhcmF0aW9uIG9mCisgICAgICAgIFN0YXRpY1JhbmdlLgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJhbmdlR3JvdXAuY3BwOiBSZW1vdmVkIHVuZWVkZWQgaW5j
bHVkZXMgYW5kIGNvZGUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkZWQgQm91bmRhcnlQ
b2ludC5jcHAgYW5kIFNpbXBsZVJhbmdlLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIEJvdW5kYXJ5UG9pbnQuY3BwL2ggYW5kIFNpbXBsZVJh
bmdlLmNwcC9oLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJblJhbmdl
KTogVXNlICIuIiBpbnN0ZWFkIG9mICItPiIgc2luY2UKKyAgICAgICAgVGV4dEl0ZXJhdG9yOjpy
YW5nZSBub3cgcmV0dXJucyBhbiBvYmplY3QgcmF0aGVyIHRoYW4gYSBzbWFydCBwb2ludGVyLgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFu
Z2UpOiBVc2UgY3JlYXRlTGl2ZVJhbmdlIHNvIHdlCisgICAgICAgIGNhbiBjb250aW51ZSB0byB1
c2UgY29kZSB0aGF0IGV4cGVjdHMgYSBsaXZlIHJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6cHJldmlvdXNCb3VuZGFyeSk6IFVzZSAiLiIgaW5zdGVhZCBvZiAiLT4iLgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JSYW5nZSBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yVmlz
aWJsZVBvc2l0aW9uUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6Omxlbmd0aEZvclZpc2libGVQb3NpdGlvblJhbmdlIGNvbnN0KTogRGl0dG8uCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6IERpdHRvLgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcDogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZVV0aWwuY3BwOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbTogRGl0dG8uCisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9ET01SYW5nZTpdKTogVXNlIGNyZWF0ZUxpdmVS
YW5nZS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
ZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6c3BlbGxDaGVjazpdKTogRGl0
dG8uCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF90ZXh0TWFya2Vy
Rm9ySW5kZXg6XSk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisKKyAgICAgICAgKiBkb20vQm91bmRh
cnlQb2ludC5jcHA6IEFkZGVkLgorICAgICAgICAqIGRvbS9Cb3VuZGFyeVBvaW50Lmg6IEFkZGVk
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVIaWdobGlnaHRQb3NpdGlvbnMpOiBVcGRhdGVkIHNpbmNlCisgICAgICAgIFNp
bXBsZVJhbmdlOjpzdGFydENvbnRhaW5lciBhbmQgU2ltcGxlUmFuZ2U6OmVuZENvbnRhaW5lciBu
b3cgcmV0dXJuIHJlZmVyZW5jZXMKKyAgICAgICAgcmF0aGVyIHRoYW4gcG9pbnRlcnMuCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMpOiBVc2UgY3Jl
YXRlTGl2ZVJhbmdlLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOiBBZGRlZCBpbmNsdWRl
LgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6IERpdHRvLgorICAgICAgICAqIGRvbS9SYW5n
ZS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmNwcDogQWRkZWQuCisg
ICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmg6IEFkZGVkLgorCisgICAgICAgICogZG9tL1N0YXRp
Y1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1JhbmdlOjpTdGF0aWNSYW5nZSk6
IFRha2UgYW4gcnZhbHVlIHJlZmVyZW5jZSB0byBhIFNpbXBsZVJhbmdlLgorICAgICAgICAoV2Vi
Q29yZTo6U3RhdGljUmFuZ2U6OmNyZWF0ZSk6IERpdHRvLiBDaGFuZ2VkIHRoZSBvdGhlciBvdmVy
bG9hZHMgdG8gY3JlYXRlCisgICAgICAgIGEgU2ltcGxlUmFuZ2UgZmlyc3QgdGhlbiBjYWxsIHRo
cm91Z2ggdG8gdGhlIG1haW4gb25lLgorICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudFR5cGVP
ckF0dHIpOiBXcm90ZSBhIG11Y2ggbW9yZSBlZmZpY2llbnQgdmVyc2lvbiBvZiB0aGlzLgorICAg
ICAgICBUaGUgb2xkIHZlcnNpb24gY2FsbGVkIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIG5vZGVUeXBl
IHR3aWNlLiBUaGlzIGNhbGxzIGl0IGF0CisgICAgICAgIG1vc3Qgb25jZSwgYW5kIG1vc3RseSBk
b2Vzbid0IGNhbGwgaXQgYXQgYWxsLgorICAgICAgICAqIGRvbS9TdGF0aWNSYW5nZS5oOiBTaW1w
bGlmaWVkIHRoaXMgY2xhc3MsIHB1dHRpbmcgbW9zdCBvZiB0aGUgYWN0dWFsIHJhbmdlCisgICAg
ICAgIGxvZ2ljIGludG8gdGhlIGJhc2UgY2xhc3MuIE5vdGUgdGhhdCB0aGlzIGNoYW5nZSBlbGlt
aW5hdGVkIHRoZSBwZWN1bGlhciBjb2RlCisgICAgICAgIHRoYXQgaW4gdGhlID09IG9wZXJhdG9y
IHRoYXQgY29tcGFyZWQgbm9kZXMgdXNpbmcgaXNFcXVhbE5vZGUgaW5zdGVhZCBvZiB1c2luZwor
ICAgICAgICBub2RlIGlkZW50aXR5LiBUaGVyZSB3YXMgbm8gb25lIHdobyBuZWVkZWQgdGhhdCBv
dGhlciBiZWhhdmlvci4gQWxzbyBmaXhlZAorICAgICAgICBtaXN0YWtlbiB1c2Ugb2YgdW5zaWdu
ZWQgbG9uZyBpbiBTdGF0aWNSYW5nZTo6SW5pdC4gSXQncyB1bnNpZ25lZCBsb25nIGluCisgICAg
ICAgIHRoZSBJREwgZmlsZSwgYnV0IGNvbmZ1c2luZ2x5IHRoYXQncyBqdXN0IHVuc2lnbmVkIGlu
IC5jcHAgZmlsZXMuCisKKyAgICAgICAgKiBkb20vU3RhdGljUmFuZ2UuaWRsOiBUd2Vha2VkIGZv
cm1hdHRpbmcuCisKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlB
bHRlcm5hdGl2ZVRleHRUb1JhbmdlKTogVXNlCisgICAgICAgIGNyZWF0ZUxpdmVSYW5nZS4KKyAg
ICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKiBl
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6IERpdHRvLgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dmlzaWJsZVBvc2l0aW9u
Rm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKTogRGl0dG8uCisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlz
c3BlbGxpbmcpOiBVc2UgIi4iIGluc3RlYWQgb2YgIi0+IiBhbmQKKyAgICAgICAgY3JlYXRlTGl2
ZVJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5n
VGV4dENoZWNraW5nUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
Om1hcmtBbmRSZXBsYWNlRm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJh
bmdlT2ZTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y291bnRNYXRj
aGVzRm9yVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzY2FuUmFuZ2VG
b3JUZWxlcGhvbmVOdW1iZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJh
bmdlRm9yVGV4dENoZWNraW5nUmVzdWx0IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogZWRpdGlu
Zy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6U3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZDo6dGFyZ2V0UmFuZ2VzIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBo
OjpzdWJyYW5nZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsIGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCBj
b25zdCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVBvc2l0aW9uTGVnYWN5RWRpdGluZyk6IEFkZGVkLiBGb3IgdXNl
IGluIHBsYWNlcyB3aGVyZSB0aGUgY29kZQorICAgICAgICB3YXMgY2FsbGluZyBSYW5nZTo6c3Rh
cnRQb3NpdGlvbiBvciBSYW5nZTo6ZW5kUG9zaXRpb24uIEhlcmUgZm9yIG5vdywgYnV0CisgICAg
ICAgIHdlIGNhbiBtb3ZlIGl0IHNvbWV3aGVyZSB3ZSBjYW4gc2hhcmUgaXQgb25jZSB3ZSBmaW5k
IG5lZWQgZWxzZXdoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3ROb2RlTGVnYWN5RWRpdGlu
Zyk6IERpdHRvLiBGb3IgUmFuZ2U6OmZpcnN0Tm9kZS4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRJ
blByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKTogTW92ZWQgZnJvbSBpbnQgdG8KKyAg
ICAgICAgdW5zaWduZWQuIFdlJ3ZlIG5ldmVyIHVwZGF0ZWQgUmFuZ2UgdG8gdW5zaWduZWQsIGJ1
dCBTdGF0aWNSYW5nZSwKKyAgICAgICAgU2ltcGxlUmFuZ2UsIGFuZCBCb3VuZGFyeVBvaW50IGFs
bCB1c2UgaXQsIHNvIGNvbnZlcnRlZCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpUZXh0SXRlcmF0b3IpOiBVc2UgU2ltcGxlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKTogVXNlIHVuc2lnbmVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y29sbGFwc2VkU3BhY2VMZW5ndGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om1h
eE9mZnNldEluY2x1ZGluZ0NvbGxhcHNlZFNwYWNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OnJhbmdlIGNvbnN0KTogUmV0dXJuIFNpbXBsZVJhbmdlLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yOjpub2RlIGNvbnN0KTogVXNlIFNpbXBsZVJhbmdlLgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0TGV0
dGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpyYW5nZSBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjphZHZhbmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJTdWJyYW5nZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJh
dG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRv
cjo6cmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2t3YXJkc0NoYXJh
Y3Rlckl0ZXJhdG9yOjphZHZhbmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JkQXdh
cmVJdGVyYXRvcjo6V29yZEF3YXJlSXRlcmF0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlYXJjaEJ1ZmZlcjo6aXNXb3JkRW5kTWF0Y2ggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaEJ1ZmZlcjo6aXNXb3JkU3RhcnRNYXRjaCBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21S
YW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aGFzQW55UGxhaW5UZXh0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpwbGFpblRleHQpOiBEaXR0by4gUmVmYWN0b3JlZCBhbmQgZml4
ZWQgYSBidWcgd2hlcmUKKyAgICAgICAgZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyB3
YXMgbm90IGNhbGxlZCBjb3JyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpwbGFpblRleHRVc2lu
Z0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Y29sbGFwc2VkVG9Cb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZFBsYWluVGV4dE1hdGNoZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnJhbmdlRm9yTWF0
Y2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRDbG9zZXN0UGxhaW5UZXh0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpmaW5kUGxhaW5UZXh0KTogRGl0dG8uCisKKyAgICAgICAg
KiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOiBSZW1vdmVkIGFsbCB1c2VzIG9mIGxpdmUgcmFuZ2Vz
LgorICAgICAgICBVc2UgU2ltcGxlUmFuZ2UgaW5zdGVhZC4gVXNlIHVuc2lnbmVkIGNvbnNpc3Rl
bnRseSBpbnN0ZWFkIG9mIGludCwKKyAgICAgICAgb3Igc2l6ZV90IGluIGEgY291cGxlIHBsYWNl
cyB3aGVyZSBhIGZhbWlseSBvZiBmdW5jdGlvbnMgd2FzIHVzaW5nCisgICAgICAgIHNpemVfdCBp
biBtb3N0IGNhc2VzLgorCisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
b2JzZXJ2ZVBhcmFncmFwaHMpOiBVc2UKKyAgICAgICAgY3JlYXRlTGl2ZVJhbmdlLgorCisgICAg
ICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKTogVXBkYXRlIGZvcgorICAgICAg
ICBTdGF0aWNSYW5nZTo6Y3JlYXRlIG5hbWUgY2hhbmdlLgorCisgICAgICAgICogZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246
OlZpc2libGVTZWxlY3Rpb24pOiBVc2UgU2ltcGxlUmFuZ2UKKyAgICAgICAgaW5zdGVhZCBvZiBT
dGF0aWNSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmFwcGVuZFRy
YWlsaW5nV2hpdGVzcGFjZSk6IFVzZQorICAgICAgICBjcmVhdGVMaXZlUmFuZ2UuCisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwor
ICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBy
ZXZpb3VzQm91bmRhcnkpOiBVc3NlICIuIiBpbnN0ZWFkIG9mICItPiIuCisgICAgICAgIChXZWJD
b3JlOjpuZXh0Qm91bmRhcnkpOiBVc2UgY3JlYXRlTGl2ZVJhbmdlLgorCisgICAgICAgICogZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZWN0SXRl
bUF0UG9zaXRpb25XaXRoUmFuZ2UpOiBVc2UgY3JlYXRlTGl2ZVJhbmdlLgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rp
b25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdCk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmVk
aXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0
aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tOiBVcGRhdGVkIGluY2x1ZGVzLgorCisg
ICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOiBVcGRhdGUgaW5jbHVkZXMuCisgICAgICAgICog
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6IERpdHRvLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlcGxhY2VSYW5nZXMpOiBVc2UgY3JlYXRlTGl2ZVJhbmdlLgorCisgICAgICAgICogcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcDogVXBkYXRlIGluY2x1ZGVzLgorICAgICAgICAqIHJlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcDogRGl0dG8uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6c3VicmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmFuZ2VP
ZlN0cmluZ05lYXJMb2NhdGlvbik6IERpdHRvLgorCiAyMDIwLTAyLTI5ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTbGltIGRvd24gc29tZSBDU1MgcGFyc2luZyBj
b2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGVkZDU4OWY0ZmU3OTQ5ZDY2MWFhZjg3ZWQxOWY5NzE3YjI4NDAzYzgu
LjgxNDQ1MWI5MjZjMGYwMGJlMWJiZjZlODgwMTA1N2UzNGFiNDZmOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzIgQEAKKzIwMjAtMDMtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIEJlZ2luIG1vdmluZyBvZmYgb2YgbGl2ZSByYW5nZXMgZm9yIFdlYktpdCBpbnRl
cm5hbHMsIHN0YXJ0aW5nIHdpdGggVGV4dEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVEFSVCBORVcgQ0hBTkdFUyBORUVEIENPTU1FTlRT
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpyYW5nZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQpOgorCisgICAg
ICAgIEVORCBORVcgQ0hBTkdFUyBORUVEIENPTU1FTlRTCisKKyAgICAgICAgKiBTaGFyZWQvRWRp
dGluZ1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdGluZ1JhbmdlOjp0b1JhbmdlKTog
VXNlIGNyZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKFdlYktpdDo6RWRpdGluZ1JhbmdlOjpmcm9t
UmFuZ2UpOiBJbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlcy4gRm9yIHNvbWUgcmVhc29uLAorICAg
ICAgICB0aGUgY29tcGlsZXIgbm90aWNlZCB0aGVzZSB3ZXJlIHVuaW5pdGlhbGl6ZWQsIGJ1dCBk
aWRuJ3QgYmVmb3JlIHRoZSByZWZhY3RvcmluZy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tE
T01UZXh0SXRlcmF0b3IgY3VycmVudFJhbmdlXSk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6IFVw
ZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
OiBEaXR0by4KKwogMjAyMC0wMy0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU3NjE4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGNiOTUxYzY5ZjMwZGI0NjI0MGYxN2Y0NDM3ZWE3ODQw
YTYzYWE3NjQuLjBmODg4MjIyNDJhMDkyODMwNDMwYzFmNWZjMmFmNjEzMDY3Nzc1ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMy0wMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQmVnaW4gbW92aW5nIG9mZiBv
ZiBsaXZlIHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscywgc3RhcnRpbmcgd2l0aCBUZXh0SXRl
cmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOiBVcGRhdGVkIGluY2x1ZGVzLgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06IERpdHRvLgorICAgICAgICAoLVtXZWJGcmFtZSBf
Y29udmVydFRvTlNSYW5nZTpdKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKC1bV2Vi
RnJhbWUgX2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlSXNSZWxhdGl2ZVRvOl0pOiBVc2UgYXV0byB0
byBnZXQgc2lnbmVkL3Vuc2lnbmVkCisgICAgICAgIHJpZ2h0IGFuZCByZW1vdmVkIHVubmVlZGVk
IHN0YXRpY19jYXN0IHRvIGludC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGN1cnJlbnRSYW5nZV0pOiBVc2UgY3JlYXRl
TGl2ZVJhbmdlLgorCiAyMDIwLTAyLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHN0ZDo6bG9ja19ndWFyZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcAppbmRl
eCBmYzEyOTQwMGFkNWM2YTIwYmFiM2U0ZDNhZjVjOTIyNDVlYmMzZjRlLi5jYWFhNjI1YTBmMzc0
MjFkOWY0NjhhNjc3NzBjNGYzNjdhZjFhMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcApAQCAtMzAsNyAr
MzAsNiBAQAogI2luY2x1ZGUgIkpTRE9NU2V0TGlrZS5oIgogI2luY2x1ZGUgIkpTU3RhdGljUmFu
Z2UuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCIKLSNpbmNs
dWRlICJTdGF0aWNSYW5nZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KIApAQCAtMzgsOCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEhpZ2hsaWdodFJhbmdlR3JvdXA6OkhpZ2hsaWdodFJhbmdlR3JvdXAoUmVmPFN0YXRpY1Jhbmdl
PiYmIHJhbmdlKQogewotICAgIGF1dG8gbXlSYW5nZSA9IFdURk1vdmUocmFuZ2UpOwotICAgIGFk
ZFRvU2V0TGlrZShteVJhbmdlLmdldCgpKTsKKyAgICBhZGRUb1NldExpa2UocmFuZ2UpOwogfQog
CiBSZWY8SGlnaGxpZ2h0UmFuZ2VHcm91cD4gSGlnaGxpZ2h0UmFuZ2VHcm91cDo6Y3JlYXRlKFN0
YXRpY1JhbmdlJiByYW5nZSkKQEAgLTcwLDkgKzY4LDcgQEAgYm9vbCBIaWdobGlnaHRSYW5nZUdy
b3VwOjphZGRUb1NldExpa2UoU3RhdGljUmFuZ2UmIHJhbmdlKQogICAgIGlmIChub3RGb3VuZCAh
PSBtX3Jhbmdlc0RhdGEuZmluZE1hdGNoaW5nKFsmcmFuZ2VdKGNvbnN0IFJlZjxIaWdobGlnaHRS
YW5nZURhdGE+JiBjdXJyZW50KSB7IHJldHVybiBjdXJyZW50LmdldCgpLnJhbmdlLmdldCgpID09
IHJhbmdlOyB9KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fcmFuZ2VzRGF0YS5hcHBl
bmQoSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUocmFuZ2UpKTsKLSAgICAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmgKaW5kZXggNGQ4MWU5ZWY3MjMzNDAzZmMzMzg1ZTE0
NjMxZmNiMGE5YzVlYTYwYi4uY2NlMzNlZWJlNjI2YmRlMDE1N2UxYTk3NzFmM2E1NTI4YmViMjYx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0
UmFuZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodFJhbmdlR3JvdXAuaApAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBET01TZXRBZGFwdGVyOwotY2xhc3Mg
U3RhdGljUmFuZ2U7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247CiAKIHN0
cnVjdCBIaWdobGlnaHRSYW5nZURhdGEgOiBSZWZDb3VudGVkPEhpZ2hsaWdodFJhbmdlRGF0YT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxIaWdobGlnaHRSYW5nZURhdGE+IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggYTcyMWZiYjFhZDhhNWFhNmJkYTA5YjYzYjNhMmE5ZDk5N2M5MTEyZi4uMDQxMjljYjg1
ZjMxMTlhNGYxYmUyODAzYmJlYzY4ZjkxOGUxOWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTgyNCw2
ICs4MjQsNyBAQCBkb20vQXR0ci5jcHAKIGRvbS9CZWZvcmVMb2FkRXZlbnQuY3BwCiBkb20vQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQuY3BwCiBkb20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwCitkb20v
Qm91bmRhcnlQb2ludC5jcHAKIGRvbS9DREFUQVNlY3Rpb24uY3BwCiBkb20vQ2hhcmFjdGVyRGF0
YS5jcHAKIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtOTQ5LDYgKzk1MCw3IEBA
IGRvbS9TZWN1cml0eU9yaWdpblBvbGljeS5jcHAKIGRvbS9TZWN1cml0eVBvbGljeVZpb2xhdGlv
bkV2ZW50LmNwcAogZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiBkb20vU2hhZG93Um9vdC5jcHAKK2Rv
bS9TaW1wbGVSYW5nZS5jcHAKIGRvbS9TaW11bGF0ZWRDbGljay5jcHAKIGRvbS9TbG90QXNzaWdu
bWVudC5jcHAKIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU4YmRlNDZjNDk5Zjc0ZTUx
ZTQyNTQxMGMwYWMzMTliMGY3M2M3Y2QuLjMyZTdjYmJiMzFkZjQ3MTU3ZTJhYjYwZjY0MmE4YjFk
ZjIzYTY1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI1OTksNiArMjU5OSw4IEBACiAJCTkzMTUzQkRBMTQxODFGN0EwMEZD
RjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JEOTE0MTgxRjdBMDBGQ0Y1QkUgLyogbWlzc2luZ0lt
YWdlQDJ4LnBuZyAqLzsgfTsKIAkJOTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVh
UmVzaXplQ29ybmVyLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMxNTNCREIxNDE5NTlCQjAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29ybmVy
LnBuZyAqLzsgfTsKIAkJOTMxNTNCRTIxNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUz
QkUxMTQxOTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nICovOyB9OworCQk5MzE2RERG
QjI0MEM2NEI0MDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTZEREY4MjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1w
bGVSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTkzMTZERTAwMjQwQzY0RjkwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE2RERGRTI0MEM2NEY4MDA5
MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzMUJDQzYxMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzFDQkQw
RDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFDQkQwNzE2MUE0NEU5MDBFNEM4NzQg
LyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTMxQ0JEMEYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMxQ0JEMDkxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMDYyMiw2ICsxMDYyNCwxMCBAQAogCQk5MzE1M0JEOTE0MTgxRjdBMDBGQ0Y1QkUgLyog
bWlzc2luZ0ltYWdlQDJ4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJtaXNzaW5nSW1hZ2VAMngucG5nIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNTNCREIxNDE5NTlCQjAwRkNGNUJFIC8qIHRl
eHRBcmVhUmVzaXplQ29ybmVyLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IHRleHRBcmVhUmVzaXplQ29ybmVyLnBu
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNTNCRTExNDE5NUE1NzAwRkNGNUJF
IC8qIG1pc3NpbmdJbWFnZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBtaXNzaW5nSW1hZ2UucG5nOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5MzE2RERGODI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxl
UmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlUmFuZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNkRERkEyNDBDNjRCMzAwOTM0MEFBIC8q
IFNpbXBsZVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNp
bXBsZVJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNkRERkQyNDBD
NjRGODAwOTM0MEFBIC8qIEJvdW5kYXJ5UG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQm91bmRhcnlQb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvdW5kYXJ5UG9pbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQUUzQjgxRkI4MEVBRTAwRjVFRkIyIC8qIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzFCQ0M2MDExMjRERkNCMDBCRTcwREQgLyog
TWVkaWFDYW5TdGFydExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzFDQkQwNjE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlTm9kZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODAwNiw2ICsyODAxMiw4IEBACiAJCQkJODUw
MzFCMjYwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmNwcCAqLywKIAkJCQk4
NTAzMUIyNzBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuaCAqLywKIAkJCQk3
QzFFOENGRjFFRDBDMkJFMDBCMUQ5ODMgLyogQmVmb3JlVW5sb2FkRXZlbnQuaWRsICovLAorCQkJ
CTkzMTZEREZEMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmNwcCAqLywKKwkJCQk5
MzE2RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovLAogCQkJCTdDMUU4
RDAwMUVEMEMyQkUwMEIxRDk4MyAvKiBDYWxsYmFja1Jlc3VsdC5oICovLAogCQkJCTY1NTBCNjkz
MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwICovLAogCQkJCTY1NTBCNjk0MDk5
REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCAqLywKQEAgLTI4NDAwLDYgKzI4NDA4LDgg
QEAKIAkJCQk5QjE5QjY3RTFCOTY0RTUyMDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8sCiAJ
CQkJNDZERkY0OTYxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmggKi8sCiAJCQkJ
NDZERkY0OTcxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmlkbCAqLywKKwkJCQk5
MzE2RERGQTI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovLAorCQkJCTkzMTZE
REY4MjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5oICovLAogCQkJCTU3MkE3RjIyMUM2
RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi8sCiAJCQkJNTcyQTdGMjAxQzZF
NTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi8sCiAJCQkJMzE3NDFBQUIxNjYzNUU0
NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovLApAQCAtMjkyMDksNiArMjky
MTksNyBAQAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZh
bHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzE2REUwMDI0MEM2NEY5MDA5MzQwQUEgLyogQm91
bmRhcnlQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVEOEMzN0ExODNCRkY4QzAwOUU1M0JE
IC8qIEJveFNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREQjA5OUU2NDkyMDA1NkU1
ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJFMUY0
M0YxRDYyNTRFMTAwOTQ2MjVDIC8qIEJyZWFrTGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzIz
NzIsNiArMzIzODMsNyBAQAogCQkJCTExMkIzNEQ1MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVM
aW5lTGF5b3V0UGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFOUIxMTkxODEwOTE2
RjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTgyQ0IwNTMxQTc4QTE0QjAwQUZGQ0M0IC8qIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21l
bnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMxNkRERkIyNDBDNjRCNDAwOTM0MEFB
IC8qIFNpbXBsZVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUExRUE3RDE1MkJDRjA4MDA0
RDAwQjYgLyogU2ltcGxpZnlNYXJrdXBDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJB
N0YyMTFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxNzQxQUFEMTY2MzY2MDkwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKaW5kZXggM2YxODU0NGE3NGJjOWQ5Y2YzNjY1ODMzMzljNWU3ZTMyNzk5NzI4Ny4u
NjI4NGE2ODZhZmYwZjE5ZGJkYTQ5ODAwZTM1ZWVhMDIyNTA5OTMzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC05OSw2ICs5OSw3IEBA
CiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29w
ZS5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0xODAxLDEzICsxODAyLDEz
IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5n
ZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBvCiAgICAgICAgIGludCBjdXJyZW50TGVuZ3RoID0g
aXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBib29sIGhhc1JlcGxhY2VkTm9kZU9y
QlIgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIE5vZGUmIG5vZGUgPSBpdGVyYXRvci5yYW5n
ZSgpLT5zdGFydENvbnRhaW5lcigpOworICAgICAgICBOb2RlJiBub2RlID0gaXRlcmF0b3IucmFu
Z2UoKS5zdGFydENvbnRhaW5lcigpOwogICAgICAgICBjdXJyZW50Tm9kZSA9ICZub2RlOwogICAg
ICAgICAKICAgICAgICAgLy8gV2hlbiBjdXJyZW50TGVuZ3RoID09IDAsIHdlIGNoZWNrIGlmIHRo
ZXJlJ3MgYW55IHJlcGxhY2VkIG5vZGUuCiAgICAgICAgIC8vIElmIG5vdCwgd2Ugc2tpcCB0aGUg
bm9kZSB3aXRoIG5vIGxlbmd0aC4KICAgICAgICAgaWYgKCFjdXJyZW50TGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsK
KyAgICAgICAgICAgIGludCBzdWJPZmZzZXQgPSBpdGVyYXRvci5yYW5nZSgpLnN0YXJ0T2Zmc2V0
KCk7CiAgICAgICAgICAgICBOb2RlKiBjaGlsZE5vZGUgPSBub2RlLnRyYXZlcnNlVG9DaGlsZEF0
KHN1Yk9mZnNldCk7CiAgICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFj
ZWROb2RlTmVlZHNDaGFyYWN0ZXIoY2hpbGROb2RlKSkgewogICAgICAgICAgICAgICAgIGN1bXVs
YXRpdmVPZmZzZXQrKzsKQEAgLTE4MjEsNyArMTgyMiw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGlu
dCBvCiAgICAgICAgICAgICBpZiAoY3VycmVudExlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzSFRNTFNwYWNlKGl0ZXJhdG9yLnRleHQoKVswXSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIEJSIHRhZywgd2Ugd2FudCB0byBzZXQgdGhlIGN1cnJl
bnROb2RlIHRvIGl0LgotICAgICAgICAgICAgICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRlcmF0
b3IucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHN1Yk9m
ZnNldCA9IGl0ZXJhdG9yLnJhbmdlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogY2hpbGROb2RlID0gbm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChzdWJPZmZzZXQpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlICYmIGNoaWxkTm9kZS0+cmVuZGVyZXIo
KSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVyKCktPmlzQlIoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudE5vZGUgPSBjaGlsZE5vZGU7CkBAIC0xODUxLDExICsxODUyLDExIEBAIENo
YXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+cmFuZ2UsIGludCBvCiAKICAgICAgICAgaWYgKGN1cnJlbnROb2RlID09IHByZXZp
b3VzTm9kZSkgewogICAgICAgICAgICAgbGFzdExlbmd0aCArPSBjdXJyZW50TGVuZ3RoOwotICAg
ICAgICAgICAgbGFzdFN0YXJ0T2Zmc2V0ID0gaXRlcmF0b3IucmFuZ2UoKS0+ZW5kT2Zmc2V0KCkg
LSBsYXN0TGVuZ3RoOworICAgICAgICAgICAgbGFzdFN0YXJ0T2Zmc2V0ID0gaXRlcmF0b3IucmFu
Z2UoKS5lbmRPZmZzZXQoKSAtIGxhc3RMZW5ndGg7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBsYXN0TGVuZ3RoID0gY3VycmVudExlbmd0aDsKLSAgICAgICAgICAgIGxh
c3RTdGFydE9mZnNldCA9IGhhc1JlcGxhY2VkTm9kZU9yQlIgPyAwIDogaXRlcmF0b3IucmFuZ2Uo
KS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGhhc1JlcGxh
Y2VkTm9kZU9yQlIgPyAwIDogaXRlcmF0b3IucmFuZ2UoKS5zdGFydE9mZnNldCgpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICAvLyBCcmVhayBlYXJseSBpZiB3ZSBoYXZlIGFkdmFuY2Vk
IGVub3VnaCBjaGFyYWN0ZXJzLgpAQCAtMTg5NCw4ICsxODk1LDggQEAgaW50IEFYT2JqZWN0Q2Fj
aGU6Omxlbmd0aEZvclJhbmdlKFJhbmdlKiByYW5nZSkKICAgICAgICAgICAgIGxlbmd0aCArPSBp
dC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gbG9jYXRl
IHRoZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmVwbGFjZWQgcmFuZ2UKLSAg
ICAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAg
ICAgICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAgICAg
ICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFydENvbnRhaW5lcigpOworICAgICAgICAg
ICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLnRy
YXZlcnNlVG9DaGlsZEF0KG9mZnNldCkpKQogICAgICAgICAgICAgICAgICsrbGVuZ3RoOwogICAg
ICAgICB9CkBAIC0xOTQ0LDcgKzE5NDUsNyBAQCBSZWZQdHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6
OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoUmVmUHRyPFJhbmdlPiBvcmlnaW5hbFJhbgogICAg
IAogICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRp
b24sIG9yaWdpbmFsUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0
T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7Ci0g
ICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRl
eHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKGZpbmRD
bG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0
T2Zmc2V0KSk7CiB9CiAKIHN0YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2Rl
KQpAQCAtMjY1Nyw3ICsyNjU4LDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnBy
ZXZpb3VzQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXIKICAgICBpZiAo
IW5leHQpCiAgICAgICAgIHJldHVybiBpdC5hdEVuZCgpID8gc3RhcnQgOiBjaGFyYWN0ZXJPZmZz
ZXQ7CiAgICAgCi0gICAgTm9kZSYgbm9kZSA9IGl0LmF0RW5kKCkgPyBzZWFyY2hSYW5nZS0+c3Rh
cnRDb250YWluZXIoKSA6IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7CisgICAgTm9kZSYg
bm9kZSA9IGl0LmF0RW5kKCkgPyBzZWFyY2hSYW5nZS0+c3RhcnRDb250YWluZXIoKSA6IGl0LnJh
bmdlKCkuc3RhcnRDb250YWluZXIoKTsKICAgICAKICAgICAvLyBTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yIGlnbm9yZXMgcmVwbGFjZWQgZWxlbWVudHMuCiAgICAgaWYgKEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKGNoYXJhY3Rlck9mZnNldC5u
b2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCmluZGV4IDcyYTIzNzBiNTVlYzViNGUwMTNiNDE4NWE4NjI2MDVkOWJlOTY2
YmIuLmQ3OWFiMGYyOGU4YmM2ZjJiMzMwYmNkMDMwMTZlNjY4Y2IyZTU2Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApA
QCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlJl
bmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNpbXBs
ZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTEyODIsOSAr
MTI4Myw5IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JSYW5nZShSZWZQ
dHI8UmFuZ2U+IHJhbmdlKSBjb25zdAogICAgICAgICAgICAgaXQuYXBwZW5kVGV4dFRvU3RyaW5n
QnVpbGRlcihidWlsZGVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIGxvY2F0
ZSB0aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2VkIHJhbmdlCi0g
ICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAg
ICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKCkpOwot
ICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAg
ICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFydENvbnRhaW5lcigpOworICAgICAg
ICAgICAgQVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgpLmVuZENvbnRhaW5lcigpKTsKKyAgICAg
ICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAg
ICBpZiAocmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIobm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChv
ZmZzZXQpKSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVu
dENoYXJhY3Rlcik7CiAgICAgICAgIH0KQEAgLTEzMDgsOSArMTMwOSw5IEBAIFN0cmluZyBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNp
YmxlUG9zaXRpb25SCiAgICAgICAgICAgICBpdC5hcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKGJ1
aWxkZXIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gbG9jYXRlIHRoZSBub2Rl
IGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmVwbGFjZWQgcmFuZ2UKLSAgICAgICAgICAg
IE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAgICAgICAgICAg
QVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoKSk7Ci0gICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gaXQucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAgIE5v
ZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBBU1NF
UlQoJm5vZGUgPT0gJml0LnJhbmdlKCkuZW5kQ29udGFpbmVyKCkpOworICAgICAgICAgICAgaW50
IG9mZnNldCA9IGl0LnJhbmdlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChyZXBs
YWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLnRyYXZlcnNlVG9DaGlsZEF0KG9mZnNldCkpKQog
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVy
KTsKICAgICAgICAgfQpAQCAtMTMzMyw5ICsxMzM0LDkgQEAgaW50IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Omxlbmd0aEZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJh
bmcKICAgICAgICAgICAgIGxlbmd0aCArPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgLy8gbG9jYXRlIHRoZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQg
Zm9yIHRoaXMgcmVwbGFjZWQgcmFuZ2UKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5n
ZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZpdC5y
YW5nZSgpLT5lbmRDb250YWluZXIoKSk7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXQucmFu
Z2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgp
LnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0gJml0LnJhbmdl
KCkuZW5kQ29udGFpbmVyKCkpOworICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCku
c3RhcnRPZmZzZXQoKTsKIAogICAgICAgICAgICAgaWYgKHJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFj
dGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCiAgICAgICAgICAgICAgICAgKyts
ZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9i
amVjdENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2Jq
ZWN0Q2FjaGVBdGsuY3BwCmluZGV4IGZlMTI2MGQ3ZmRjZjY4ODk4YWQ4NTU3ODRiMDUxZDNkNzIx
ZDEwNmYuLjMwMDc0NmEyNDQ0YTRiMzYxNzYyOTVhY2FjZGJlNDk4MGYzODhjMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJTaW1wbGVS
YW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vz
c2libGUuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCBiMjcxNWM3YzUzY2FlOWQwNGFmM2U0YzBmOTNhZjk3
NWY2M2RiNTI1Li42ZWJlZTg3ZWZhY2MwNGZlNmQwYWYyZTRhNmExNDZhNmRmNDliZTIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVVuaXRzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKaW5kZXggNTYzOTJjMGJkODNkMWEyYTdj
Yjc2YTc1NGI5ZWI4ODNmMjBjZmY1ZS4uOGE3NTE2NWJhNTVkYTYwNTc4NzE0MGVkMmU0YjM2NGIy
ZmQ4MThkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
Ik5vZGUuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgor
I2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCmluZGV4IDgwNjM2YzdjMGViNDNmZTM2NjBjODM0NTA4MzFkZjNhMWVmZjMzYjIu
Ljc1NzU2ZjVmYTlkZDdmMzk0ZWZkZWY1NTIyYzQ2ZWYwZTNjYTNkMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0ICJT
VkdOYW1lcy5oIgogI2ltcG9ydCAiU1ZHRWxlbWVudC5oIgogI2ltcG9ydCAiU2VsZWN0aW9uUmVj
dC5oIgorI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgog
I2ltcG9ydCAiV0FLU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV0FLV2luZG93LmgiCkBAIC0yMjU4
LDkgKzIyNTksOSBAQCAtIChOU0FycmF5ICopYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczooTlNB
cnJheSAqKW1hcmtlcnMgYXR0cmlidXRlZDooQk9PTClhdHRyaQogICAgIFRleHRJdGVyYXRvciBp
dChtYWtlUmFuZ2Uoc3RhcnRWaXNpYmxlUG9zaXRpb24sIGVuZFZpc2libGVQb3NpdGlvbikuZ2V0
KCkpOwogICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIC8v
IGxvY2F0ZSB0aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJhbmdlCi0gICAg
ICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAgICAgICBB
U1NFUlQoJm5vZGUgPT0gJml0LnJhbmdlKCktPmVuZENvbnRhaW5lcigpKTsKLSAgICAgICAgaW50
IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIE5vZGUmIG5vZGUg
PSBpdC5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAm
aXQucmFuZ2UoKS5lbmRDb250YWluZXIoKSk7CisgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5n
ZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIAogICAgICAgICAvLyBub24temVybyBsZW5ndGgg
bWVhbnMgdGV4dHVhbCBub2RlLCB6ZXJvIGxlbmd0aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0Eg
ImF0dGFjaG1lbnRzIiBpbiBBWCkKICAgICAgICAgaWYgKGl0LnRleHQoKS5sZW5ndGgoKSAhPSAw
KSB7CkBAIC0yMjc1LDcgKzIyNzYsNyBAQCAtIChOU0FycmF5ICopYXJyYXlPZlRleHRGb3JUZXh0
TWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgYXR0cmlidXRlZDooQk9PTClhdHRyaQogICAgICAg
ICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDpoZWFkaW5nT2JqZWN0
IHRvVGV4dE1hcmtlckFycmF5OmFycmF5XSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0
ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24o
Jm5vZGUsIFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKKyAg
ICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9u
KGNyZWF0ZUxpdmVSYW5nZShpdC5yYW5nZSgpKS0+c3RhcnRQb3NpdGlvbigpKSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFsaXN0TWFya2VyVGV4dC5pc0VtcHR5KCkp
IAogICAgICAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Omxpc3RNYXJrZXJUZXh0XTsK
QEAgLTIyODQsNyArMjI4NSw3IEBAIC0gKE5TQXJyYXkgKilhcnJheU9mVGV4dEZvclRleHRNYXJr
ZXJzOihOU0FycmF5ICopbWFya2VycyBhdHRyaWJ1dGVkOihCT09MKWF0dHJpCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU3Ry
aW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlzdE1hcmtlclRleHRG
b3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5zdGFy
dFBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9k
ZSwgVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxpdmVSYW5nZShpdC5yYW5nZSgpKS0+c3RhcnRQb3Np
dGlvbigpKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRy
U3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XTsKQEAgLTIz
NTMsNyArMjM1NCw3IEBAIC0gKFJlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jh
bmdlKW5zcmFuZ2UKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVj
dC0+ZG9jdW1lbnQoKTsKICAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZy
YW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAg
ICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1l
bnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0
aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCkp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIg
cmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDJmYmFjZjQ3ZmFiN2ZhNzliNDc3YWQx
ZjQ1OGQwNmQ5N2YwNDYzMjEuLmQ1MzRkOTAzODBkMzhiMzhjN2Q1NjdmNWQyYjFkZDRmY2M2NjEz
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03MCw2ICs3
MCw3IEBACiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0ICJSZW5kZXJXaWRnZXQuaCIK
ICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0
ICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2ltcG9ydCAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAj
aW1wb3J0ICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKQEAgLTc5LDYgKzgwLDcgQEAKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4K
KwogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykgfHwgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCiAj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjZW5kaWYKQEAgLTEyODcsMTQgKzEy
ODksMTQgQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZTooaWQpdGV4dE1hcmtlclJhbmcKICAgICAgICAgVGV4dEl0ZXJhdG9yIGl0
KHJhbmdlLmdldCgpKTsKICAgICAgICAgd2hpbGUgKCFpdC5hdEVuZCgpKSB7CiAgICAgICAgICAg
ICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0YXJ0aW5nIG9mZnNldCBmb3IgdGhpcyByYW5nZQot
ICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0g
ICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0gJml0LnJhbmdlKCktPmVuZENvbnRhaW5lcigpKTsK
LSAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOworICAg
ICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdlKCkuc3RhcnRDb250YWluZXIoKTsKKyAgICAg
ICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2UoKS5lbmRDb250YWluZXIoKSk7CisgICAg
ICAgICAgICBpbnQgb2Zmc2V0ID0gaXQucmFuZ2UoKS5zdGFydE9mZnNldCgpOwogCiAgICAgICAg
ICAgICAvLyBub24temVybyBsZW5ndGggbWVhbnMgdGV4dHVhbCBub2RlLCB6ZXJvIGxlbmd0aCBt
ZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1lbnRzIiBpbiBBWCkKICAgICAgICAgICAg
IGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIHRl
eHQgb2YgdGhlIGxpc3QgbWFya2VyIGl0ZW0gaWYgbmVjZXNzYXJ5LgotICAgICAgICAgICAgICAg
IFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJU
ZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBWaXNpYmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+
c3RhcnRQb3NpdGlvbigpKSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0
ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24o
Jm5vZGUsIFZpc2libGVQb3NpdGlvbihjcmVhdGVMaXZlUmFuZ2UoaXQucmFuZ2UoKSktPnN0YXJ0
UG9zaXRpb24oKSkpOwogICAgICAgICAgICAgICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0
eSgpKQogICAgICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0
dHJTdHJpbmcsICZub2RlLCBsaXN0TWFya2VyVGV4dCwgc3BlbGxDaGVjayk7CiAgICAgICAgICAg
ICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLCAmbm9kZSwgaXQu
dGV4dCgpLCBzcGVsbENoZWNrKTsKQEAgLTM3MTQsNyArMzcxNiw3IEBAIC0gKGlkKV90ZXh0TWFy
a2VyRm9ySW5kZXg6KE5TSW50ZWdlcil0ZXh0SW5kZXgKICAgICBpZiAoIWRvY3VtZW50KQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gdGV4dFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudC0+ZG9jdW1lbnRF
bGVtZW50KCksIHRleHRJbmRleCwgMCk7CisgICAgUmVmUHRyPFJhbmdlPiB0ZXh0UmFuZ2UgPSBj
cmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChk
b2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIHRleHRJbmRleCwgMCkpOwogICAgIGlmICghdGV4
dFJhbmdlIHx8ICF0ZXh0UmFuZ2UtPmJvdW5kYXJ5UG9pbnRzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBv
aW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44N2UwZjM2NDA3ZTc3ZWU4YmNkNTA5NTk4ZGJhYzQwZDM0OGNhNDM2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQm91bmRhcnlQ
b2ludC5oIgorCisjaW5jbHVkZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Jv
dW5kYXJ5UG9pbnQ6OkJvdW5kYXJ5UG9pbnQoY29uc3QgQm91bmRhcnlQb2ludCYgb3RoZXIpCisg
ICAgOiBjb250YWluZXIob3RoZXIuY29udGFpbmVyLmNvcHlSZWYoKSkKKyAgICAsIG9mZnNldChv
dGhlci5vZmZzZXQpCit7Cit9CisKK0JvdW5kYXJ5UG9pbnQmIEJvdW5kYXJ5UG9pbnQ6Om9wZXJh
dG9yPShjb25zdCBCb3VuZGFyeVBvaW50JiBvdGhlcikKK3sKKyAgICBjb250YWluZXIgPSBvdGhl
ci5jb250YWluZXIuY29weVJlZigpOworICAgIG9mZnNldCA9IG90aGVyLm9mZnNldDsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK0JvdW5kYXJ5UG9pbnQmIEJvdW5kYXJ5UG9pbnQ6Om9wZXJhdG9y
PShCb3VuZGFyeVBvaW50JiYpID0gZGVmYXVsdDsKKworRG9jdW1lbnQmIEJvdW5kYXJ5UG9pbnQ6
OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGFpbmVyLT5kb2N1bWVudCgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTE1ZTUxMWE0
ZDY2YmM4OTQwYTFhM2IxNDk0Y2Y5M2MwMWQzNjE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBOb2RlOworCitzdHJ1Y3QgQm91bmRhcnlQ
b2ludCB7CisgICAgUmVmPE5vZGU+IGNvbnRhaW5lcjsKKyAgICB1bnNpZ25lZCBvZmZzZXQgeyAw
IH07CisKKyAgICBCb3VuZGFyeVBvaW50KFJlZjxOb2RlPiYmLCB1bnNpZ25lZCk7CisKKyAgICAv
LyBVbmxpa2UgUmVmLCB3ZSBhbGxvdyBjb3B5aW5nIGEgQm91bmRhcnlQb2ludCB3aXRob3V0IGFu
IGV4cGxpY2l0IGNvcHlSZWYoKS4KKyAgICBCb3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9p
bnQmKTsKKyAgICBCb3VuZGFyeVBvaW50KEJvdW5kYXJ5UG9pbnQmJikgPSBkZWZhdWx0OworICAg
IEJvdW5kYXJ5UG9pbnQmIG9wZXJhdG9yPShjb25zdCBCb3VuZGFyeVBvaW50Jik7CisgICAgQm91
bmRhcnlQb2ludCYgb3BlcmF0b3I9KEJvdW5kYXJ5UG9pbnQmJik7CisKKyAgICBEb2N1bWVudCYg
ZG9jdW1lbnQoKSBjb25zdDsKK307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBv
aW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOworCitpbmxpbmUgQm91bmRhcnlQb2ludDo6Qm91
bmRhcnlQb2ludChSZWY8Tm9kZT4mJiBjb250YWluZXIsIHVuc2lnbmVkIG9mZnNldCkKKyAgICA6
IGNvbnRhaW5lcihXVEZNb3ZlKGNvbnRhaW5lcikpCisgICAgLCBvZmZzZXQob2Zmc2V0KQorewor
fQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0
IEJvdW5kYXJ5UG9pbnQmIGIpCit7CisgICAgcmV0dXJuICZhLmNvbnRhaW5lciA9PSAmYi5jb250
YWluZXIgJiYgYS5vZmZzZXQgPT0gYi5vZmZzZXQ7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDYwZjVmYTZjMmY1MzYzOWY3ZjIzMTcwNDBhYTEzY2IyZGU4MzNkODcuLmJmZWFh
YTA0YTk5ZjQ1NjRhMzYwYTAxNmY3YzVjMjFhZGU0YzQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMjczOCw3ICsyNzM4LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSGlnaGxpZ2h0
UG9zaXRpb25zKCkKICAgICAgICAgICAgIGZvciAoYXV0byYgcmFuZ2VEYXRhIDogaGlnaGxpZ2h0
LnZhbHVlLT5yYW5nZXNEYXRhKCkpIHsKICAgICAgICAgICAgICAgICBpZiAocmFuZ2VEYXRhLT5z
dGFydFBvc2l0aW9uICYmIHJhbmdlRGF0YS0+ZW5kUG9zaXRpb24pCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmICgmcmFuZ2VEYXRhLT5yYW5nZS0+c3Rh
cnRDb250YWluZXIoKS0+dHJlZVNjb3BlKCkgIT0gJnJhbmdlRGF0YS0+cmFuZ2UtPmVuZENvbnRh
aW5lcigpLT50cmVlU2NvcGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoJnJhbmdlRGF0YS0+cmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkgIT0gJnJhbmdlRGF0YS0+cmFuZ2UtPmVu
ZENvbnRhaW5lcigpLnRyZWVTY29wZSgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICByYW5nZXNEYXRhLmFwcGVuZChtYWtlV2Vha1B0cihyYW5nZURhdGEu
cHRyKCkpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggMmJmZTE1ZTAzNWExNzUwMGU4MTVjOTE4MDY4M2U4
OWI3NDY5NjA4Ny4uYmM1ZmEzMWUyNTIwYTI3ZTg0YWE0OWI5ZjI5YWNiNTY3OTViYjYwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
clRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCisjaW5jbHVkZSAi
U2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlIDxzdGRp
by5oPgogCkBAIC02NCw3ICs2NSw3IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiB7CiAgICAg
VmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZTsKICAgICBmb3IgKFRleHRJdGVyYXRvciB0
ZXh0SXRlcmF0b3IoJnJhbmdlKTsgIXRleHRJdGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0b3Iu
YWR2YW5jZSgpKQotICAgICAgICB0ZXh0UmFuZ2UuYXBwZW5kKHRleHRJdGVyYXRvci5yYW5nZSgp
KTsKKyAgICAgICAgdGV4dFJhbmdlLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2UodGV4dEl0ZXJhdG9y
LnJhbmdlKCkpKTsKICAgICByZXR1cm4gdGV4dFJhbmdlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggY2UyZDcxYWVjZDk2NmQ4NWJlYTFhNGE3MDNjNjEzOGYwNDNkMzk5MC4uN2RmMmFm
YmUzMDVkNzg5M2M1ODkyNDIxZGRjNWNlMzVmZTljZWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtMTA0LDYgKzEwNCw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5oIgog
I2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2suaCIKICNpbmNsdWRl
ICJTbG90QXNzaWdubWVudC5oIgogI2luY2x1ZGUgIlN0eWxlSW52YWxpZGF0b3IuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCmluZGV4IGI0N2EyOWIxYjEwMjQyMTBkNWVlZTk5YzI0NDc4ODE3MzQz
NzJjNzYuLjMzZGJiNGUxZGUwZDgxZDc1MGUyYmZmY2IzOTg1Yzk0MjZkODI4YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5o
IgorI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRl
ICJSZW5kZXJGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckdyaWQuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCmluZGV4IDljMTEzNDA1ZTI3NzVjZjdmMDVjN2Y4YWMzZmExODAwYjNkNDU5N2YuLjg3
OGY2MjUyNTRkMmZkZmVjMTI5YzY2OWRkY2RmNjcxZWRiOWNiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIlNp
bXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJs
ZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBs
ZVJhbmdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWRmOTljODViZjFlODU3MWRiZWFhNTlhY2RlODVhMDU1
ZTM5NzY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdl
LmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCisKKyNpbmNsdWRlICJSYW5nZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NpbXBsZVJhbmdlOjpTaW1wbGVSYW5nZShjb25zdCBCb3VuZGFyeVBv
aW50JiBzdGFydCwgY29uc3QgQm91bmRhcnlQb2ludCYgZW5kKQorICAgIDogc3RhcnQoc3RhcnQp
CisgICAgLCBlbmQoZW5kKQoreworfQorCitTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoQm91bmRh
cnlQb2ludCYmIHN0YXJ0LCBCb3VuZGFyeVBvaW50JiYgZW5kKQorICAgIDogc3RhcnQoV1RGTW92
ZShzdGFydCkpCisgICAgLCBlbmQoV1RGTW92ZShlbmQpKQoreworfQorCitTaW1wbGVSYW5nZTo6
U2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UmIG90aGVyKQorICAgIDogc3RhcnQob3RoZXIuc3RhcnRD
b250YWluZXIoKSwgb3RoZXIuc3RhcnRPZmZzZXQoKSkKKyAgICAsIGVuZChvdGhlci5lbmRDb250
YWluZXIoKSwgb3RoZXIuZW5kT2Zmc2V0KCkpCit7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25z
dCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCit7CisgICAgcmV0dXJuIGEu
c3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9PSBiLmVuZDsKK30KKworUmVmPFJhbmdlPiBjcmVh
dGVMaXZlUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBSYW5n
ZTo6Y3JlYXRlKHJhbmdlLnN0YXJ0LmRvY3VtZW50KCksIHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5w
dHIoKSwgcmFuZ2Uuc3RhcnQub2Zmc2V0LCByYW5nZS5lbmQuY29udGFpbmVyLnB0cigpLCByYW5n
ZS5lbmQub2Zmc2V0KTsKK30KKworUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKCpyYW5nZSk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY1YzliOGE0OTU3M2Jm
NWVkN2JkZmJhODkzOTcxMDkyMTM5M2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBSYW5nZTsKKworc3RydWN0IFNpbXBsZVJhbmdlIHsKKyAgICBCb3VuZGFy
eVBvaW50IHN0YXJ0OworICAgIEJvdW5kYXJ5UG9pbnQgZW5kOworCisgICAgTm9kZSYgc3RhcnRD
b250YWluZXIoKSBjb25zdCB7IHJldHVybiBzdGFydC5jb250YWluZXIuZ2V0KCk7IH0KKyAgICB1
bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0Lm9mZnNldDsgfQorICAg
IE5vZGUmIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGVuZC5jb250YWluZXIuZ2V0KCk7
IH0KKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBlbmQub2Zmc2V0OyB9
CisKKyAgICBib29sIGNvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09IGVuZDsgfQor
CisgICAgU2ltcGxlUmFuZ2UoY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9p
bnQmKTsKKyAgICBTaW1wbGVSYW5nZShCb3VuZGFyeVBvaW50JiYsIEJvdW5kYXJ5UG9pbnQmJik7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZShjb25zdCBSYW5nZSYpOworCisgICAg
Ly8gQ29udmVuaWVuY2Ugb3ZlcmxvYWRzIHRvIGhlbHAgd2l0aCB0cmFuc2l0aW9uIGZyb20gdXNp
bmcgYSBsb3Qgb2YgbGl2ZSByYW5nZXMuIENvbnNpZGVyIHJlbW92aW5nIHRoZXNlIGV2ZW50dWFs
bHkuCisgICAgU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UqKTsgLy8gQ3Jhc2hlcyBpZiBwYXNzZWQg
YSBudWxscHRyLgorICAgIFNpbXBsZVJhbmdlKGNvbnN0IFJlZjxSYW5nZT4mKTsKK307CisKK2Jv
b2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CisK
K1dFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJik7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKKworaW5saW5lIFNpbXBsZVJhbmdlOjpTaW1wbGVS
YW5nZShjb25zdCBSYW5nZSogcmFuZ2UpCisgICAgOiBTaW1wbGVSYW5nZSgqcmFuZ2UpCit7Cit9
CisKK2lubGluZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYgcmFu
Z2UpCisgICAgOiBTaW1wbGVSYW5nZShyYW5nZS5nZXQoKSkKK3sKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdGF0aWNSYW5nZS5jcHAKaW5kZXggODEzNmRhMTkzMzBhMDJjYTk1MzRkZDQwY2JmMDNhZWY1
ZGI5MTc5Zi4uNWJjNjJmMTc0MTRhODZiZTQwMjgxYTNjYmVmMjdmZWRjYTQ4M2E3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3RhdGljUmFuZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDM1ICsyNiwzNCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlN0YXRpY1JhbmdlLmgiCiAKLSNpbmNsdWRlICJET01FeGNlcHRpb24u
aCIKLSNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TdGF0aWNSYW5nZTo6U3RhdGljUmFuZ2UoUmVmPE5vZGU+JiYgc3RhcnRDb250
YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBSZWY8Tm9kZT4mJiBlbmRDb250YWluZXIsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICA6IG1fc3RhcnRDb250YWluZXIoV1RGTW92ZShzdGFydENv
bnRhaW5lcikpCi0gICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICwgbV9lbmRD
b250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQotICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zm
c2V0KQorU3RhdGljUmFuZ2U6OlN0YXRpY1JhbmdlKFNpbXBsZVJhbmdlJiYgcmFuZ2UpCisgICAg
OiBTaW1wbGVSYW5nZShXVEZNb3ZlKHJhbmdlKSkKIHsKIH0KIAotU3RhdGljUmFuZ2U6On5TdGF0
aWNSYW5nZSgpID0gZGVmYXVsdDsKLQotUmVmPFN0YXRpY1JhbmdlPiBTdGF0aWNSYW5nZTo6Y3Jl
YXRlKFJlZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgUmVm
PE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCitSZWY8U3RhdGljUmFu
Z2U+IFN0YXRpY1JhbmdlOjpjcmVhdGUoU2ltcGxlUmFuZ2UmJiByYW5nZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdGF0aWNSYW5nZShXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSwgc3Rh
cnRPZmZzZXQsIFdURk1vdmUoZW5kQ29udGFpbmVyKSwgZW5kT2Zmc2V0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RhdGljUmFuZ2UoV1RGTW92ZShyYW5nZSkpKTsKIH0KIAotUmVmPFN0
YXRpY1JhbmdlPiBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKGNvbnN0IFJhbmdlJiByYW5n
ZSkKK3N0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBlT3JBdHRyKE5vZGUmIG5vZGUpCiB7Ci0gICAg
cmV0dXJuIFN0YXRpY1JhbmdlOjpjcmVhdGUocmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgcmFuZ2Uu
c3RhcnRPZmZzZXQoKSwgcmFuZ2UuZW5kQ29udGFpbmVyKCksIHJhbmdlLmVuZE9mZnNldCgpKTsK
LX0KKyAgICAvLyBCZWZvcmUgY2FsbGluZyBub2RlVHlwZSwgZG8gdHdvIGZhc3Qgbm9uLXZpcnR1
YWwgY2hlY2tzIHRoYXQgY292ZXIgYWxtb3N0IGFsbCBub3JtYWwgbm9kZXMsIGJ1dCBhcmUgZmFs
c2UgZm9yIERvY3VtZW50VHlwZSBhbmQgQXR0ci4KKyAgICBpZiAoaXM8Q29udGFpbmVyTm9kZT4o
bm9kZSkgfHwgaXM8VGV4dD4obm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotc3RhdGlj
IGlubGluZSBib29sIGlzRG9jdW1lbnRUeXBlT3JBdHRyKE5vZGUmIG5vZGUpCi17Ci0gICAgcmV0
dXJuIG5vZGUuaXNEb2N1bWVudFR5cGVOb2RlKCkgfHwgbm9kZS5pc0F0dHJpYnV0ZU5vZGUoKTsK
KyAgICAvLyBDYWxsIG5vZGVUeXBlIGV4cGxpY2l0bHkgYW5kIHVzZSBhIHN3aXRjaCBzbyB3ZSBk
b24ndCBoYXZlIHRvIGNhbGwgaXQgdHdpY2UuCisgICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKCkp
IHsKKyAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgorICAgIGNhc2UgTm9kZTo6RE9DVU1F
TlRfVFlQRV9OT0RFOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiBFeGNlcHRpb25PcjxSZWY8U3RhdGljUmFuZ2U+
PiBTdGF0aWNSYW5nZTo6Y3JlYXRlKEluaXQmJiBpbml0KQpAQCAtNjMsMjcgKzYyLDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPFN0YXRpY1JhbmdlPj4gU3RhdGljUmFuZ2U6OmNyZWF0ZShJbml0JiYgaW5p
dCkKICAgICBBU1NFUlQoaW5pdC5lbmRDb250YWluZXIpOwogICAgIGlmIChpc0RvY3VtZW50VHlw
ZU9yQXR0cigqaW5pdC5zdGFydENvbnRhaW5lcikgfHwgaXNEb2N1bWVudFR5cGVPckF0dHIoKmlu
aXQuZW5kQ29udGFpbmVyKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2Rl
VHlwZUVycm9yIH07Ci0gICAgcmV0dXJuIFN0YXRpY1JhbmdlOjpjcmVhdGUoaW5pdC5zdGFydENv
bnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBpbml0LnN0YXJ0T2Zmc2V0LCBpbml0LmVuZENvbnRh
aW5lci5yZWxlYXNlTm9uTnVsbCgpLCBpbml0LmVuZE9mZnNldCk7Ci19Ci0KLU5vZGUqIFN0YXRp
Y1JhbmdlOjpzdGFydENvbnRhaW5lcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChOb2RlKiltX3N0
YXJ0Q29udGFpbmVyLnB0cigpOwotfQotCi1Ob2RlKiBTdGF0aWNSYW5nZTo6ZW5kQ29udGFpbmVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKE5vZGUqKW1fZW5kQ29udGFpbmVyLnB0cigpOwotfQot
Ci1ib29sIFN0YXRpY1JhbmdlOjpjb2xsYXBzZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0
YXJ0T2Zmc2V0ID09IG1fZW5kT2Zmc2V0ICYmIG1fc3RhcnRDb250YWluZXIucHRyKCkgPT0gbV9l
bmRDb250YWluZXIucHRyKCk7Ci19Ci0KLWJvb2wgU3RhdGljUmFuZ2U6Om9wZXJhdG9yPT0oY29u
c3QgU3RhdGljUmFuZ2UmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAobV9zdGFydE9mZnNl
dCA9PSBvdGhlci5zdGFydE9mZnNldCgpICYmIG1fZW5kT2Zmc2V0ID09IG90aGVyLmVuZE9mZnNl
dCgpICYmIG1fc3RhcnRDb250YWluZXItPmlzRXF1YWxOb2RlKG90aGVyLnN0YXJ0Q29udGFpbmVy
KCkpICYmIG1fZW5kQ29udGFpbmVyLT5pc0VxdWFsTm9kZShvdGhlci5lbmRDb250YWluZXIoKSkp
OworICAgIHJldHVybiBjcmVhdGUoeyB7IGluaXQuc3RhcnRDb250YWluZXIucmVsZWFzZU5vbk51
bGwoKSwgaW5pdC5zdGFydE9mZnNldCB9LCB7IGluaXQuZW5kQ29udGFpbmVyLnJlbGVhc2VOb25O
dWxsKCksIGluaXQuZW5kT2Zmc2V0IH0gfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1Jhbmdl
LmgKaW5kZXggZjgwZDg1ZTUyODY4ZWM1NDBhYzRmYzNhNDFiNmY4YjVjYWRlZDZiNS4uYTE4ZGFk
YTU1ZDE1YzNjN2Y0MGQ3ZGRkNjI4MTczMjRkOTQyZDExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1N0YXRpY1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1Jh
bmdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNDUgKzI2LDI1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlv
bk9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBOb2RlOwotY2xhc3MgUmFuZ2U7Ci0KLWNsYXNzIFN0YXRpY1JhbmdlIDogcHVibGljIFJlZkNv
dW50ZWQ8U3RhdGljUmFuZ2U+IHsKK2NsYXNzIFN0YXRpY1JhbmdlIDogcHVibGljIFJlZkNvdW50
ZWQ8U3RhdGljUmFuZ2U+LCBwdWJsaWMgU2ltcGxlUmFuZ2UgewogcHVibGljOgotICAgIH5TdGF0
aWNSYW5nZSgpOwotCi0gICAgc3RhdGljIFJlZjxTdGF0aWNSYW5nZT4gY3JlYXRlRnJvbVJhbmdl
KGNvbnN0IFJhbmdlJik7Ci0gICAgc3RhdGljIFJlZjxTdGF0aWNSYW5nZT4gY3JlYXRlKFJlZjxO
b2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgUmVmPE5vZGU+JiYg
ZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpOwotCiAgICAgc3RydWN0IEluaXQgewog
ICAgICAgICBSZWZQdHI8Tm9kZT4gc3RhcnRDb250YWluZXI7Ci0gICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RhcnRPZmZzZXQgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsgMCB9
OwogICAgICAgICBSZWZQdHI8Tm9kZT4gZW5kQ29udGFpbmVyOwotICAgICAgICB1bnNpZ25lZCBs
b25nIGVuZE9mZnNldCB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0IHsgMCB9Owog
ICAgIH07CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFN0YXRpY1JhbmdlPj4gY3JlYXRl
KEluaXQmJik7Ci0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRPZmZzZXQ7IH0KLSAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X2VuZE9mZnNldDsgfQotICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyKCkgY29uc3Q7Ci0gICAgTm9k
ZSogZW5kQ29udGFpbmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBjb2xsYXBzZWQoKSBjb25zdDsKLSAg
ICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RhdGljUmFuZ2UmKSBjb25zdDsKKyAgICBz
dGF0aWMgUmVmPFN0YXRpY1JhbmdlPiBjcmVhdGUoU2ltcGxlUmFuZ2UmJik7CiAKIHByaXZhdGU6
Ci0gICAgU3RhdGljUmFuZ2UoUmVmPE5vZGU+JiYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBSZWY8Tm9kZT4mJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCk7
Ci0KLSAgICBSZWY8Tm9kZT4gbV9zdGFydENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0
T2Zmc2V0OwotICAgIFJlZjxOb2RlPiBtX2VuZENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBtX2Vu
ZE9mZnNldDsKKyAgICBTdGF0aWNSYW5nZShTaW1wbGVSYW5nZSYmKTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3RhdGljUmFuZ2UuaWRsCmluZGV4IDMwYjBhMTdlNDkwMDUwZjU0NzdlZjliOTkzYTNk
ODQ3NTc1ZmMxNzcuLmQ4Yjk0NzljZjdkOGE0ZmFjOTRlNzBmZjNjY2Y4N2FmNjI5MmNkYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw4ICszOCw4IEBACiB9OwogCiBkaWN0aW9uYXJ5
IFN0YXRpY1JhbmdlSW5pdCB7Ci0gIHJlcXVpcmVkIE5vZGUgc3RhcnRDb250YWluZXI7Ci0gIHJl
cXVpcmVkIHVuc2lnbmVkIGxvbmcgc3RhcnRPZmZzZXQ7Ci0gIHJlcXVpcmVkIE5vZGUgZW5kQ29u
dGFpbmVyOwotICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIGVuZE9mZnNldDsKKyAgICByZXF1aXJl
ZCBOb2RlIHN0YXJ0Q29udGFpbmVyOworICAgIHJlcXVpcmVkIHVuc2lnbmVkIGxvbmcgc3RhcnRP
ZmZzZXQ7CisgICAgcmVxdWlyZWQgTm9kZSBlbmRDb250YWluZXI7CisgICAgcmVxdWlyZWQgdW5z
aWduZWQgbG9uZyBlbmRPZmZzZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMjkyNmVlNTc0NGE2Y2YyYzdl
MjJhNjM0Mzk3NmE5YzhmOGJkYTI3NS4uNjBlMzA3NDdkOTY5ZjBmYWViZTJmOTViYjIwNTlhZjhk
ODMyNWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIu
aCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRl
eHRDaGVja2luZ0hlbHBlci5oIgpAQCAtMjE5LDEyICsyMjAsMTIgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2Um
IHJhbmdlLAogICAgIGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9kZSwgMCwg
JnBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCksIHBh
cmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0T2Zmc2V0KCkpLnB0cigpKTsK
ICAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VXaXRoQWx0ZXJuYXRp
dmUsIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKICAgICAvLyBSZWNhbGN1bGF0ZSBwcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQg
bW9kaWZpZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1MzE1IEJ1
Z3ppbGxhOiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0Nv
cnJlY3Rpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290
Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7CisgICAgYXV0byB1cGRhdGVkUGFyYWdyYXBoUmFu
Z2VDb250YWluaW5nQ29ycmVjdGlvbiA9IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCwg
Y29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSkp
OwogICAgIGlmICghdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnN1YnJhbmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlv
biwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgp
KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2Uo
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0Nv
cnJlY3Rpb24sIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZS5s
ZW5ndGgoKSkpOwogICAgIFN0cmluZyBuZXdUZXh0ID0gcGxhaW5UZXh0KHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCkpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50IHN1Y2NlZWRl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXgg
NTJlNmU0ZTBiMTdkZGY5MGRkMWJlYjVlZGQ5MWMwMDE1ZGEzMjk3NC4uMjc5ODliZWZmZDI4ZDU3
NzQxMWNkYmM0YzZjM2Q3NmUzZTI2NTAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJOb2RlVHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVz
LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTI4
NSw4ICsyODYsOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRp
dGluZ1N0eWxlJiBzdHlsZSkKICAgICB9CiAgICAgCiAgICAgewotICAgICAgICBhdXRvIHN0YXJ0
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBz
dGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0cnVlKTsK
KyAgICAgICAgYXV0byBzdGFydFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpKTsK
KyAgICAgICAgYXV0byBlbmRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSkpOwogICAg
ICAgICBpZiAoc3RhcnRSYW5nZSAmJiBlbmRSYW5nZSkKICAgICAgICAgICAgIHVwZGF0ZVN0YXJ0
RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAppbmRleCA1ZGFiN2JhMTAxYTAxODVkY2QyNzljN2M2M2NhOTQ2MDhiMDcyNmYxLi5j
Mzc4MDFjNGRiMzQ4ZGExMWY5MjE3ZGE2ZWY5YWUyMzA4MWYxNmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzg4LDcgKzM4OCw3
IEBAIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFy
Z2V0UmFuZ2VzKCkgY29uc3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJz
dFJhbmdlKSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGUoKmZpcnN0UmFu
Z2UpIH07CiB9CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSBjb25zdApAQCAtMTUzMiw4ICsxNTMyLDgg
QEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAgICAgLy8gY2F1c2VzIHNwYWNlcyB0byBi
ZSBjb2xsYXBzZWQgZHVyaW5nIHRoZSBtb3ZlIG9wZXJhdGlvbi4gIFRoaXMgcmVzdWx0cwogICAg
ICAgICAvLyBpbiBhIGNhbGwgdG8gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggd2l0aCBhIGxv
Y2F0aW9uIHBhc3QgdGhlIGVuZAogICAgICAgICAvLyBvZiB0aGUgZG9jdW1lbnQgKHdoaWNoIHdp
bGwgcmV0dXJuIG51bGwpLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3Rp
bmF0aW9uSW5kZXggKyBzdGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgUmVmUHRyPFJhbmdl
PiBlbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxl
Um9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRleCArIGVuZEluZGV4LCAwLCB0cnVlKTsKKyAgICAg
ICAgUmVmUHRyPFJhbmdlPiBzdGFydCA9IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25J
bmRleCArIHN0YXJ0SW5kZXgsIDAsIHRydWUpKTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQg
PSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJbmRleCwgMCwgdHJ1
ZSkpOwogICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKQogICAgICAgICAgICAgc2V0RW5kaW5nU2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwgZW5kLT5zdGFy
dFBvc2l0aW9uKCksIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IGZkNWU1OTVhY2I1MTViNGY3ZTU1ODI4
NGM4NTVlYjNlYTRjOGM1ZWEuLmNkMzExZTFhZWE1ZmFiZTRiODJjODJlZTcwNjhiOTk2OGQ5YWRm
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRl
ICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVu
aXRzLmgiCkBAIC0xMTA2LDcgKzExMDcsNyBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaQogCiBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWlu
ZXJOb2RlKiBzY29wZSkKIHsKLSAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgaW5kZXgsIDAsIHRydWUpOworICAgIGF1dG8gcmFu
Z2UgPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChzY29wZSwgaW5kZXgsIDAsIHRydWUpKTsKICAgICAvLyBDaGVjayBmb3IgYW4gaW52YWxp
ZCBpbmRleC4gQ2VydGFpbiBlZGl0aW5nIG9wZXJhdGlvbnMgaW52YWxpZGF0ZSBpbmRpY2VzIGJl
Y2F1c2UgCiAgICAgLy8gb2YgcHJvYmxlbXMgd2l0aCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucy4KICAgICBpZiAoIXJhbmdlKQpAQCAtMTEyOCwx
MCArMTEyOSwxMCBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2lu
Z0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmIG5vZGUsIGludCBpbgogICAgICAgICAvLyBGSVhNRTog
d29ya2Fyb3VuZCBmb3IgY29sbGFwc2VkIHJhbmdlICh3aGVyZSBvbmx5IHN0YXJ0IHBvc2l0aW9u
IGlzIGNvcnJlY3QpIGVtaXR0ZWQgZm9yIHNvbWUgZW1pdHRlZCBuZXdsaW5lcy4KICAgICAgICAg
aXQuYWR2YW5jZSgxKTsKICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKQotICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpOworICAgICAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihjcmVhdGVMaXZlUmFuZ2UoaXQucmFuZ2UoKSkt
PnN0YXJ0UG9zaXRpb24oKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHsgaXQuYXRFbmQoKSA/IHJh
bmdlLT5lbmRQb3NpdGlvbigpIDogaXQucmFuZ2UoKS0+ZW5kUG9zaXRpb24oKSwgVVBTVFJFQU0g
fTsKKyAgICByZXR1cm4geyBpdC5hdEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBjcmVh
dGVMaXZlUmFuZ2UoaXQucmFuZ2UoKSktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNIH07CiB9CiAK
IC8vIERldGVybWluZXMgd2hldGhlciB0d28gcG9zaXRpb25zIGFyZSB2aXNpYmx5IG5leHQgdG8g
ZWFjaCBvdGhlciAoZmlyc3QgdGhlbiBzZWNvbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
aW5kZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4uMmFjMmFkYTFm
ODg3OTI5Yjk3M2E0YjYyNzdjM2Y4ZTU4N2M2YTIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcApAQCAtMjI0Niw3ICsyMjQ2LDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAgICAgLy8gU3RvcCBs
b29raW5nIGF0IHN0YXJ0IG9mIG5leHQgbWlzc3BlbGxlZCB3b3JkCiAgICAgICAgICAgICBDaGFy
YWN0ZXJJdGVyYXRvciBjaGFycygqZ3JhbW1hclNlYXJjaFJhbmdlKTsKICAgICAgICAgICAgIGNo
YXJzLmFkdmFuY2UobWlzc3BlbGxpbmdPZmZzZXQpOwotICAgICAgICAgICAgZ3JhbW1hclNlYXJj
aFJhbmdlLT5zZXRFbmQoY2hhcnMucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKSwgY2hhcnMucmFu
Z2UoKS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UtPnNl
dEVuZChjaGFycy5yYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCksIGNoYXJzLnJhbmdlKCkuc3RhcnRP
ZmZzZXQoKSk7CiAgICAgICAgIH0KICAgICAKICAgICAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5n
RW5hYmxlZCgpKQpAQCAtMjI4MSw3ICsyMjgxLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAgICAgICAg
IC8vIFN0b3AgbG9va2luZyBhdCBzdGFydCBvZiBuZXh0IG1pc3NwZWxsZWQgd29yZAogICAgICAg
ICAgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNoYXJzKCpncmFtbWFyU2VhcmNoUmFuZ2UpOwog
ICAgICAgICAgICAgICAgIGNoYXJzLmFkdmFuY2UobWlzc3BlbGxpbmdPZmZzZXQpOwotICAgICAg
ICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5kKGNoYXJzLnJhbmdlKCktPnN0YXJ0
Q29udGFpbmVyKCksIGNoYXJzLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAg
ICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5kKGNoYXJzLnJhbmdlKCkuc3RhcnRDb250YWlu
ZXIoKSwgY2hhcnMucmFuZ2UoKS5zdGFydE9mZnNldCgpKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQpAQCAtMjMwMyw4ICsyMzAz
LDggQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVm
b3JlU2VsZWN0aW9uKQogICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiAhPSAt
MSAmJiBncmFtbWFyRGV0YWlsLmxlbmd0aCA+IDApOwogICAgICAgICAKICAgICAgICAgLy8gRklY
TUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2VkIHdpdGggZG91YmxlZCBwdW5jdHVhdGlvbiBh
dCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCi0gICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCBncmFtbWFyUGhyYXNl
T2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwot
ICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KGJhZEdyYW1tYXJSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAgICAgYXV0byBi
YWRHcmFtbWFyUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgq
Z3JhbW1hclNlYXJjaFJhbmdlLCBncmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5s
b2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpKTsKKyAgICAgICAgbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYWRHcmFtbWFyUmFuZ2UuZ2V0KCks
IFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2
ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBjbGllbnQoKS0+dXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKGJhZEdyYW1tYXJQaHJhc2UsIGdyYW1tYXJEZXRhaWwpOwpA
QCAtMjMxNSw4ICsyMzE1LDggQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGlu
Zyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBXZSBmb3VuZCBhIG1pc3Nw
ZWxsaW5nLCBidXQgbm90IGFueSBlYXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1pc3Nw
ZWxsaW5nLCB1cGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAgLy8g
YSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgogICAgICAgICAKLSAg
ICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVs
bGluZ1NlYXJjaFJhbmdlLCBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3Ro
KCkpOwotICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2UsIERPV05TVFJFQU0pKTsKKyAgICAgICAgYXV0byBtaXNz
cGVsbGluZ1JhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uoc3Bl
bGxpbmdTZWFyY2hSYW5nZSwgbWlzc3BlbGxpbmdPZmZzZXQsIG1pc3NwZWxsZWRXb3JkLmxlbmd0
aCgpKSk7CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSkpOwogICAgICAgICBt
X2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKICAgICAgICAg
Y2xpZW50KCktPnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQobWlzc3BlbGxlZFdv
cmQpOwpAQCAtMjc3OSw5ICsyNzc5LDkgQEAgc3RhdGljIHZvaWQgY29ycmVjdFNwZWxsY2hlY2tp
bmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2luZ1BhcmEKICAgICAv
LyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggbWF5IGJlIG9ycGhhbmVkIGFmdGVyIFNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQgbXV0YXRlZCBET00uCiAgICAgLy8gU2VlIDxyZGFyOi8vMTAzMDUzMTU+
LCBodHRwOi8vd2Via2l0Lm9yZy9iLzg5NTI2LgogCi0gICAgUmVmUHRyPFJhbmdlPiBuZXdQYXJh
Z3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnNj
b3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQubGVu
Z3RoKCkgLSByZXN1bHRMZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gbmV3UGFyYWdyYXBoUmFu
Z2UgPSBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aCgmc2NvcGUsIHBhcmFncmFwaExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNl
bWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aCkpOwogCi0gICAgYXV0byBzcGVsbENoZWNraW5n
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhSYW5nZSwgcmVzdWx0
TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKKyAgICBhdXRvIHNwZWxsQ2hlY2tpbmdS
YW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3Jh
cGhSYW5nZSwgcmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKSk7CiAgICAgcGFy
YWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBoKHNwZWxsQ2hlY2tpbmdSYW5nZS5jb3B5UmVm
KCksIHNwZWxsQ2hlY2tpbmdSYW5nZS5jb3B5UmVmKCksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgp
KTsKIH0KIApAQCAtMjg5NCw3ICsyODk0LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNl
Rm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2UocmFuZ2VUb1JlcGxhY2UsIERPV05TVFJF
QU0pOworICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2UocmFu
Z2VUb1JlcGxhY2UuZ2V0KCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYgKHNlbGVjdGlv
blRvUmVwbGFjZSAhPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX2ZyYW1lLnNlbGVjdGlvbigpLnNob3VsZENoYW5nZVNlbGVjdGlvbihz
ZWxlY3Rpb25Ub1JlcGxhY2UpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTM0
OTEsNyArMzQ5MSw3IEBAIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0
IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmFuZ2UsCiAgICAgICAgICAgICBzZWFy
Y2hSYW5nZS0+c2V0U3RhcnQoKnNoYWRvd1RyZWVSb290LCAwKTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdl
dCwgb3B0aW9ucyk7CisgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IGNyZWF0ZUxpdmVS
YW5nZShmaW5kUGxhaW5UZXh0KCpzZWFyY2hSYW5nZSwgdGFyZ2V0LCBvcHRpb25zKSk7CiAgICAg
Ly8gSWYgd2Ugc3RhcnRlZCBpbiB0aGUgcmVmZXJlbmNlIHJhbmdlIGFuZCB0aGUgZm91bmQgcmFu
Z2UgZXhhY3RseSBtYXRjaGVzIHRoZSByZWZlcmVuY2UgcmFuZ2UsIGZpbmQgYWdhaW4uCiAgICAg
Ly8gQnVpbGQgYSBzZWxlY3Rpb24gd2l0aCB0aGUgZm91bmQgcmFuZ2UgdG8gcmVtb3ZlIGNvbGxh
cHNlZCB3aGl0ZXNwYWNlLgogICAgIC8vIENvbXBhcmUgcmFuZ2VzIGluc3RlYWQgb2Ygc2VsZWN0
aW9uIG9iamVjdHMgdG8gaWdub3JlIHRoZSB3YXkgdGhhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24g
d2FzIG1hZGUuCkBAIC0zNTA5LDcgKzM1MDksNyBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFu
Z2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhbmdlLAog
ICAgICAgICAgICAgICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydCgqc2hhZG93VHJlZVJvb3QsIDAp
OwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdWx0UmFuZ2UgPSBmaW5kUGxhaW5UZXh0KCpzZWFy
Y2hSYW5nZSwgdGFyZ2V0LCBvcHRpb25zKTsKKyAgICAgICAgcmVzdWx0UmFuZ2UgPSBjcmVhdGVM
aXZlUmFuZ2UoZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdldCwgb3B0aW9ucykpOwog
ICAgIH0KIAogICAgIC8vIElmIG5vdGhpbmcgd2FzIGZvdW5kIGluIHRoZSBzaGFkb3cgdHJlZSwg
c2VhcmNoIGluIG1haW4gY29udGVudCBmb2xsb3dpbmcgdGhlIHNoYWRvdyB0cmVlLgpAQCAtMzUy
MiwxNCArMzUyMiwxNCBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25z
dCBTdHJpbmcmIHRhcmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhbmdlLAogICAgICAgICAgICAgICAg
IHNlYXJjaFJhbmdlLT5zZXRFbmRCZWZvcmUoKnNoYWRvd1RyZWVSb290LT5zaGFkb3dIb3N0KCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdWx0UmFuZ2UgPSBmaW5kUGxhaW5UZXh0KCpzZWFy
Y2hSYW5nZSwgdGFyZ2V0LCBvcHRpb25zKTsKKyAgICAgICAgcmVzdWx0UmFuZ2UgPSBjcmVhdGVM
aXZlUmFuZ2UoZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdldCwgb3B0aW9ucykpOwog
ICAgIH0KIAogICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nIGFuZCB3ZSdyZSB3cmFw
cGluZywgc2VhcmNoIGFnYWluIGluIHRoZSBlbnRpcmUgZG9jdW1lbnQgKHRoaXMgd2lsbAogICAg
IC8vIHJlZHVuZGFudGx5IHJlLXNlYXJjaCB0aGUgYXJlYSBhbHJlYWR5IHNlYXJjaGVkIGluIHNv
bWUgY2FzZXMpLgogICAgIGlmIChyZXN1bHRSYW5nZS0+Y29sbGFwc2VkKCkgJiYgb3B0aW9ucy5j
b250YWlucyhXcmFwQXJvdW5kKSkgewogICAgICAgICBzZWFyY2hSYW5nZSA9IHJhbmdlT2ZDb250
ZW50cyhkb2N1bWVudCgpKTsKLSAgICAgICAgcmVzdWx0UmFuZ2UgPSBmaW5kUGxhaW5UZXh0KCpz
ZWFyY2hSYW5nZSwgdGFyZ2V0LCBvcHRpb25zKTsKKyAgICAgICAgcmVzdWx0UmFuZ2UgPSBjcmVh
dGVMaXZlUmFuZ2UoZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdldCwgb3B0aW9ucykp
OwogICAgICAgICAvLyBXZSB1c2VkIHRvIHJldHVybiBmYWxzZSBoZXJlIGlmIHdlIGVuZGVkIHVw
IHdpdGggdGhlIHNhbWUgcmFuZ2UgdGhhdCB3ZSBzdGFydGVkIHdpdGgKICAgICAgICAgLy8gKGUu
Zy4sIHRoZSByZWZlcmVuY2UgcmFuZ2Ugd2FzIGFscmVhZHkgdGhlIG9ubHkgaW5zdGFuY2Ugb2Yg
dGhpcyB0ZXh0KS4gQnV0IHdlIGRlY2lkZWQgdGhhdAogICAgICAgICAvLyB0aGlzIHNob3VsZCBi
ZSBhIHN1Y2Nlc3MgY2FzZSBpbnN0ZWFkLCBzbyB3ZSdsbCBqdXN0IGZhbGwgdGhyb3VnaCBpbiB0
aGF0IGNhc2UuCkBAIC0zNTY5LDcgKzM1NjksNyBAQCB1bnNpZ25lZCBFZGl0b3I6OmNvdW50TWF0
Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFJhbmdlKiByYW5nZSwgRmluZE9wdAog
CiAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDA7CiAgICAgZG8gewotICAgICAgICBhdXRvIHJl
c3VsdFJhbmdlID0gZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdldCwgb3B0aW9ucyAt
IEJhY2t3YXJkcyk7CisgICAgICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2Uo
ZmluZFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UsIHRhcmdldCwgb3B0aW9ucyAtIEJhY2t3YXJkcykp
OwogICAgICAgICBpZiAocmVzdWx0UmFuZ2UtPmNvbGxhcHNlZCgpKSB7CiAgICAgICAgICAgICBp
ZiAoIXJlc3VsdFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlzSW5TaGFkb3dUcmVlKCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzM0LDcgKzM3MzQsNyBAQCB2b2lkIEVkaXRvcjo6c2Nh
blJhbmdlRm9yVGVsZXBob25lTnVtYmVycyhSYW5nZSYgcmFuZ2UsIGNvbnN0IFN0cmluZ1ZpZXcm
IHN0cmluZwogICAgICAgICB1bnNpZ25lZCBzdWJyYW5nZU9mZnNldCA9IHNjYW5uZXJQb3NpdGlv
biArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbjsKICAgICAgICAgdW5zaWduZWQgc3VicmFuZ2VMZW5n
dGggPSByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRpdmVTdGFydFBvc2l0aW9uICsgMTsKIAot
ICAgICAgICBhdXRvIHN1YnJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgc3Vi
cmFuZ2VPZmZzZXQsIHN1YnJhbmdlTGVuZ3RoKTsKKyAgICAgICAgYXV0byBzdWJyYW5nZSA9IGNy
ZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBzdWJyYW5nZU9mZnNl
dCwgc3VicmFuZ2VMZW5ndGgpKTsKIAogICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKHN1YnJh
bmdlLnB0cigpKTsKICAgICAgICAgcmFuZ2Uub3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRN
YXJrZXIoc3VicmFuZ2UsIERvY3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwpAQCAtMzk1
Myw3ICszOTUzLDcgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNraW5n
UmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWwKICAgICBpZiAoIWNvbnRleHRS
YW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9y
OjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgp
OworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29u
dGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKIH0KIAogdm9pZCBF
ZGl0b3I6OnNjaGVkdWxlRWRpdG9yVUlVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDA0MWY5ZDEx
N2Q2YTAxZWIyYzU4NWE4YjIxNGQzM2RjZThkODgwMGYuLjlkMTczY2Y1N2Y5MTIxYTBkOTYwOTgy
MTQ4ZTc3MTIxZDE4YWI4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmUHRy
PERhdGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0
YVRyYW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VS
YW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
eyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9
OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGUoKm1fcmFuZ2VUb0JlUmVwbGFj
ZWQpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDdkYjNmOWI0
NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UuLjUxMzMxNDUzOTNkMTczYTU3OWQwYTUw
YzBiZmYxYzhlMzVhZDgzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgog
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZChSYW5n
ZSYgcmFuZ2VUb0JlQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pCiAgICAgOiBD
b21wb3NpdGVFZGl0Q29tbWFuZChyYW5nZVRvQmVDb3JyZWN0ZWQuc3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLCBFZGl0QWN0aW9uOjpJbnNlcnRSZXBsYWNlbWVudCkKICAgICAsIG1fcmFuZ2VU
b0JlQ29ycmVjdGVkKHJhbmdlVG9CZUNvcnJlY3RlZCkKLSAgICAsIG1fc2VsZWN0aW9uVG9CZUNv
cnJlY3RlZChtX3JhbmdlVG9CZUNvcnJlY3RlZCkKKyAgICAsIG1fc2VsZWN0aW9uVG9CZUNvcnJl
Y3RlZChtX3JhbmdlVG9CZUNvcnJlY3RlZC5nZXQoKSkKICAgICAsIG1fY29ycmVjdGlvbihjb3Jy
ZWN0aW9uKQogewogfQpAQCAtMTI0LDcgKzEyNCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGlj
UmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAog
ewotICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRv
QmVDb3JyZWN0ZWQpIH07CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZShtX3Jh
bmdlVG9CZUNvcnJlY3RlZCkgfTsKIH0KIAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggOGMyMzRhNGQ5
MTk0MDhkZGFhN2Q3MTUxMDhiODRjMWZjMzAyZjZmYS4uMzI1OTRhNTg4NWM2NWExNzU1NTRhMTJi
NDNlYjJiMzY0MzA3MTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIFJhbmdlJiBUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6OnBhcmFncmFwaFJhbmdlKCkgY29uc3QKIAogUmVmPFJhbmdlPiBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGg6OnN1YnJhbmdlKGludCBjaGFyYWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3Vu
dCkgY29uc3QKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhS
YW5nZSgpLCBjaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICByZXR1cm4gY3Jl
YXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgY2hh
cmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCkpOwogfQogCiBFeGNlcHRpb25PcjxpbnQ+IFRl
eHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBj
b25zdApAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRG
aXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vCiAKICAgICAg
ICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPj0gMCAmJiBtaXNzcGVsbGluZ0xlbmd0aCA+IDAg
JiYgbWlzc3BlbGxpbmdMb2NhdGlvbiA8IHRleHRMZW5ndGggJiYgbWlzc3BlbGxpbmdMZW5ndGgg
PD0gdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGgg
PD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSByYW5nZSBvZiBtaXNzcGVs
bGVkIHdvcmQKLSAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRv
cjo6c3VicmFuZ2UobV9yYW5nZSwgY3VycmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2Nh
dGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1Jh
bmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgY3Vy
cmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgp
KTsKIAogICAgICAgICAgICAgLy8gUmVtZW1iZXIgZmlyc3QtZW5jb3VudGVyZWQgbWlzc3BlbGxp
bmcgYW5kIGl0cyBvZmZzZXQuCiAgICAgICAgICAgICBpZiAoIWZpcnN0TWlzc3BlbGxpbmcpIHsK
QEAgLTQ1Niw3ICs0NTYsNyBAQCBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFt
bWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIAogICAgICAgICBpZiAobWFya0FsbCkgewotICAgICAgICAgICAg
YXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGJh
ZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5sb2NhdGlvbiwg
ZGV0YWlsLT5sZW5ndGgpOworICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBjcmVh
dGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShtX3JhbmdlLCBiYWRHcmFtbWFyUGhy
YXNlTG9jYXRpb24gLSBzdGFydE9mZnNldCArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+bGVu
Z3RoKSk7CiAgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJr
ZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgfQogICAgICAg
ICAKQEAgLTU1Niw3ICs1NTYsNyBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1t
YXRpY2FsKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIEJhZCBn
cmFtbWFyIGF0IHN0YXJ0IG9mIHJhbmdlLCBidXQgZW5kIG9mIGJhZCBncmFtbWFyIGlzIGJlZm9y
ZSBvciBhZnRlciBlbmQgb2YgcmFuZ2UKLSAgICBpZiAoZ3JhbW1hckRldGFpbC5sZW5ndGggIT0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChtX3JhbmdlLnB0cigpKSkKKyAgICBpZiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihncmFtbWFyRGV0YWlsLmxlbmd0aCkgIT0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChtX3JhbmdlLnB0cigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAg
IC8vIFVwZGF0ZSB0aGUgc3BlbGxpbmcgcGFuZWwgdG8gYmUgZGlzcGxheWluZyB0aGlzIGVycm9y
ICh3aGV0aGVyIG9yIG5vdCB0aGUgc3BlbGxpbmcgcGFuZWwgaXMgb24gc2NyZWVuKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA1M2MyZDI1NmVkMjhhN2U1Y2Mw
M2ZjZDZiNmYzY2U4ZGMzMDM0YWQyLi5kNTIxMzgxOGY2NjI0MjkzNjM1NDQ1MWI5NGRjMjI5N2Fi
MWVhOTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNSBBbGV4ZXkgUHJvc2t1cnlh
a292LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTg4LDEwICsxODgsMzEgQEAgdW5zaWduZWQgQml0
U3RhY2s6OnNpemUoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCitzdGF0aWMgUG9zaXRpb24gbWFr
ZVBvc2l0aW9uTGVnYWN5RWRpdGluZyhjb25zdCBCb3VuZGFyeVBvaW50JiBwb2ludCkKK3sKKyAg
ICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBvaW50LmNvbnRhaW5lci5wdHIo
KSwgcG9pbnQub2Zmc2V0KTsKK30KKworc3RhdGljIE5vZGUqIGZpcnN0Tm9kZUxlZ2FjeUVkaXRp
bmcoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCit7CisgICAgaWYgKHBvaW50LmNvbnRhaW5l
ci0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKQorICAgICAgICByZXR1cm4gcG9pbnQuY29udGFpbmVy
LnB0cigpOworICAgIGlmIChhdXRvKiBjaGlsZCA9IHBvaW50LmNvbnRhaW5lci0+dHJhdmVyc2VU
b0NoaWxkQXQocG9pbnQub2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIGNoaWxkOworICAgIGlmICgh
cG9pbnQub2Zmc2V0KQorICAgICAgICByZXR1cm4gcG9pbnQuY29udGFpbmVyLnB0cigpOworICAg
IHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihwb2ludC5jb250YWlu
ZXIpOworfQorCitzdGF0aWMgTm9kZSogZmlyc3ROb2RlTGVnYWN5RWRpdGluZyhjb25zdCBTaW1w
bGVSYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGZpcnN0Tm9kZUxlZ2FjeUVkaXRpbmcocmFu
Z2Uuc3RhcnQpOworfQorCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgUmFuZ2U6OnBhc3RMYXN0
Tm9kZSwgZXhjZXB0IGZvciB0aGUgZmFjdCB0aGF0IGl0IGNhbiBjbGltYiB1cCBvdXQgb2Ygc2hh
ZG93IHRyZWVzLgotc3RhdGljIE5vZGUqIG5leHRJblByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3Vu
ZGFyaWVzKE5vZGUmIHJhbmdlRW5kQ29udGFpbmVyLCBpbnQgcmFuZ2VFbmRPZmZzZXQpCitzdGF0
aWMgTm9kZSogbmV4dEluUHJlT3JkZXJDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMoTm9kZSYgcmFu
Z2VFbmRDb250YWluZXIsIHVuc2lnbmVkIHJhbmdlRW5kT2Zmc2V0KQogewotICAgIGlmIChyYW5n
ZUVuZE9mZnNldCA+PSAwICYmICFyYW5nZUVuZENvbnRhaW5lci5pc0NoYXJhY3RlckRhdGFOb2Rl
KCkpIHsKKyAgICBpZiAoIXJhbmdlRW5kQ29udGFpbmVyLmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkg
ewogICAgICAgICBpZiAoTm9kZSogbmV4dCA9IHJhbmdlRW5kQ29udGFpbmVyLnRyYXZlcnNlVG9D
aGlsZEF0KHJhbmdlRW5kT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBuZXh0OwogICAgIH0K
QEAgLTM0MCw3ICszNjEsNiBAQCB2b2lkIFRleHRJdGVyYXRvckNvcHlhYmxlVGV4dDo6YXBwZW5k
VG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbgogCiAvLyAtLS0tLS0t
LQogCi0KIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlv
biBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogICAgIDogbV9iZWhhdmlvcihi
ZWhhdmlvcikKIHsKQEAgLTM2NiwyNSArMzg2LDE3IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJh
dG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJl
CiAgICAgaW5pdCgpOwogfQogCi1UZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihjb25zdCBSYW5n
ZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQorVGV4dEl0ZXJhdG9yOjpU
ZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlv
ciBiZWhhdmlvcikKICAgICA6IG1fYmVoYXZpb3IoYmVoYXZpb3IpCiB7Ci0gICAgaWYgKCFyYW5n
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICByYW5nZS5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAK
LSAgICBtX3N0YXJ0Q29udGFpbmVyID0gJnJhbmdlLT5zdGFydENvbnRhaW5lcigpOworICAgIG1f
c3RhcnRDb250YWluZXIgPSAmcmFuZ2Uuc3RhcnRDb250YWluZXIoKTsKKyAgICBtX3N0YXJ0T2Zm
c2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKTsKKyAgICBtX2VuZENvbnRhaW5lciA9ICZyYW5nZS5l
bmRDb250YWluZXIoKTsKKyAgICBtX2VuZE9mZnNldCA9IHJhbmdlLmVuZE9mZnNldCgpOwogCi0g
ICAgLy8gQ2FsbGVycyBzaG91bGQgYmUgaGFuZGluZyB1cyB3ZWxsLWZvcm1lZCByYW5nZXMuIElm
IHdlIGRpc2NvdmVyIHRoYXQgdGhpcyBpc24ndAotICAgIC8vIHRoZSBjYXNlLCB3ZSBjb3VsZCBj
b25zaWRlciBjaGFuZ2luZyB0aGlzIGFzc2VydGlvbiB0byBhbiBlYXJseSByZXR1cm4uCi0gICAg
QVNTRVJUKHJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpOwotCi0gICAgbV9zdGFydE9mZnNl
dCA9IHJhbmdlLT5zdGFydE9mZnNldCgpOwotICAgIG1fZW5kQ29udGFpbmVyID0gJnJhbmdlLT5l
bmRDb250YWluZXIoKTsKLSAgICBtX2VuZE9mZnNldCA9IHJhbmdlLT5lbmRPZmZzZXQoKTsKLQot
ICAgIG1fbm9kZSA9IHJhbmdlLT5maXJzdE5vZGUoKTsKKyAgICBtX25vZGUgPSBmaXJzdE5vZGVM
ZWdhY3lFZGl0aW5nKHJhbmdlKTsKICAgICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC01ODcsNyArNTk5LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkK
IAogICAgIC8vIGhhbmRsZSBwcmUtZm9ybWF0dGVkIHRleHQKICAgICBpZiAoIXJlbmRlcmVyLnN0
eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKLSAgICAgICAgaW50IHJ1blN0YXJ0ID0gbV9v
ZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIHJ1blN0YXJ0ID0gbV9vZmZzZXQ7CiAgICAgICAgIGlm
IChtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlICYmIGhhc1Zpc2libGVUZXh0
Tm9kZShyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyAnLCB0ZXh0Tm9k
ZSwgbnVsbHB0ciwgcnVuU3RhcnQsIHJ1blN0YXJ0KTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTYwNCw5ICs2MTYsOSBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUo
KQogICAgICAgICB9CiAgICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9y
ZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
bnQgcmVuZGVyZXJUZXh0TGVuZ3RoID0gcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwotICAgICAgICBp
bnQgZW5kID0gKCZ0ZXh0Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElO
VF9NQVg7Ci0gICAgICAgIGludCBydW5FbmQgPSBzdGQ6Om1pbihyZW5kZXJlclRleHRMZW5ndGgs
IGVuZCk7CisgICAgICAgIHVuc2lnbmVkIHJlbmRlcmVyVGV4dExlbmd0aCA9IHJlbmRlcmVyVGV4
dC5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQgZW5kID0gKCZ0ZXh0Tm9kZSA9PSBtX2VuZENv
bnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CisgICAgICAgIHVuc2lnbmVkIHJ1bkVu
ZCA9IHN0ZDo6bWluKHJlbmRlcmVyVGV4dExlbmd0aCwgZW5kKTsKIAogICAgICAgICBpZiAocnVu
U3RhcnQgPj0gcnVuRW5kKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05MzIsNyArOTQ0
LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW1pdEV4dHJhTmV3bGluZUZvck5vZGUoTm9kZSYgbm9k
ZSkKICAgICByZXR1cm4gYm90dG9tTWFyZ2luICogMiA+PSBmb250U2l6ZTsKIH0KIAotc3RhdGlj
IGludCBjb2xsYXBzZWRTcGFjZUxlbmd0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRF
bmQpCitzdGF0aWMgdW5zaWduZWQgY29sbGFwc2VkU3BhY2VMZW5ndGgoUmVuZGVyVGV4dCYgcmVu
ZGVyZXIsIHVuc2lnbmVkIHRleHRFbmQpCiB7CiAgICAgU3RyaW5nSW1wbCYgdGV4dCA9IHJlbmRl
cmVyLnRleHQoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwpAQCAtOTQz
LDkgKzk1NSw5IEBAIHN0YXRpYyBpbnQgY29sbGFwc2VkU3BhY2VMZW5ndGgoUmVuZGVyVGV4dCYg
cmVuZGVyZXIsIGludCB0ZXh0RW5kKQogICAgIHJldHVybiBsZW5ndGggLSB0ZXh0RW5kOwogfQog
Ci1zdGF0aWMgaW50IG1heE9mZnNldEluY2x1ZGluZ0NvbGxhcHNlZFNwYWNlcyhOb2RlJiBub2Rl
KQorc3RhdGljIHVuc2lnbmVkIG1heE9mZnNldEluY2x1ZGluZ0NvbGxhcHNlZFNwYWNlcyhOb2Rl
JiBub2RlKQogewotICAgIGludCBvZmZzZXQgPSBjYXJldE1heE9mZnNldChub2RlKTsKKyAgICB1
bnNpZ25lZCBvZmZzZXQgPSBjYXJldE1heE9mZnNldChub2RlKTsKICAgICBpZiAoYXV0byogcmVu
ZGVyZXIgPSBub2RlLnJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpy
ZW5kZXJlcikpCiAgICAgICAgICAgICBvZmZzZXQgKz0gY29sbGFwc2VkU3BhY2VMZW5ndGgoZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSwgb2Zmc2V0KTsKQEAgLTEwODcsNyArMTA5OSw3
IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpleGl0Tm9kZShOb2RlKiBleGl0ZWROb2RlKQogICAgICAg
ICBlbWl0Q2hhcmFjdGVyKCcgJywgKmJhc2VOb2RlLT5wYXJlbnROb2RlKCksIGJhc2VOb2RlLCAx
LCAxKTsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgY2hhcmFj
dGVyLCBOb2RlJiBjaGFyYWN0ZXJOb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwgaW50IHRleHRT
dGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCit2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdENo
YXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIsIE5vZGUmIGNoYXJhY3Rlck5vZGUsIE5vZGUqIG9mZnNl
dEJhc2VOb2RlLCB1bnNpZ25lZCB0ZXh0U3RhcnRPZmZzZXQsIHVuc2lnbmVkIHRleHRFbmRPZmZz
ZXQpCiB7CiAgICAgbV9oYXNFbWl0dGVkID0gdHJ1ZTsKICAgICAKQEAgLTExMDMsMTAgKzExMTUs
OCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIsIE5v
ZGUmIGNoYXJhY3Rlck5vZGUsIE5vZGUqIG9mZgogICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRo
Q29sbGFwc2VkU3BhY2UgPSBmYWxzZTsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0
KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRTdGFydE9mZnNl
dCwgaW50IHRleHRFbmRPZmZzZXQpCit2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoVGV4dCYg
dGV4dE5vZGUsIFJlbmRlclRleHQmIHJlbmRlcmVyLCB1bnNpZ25lZCB0ZXh0U3RhcnRPZmZzZXQs
IHVuc2lnbmVkIHRleHRFbmRPZmZzZXQpCiB7Ci0gICAgQVNTRVJUKHRleHRTdGFydE9mZnNldCA+
PSAwKTsKLSAgICBBU1NFUlQodGV4dEVuZE9mZnNldCA+PSAwKTsKICAgICBBU1NFUlQodGV4dFN0
YXJ0T2Zmc2V0IDw9IHRleHRFbmRPZmZzZXQpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgcHJvYmFi
bHkgeWllbGRzIHRoZSB3cm9uZyBvZmZzZXRzIHdoZW4gdGV4dC10cmFuc2Zvcm06IGxvd2VyY2Fz
ZSB0dXJucyBhIHNpbmdsZSBjaGFyYWN0ZXIgaW50byB0d28gY2hhcmFjdGVycy4KQEAgLTExMjgs
NTAgKzExMzgsNTEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRleHQmIHRleHROb2Rl
LCBSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRTdGFydE8KICAgICBtX2hhc0VtaXR0ZWQg
PSB0cnVlOwogfQogCi1SZWY8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAorU2lt
cGxlUmFuZ2UgVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdEVu
ZCgpKTsKIAotICAgIC8vIHVzZSB0aGUgY3VycmVudCBydW4gaW5mb3JtYXRpb24sIGlmIHdlIGhh
dmUgaXQKKyAgICAvLyBVc2UgdGhlIGN1cnJlbnQgcnVuIGluZm9ybWF0aW9uLCBpZiB3ZSBoYXZl
IGl0LgogICAgIGlmIChtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5vZGUpIHsKICAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSBtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKTsK
ICAgICAgICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ICs9IGluZGV4OwogICAgICAgICBtX3Bvc2l0
aW9uRW5kT2Zmc2V0ICs9IGluZGV4OwogICAgICAgICBtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5vZGUg
PSBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShtX3Bvc2l0aW9uTm9k
ZS0+ZG9jdW1lbnQoKSwgbV9wb3NpdGlvbk5vZGUsIG1fcG9zaXRpb25TdGFydE9mZnNldCwgbV9w
b3NpdGlvbk5vZGUsIG1fcG9zaXRpb25FbmRPZmZzZXQpOworCisgICAgcmV0dXJuIHsgeyAqbV9w
b3NpdGlvbk5vZGUsIG1fcG9zaXRpb25TdGFydE9mZnNldCB9LCB7ICptX3Bvc2l0aW9uTm9kZSwg
bV9wb3NpdGlvbkVuZE9mZnNldCB9IH07CiB9CiAgICAgCiBOb2RlKiBUZXh0SXRlcmF0b3I6Om5v
ZGUoKSBjb25zdAogewotICAgIFJlZjxSYW5nZT4gdGV4dFJhbmdlID0gcmFuZ2UoKTsKKyAgICBh
dXRvIHRleHRSYW5nZSA9IHJhbmdlKCk7CiAKLSAgICBOb2RlJiBub2RlID0gdGV4dFJhbmdlLT5z
dGFydENvbnRhaW5lcigpOworICAgIE5vZGUmIG5vZGUgPSB0ZXh0UmFuZ2Uuc3RhcnRDb250YWlu
ZXIoKTsKICAgICBpZiAobm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCkpCiAgICAgICAgIHJldHVy
biAmbm9kZTsKLSAgICAKLSAgICByZXR1cm4gbm9kZS50cmF2ZXJzZVRvQ2hpbGRBdCh0ZXh0UmFu
Z2UtPnN0YXJ0T2Zmc2V0KCkpOworCisgICAgcmV0dXJuIG5vZGUudHJhdmVyc2VUb0NoaWxkQXQo
dGV4dFJhbmdlLnN0YXJ0T2Zmc2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLQogCi1TaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNv
bnN0IFJhbmdlJiByYW5nZSkKK1NpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewot
ICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoKTsKKyAgICByYW5nZS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkudXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBOb2RlKiBzdGFydE5vZGUgPSAm
cmFuZ2Uuc3RhcnRDb250YWluZXIoKTsKICAgICBOb2RlKiBlbmROb2RlID0gJnJhbmdlLmVuZENv
bnRhaW5lcigpOwotICAgIGludCBzdGFydE9mZnNldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0KCk7Ci0g
ICAgaW50IGVuZE9mZnNldCA9IHJhbmdlLmVuZE9mZnNldCgpOworICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQgPSBy
YW5nZS5lbmRPZmZzZXQoKTsKIAogICAgIGlmICghc3RhcnROb2RlLT5pc0NoYXJhY3RlckRhdGFO
b2RlKCkpIHsKLSAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID49IDAgJiYgc3RhcnRPZmZzZXQgPCBz
dGF0aWNfY2FzdDxpbnQ+KHN0YXJ0Tm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpKSB7CisgICAgICAg
IGlmIChzdGFydE9mZnNldCA8IHN0YXJ0Tm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpIHsKICAgICAg
ICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+dHJhdmVyc2VUb0NoaWxkQXQoc3RhcnRPZmZz
ZXQpOwogICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICB9CiAgICAgfQogICAg
IGlmICghZW5kTm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7Ci0gICAgICAgIGlmIChlbmRP
ZmZzZXQgPiAwICYmIGVuZE9mZnNldCA8PSBzdGF0aWNfY2FzdDxpbnQ+KGVuZE5vZGUtPmNvdW50
Q2hpbGROb2RlcygpKSkgeworICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCAmJiBlbmRPZmZzZXQg
PD0gZW5kTm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpIHsKICAgICAgICAgICAgIGVuZE5vZGUgPSBl
bmROb2RlLT50cmF2ZXJzZVRvQ2hpbGRBdChlbmRPZmZzZXQgLSAxKTsKICAgICAgICAgICAgIGVu
ZE9mZnNldCA9IGxhc3RPZmZzZXRJbk5vZGUoZW5kTm9kZSk7CiAgICAgICAgIH0KQEAgLTEyNzQs
OCArMTI4NSw4IEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dE5vZGUoKQogCiAgICAgbV9sYXN0VGV4dE5vZGUgPSAmdGV4dE5vZGU7CiAKLSAgICBpbnQg
c3RhcnRPZmZzZXQ7Ci0gICAgaW50IG9mZnNldEluTm9kZTsKKyAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldDsKKyAgICB1bnNpZ25lZCBvZmZzZXRJbk5vZGU7CiAgICAgUmVuZGVyVGV4dCogcmVuZGVy
ZXIgPSBoYW5kbGVGaXJzdExldHRlcihzdGFydE9mZnNldCwgb2Zmc2V0SW5Ob2RlKTsKICAgICBp
ZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyOTcsNyArMTMwOCw3IEBA
IGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQog
ICAgIEFTU0VSVChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPCBtX3Bvc2l0aW9uRW5kT2Zmc2V0KTsK
ICAgICBBU1NFUlQobV9wb3NpdGlvblN0YXJ0T2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlID49IDApOwog
ICAgIEFTU0VSVChtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlID4gMCk7Ci0gICAg
QVNTRVJUKG1fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJbk5vZGUgPD0gc3RhdGljX2Nhc3Q8
aW50Pih0ZXh0Lmxlbmd0aCgpKSk7CisgICAgQVNTRVJUKG1fcG9zaXRpb25FbmRPZmZzZXQgLSBv
ZmZzZXRJbk5vZGUgPD0gdGV4dC5sZW5ndGgoKSk7CiAKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSB0
ZXh0W21fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJbk5vZGUgLSAxXTsKICAgICBtX2NvcHlh
YmxlVGV4dC5zZXQoV1RGTW92ZSh0ZXh0KSwgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0IC0gb2Zmc2V0
SW5Ob2RlLCBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gbV9wb3NpdGlvblN0YXJ0T2Zmc2V0KTsKQEAg
LTEzMDYsNyArMTMxNyw3IEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogICAgIHJldHVybiAhbV9zaG91bGRIYW5kbGVGaXJzdExldHRlcjsK
IH0KIAotUmVuZGVyVGV4dCogU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxl
Rmlyc3RMZXR0ZXIoaW50JiBzdGFydE9mZnNldCwgaW50JiBvZmZzZXRJbk5vZGUpCitSZW5kZXJU
ZXh0KiBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVGaXJzdExldHRlcih1
bnNpZ25lZCYgc3RhcnRPZmZzZXQsIHVuc2lnbmVkJiBvZmZzZXRJbk5vZGUpCiB7CiAgICAgUmVu
ZGVyVGV4dCYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9ub2RlLT5yZW5kZXJl
cigpKTsKICAgICBzdGFydE9mZnNldCA9IChtX25vZGUgPT0gbV9zdGFydENvbnRhaW5lcikgPyBt
X3N0YXJ0T2Zmc2V0IDogMDsKQEAgLTEzMTcsNyArMTMyOCw3IEBAIFJlbmRlclRleHQqIFNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0TGV0dGVyKGludCYgc3RhcnRP
ZmZzZXQsCiAgICAgfQogCiAgICAgUmVuZGVyVGV4dEZyYWdtZW50JiBmcmFnbWVudCA9IGRvd25j
YXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpOwotICAgIGludCBvZmZzZXRBZnRlckZp
cnN0TGV0dGVyID0gZnJhZ21lbnQuc3RhcnQoKTsKKyAgICB1bnNpZ25lZCBvZmZzZXRBZnRlckZp
cnN0TGV0dGVyID0gZnJhZ21lbnQuc3RhcnQoKTsKICAgICBpZiAoc3RhcnRPZmZzZXQgPj0gb2Zm
c2V0QWZ0ZXJGaXJzdExldHRlcikgewogICAgICAgICBBU1NFUlQoIW1fc2hvdWxkSGFuZGxlRmly
c3RMZXR0ZXIpOwogICAgICAgICBvZmZzZXRJbk5vZGUgPSBvZmZzZXRBZnRlckZpcnN0TGV0dGVy
OwpAQCAtMTM3Niw3ICsxMzg3LDcgQEAgdm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJh
dG9yOjpleGl0Tm9kZSgpCiAgICAgfQogfQogCi12b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYywgTm9kZSYgbm9kZSwgaW50IHN0YXJ0T2Zm
c2V0LCBpbnQgZW5kT2Zmc2V0KQordm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9y
OjplbWl0Q2hhcmFjdGVyKFVDaGFyIGMsIE5vZGUmIG5vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCiB7CiAgICAgbV9wb3NpdGlvbk5vZGUgPSAmbm9kZTsKICAg
ICBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPSBzdGFydE9mZnNldDsKQEAgLTEzOTcsMTcgKzE0MDgs
MTcgQEAgYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlUmVzcGVj
dGluZ1JhbmdlKE5vZGUqIG5leHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZjxSYW5nZT4g
U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAorU2ltcGxlUmFu
Z2UgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewogICAg
IEFTU0VSVCghYXRFbmQoKSk7CiAKLSAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShtX3Bvc2l0aW9u
Tm9kZS0+ZG9jdW1lbnQoKSwgbV9wb3NpdGlvbk5vZGUsIG1fcG9zaXRpb25TdGFydE9mZnNldCwg
bV9wb3NpdGlvbk5vZGUsIG1fcG9zaXRpb25FbmRPZmZzZXQpOworICAgIHJldHVybiB7IHsgKm1f
cG9zaXRpb25Ob2RlLCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgfSwgeyAqbV9wb3NpdGlvbk5vZGUs
IG1fcG9zaXRpb25FbmRPZmZzZXQgfSB9OwogfQogCiAvLyAtLS0tLS0tLQogCi1DaGFyYWN0ZXJJ
dGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0
b3JCZWhhdmlvciBiZWhhdmlvcikKLSAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKCZyYW5nZSwg
YmVoYXZpb3IpCitDaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKKyAgICA6IG1f
dW5kZXJseWluZ0l0ZXJhdG9yKHJhbmdlLCBiZWhhdmlvcikKIHsKICAgICB3aGlsZSAoIWF0RW5k
KCkgJiYgIW1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgbV91
bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpOwpAQCAtMTQyMCwzNCArMTQzMSwzMSBAQCBDaGFy
YWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9u
IGVuZCwgVGV4dEl0ZXJhdG9yQgogICAgICAgICBtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZhbmNl
KCk7CiB9CiAKLVJlZjxSYW5nZT4gQ2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKK1Np
bXBsZVJhbmdlIENoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7Ci0gICAgUmVmPFJh
bmdlPiByYW5nZSA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnJhbmdlKCk7CisgICAgYXV0byByYW5n
ZSA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnJhbmdlKCk7CiAgICAgaWYgKCFtX3VuZGVybHlpbmdJ
dGVyYXRvci5hdEVuZCgpKSB7CiAgICAgICAgIGlmIChtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0
KCkubGVuZ3RoKCkgPD0gMSkgewogICAgICAgICAgICAgQVNTRVJUKG1fcnVuT2Zmc2V0ID09IDAp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTm9kZSYgbm9kZSA9IHJhbmdlLT5zdGFy
dENvbnRhaW5lcigpOwotICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZyYW5nZS0+ZW5kQ29u
dGFpbmVyKCkpOwotICAgICAgICAgICAgaW50IG9mZnNldCA9IHJhbmdlLT5zdGFydE9mZnNldCgp
ICsgbV9ydW5PZmZzZXQ7Ci0gICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQobm9kZSwgb2Zmc2V0
KTsKLSAgICAgICAgICAgIHJhbmdlLT5zZXRFbmQobm9kZSwgb2Zmc2V0ICsgMSk7CisgICAgICAg
ICAgICBOb2RlJiBub2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXIoKTsKKyAgICAgICAgICAgIEFT
U0VSVCgmbm9kZSA9PSAmcmFuZ2UuZW5kQ29udGFpbmVyKCkpOworICAgICAgICAgICAgdW5zaWdu
ZWQgb2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKSArIG1fcnVuT2Zmc2V0OworICAgICAgICAg
ICAgcmFuZ2UgPSB7IHsgbm9kZSwgb2Zmc2V0IH0sIHsgbm9kZSwgb2Zmc2V0ICsgMSB9IH07CiAg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJhbmdlOwogfQogCi12b2lkIENoYXJhY3Rlckl0
ZXJhdG9yOjphZHZhbmNlKGludCBjb3VudCkKK3ZvaWQgQ2hhcmFjdGVySXRlcmF0b3I6OmFkdmFu
Y2UodW5zaWduZWQgY291bnQpCiB7Ci0gICAgaWYgKGNvdW50IDw9IDApIHsKLSAgICAgICAgQVNT
RVJUKGNvdW50ID09IDApOworICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCisKICAgICBtX2F0QnJlYWsgPSBmYWxzZTsKIAogICAgIC8vIGVhc3kgaWYgdGhlcmUg
aXMgZW5vdWdoIGxlZnQgaW4gdGhlIGN1cnJlbnQgbV91bmRlcmx5aW5nSXRlcmF0b3IgcnVuCi0g
ICAgaW50IHJlbWFpbmluZyA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKSAt
IG1fcnVuT2Zmc2V0OworICAgIHVuc2lnbmVkIHJlbWFpbmluZyA9IG1fdW5kZXJseWluZ0l0ZXJh
dG9yLnRleHQoKS5sZW5ndGgoKSAtIG1fcnVuT2Zmc2V0OwogICAgIGlmIChjb3VudCA8IHJlbWFp
bmluZykgewogICAgICAgICBtX3J1bk9mZnNldCArPSBjb3VudDsKICAgICAgICAgbV9vZmZzZXQg
Kz0gY291bnQ7CkBAIC0xNDYwLDcgKzE0NjgsNyBAQCB2b2lkIENoYXJhY3Rlckl0ZXJhdG9yOjph
ZHZhbmNlKGludCBjb3VudCkKICAgICAKICAgICAvLyBtb3ZlIHRvIGEgc3Vic2VxdWVudCBtX3Vu
ZGVybHlpbmdJdGVyYXRvciBydW4KICAgICBmb3IgKG1fdW5kZXJseWluZ0l0ZXJhdG9yLmFkdmFu
Y2UoKTsgIWF0RW5kKCk7IG1fdW5kZXJseWluZ0l0ZXJhdG9yLmFkdmFuY2UoKSkgewotICAgICAg
ICBpbnQgcnVuTGVuZ3RoID0gbV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpOwor
ICAgICAgICB1bnNpZ25lZCBydW5MZW5ndGggPSBtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCku
bGVuZ3RoKCk7CiAgICAgICAgIGlmICghcnVuTGVuZ3RoKQogICAgICAgICAgICAgbV9hdEJyZWFr
ID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7CkBAIC0xNDgyLDI1ICsxNDkwLDIzIEBAIHZvaWQgQ2hh
cmFjdGVySXRlcmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQogICAgIG1fcnVuT2Zmc2V0ID0gMDsK
IH0KIAotc3RhdGljIFJlZjxSYW5nZT4gY2hhcmFjdGVyU3VicmFuZ2UoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBDaGFyYWN0ZXJJdGVyYXRvciYgaXQsIGludCBvZmZzZXQsIGludCBsZW5ndGgpCitzdGF0
aWMgU2ltcGxlUmFuZ2UgY2hhcmFjdGVyU3VicmFuZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBDaGFy
YWN0ZXJJdGVyYXRvciYgaXQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIGl0LmFkdmFuY2Uob2Zmc2V0KTsKICAgICBpZiAoaXQuYXRFbmQoKSkKLSAgICAgICAgcmV0
dXJuIFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICByZXR1cm4geyB7IGRvY3VtZW50
LCAwIH0sIHsgZG9jdW1lbnQsIDAgfSB9OwogCi0gICAgUmVmPFJhbmdlPiBzdGFydCA9IGl0LnJh
bmdlKCk7CisgICAgYXV0byBzdGFydCA9IGl0LnJhbmdlKCkuc3RhcnQ7CiAKICAgICBpZiAobGVu
Z3RoID4gMSkKICAgICAgICAgaXQuYWR2YW5jZShsZW5ndGggLSAxKTsKICAgICBpZiAoaXQuYXRF
bmQoKSkKLSAgICAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQpOwotCi0gICAgUmVm
PFJhbmdlPiBlbmQgPSBpdC5yYW5nZSgpOworICAgICAgICByZXR1cm4geyB7IGRvY3VtZW50LCAw
IH0sIHsgZG9jdW1lbnQsIDAgfSB9OwogCi0gICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQsICZzdGFydC0+c3RhcnRDb250YWluZXIoKSwgc3RhcnQtPnN0YXJ0T2Zmc2V0KCksICZlbmQt
PmVuZENvbnRhaW5lcigpLCBlbmQtPmVuZE9mZnNldCgpKTsKKyAgICByZXR1cm4geyBXVEZNb3Zl
KHN0YXJ0KSwgaXQucmFuZ2UoKS5lbmQgfTsKIH0KIAotQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0
b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkKK0JhY2t3
YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBT
aW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgOiBtX3VuZGVybHlpbmdJdGVyYXRvcihyYW5nZSkKICAg
ICAsIG1fb2Zmc2V0KDApCiAgICAgLCBtX3J1bk9mZnNldCgwKQpAQCAtMTUxMCwzMyArMTUxNiwz
MCBAQCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0
b3IoY29uc3QgUmFuZ2UmIHJhbmdlKQogICAgICAgICBtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZh
bmNlKCk7CiB9CiAKLVJlZjxSYW5nZT4gQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OnJhbmdl
KCkgY29uc3QKK1NpbXBsZVJhbmdlIEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSgp
IGNvbnN0CiB7Ci0gICAgUmVmPFJhbmdlPiByID0gbV91bmRlcmx5aW5nSXRlcmF0b3IucmFuZ2Uo
KTsKKyAgICBhdXRvIHIgPSBtX3VuZGVybHlpbmdJdGVyYXRvci5yYW5nZSgpOwogICAgIGlmICgh
bV91bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQoKSkgewogICAgICAgICBpZiAobV91bmRlcmx5aW5n
SXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpIDw9IDEpCiAgICAgICAgICAgICBBU1NFUlQobV9ydW5P
ZmZzZXQgPT0gMCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSYgbm9kZSA9IHIt
PnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0gJnItPmVuZENv
bnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSByLT5lbmRPZmZzZXQoKSAtIG1f
cnVuT2Zmc2V0OwotICAgICAgICAgICAgci0+c2V0U3RhcnQobm9kZSwgb2Zmc2V0IC0gMSk7Ci0g
ICAgICAgICAgICByLT5zZXRFbmQobm9kZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIE5vZGUmIG5v
ZGUgPSByLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0gJnIu
ZW5kQ29udGFpbmVyKCkpOworICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gci5lbmRPZmZz
ZXQoKSAtIG1fcnVuT2Zmc2V0OworICAgICAgICAgICAgciA9IHsgeyBub2RlLCBvZmZzZXQgLSAx
IH0sIHsgbm9kZSwgb2Zmc2V0IH0gfTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcjsK
IH0KIAotdm9pZCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5jZShpbnQgY291bnQp
Cit2b2lkIEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjphZHZhbmNlKHVuc2lnbmVkIGNvdW50
KQogewotICAgIGlmIChjb3VudCA8PSAwKSB7Ci0gICAgICAgIEFTU0VSVCghY291bnQpOworICAg
IGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBtX2F0QnJlYWsgPSBm
YWxzZTsKIAotICAgIGludCByZW1haW5pbmcgPSBtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCku
bGVuZ3RoKCkgLSBtX3J1bk9mZnNldDsKKyAgICB1bnNpZ25lZCByZW1haW5pbmcgPSBtX3VuZGVy
bHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCkgLSBtX3J1bk9mZnNldDsKICAgICBpZiAoY291
bnQgPCByZW1haW5pbmcpIHsKICAgICAgICAgbV9ydW5PZmZzZXQgKz0gY291bnQ7CiAgICAgICAg
IG1fb2Zmc2V0ICs9IGNvdW50OwpAQCAtMTU0Nyw3ICsxNTUwLDcgQEAgdm9pZCBCYWNrd2FyZHND
aGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5jZShpbnQgY291bnQpCiAgICAgbV9vZmZzZXQgKz0gcmVt
YWluaW5nOwogCiAgICAgZm9yIChtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZhbmNlKCk7ICFhdEVu
ZCgpOyBtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IHJ1bkxl
bmd0aCA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAgdW5z
aWduZWQgcnVuTGVuZ3RoID0gbV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpOwog
ICAgICAgICBpZiAocnVuTGVuZ3RoID09IDApCiAgICAgICAgICAgICBtX2F0QnJlYWsgPSB0cnVl
OwogICAgICAgICBlbHNlIHsKQEAgLTE1NjgsOCArMTU3MSw4IEBAIHZvaWQgQmFja3dhcmRzQ2hh
cmFjdGVySXRlcmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQogCiAvLyAtLS0tLS0tLQogCi1Xb3Jk
QXdhcmVJdGVyYXRvcjo6V29yZEF3YXJlSXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJhbmdlKQotICAg
IDogbV91bmRlcmx5aW5nSXRlcmF0b3IoJnJhbmdlKQorV29yZEF3YXJlSXRlcmF0b3I6OldvcmRB
d2FyZUl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKKyAgICA6IG1fdW5kZXJseWlu
Z0l0ZXJhdG9yKHJhbmdlKQogICAgICwgbV9kaWRMb29rQWhlYWQodHJ1ZSkgLy8gc28gd2UgY29u
c2lkZXIgdGhlIGZpcnN0IGNodW5rIGZyb20gdGhlIHRleHQgaXRlcmF0b3IKIHsKICAgICBhZHZh
bmNlKCk7IC8vIGdldCBpbiBwb3NpdGlvbiBvdmVyIHRoZSBmaXJzdCBjaHVuayBvZiB0ZXh0CkBA
IC0yMTU4LDcgKzIxNjEsNyBAQCBpbmxpbmUgYm9vbCBTZWFyY2hCdWZmZXI6OmlzV29yZEVuZE1h
dGNoKHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICBpbnQgZW5kV29yZDsK
ICAgICAvLyBTdGFydCBzZWFyY2hpbmcgYXQgdGhlIGVuZCBvZiBtYXRjaGVkIHNlYXJjaCwgc28g
dGhhdCBtdWx0aXBsZSB3b3JkIG1hdGNoZXMgc3VjY2VlZC4KICAgICBmaW5kRW5kV29yZEJvdW5k
YXJ5KFN0cmluZ1ZpZXcobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpLCBzdGFydCAr
IGxlbmd0aCAtIDEsICZlbmRXb3JkKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pihl
bmRXb3JkKSA9PSAoc3RhcnQgKyBsZW5ndGgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVuZFdvcmQpID09IHN0YXJ0ICsgbGVuZ3RoOwogfQogCiBpbmxpbmUgYm9vbCBTZWFyY2hC
dWZmZXI6OmlzV29yZFN0YXJ0TWF0Y2goc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dApAQCAtMjE2OCw4ICsyMTcxLDggQEAgaW5saW5lIGJvb2wgU2VhcmNoQnVmZmVyOjppc1dvcmRT
dGFydE1hdGNoKHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICBpZiAoIXN0
YXJ0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGludCBzaXplID0gbV9idWZmZXIuc2l6
ZSgpOwotICAgIGludCBvZmZzZXQgPSBzdGFydDsKKyAgICB1bnNpZ25lZCBzaXplID0gbV9idWZm
ZXIuc2l6ZSgpOworICAgIHVuc2lnbmVkIG9mZnNldCA9IHN0YXJ0OwogICAgIFVDaGFyMzIgZmly
c3RDaGFyYWN0ZXI7CiAgICAgVTE2X0dFVChtX2J1ZmZlci5kYXRhKCksIDAsIG9mZnNldCwgc2l6
ZSwgZmlyc3RDaGFyYWN0ZXIpOwogCkBAIC0yMzk2LDE4ICsyMzk5LDE4IEBAIHNpemVfdCBTZWFy
Y2hCdWZmZXI6Omxlbmd0aCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tCiAKLWludCBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBmb3JTZWxlY3Rpb25QcmVz
ZXJ2YXRpb24pCitzaXplX3QgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQogewotICAgIHVuc2ln
bmVkIGxlbmd0aCA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgZm9yIChUZXh0SXRl
cmF0b3IgaXQocmFuZ2UsIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVm
YXVsdEJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKICAgICAgICAgbGVuZ3Ro
ICs9IGl0LnRleHQoKS5sZW5ndGgoKTsKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1SZWY8UmFu
Z2U+IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFj
dGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpCitTaW1wbGVSYW5nZSBUZXh0SXRlcmF0b3I6
OnN1YnJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBlbnRpcmVSYW5nZSwgc2l6ZV90IGNoYXJhY3Rl
ck9mZnNldCwgc2l6ZV90IGNoYXJhY3RlckNvdW50KQogewogICAgIENoYXJhY3Rlckl0ZXJhdG9y
IGVudGlyZVJhbmdlSXRlcmF0b3IoZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJT
dWJyYW5nZShlbnRpcmVSYW5nZS5vd25lckRvY3VtZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3Is
IGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOworICAgIHJldHVybiBjaGFyYWN0ZXJT
dWJyYW5nZShlbnRpcmVSYW5nZS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIGVudGlyZVJh
bmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVy
YXRvcikKQEAgLTI0MTgsMjcgKzI0MjEsMjQgQEAgc3RhdGljIGlubGluZSBib29sIGlzSW5zaWRl
UmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCiAgICAgcmV0dXJuIG5vZGUg
JiYgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChub2RlLT5yZW5kZXJlcigpKTsKIH0KIAotUmVm
UHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRh
aW5lck5vZGUqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoLCBib29s
IGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKK09wdGlvbmFsPFNpbXBsZVJhbmdlPiBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBz
aXplX3QgcmFuZ2VMb2NhdGlvbiwgc2l6ZV90IHJhbmdlTGVuZ3RoLCBib29sIGZvclNlbGVjdGlv
blByZXNlcnZhdGlvbikKIHsKLSAgICBSZWY8UmFuZ2U+IHJlc3VsdFJhbmdlID0gc2NvcGUtPmRv
Y3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKKyAgICBTaW1wbGVSYW5nZSByZXN1bHRSYW5nZSA9IHNj
b3BlLT5kb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7CiAKLSAgICBpbnQgZG9jVGV4dFBvc2l0aW9u
ID0gMDsKLSAgICBpbnQgcmFuZ2VFbmQgPSByYW5nZUxvY2F0aW9uICsgcmFuZ2VMZW5ndGg7Cisg
ICAgdW5zaWduZWQgZG9jVGV4dFBvc2l0aW9uID0gMDsKKyAgICB1bnNpZ25lZCByYW5nZUVuZCA9
IHJhbmdlTG9jYXRpb24gKyByYW5nZUxlbmd0aDsKICAgICBib29sIHN0YXJ0UmFuZ2VGb3VuZCA9
IGZhbHNlOwogCi0gICAgUmVmPFJhbmdlPiB0ZXh0UnVuUmFuZ2UgPSByYW5nZU9mQ29udGVudHMo
KnNjb3BlKTsKKyAgICBTaW1wbGVSYW5nZSB0ZXh0UnVuUmFuZ2UgPSByYW5nZU9mQ29udGVudHMo
KnNjb3BlKTsKIAotICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2UucHRyKCksIGZvclNl
bGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKKyAgICBU
ZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBU
ZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRl
eHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CiAgICAgCiAgICAgLy8gRklYTUU6IHRoZSBhdEVu
ZCgpIGNoZWNrIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHdvcmthcm91bmQgZm9yIDxodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg5Pi4KLSAgICBpZiAoIXJhbmdlTG9j
YXRpb24gJiYgIXJhbmdlTGVuZ3RoICYmIGl0LmF0RW5kKCkpIHsKLSAgICAgICAgcmVzdWx0UmFu
Z2UtPnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCk7Ci0gICAgICAg
IHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCAwKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwotICAgIH0KKyAgICBpZiAoIXJhbmdlTG9jYXRp
b24gJiYgIXJhbmdlTGVuZ3RoICYmIGl0LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBTaW1wbGVS
YW5nZSB7IHRleHRSdW5SYW5nZS5zdGFydCwgdGV4dFJ1blJhbmdlLnN0YXJ0IH07CiAKICAgICBm
b3IgKDsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewotICAgICAgICBpbnQgbGVuZ3RoID0g
aXQudGV4dCgpLmxlbmd0aCgpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBpdC50ZXh0KCku
bGVuZ3RoKCk7CiAgICAgICAgIHRleHRSdW5SYW5nZSA9IGl0LnJhbmdlKCk7CiAKICAgICAgICAg
Ym9vbCBmb3VuZFN0YXJ0ID0gcmFuZ2VMb2NhdGlvbiA+PSBkb2NUZXh0UG9zaXRpb24gJiYgcmFu
Z2VMb2NhdGlvbiA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7CkBAIC0yNDQ5LDQwICsyNDQ5
LDM5IEBAIFJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50CiAgICAgICAgICAgICAvLyBwb3NpdGlvbiBm
b3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhlIGN1cnJlbnQgbm9kZSBp
cyBhIHJlcGxhY2VkIGVsZW1lbnQuCiAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEgJiYgKGl0
LnRleHQoKVswXSA9PSAnXG4nIHx8IGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KGl0KSkpIHsKICAg
ICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSBpdC5yYW5nZSgp
OwotICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChyYW5nZS0+c3RhcnRD
b250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gdGV4dFJ1blJhbmdl
LT5zdGFydFBvc2l0aW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKQorICAg
ICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UuZW5kID0gaXQucmFuZ2UoKS5zdGFydDsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuU3Rh
cnQgPSBtYWtlUG9zaXRpb25MZWdhY3lFZGl0aW5nKHRleHRSdW5SYW5nZS5zdGFydCk7CiAgICAg
ICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1bkVuZCA9IFZpc2libGVQb3NpdGlvbihydW5TdGFy
dCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChydW5F
bmQuaXNOb3ROdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNl
dEVuZCgqcnVuRW5kLmNvbnRhaW5lck5vZGUoKSwgcnVuRW5kLmNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UuZW5kID0g
eyAqcnVuRW5kLmNvbnRhaW5lck5vZGUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJ1bkVuZC5j
b21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpIH07CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZvdW5kU3RhcnQpIHsKICAgICAg
ICAgICAgIHN0YXJ0UmFuZ2VGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSByYW5nZUxvY2F0aW9uIC0gZG9jVGV4dFBvc2l0aW9uOwotICAgICAgICAgICAg
ICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCks
IG9mZnNldCArIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBpZiAo
dGV4dFJ1blJhbmdlLnN0YXJ0Q29udGFpbmVyKCkuaXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gcmFuZ2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsK
KyAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IHsgdGV4dFJ1blJhbmdlLnN0YXJ0
Q29udGFpbmVyKCksIG9mZnNldCArIHRleHRSdW5SYW5nZS5zdGFydE9mZnNldCgpIH07CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChyYW5nZUxvY2F0aW9uID09IGRv
Y1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0
KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5zdGFydE9mZnNl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2Uuc3RhcnQgPSB0ZXh0UnVuUmFu
Z2Uuc3RhcnQ7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1
bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJh
bmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLnN0YXJ0
ID0gdGV4dFJ1blJhbmdlLmVuZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IGlmIChmb3VuZEVuZCkgewotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRDb250
YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmFu
Z2VFbmQgLSBkb2NUZXh0UG9zaXRpb247Ci0gICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNl
dEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG9mZnNldCArIHRleHRSdW5SYW5n
ZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLnN0YXJ0Q29u
dGFpbmVyKCkuaXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0
ID0gcmFuZ2VFbmQgLSBkb2NUZXh0UG9zaXRpb247CisgICAgICAgICAgICAgICAgcmVzdWx0UmFu
Z2UuZW5kID0geyB0ZXh0UnVuUmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1
blJhbmdlLnN0YXJ0T2Zmc2V0KCkgfTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHJhbmdlRW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRl
eHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJh
bmdlLmVuZCA9IHRleHRSdW5SYW5nZS5zdGFydDsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250
YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdFJhbmdlLmVuZCA9IHRleHRSdW5SYW5nZS5lbmQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBkb2NUZXh0UG9zaXRpb24gKz0gbGVuZ3RoOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0yNDkyLDE1ICsyNDkxLDE1IEBAIFJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50CiAgICAgfQogICAg
IAogICAgIGlmICghc3RhcnRSYW5nZUZvdW5kKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKICAgICBpZiAocmFuZ2VMZW5ndGggJiYg
cmFuZ2VFbmQgPiBkb2NUZXh0UG9zaXRpb24pIC8vIHJhbmdlRW5kIGlzIG91dCBvZiBib3VuZHMK
LSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPmVuZENvbnRhaW5lcigp
LCB0ZXh0UnVuUmFuZ2UtPmVuZE9mZnNldCgpKTsKKyAgICAgICAgcmVzdWx0UmFuZ2UuZW5kID0g
dGV4dFJ1blJhbmdlLmVuZDsKICAgICAKICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7CiB9CiAKLWJv
b2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29w
ZSwgY29uc3QgUmFuZ2UqIHJhbmdlLCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCkK
K2Jvb2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBz
Y29wZSwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3Qm
IGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IG5vdEZvdW5kOwogICAgIGxlbmd0aCA9IDA7CkBA
IC0yNTEwLDYxICsyNTA5LDQ4IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqIHJhbmdlCiAgICAgLy8gYmVj
YXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBu
b3QKICAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBlbnN1cmUgdGhhdCB0
aGUgcmFuZ2UgZG9lcyBub3QgY3Jvc3MgYQogICAgIC8vIGJvdW5kYXJ5IG9mIG9uZSBvZiB0aG9z
ZS4KLSAgICBpZiAoJnJhbmdlLT5zdGFydENvbnRhaW5lcigpICE9IHNjb3BlICYmICFyYW5nZS0+
c3RhcnRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCisgICAgaWYgKCZyYW5nZS5z
dGFydENvbnRhaW5lcigpICE9IHNjb3BlICYmICFyYW5nZS5zdGFydENvbnRhaW5lcigpLmlzRGVz
Y2VuZGFudE9mKHNjb3BlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgmcmFuZ2Ut
PmVuZENvbnRhaW5lcigpICE9IHNjb3BlICYmICFyYW5nZS0+ZW5kQ29udGFpbmVyKCkuaXNEZXNj
ZW5kYW50T2Yoc2NvcGUpKQorICAgIGlmICgmcmFuZ2UuZW5kQ29udGFpbmVyKCkgIT0gc2NvcGUg
JiYgIXJhbmdlLmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNjb3BlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgUmVmPFJhbmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHNjb3BlLT5kb2N1bWVudCgpLCBzY29wZSwgMCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBy
YW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCkgPT0gc2NvcGUpOwotICAgIGxvY2F0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aCh0ZXN0UmFuZ2UucHRyKCkpOworICAgIFNpbXBsZVJhbmdlIHRlc3RSYW5nZSB7IHsgKnNjb3Bl
LCAwIH0sIHJhbmdlLnN0YXJ0IH07CisgICAgQVNTRVJUKCZ0ZXN0UmFuZ2Uuc3RhcnRDb250YWlu
ZXIoKSA9PSBzY29wZSk7CisgICAgbG9jYXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHRlc3RSYW5nZSk7CiAKLSAgICB0ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVy
KCksIHJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkgPT0gc2NvcGUpOwotICAgIGxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgodGVzdFJhbmdlLnB0cigpKSAtIGxvY2F0aW9uOworICAgIHRlc3RSYW5nZS5lbmQgPSByYW5n
ZS5lbmQ7CisgICAgQVNTRVJUKCZ0ZXN0UmFuZ2Uuc3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7
CisgICAgbGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UpIC0gbG9j
YXRpb247CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8vIC0tLS0tLS0tCiAKLWJvb2wgaGFzQW55
UGxhaW5UZXh0KGNvbnN0IFJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZp
b3IpCisvLyBUaGUgaW5pdGlhbCBidWZmZXIgc2l6ZSBjYW4gYmUgY3JpdGljYWwgZm9yIHBlcmZv
cm1hbmNlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODExOTIKK3N0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgcGxhaW5UZXh0SW5pdGlhbEJ1ZmZlckNhcGFjaXR5ID0g
MSA8PCAxNTsKKworYm9vbCBoYXNBbnlQbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
LCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKIHsKLSAgICBmb3IgKFRleHRJdGVyYXRv
ciBpdGVyYXRvciB7ICZyYW5nZSwgYmVoYXZpb3IgfTsgIWl0ZXJhdG9yLmF0RW5kKCk7IGl0ZXJh
dG9yLmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsgcmFuZ2Us
IGJlaGF2aW9yIH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKICAg
ICAgICAgaWYgKCFpdGVyYXRvci50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIHBsYWluVGV4dChQ
b3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0
QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nKQorU3RyaW5nIHBsYWluVGV4dChQb3NpdGlv
biBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvciwgYm9v
bCBpc0Rpc3BsYXlTdHJpbmcpCiB7Ci0gICAgLy8gVGhlIGluaXRpYWwgYnVmZmVyIHNpemUgY2Fu
IGJlIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxMTkyCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluaXRpYWxDYXBh
Y2l0eSA9IDEgPDwgMTU7Ci0KICAgICBpZiAoIXN0YXJ0LmRvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKnN0YXJ0LmRvY3VtZW50KCkp
OwotCi0gICAgdW5zaWduZWQgYnVmZmVyTGVuZ3RoID0gMDsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoaW5pdGlhbENhcGFjaXR5KTsKLSAg
ICBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvciA9IGRlZmF1bHRCZWhhdmlvcjsKICAgICBp
ZiAoIWlzRGlzcGxheVN0cmluZykKICAgICAgICAgYmVoYXZpb3IgPSBzdGF0aWNfY2FzdDxUZXh0
SXRlcmF0b3JCZWhhdmlvcj4oYmVoYXZpb3IgfCBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91
dFRyYW5zY29kaW5nKTsKLQotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHN0YXJ0LCBlbmQsIGJl
aGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShwbGFpblRleHRJbml0aWFsQnVm
ZmVyQ2FwYWNpdHkpOworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHN0YXJ0LCBlbmQsIGJlaGF2
aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKICAgICAgICAgaXQuYXBwZW5kVGV4dFRv
U3RyaW5nQnVpbGRlcihidWlsZGVyKTsKLSAgICAgICAgYnVmZmVyTGVuZ3RoICs9IGl0LnRleHQo
KS5sZW5ndGgoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWJ1ZmZlckxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7Ci0KICAgICBTdHJpbmcgcmVzdWx0ID0gYnVpbGRlci50b1N0cmlu
ZygpOwotCiAgICAgaWYgKGlzRGlzcGxheVN0cmluZykKLSAgICAgICAgZG9jdW1lbnQtPmRpc3Bs
YXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcocmVzdWx0KTsKLQorICAgICAgICByZXN1bHQgPSBz
dGFydC5kb2N1bWVudCgpLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHJlc3VsdCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU3MywxNCArMjU1OSwyMSBAQCBTdHJpbmcg
cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBl
bmQsIFRleHRJdGVyYXRvcgogICAgIHJldHVybiBwbGFpblRleHQoc3RhcnQsIGVuZCwgZGVmYXVs
dEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJpbmcpLnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcpOwog
fQogCi1TdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZykKK1N0cmluZyBwbGFp
blRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhh
dmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZS0+c3RhcnRQ
b3NpdGlvbigpLCByYW5nZS0+ZW5kUG9zaXRpb24oKSwgZGVmYXVsdEJlaGF2aW9yLCBpc0Rpc3Bs
YXlTdHJpbmcpOworICAgIGlmICghaXNEaXNwbGF5U3RyaW5nKQorICAgICAgICBiZWhhdmlvciA9
IHN0YXRpY19jYXN0PFRleHRJdGVyYXRvckJlaGF2aW9yPihiZWhhdmlvciB8IFRleHRJdGVyYXRv
ckVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShwbGFpblRleHRJbml0aWFsQnVmZmVyQ2Fw
YWNpdHkpOworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLCBiZWhhdmlvcik7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpCisgICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxk
ZXIoYnVpbGRlcik7CisgICAgU3RyaW5nIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAg
ICBpZiAoaXNEaXNwbGF5U3RyaW5nKQorICAgICAgICByZXN1bHQgPSByYW5nZS5zdGFydC5kb2N1
bWVudCgpLmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcocmVzdWx0KTsKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0
b3JGb3JUZXN0aW5nKGNvbnN0IFJhbmdlJiByYW5nZSkKK1N0cmluZyBwbGFpblRleHRVc2luZ0Jh
Y2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQog
ewogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgZm9yIChTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yIGJhY2t3YXJkc0l0ZXJhdG9yKHJhbmdlKTsgIWJhY2t3YXJkc0l0ZXJhdG9yLmF0RW5k
KCk7IGJhY2t3YXJkc0l0ZXJhdG9yLmFkdmFuY2UoKSkKQEAgLTI1ODgsMTYgKzI1ODEsMTUgQEAg
U3RyaW5nIHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhjb25z
dCBSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIHBsYWluVGV4
dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJl
aGF2aW9yIGRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCitTdHJpbmcgcGxh
aW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZykK
IHsKICAgICByZXR1cm4gcGxhaW5UZXh0KHJhbmdlLCBkZWZhdWx0QmVoYXZpb3IsIGlzRGlzcGxh
eVN0cmluZykucmVwbGFjZShub0JyZWFrU3BhY2UsICcgJyk7CiB9CiAKLXN0YXRpYyBSZWY8UmFu
Z2U+IGNvbGxhcHNlZFRvQm91bmRhcnkoY29uc3QgUmFuZ2UmIHJhbmdlLCBib29sIGZvcndhcmQp
CitzdGF0aWMgU2ltcGxlUmFuZ2UgY29sbGFwc2VkVG9Cb3VuZGFyeShjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UsIGJvb2wgZm9yd2FyZCkKIHsKLSAgICBSZWY8UmFuZ2U+IHJlc3VsdCA9IHJhbmdl
LmNsb25lUmFuZ2UoKTsKLSAgICByZXN1bHQtPmNvbGxhcHNlKCFmb3J3YXJkKTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIGF1dG8mIGVuZHBvaW50ID0gZm9yd2FyZCA/IHJhbmdlLmVuZCA6IHJh
bmdlLnN0YXJ0OworICAgIHJldHVybiB7IGVuZHBvaW50LCBlbmRwb2ludCB9OwogfQogCiBzdGF0
aWMgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZmluZEl0ZXJhdG9yT3B0aW9ucyhGaW5kT3B0aW9ucyBv
cHRpb25zKQpAQCAtMjYwOCwxMyArMjYwMCwxMiBAQCBzdGF0aWMgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgZmluZEl0ZXJhdG9yT3B0aW9ucyhGaW5kT3B0aW9ucyBvcHRpb25zKQogICAgIHJldHVybiBp
dGVyYXRvck9wdGlvbnM7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbmRQbGFpblRleHRNYXRjaGVzKGNv
bnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlv
bnMsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChzaXplX3QsIHNpemVfdCk+JiBtYXRjaCkKK3N0
YXRpYyB2b2lkIGZpbmRQbGFpblRleHRNYXRjaGVzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwg
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIGNvbnN0IFdURjo6RnVu
Y3Rpb248Ym9vbChzaXplX3QsIHNpemVfdCk+JiBtYXRjaCkKIHsKICAgICBTZWFyY2hCdWZmZXIg
YnVmZmVyKHRhcmdldCwgb3B0aW9ucyk7CiAgICAgaWYgKGJ1ZmZlci5uZWVkc01vcmVDb250ZXh0
KCkpIHsKLSAgICAgICAgUmVmPFJhbmdlPiBiZWZvcmVTdGFydFJhbmdlID0gcmFuZ2Uub3duZXJE
b2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7Ci0gICAgICAgIGJlZm9yZVN0YXJ0UmFuZ2UtPnNldEVu
ZChyYW5nZS5zdGFydENvbnRhaW5lcigpLCByYW5nZS5zdGFydE9mZnNldCgpKTsKLSAgICAgICAg
Zm9yIChTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGJhY2t3YXJkc0l0ZXJhdG9yKGJl
Zm9yZVN0YXJ0UmFuZ2UuZ2V0KCkpOyAhYmFja3dhcmRzSXRlcmF0b3IuYXRFbmQoKTsgYmFja3dh
cmRzSXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgICAgIFNpbXBsZVJhbmdlIGJlZm9yZVN0YXJ0
UmFuZ2UgeyB7IHJhbmdlLnN0YXJ0LmRvY3VtZW50KCksIDAgfSwgcmFuZ2Uuc3RhcnQgfTsKKyAg
ICAgICAgZm9yIChTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGJhY2t3YXJkc0l0ZXJh
dG9yKGJlZm9yZVN0YXJ0UmFuZ2UpOyAhYmFja3dhcmRzSXRlcmF0b3IuYXRFbmQoKTsgYmFja3dh
cmRzSXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAgICAgICAgICBidWZmZXIucHJlcGVuZENvbnRl
eHQoYmFja3dhcmRzSXRlcmF0b3IudGV4dCgpKTsKICAgICAgICAgICAgIGlmICghYnVmZmVyLm5l
ZWRzTW9yZUNvbnRleHQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2NDIsMTUgKzI2
MzMsMTUgQEAgc3RhdGljIHZvaWQgZmluZFBsYWluVGV4dE1hdGNoZXMoY29uc3QgUmFuZ2UmIHJh
bmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE8KICAgICB9CiB9CiAKLXN0YXRpYyBSZWY8
UmFuZ2U+IHJhbmdlRm9yTWF0Y2goY29uc3QgUmFuZ2UmIHJhbmdlLCBGaW5kT3B0aW9ucyBvcHRp
b25zLCBzaXplX3QgbWF0Y2hTdGFydCwgc2l6ZV90IG1hdGNoTGVuZ3RoLCBib29sIHNlYXJjaEZv
cndhcmQpCitzdGF0aWMgU2ltcGxlUmFuZ2UgcmFuZ2VGb3JNYXRjaChjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHNpemVfdCBtYXRjaFN0YXJ0LCBzaXplX3Qg
bWF0Y2hMZW5ndGgsIGJvb2wgc2VhcmNoRm9yd2FyZCkKIHsKICAgICBpZiAoIW1hdGNoTGVuZ3Ro
KQogICAgICAgICByZXR1cm4gY29sbGFwc2VkVG9Cb3VuZGFyeShyYW5nZSwgc2VhcmNoRm9yd2Fy
ZCk7CiAgICAgQ2hhcmFjdGVySXRlcmF0b3IgcmFuZ2VDb21wdXRlSXRlcmF0b3IocmFuZ2UsIGZp
bmRJdGVyYXRvck9wdGlvbnMob3B0aW9ucykpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5n
ZShyYW5nZS5vd25lckRvY3VtZW50KCksIHJhbmdlQ29tcHV0ZUl0ZXJhdG9yLCBtYXRjaFN0YXJ0
LCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIGNoYXJhY3RlclN1YnJhbmdlKHJhbmdlLnN0YXJ0
LmRvY3VtZW50KCksIHJhbmdlQ29tcHV0ZUl0ZXJhdG9yLCBtYXRjaFN0YXJ0LCBtYXRjaExlbmd0
aCk7CiB9CiAKLVJlZjxSYW5nZT4gZmluZENsb3Nlc3RQbGFpblRleHQoY29uc3QgUmFuZ2UmIHJh
bmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQg
dGFyZ2V0T2Zmc2V0KQorU2ltcGxlUmFuZ2UgZmluZENsb3Nlc3RQbGFpblRleHQoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9u
cywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0KQogewogICAgIHNpemVfdCBtYXRjaFN0YXJ0ID0gMDsK
ICAgICBzaXplX3QgbWF0Y2hMZW5ndGggPSAwOwpAQCAtMjY2OSw3ICsyNjYwLDcgQEAgUmVmPFJh
bmdlPiBmaW5kQ2xvc2VzdFBsYWluVGV4dChjb25zdCBSYW5nZSYgcmFuZ2UsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBGaW5kT3AKICAgICByZXR1cm4gcmFuZ2VGb3JNYXRjaChyYW5nZSwgb3B0aW9u
cywgbWF0Y2hTdGFydCwgbWF0Y2hMZW5ndGgsICFvcHRpb25zLmNvbnRhaW5zKEJhY2t3YXJkcykp
OwogfQogCi1SZWY8UmFuZ2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25z
dCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKK1NpbXBsZVJhbmdlIGZpbmRQ
bGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwg
RmluZE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBib29sIHNlYXJjaEZvcndhcmQgPSAhb3B0aW9u
cy5jb250YWlucyhCYWNrd2FyZHMpOwogICAgIHNpemVfdCBtYXRjaFN0YXJ0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDEwMzA0YWZmODc4ZjRmZmVjNThiOWY5
MDM1ZGI5MWY0ZDA1ZDdiMjUuLjFjMzczNjI4ODliNGE4OTFhOWUyZjNjNWQxNmM5MDE4MDA1ODNl
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDYg
QEAKIAogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZl
cnNhbC5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZp
b3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgpAQCAtNDAsNiArMzksOCBAQCBjbGFzcyBJbmxpbmVUZXh0Qm94OwogY2xhc3MgUmVu
ZGVyVGV4dDsKIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIAorc3RydWN0IFNpbXBsZVJhbmdl
OworCiBuYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CiBjbGFzcyBSdW5SZXNvbHZlcjsKIH0K
QEAgLTQ3LDEzICs0OCwxMyBAQCBjbGFzcyBSdW5SZXNvbHZlcjsKIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBwbGFpblRleHQoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3Ry
aW5nID0gZmFsc2UpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05v
QnJlYWtTcGFjZShQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhh
dmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcg
PSBmYWxzZSk7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHQoY29uc3QgUmFuZ2Uq
LCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9v
bCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5U
ZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0g
ZmFsc2UpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4
dEl0ZXJhdG9yRm9yVGVzdGluZyhjb25zdCBSYW5nZSYpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsK
K1dFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoY29u
c3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1
bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CitXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3JGb3JUZXN0aW5nKGNv
bnN0IFNpbXBsZVJhbmdlJik7CiAKLVJlZjxSYW5nZT4gZmluZFBsYWluVGV4dChjb25zdCBSYW5n
ZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKLVdFQkNPUkVfRVhQT1JUIFJlZjxSYW5n
ZT4gZmluZENsb3Nlc3RQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBGaW5k
T3B0aW9ucywgdW5zaWduZWQpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBbnlQbGFpblRleHQo
Y29uc3QgUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvcik7CitTaW1wbGVSYW5nZSBmaW5kUGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiwg
Y29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOworV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2Ug
ZmluZENsb3Nlc3RQbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBbnlQbGFpblRl
eHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvcik7CiBib29sIGZpbmRQbGFpblRleHQoY29uc3QgU3RyaW5nJiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOyAvLyBMZXRzIHVzIHVzZSB0aGUgc2Vh
cmNoIGFsZ29yaXRobSBvbiBhIHN0cmluZy4KIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb2xkUXVv
dGVNYXJrcyhjb25zdCBTdHJpbmcmKTsKIApAQCAtMTA4LDIzICsxMDksMjMgQEAgY2xhc3MgVGV4
dEl0ZXJhdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoUG9zaXRpb24gc3RhcnQsIFBvc2l0
aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3IpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFRleHRJdGVyYXRvcihjb25zdCBSYW5n
ZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFu
Z2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgflRleHRJdGVyYXRvcigpOwogCiAgICAgYm9vbCBhdEVuZCgp
IGNvbnN0IHsgcmV0dXJuICFtX3Bvc2l0aW9uTm9kZTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWR2YW5jZSgpOwogCiAgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3QgeyBBU1NFUlQoIWF0
RW5kKCkpOyByZXR1cm4gbV90ZXh0OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiBy
YW5nZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIHJhbmdlKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogbm9kZSgpIGNvbnN0OwogCiAgICAgY29uc3Qg
VGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0JiBjb3B5YWJsZVRleHQoKSBjb25zdCB7IEFTU0VSVCgh
YXRFbmQoKSk7IHJldHVybiBtX2NvcHlhYmxlVGV4dDsgfQogICAgIHZvaWQgYXBwZW5kVGV4dFRv
U3RyaW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdCB7IGNvcHlhYmxlVGV4
dCgpLmFwcGVuZFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGludCByYW5nZUxlbmd0aChjb25zdCBSYW5nZSosIGJvb2wgc3BhY2VzRm9yUmVw
bGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwg
aW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNl
ZEVsZW1lbnRzID0gZmFsc2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdldExv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBSYW5nZSosIHNpemVf
dCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2UsIGludCBjaGFyYWN0ZXJPZmZz
ZXQsIGludCBjaGFyYWN0ZXJDb3VudCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHNpemVf
dCByYW5nZUxlbmd0aChjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRF
bGVtZW50cyA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3Bl
LCBzaXplX3QgcmFuZ2VMb2NhdGlvbiwgc2l6ZV90IHJhbmdlTGVuZ3RoLCBib29sIHNwYWNlc0Zv
clJlcGxhY2VkRWxlbWVudHMgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgZ2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFNpbXBs
ZVJhbmdlJiwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTaW1wbGVSYW5nZSBzdWJyYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgZW50
aXJlUmFuZ2UsIHNpemVfdCBjaGFyYWN0ZXJPZmZzZXQsIHNpemVfdCBjaGFyYWN0ZXJDb3VudCk7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0KCk7CkBAIC0xMzcsOCArMTM4LDggQEAgcHJpdmF0
ZToKICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7CiAgICAgdm9pZCBoYW5kbGVUZXh0Qm94
KCk7CiAgICAgdm9pZCBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVu
dCYpOwotICAgIHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhciwgTm9kZSYgY2hhcmFjdGVyTm9kZSwg
Tm9kZSogb2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zm
c2V0KTsKLSAgICB2b2lkIGVtaXRUZXh0KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiwgaW50
IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOworICAgIHZvaWQgZW1pdENoYXJh
Y3RlcihVQ2hhciwgTm9kZSYgY2hhcmFjdGVyTm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUsIHVu
c2lnbmVkIHRleHRTdGFydE9mZnNldCwgdW5zaWduZWQgdGV4dEVuZE9mZnNldCk7CisgICAgdm9p
ZCBlbWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYsIHVuc2lnbmVkIHRleHRTdGFy
dE9mZnNldCwgdW5zaWduZWQgdGV4dEVuZE9mZnNldCk7CiAKICAgICBOb2RlKiBiYXNlTm9kZUZv
ckVtaXR0aW5nTmV3TGluZSgpIGNvbnN0OwogCkBAIC0xNDYsMjMgKzE0NywyMyBAQCBwcml2YXRl
OgogCiAgICAgLy8gQ3VycmVudCBwb3NpdGlvbiwgbm90IG5lY2Vzc2FyaWx5IG9mIHRoZSB0ZXh0
IGJlaW5nIHJldHVybmVkLCBidXQgcG9zaXRpb24gYXMgd2Ugd2FsayB0aHJvdWdoIHRoZSBET00g
dHJlZS4KICAgICBOb2RlKiBtX25vZGUgeyBudWxscHRyIH07Ci0gICAgaW50IG1fb2Zmc2V0IHsg
MCB9OworICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgMCB9OwogICAgIGJvb2wgbV9oYW5kbGVkTm9k
ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhbmRsZWRDaGlsZHJlbiB7IGZhbHNlIH07CiAgICAg
Qml0U3RhY2sgbV9mdWxseUNsaXBwZWRTdGFjazsKIAogICAgIC8vIFRoZSByYW5nZS4KICAgICBO
b2RlKiBtX3N0YXJ0Q29udGFpbmVyIHsgbnVsbHB0ciB9OwotICAgIGludCBtX3N0YXJ0T2Zmc2V0
IHsgMCB9OworICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQgeyAwIH07CiAgICAgTm9kZSogbV9l
bmRDb250YWluZXIgeyBudWxscHRyIH07Ci0gICAgaW50IG1fZW5kT2Zmc2V0IHsgMCB9OworICAg
IHVuc2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9OwogICAgIE5vZGUqIG1fcGFzdEVuZE5vZGUgeyBu
dWxscHRyIH07CiAKICAgICAvLyBUaGUgY3VycmVudCB0ZXh0IGFuZCBpdHMgcG9zaXRpb24sIGlu
IHRoZSBmb3JtIHRvIGJlIHJldHVybmVkIGZyb20gdGhlIGl0ZXJhdG9yLgogICAgIE5vZGUqIG1f
cG9zaXRpb25Ob2RlIHsgbnVsbHB0ciB9OwogICAgIG11dGFibGUgTm9kZSogbV9wb3NpdGlvbk9m
ZnNldEJhc2VOb2RlIHsgbnVsbHB0ciB9OwotICAgIG11dGFibGUgaW50IG1fcG9zaXRpb25TdGFy
dE9mZnNldCB7IDAgfTsKLSAgICBtdXRhYmxlIGludCBtX3Bvc2l0aW9uRW5kT2Zmc2V0IHsgMCB9
OworICAgIG11dGFibGUgdW5zaWduZWQgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0IHsgMCB9OworICAg
IG11dGFibGUgdW5zaWduZWQgbV9wb3NpdGlvbkVuZE9mZnNldCB7IDAgfTsKICAgICBUZXh0SXRl
cmF0b3JDb3B5YWJsZVRleHQgbV9jb3B5YWJsZVRleHQ7CiAgICAgU3RyaW5nVmlldyBtX3RleHQ7
CiAKQEAgLTE5Myw0MyArMTk0LDQzIEBAIHByaXZhdGU6CiAvLyBjaHVua3Mgc28gYXMgdG8gb3B0
aW1pemUgZm9yIHBlcmZvcm1hbmNlIG9mIHRoZSBpdGVyYXRpb24uCiBjbGFzcyBTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTaW1wbGlmaWVk
QmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJik7CisgICAgZXhwbGljaXQgU2ltcGxp
ZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYpOwogCiAgICAgYm9v
bCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Bvc2l0aW9uTm9kZTsgfQogICAgIHZvaWQgYWR2
YW5jZSgpOwogCiAgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3QgeyBBU1NFUlQoIWF0RW5kKCkp
OyByZXR1cm4gbV90ZXh0OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiByYW5nZSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIHJhbmdlKCkgY29uc3Q7CiAg
ICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fbm9kZTsg
fQogCiBwcml2YXRlOgogICAgIHZvaWQgZXhpdE5vZGUoKTsKICAgICBib29sIGhhbmRsZVRleHRO
b2RlKCk7Ci0gICAgUmVuZGVyVGV4dCogaGFuZGxlRmlyc3RMZXR0ZXIoaW50JiBzdGFydE9mZnNl
dCwgaW50JiBvZmZzZXRJbk5vZGUpOworICAgIFJlbmRlclRleHQqIGhhbmRsZUZpcnN0TGV0dGVy
KHVuc2lnbmVkJiBzdGFydE9mZnNldCwgdW5zaWduZWQmIG9mZnNldEluTm9kZSk7CiAgICAgYm9v
bCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7
Ci0gICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2RlJiwgaW50IHN0YXJ0T2Zmc2V0LCBp
bnQgZW5kT2Zmc2V0KTsKKyAgICB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIsIE5vZGUmLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKICAgICBib29sIGFkdmFuY2VS
ZXNwZWN0aW5nUmFuZ2UoTm9kZSopOwogCiAgICAgY29uc3QgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
bV9iZWhhdmlvciB7IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciB9OwogCiAgICAgLy8gQ3Vy
cmVudCBwb3NpdGlvbiwgbm90IG5lY2Vzc2FyaWx5IG9mIHRoZSB0ZXh0IGJlaW5nIHJldHVybmVk
LCBidXQgcG9zaXRpb24gYXMgd2Ugd2FsayB0aHJvdWdoIHRoZSBET00gdHJlZS4KICAgICBOb2Rl
KiBtX25vZGUgeyBudWxscHRyIH07Ci0gICAgaW50IG1fb2Zmc2V0IHsgMCB9OworICAgIHVuc2ln
bmVkIG1fb2Zmc2V0IHsgMCB9OwogICAgIGJvb2wgbV9oYW5kbGVkTm9kZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2hhbmRsZWRDaGlsZHJlbiB7IGZhbHNlIH07CiAgICAgQml0U3RhY2sgbV9mdWxs
eUNsaXBwZWRTdGFjazsKIAogICAgIC8vIFRoZSByYW5nZS4KICAgICBOb2RlKiBtX3N0YXJ0Q29u
dGFpbmVyIHsgbnVsbHB0ciB9OwotICAgIGludCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OworICAgIHVu
c2lnbmVkIG1fc3RhcnRPZmZzZXQgeyAwIH07CiAgICAgTm9kZSogbV9lbmRDb250YWluZXIgeyBu
dWxscHRyIH07Ci0gICAgaW50IG1fZW5kT2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIG1fZW5k
T2Zmc2V0IHsgMCB9OwogICAgIAogICAgIC8vIFRoZSBjdXJyZW50IHRleHQgYW5kIGl0cyBwb3Np
dGlvbiwgaW4gdGhlIGZvcm0gdG8gYmUgcmV0dXJuZWQgZnJvbSB0aGUgaXRlcmF0b3IuCiAgICAg
Tm9kZSogbV9wb3NpdGlvbk5vZGUgeyBudWxscHRyIH07Ci0gICAgaW50IG1fcG9zaXRpb25TdGFy
dE9mZnNldCB7IDAgfTsKLSAgICBpbnQgbV9wb3NpdGlvbkVuZE9mZnNldCB7IDAgfTsKKyAgICB1
bnNpZ25lZCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgeyAwIH07CisgICAgdW5zaWduZWQgbV9wb3Np
dGlvbkVuZE9mZnNldCB7IDAgfTsKICAgICBUZXh0SXRlcmF0b3JDb3B5YWJsZVRleHQgbV9jb3B5
YWJsZVRleHQ7CiAgICAgU3RyaW5nVmlldyBtX3RleHQ7CiAKQEAgLTI0OCw0MCArMjQ5LDQwIEBA
IHByaXZhdGU6CiAvLyBjaGFyYWN0ZXIgYXQgYSB0aW1lLCBvciBmYXN0ZXIsIGFzIG5lZWRlZC4g
VXNlZnVsIGZvciBzZWFyY2hpbmcuCiBjbGFzcyBDaGFyYWN0ZXJJdGVyYXRvciB7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFu
Z2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2lt
cGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhh
dmlvcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2hhcmFjdGVySXRlcmF0b3IoUG9z
aXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRl
cmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJl
dHVybiBtX3VuZGVybHlpbmdJdGVyYXRvci5hdEVuZCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZHZhbmNlKGludCBudW1DaGFyYWN0ZXJzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkdmFuY2UodW5zaWduZWQgbnVtQ2hhcmFjdGVycyk7CiAgICAgCiAgICAgU3RyaW5nVmlldyB0
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLnN1YnN0cmlu
ZyhtX3J1bk9mZnNldCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IHJhbmdlKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgcmFuZ2UoKSBjb25zdDsKIAog
ICAgIGJvb2wgYXRCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fYXRCcmVhazsgfQotICAgIGludCBj
aGFyYWN0ZXJPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIHVuc2lnbmVk
IGNoYXJhY3Rlck9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAKIHByaXZhdGU6
CiAgICAgVGV4dEl0ZXJhdG9yIG1fdW5kZXJseWluZ0l0ZXJhdG9yOwogCi0gICAgaW50IG1fb2Zm
c2V0IHsgMCB9OwotICAgIGludCBtX3J1bk9mZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX29m
ZnNldCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3J1bk9mZnNldCB7IDAgfTsKICAgICBib29sIG1f
YXRCcmVhayB7IHRydWUgfTsKIH07CiAgICAgCiBjbGFzcyBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVy
YXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3Io
Y29uc3QgUmFuZ2UmKTsKKyAgICBleHBsaWNpdCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihj
b25zdCBTaW1wbGVSYW5nZSYpOwogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5kZXJseWluZ0l0ZXJhdG9yLmF0RW5kKCk7IH0KLSAgICB2b2lkIGFkdmFuY2UoaW50IG51bUNo
YXJhY3RlcnMpOworICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKTsKIAot
ICAgIFJlZjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsKKyAgICBTaW1wbGVSYW5nZSByYW5nZSgpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgbV91
bmRlcmx5aW5nSXRlcmF0b3I7CiAKLSAgICBpbnQgbV9vZmZzZXQ7Ci0gICAgaW50IG1fcnVuT2Zm
c2V0OworICAgIHVuc2lnbmVkIG1fb2Zmc2V0OworICAgIHVuc2lnbmVkIG1fcnVuT2Zmc2V0Owog
ICAgIGJvb2wgbV9hdEJyZWFrOwogfTsKIApAQCAtMjg5LDcgKzI5MCw3IEBAIHByaXZhdGU6CiAv
LyB0aGV5IG5ldmVyIHNwbGl0IHVwIGEgd29yZC4gVGhpcyBpcyB1c2VmdWwgZm9yIHNwZWxsIGNo
ZWNraW5nIGFuZCBwZXJoYXBzIG9uZSBkYXkgZm9yIHNlYXJjaGluZyBhcyB3ZWxsLgogY2xhc3Mg
V29yZEF3YXJlSXRlcmF0b3IgewogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmRBd2FyZUl0ZXJh
dG9yKGNvbnN0IFJhbmdlJik7CisgICAgZXhwbGljaXQgV29yZEF3YXJlSXRlcmF0b3IoY29uc3Qg
U2ltcGxlUmFuZ2UmKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9kaWRM
b29rQWhlYWQgJiYgbV91bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQogICAgIHZvaWQgYWR2
YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyLmNwcAppbmRleCBkMDVhZjQ0ZmQ4ZWFhMzRlOGIzMjQwYmM4NGM3NzUwYmQ0
MDYzYTZjLi42ZjQ3NzI1MDQ1YWMyYTg0ODhlMjBlMjhmZDhlZWY1OWM2ZTZlZDdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Om9ic2VydmVQYXJhZ3JhcGhzKFZpc2libGVQb3NpdGlvbiYgc3RhcnQsIFZpc2liCiAgICAgICAg
IFN0cmluZ1ZpZXcgY3VycmVudFRleHQgPSBpdGVyYXRvci50ZXh0KCk7CiAKICAgICAgICAgaWYg
KHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLmlzTnVsbCgpKQotICAgICAgICAgICAgc3RhcnRPZkN1
cnJlbnRQYXJhZ3JhcGggPSBpdGVyYXRvci5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCk7CisgICAg
ICAgICAgICBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IGNyZWF0ZUxpdmVSYW5nZShpdGVyYXRv
ci5yYW5nZSgpKS0+c3RhcnRQb3NpdGlvbigpOwogCiAgICAgICAgIGlmIChhdXRvKiBjdXJyZW50
Tm9kZSA9IGl0ZXJhdG9yLm5vZGUoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxFbGVtZW50
PiBjdXJyZW50RWxlbWVudEFuY2VzdG9yID0gaXM8RWxlbWVudD4oY3VycmVudE5vZGUpID8gZG93
bmNhc3Q8RWxlbWVudD4oY3VycmVudE5vZGUpIDogY3VycmVudE5vZGUtPnBhcmVudE9yU2hhZG93
SG9zdEVsZW1lbnQoKSkgewpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKFZpc2libGVQb3NpdGlvbiYgc3RhcnQsIFZp
c2liCiAgICAgICAgICAgICAgICAgdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmFwcGVuZChNYW5p
cHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksIHN0cmluZ1VudGls
RW5kT2ZMaW5lLCBleGNsdXNpb25SdWxlTWF0Y2hlci5pc0V4Y2x1ZGVkKGl0ZXJhdG9yLm5vZGUo
KSkgfSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gbGFzdFJhbmdlID0gaXRl
cmF0b3IucmFuZ2UoKTsKKyAgICAgICAgICAgIGF1dG8gbGFzdFJhbmdlID0gY3JlYXRlTGl2ZVJh
bmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICAgICAgaWYgKG9mZnNldE9mTmV4dE5ld0xp
bmUgPCBjdXJyZW50VGV4dC5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIGxhc3RSYW5nZS0+
c2V0U3RhcnQoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGl0ZXJhdG9yLm5vZGUoKSkpOyAv
LyBNb3ZlIHRoZSBzdGFydCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IG5vZGUuCiAg
ICAgICAgICAgICAgICAgVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShsYXN0UmFuZ2UsIDAsIG9mZnNl
dE9mTmV4dE5ld0xpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAK
aW5kZXggMDFmNTNkYmEwM2JlYWM3OTdkNzZhYThhZTU2NmQyZmQxMjVjODIzZC4uYzRkODBmYjU1
MDhmMWUyNmM2ODkxODUzODJhZWZjMGNmZGI5YTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuY3BwCkBAIC00OTksNyArNDk5LDcgQEAgYm9vbCBUeXBpbmdDb21tYW5k
Ojp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSwg
VGV4dEcKICAgICBpZiAoIXJhbmdlIHx8IGlzRWRpdGluZ1RleHRBcmVhT3JUZXh0SW5wdXQoKSkK
ICAgICAgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJpbmRpbmdzKCkpOwogCi0gICAg
cmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkgfSk7CisgICAgcmV0dXJuIGZyYW1lKCku
ZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRl
KCpyYW5nZSkgfSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5D
b21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRleCBmMzI3Y2IzMDMwMWI2
ODAyOTFhMzg5ZTkxOTM5MzJiNmI4ZDk2MTE4Li5mOTJlM2RkODFkZTkzYzNkMTA5ZTgzMjRmNTE4
MWE3ZjEyZWU5YmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlv
bi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAi
U3RhdGljUmFuZ2UuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+
CkBAIC05NywxMyArOTcsMTMgQEAgVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihj
b25zdCBSYW5nZSYgcmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbAogICAgIHZhbGlkYXRl
KCk7CiB9CiAKLVZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgU3RhdGlj
UmFuZ2UmIHN0YXRpY1JhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25h
bCkKLSAgICA6IG1fYmFzZShjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2Uu
c3RhcnRDb250YWluZXIoKSwgc3RhdGljUmFuZ2Uuc3RhcnRPZmZzZXQoKSkpCi0gICAgLCBtX2V4
dGVudChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2UuZW5kQ29udGFpbmVy
KCksIHN0YXRpY1JhbmdlLmVuZE9mZnNldCgpKSkKK1Zpc2libGVTZWxlY3Rpb246OlZpc2libGVT
ZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJv
b2wgaXNEaXJlY3Rpb25hbCkKKyAgICA6IG1fYmFzZShjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24oJnJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLnN0YXJ0T2Zmc2V0KCkpKQorICAgICwg
bV9leHRlbnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZyYW5nZS5lbmRDb250YWluZXIo
KSwgcmFuZ2UuZW5kT2Zmc2V0KCkpKQogICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKICAgICAs
IG1faXNEaXJlY3Rpb25hbChpc0RpcmVjdGlvbmFsKQogewotICAgIEFTU0VSVCgmc3RhdGljUmFu
Z2Uuc3RhcnRDb250YWluZXIoKS0+dHJlZVNjb3BlKCkgPT0gJnN0YXRpY1JhbmdlLmVuZENvbnRh
aW5lcigpLT50cmVlU2NvcGUoKSk7CisgICAgQVNTRVJUKCZyYW5nZS5zdGFydENvbnRhaW5lcigp
LnRyZWVTY29wZSgpID09ICZyYW5nZS5lbmRDb250YWluZXIoKS50cmVlU2NvcGUoKSk7CiAgICAg
dmFsaWRhdGUoKTsKIH0KIApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlv
bjo6YXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICAgICAgVUNoYXIgYyA9IGNoYXJJdC50
ZXh0KClbMF07CiAgICAgICAgIGlmICgoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSBub0Jy
ZWFrU3BhY2UpIHx8IGMgPT0gJ1xuJykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBtX2Vu
ZCA9IGNoYXJJdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigpOworICAgICAgICBtX2VuZCA9IGNyZWF0
ZUxpdmVSYW5nZShjaGFySXQucmFuZ2UoKSktPmVuZFBvc2l0aW9uKCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCmluZGV4IDJkNDJkOGY3ZWYx
ZmEyMWYyODkwMzNmYWQ2YjgzMWVhMGMzZTNkZGMuLjFiOWEzNzJkOGI3MWViODZmMjFlM2Q4YmZl
YTNhZDc3YjI3OGE0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlv
bi5oCkBAIC0zMSw3ICszMSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBvc2l0
aW9uOwotY2xhc3MgU3RhdGljUmFuZ2U7CisKK3N0cnVjdCBTaW1wbGVSYW5nZTsKIAogY29uc3Qg
RUFmZmluaXR5IFNFTF9ERUZBVUxUX0FGRklOSVRZID0gRE9XTlNUUkVBTTsKIGVudW0gU2VsZWN0
aW9uRGlyZWN0aW9uIDogdWludDhfdCB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3
YXJkLCBEaXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9OwpAQCAtNDYsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0
aW9uJiwgRUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJlY3Rpb25h
bCA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3Qg
UmFuZ2UmLCBFQWZmaW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlv
bmFsID0gZmFsc2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3Qg
U3RhdGljUmFuZ2UmLCBFQWZmaW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0Rp
cmVjdGlvbmFsID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24o
Y29uc3QgU2ltcGxlUmFuZ2UmLCBFQWZmaW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9v
bCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2li
bGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0g
ZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0g
ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDQ0Nzhh
ZGYyMmJhZjllOGZjNTgyYWQyNzUyOGEwMzRjNWU0Y2M4NDUuLjZjYTM2NjEwNWZhNDI0NzYxNzc1
MDJlM2M5YmYyZDAxOGQ1ZmEyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaAogICAgIGlm
ICghbmV4dCkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihpdC5hdEVuZCgpID8gc2Vh
cmNoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSA6IHBvcywgRE9XTlNUUkVBTSk7CiAKLSAgICBOb2Rl
JiBub2RlID0gaXQuYXRFbmQoKSA/IHNlYXJjaFJhbmdlLT5zdGFydENvbnRhaW5lcigpIDogaXQu
cmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKKyAgICBOb2RlJiBub2RlID0gaXQuYXRFbmQoKSA/
IHNlYXJjaFJhbmdlLT5zdGFydENvbnRhaW5lcigpIDogaXQucmFuZ2UoKS5zdGFydENvbnRhaW5l
cigpOwogICAgIGlmICgoIXN1ZmZpeExlbmd0aCAmJiBub2RlLmlzVGV4dE5vZGUoKSAmJiBzdGF0
aWNfY2FzdDxpbnQ+KG5leHQpIDw9IG5vZGUubWF4Q2hhcmFjdGVyT2Zmc2V0KCkpIHx8IChub2Rl
LnJlbmRlcmVyKCkgJiYgbm9kZS5yZW5kZXJlcigpLT5pc0JSKCkgJiYgIW5leHQpKSB7CiAgICAg
ICAgIC8vIFRoZSBuZXh0IHZhcmlhYmxlIGNvbnRhaW5zIGEgdXNhYmxlIGluZGV4IGludG8gYSB0
ZXh0IG5vZGUKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24oJm5vZGUsIG5leHQpLCBET1dOU1RSRUFNKTsKQEAgLTY0Niw3ICs2NDYsNyBA
QCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzQm91bmRhcnkoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaAogICAgIGlmIChuZXh0IDwgc3RyaW5nLnNpemUoKSAt
IHN1ZmZpeExlbmd0aCkKICAgICAgICAgY2hhckl0LmFkdmFuY2Uoc3RyaW5nLnNpemUoKSAtIHN1
ZmZpeExlbmd0aCAtIG5leHQpOwogICAgIC8vIEZJWE1FOiBjaGFySXQgY2FuIGdldCBvdXQgb2Yg
c2hhZG93IGhvc3QuCi0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihjaGFySXQucmFuZ2UoKS0+
ZW5kUG9zaXRpb24oKSwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihj
cmVhdGVMaXZlUmFuZ2UoY2hhckl0LnJhbmdlKCkpLT5lbmRQb3NpdGlvbigpLCBET1dOU1RSRUFN
KTsKIH0KIAogc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uIHNlYXJjaEZ1bmN0aW9uKQpAQCAt
NjgyLDcgKzY4Miw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jCiAgICAgICAgIC8vIFVzZSB0
aGUgY2hhcmFjdGVyIGl0ZXJhdG9yIHRvIHRyYW5zbGF0ZSB0aGUgbmV4dCB2YWx1ZSBpbnRvIGEg
RE9NIHBvc2l0aW9uLgogICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFySXQoc2VhcmNoUmFu
Z2UsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25z
KTsKICAgICAgICAgY2hhckl0LmFkdmFuY2UobmV4dCAtIHByZWZpeExlbmd0aCAtIDEpOwotICAg
ICAgICBSZWZQdHI8UmFuZ2U+IGNoYXJhY3RlclJhbmdlID0gY2hhckl0LnJhbmdlKCk7CisgICAg
ICAgIFJlZlB0cjxSYW5nZT4gY2hhcmFjdGVyUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoY2hhckl0
LnJhbmdlKCkpOwogICAgICAgICBwb3MgPSBjaGFyYWN0ZXJSYW5nZS0+ZW5kUG9zaXRpb24oKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChjaGFySXQudGV4dCgpWzBdID09ICdcbicpIHsKQEAgLTY5
MCw3ICs2OTAsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBW
aXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogICAgICAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIHZpc1BvcyA9IFZpc2libGVQb3NpdGlvbihwb3MpOwogICAgICAgICAgICAgaWYg
KHZpc1BvcyA9PSBWaXNpYmxlUG9zaXRpb24oY2hhcmFjdGVyUmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSkpIHsKICAgICAgICAgICAgICAgICBjaGFySXQuYWR2YW5jZSgxKTsKLSAgICAgICAgICAgICAg
ICBwb3MgPSBjaGFySXQucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpOworICAgICAgICAgICAgICAg
IHBvcyA9IGNyZWF0ZUxpdmVSYW5nZShjaGFySXQucmFuZ2UoKSktPnN0YXJ0UG9zaXRpb24oKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCBjODliOTBjODgxYWQ4MTZkZjlkNjg1Njg4
YTBmYjljZWJmYjMwYTg2Li4yMjUxMjNhNzk4NmRhZjQxNzc4NWNlNGE4NmE3ZGI2ODRlNzE3ZjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBA
IC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJOb2RlVHJhdmVyc2FsLmgiCiAjaW1wb3J0ICJSYW5n
ZS5oIgogI2ltcG9ydCAiUmVuZGVyT2JqZWN0LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgog
I2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJU
ZXh0SXRlcmF0b3IuaCIKQEAgLTk0LDcgKzk1LDcgQEAgc3RhdGljIFJldGFpblB0cjxEREFjdGlv
bkNvbnRleHQ+IGRldGVjdEl0ZW1BdFBvc2l0aW9uV2l0aFJhbmdlKFZpc2libGVQb3NpdGlvbgog
ICAgICAgICBDRlJhbmdlIHJlc3VsdFJhbmdlSW5Db250ZXh0ID0gRERSZXN1bHRHZXRSYW5nZShy
ZXN1bHQpOwogICAgICAgICBpZiAoaGl0TG9jYXRpb24gPj0gcmVzdWx0UmFuZ2VJbkNvbnRleHQu
bG9jYXRpb24gJiYgKGhpdExvY2F0aW9uIC0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24p
IDwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKSB7CiAgICAgICAgICAgICBtYWluUmVzdWx0
ID0gcmVzdWx0OwotICAgICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpz
dWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiwgcmVz
dWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKTsKKyAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9
IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJl
c3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uLCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5ndGgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNDk5LDEwICs1MDAs
MTAgQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRy
PFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUKICAgICAgICAgICAgIGl0ZXJhdG9yLmFkdmFu
Y2UoKTsKIAogICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZnJhZ21lbnRSYW5nZXM7Ci0g
ICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJhbmdlID0gaXRlcmF0b3IucmFuZ2UoKTsKKyAg
ICAgICAgUmVmUHRyPFJhbmdlPiBjdXJyZW50UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0
b3IucmFuZ2UoKSk7CiAgICAgICAgIENGSW5kZXggZnJhZ21lbnRJbmRleCA9IHF1ZXJ5UmFuZ2Uu
c3RhcnQucXVlcnlJbmRleDsKICAgICAgICAgaWYgKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5n
ZS5lbmQucXVlcnlJbmRleCkKLSAgICAgICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKCpjdXJyZW50UmFuZ2UsIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0
LCBxdWVyeVJhbmdlLmVuZC5vZmZzZXQgLSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkpOworICAg
ICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlKCpjdXJyZW50UmFuZ2UsIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0LCBxdWVy
eVJhbmdlLmVuZC5vZmZzZXQgLSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkpKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoIXF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0KQogICAgICAg
ICAgICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChjdXJyZW50UmFuZ2UpOwpAQCAtNTE2LDcg
KzUxNyw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJl
ZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAgICAgICAgICBmb3IgKDsgaXRl
cmF0b3JDb3VudCA8IGl0ZXJhdG9yVGFyZ2V0QWR2YW5jZUNvdW50OyArK2l0ZXJhdG9yQ291bnQp
CiAgICAgICAgICAgICAgICAgaXRlcmF0b3IuYWR2YW5jZSgpOwogCi0gICAgICAgICAgICBjdXJy
ZW50UmFuZ2UgPSBpdGVyYXRvci5yYW5nZSgpOworICAgICAgICAgICAgY3VycmVudFJhbmdlID0g
Y3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiBmcmFnbWVudFJhbmdlID0gKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVl
cnlJbmRleCkgPyAgUmFuZ2U6OmNyZWF0ZShjdXJyZW50UmFuZ2UtPm93bmVyRG9jdW1lbnQoKSwg
JmN1cnJlbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgY3VycmVudFJhbmdlLT5zdGFydE9mZnNl
dCgpLCAmY3VycmVudFJhbmdlLT5lbmRDb250YWluZXIoKSwgY3VycmVudFJhbmdlLT5zdGFydE9m
ZnNldCgpICsgcXVlcnlSYW5nZS5lbmQub2Zmc2V0KSA6IGN1cnJlbnRSYW5nZTsKICAgICAgICAg
ICAgIFJlZlB0cjxSYW5nZT4gcHJldmlvdXNSYW5nZSA9IGZyYWdtZW50UmFuZ2VzLmxhc3QoKTsK
ICAgICAgICAgICAgIGlmICgmcHJldmlvdXNSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9PSAmZnJh
Z21lbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IGQzNTUzOWE5ZGZkOGQ0N2VlNGUw
MTE3MGQ1YjI4Y2YxNTEwM2VkNzIuLjgzMTk1ZDFhMmEzNzI5M2I2ZDFmZTUwYmYwZGVmNjJjZjI4
ZDljY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFy
eUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW0KQEAgLTI4OSw3ICsyODksNyBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5T
RGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjbwogICAg
IFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkg
aW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpyYW5nZVRvUGFzc10pOwogICAg
IE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBpdGVtLmdldCgpLmhpZ2hsaWdodFJhbmdlOwogICAg
IAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5n
ZSwgaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9
OworICAgIHJldHVybiB7IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpm
dWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5n
ZS5sZW5ndGgpKSwgbmlsIH07CiAgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
ICAgICAKQEAgLTM2NCw3ICszNjQsNyBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGlj
dGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgIGlm
IChoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kIHx8ICFoaWdobGlnaHRSYW5n
ZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OwogICAgIAotICAgIHJl
dHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxp
Z2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJl
dHVybiB7IGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFj
dGVyUmFuZ2UsIGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgp
KSwgbmlsIH07CiAgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBjMzk1
OTI0YmQ4NWY4NGEwYWUyYWYzMzc0M2VkOWY5ZjdjNmEzYjExLi5iMGFkMGIyZWM0N2QzNTk2ODFh
MDc3ODc0N2I0NjdmM2E4MTI5ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCkBAIC01OCw4ICs1OCwxMCBAQAogI2ltcG9ydCAiSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbXBvcnQg
IkxvYWRlck5TVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAiUmVuZGVy
SW1hZ2UuaCIKICNpbXBvcnQgIlJlbmRlclRleHQuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgi
CiAjaW1wb3J0ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbXBvcnQgIlN0eWxlZEVsZW1lbnQuaCIK
ICNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgpAQCAtMjM5NSw3ICsyMzk3LDcgQEAgTlNBdHRyaWJ1
dGVkU3RyaW5nICplZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZShSYW5nZSYgcmFuZ2Us
IEluY2x1ZGVJbWFnZXMKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gYXR0cnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAgICAgZm9y
IChUZXh0SXRlcmF0b3IgaXQoJnJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewot
ICAgICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRUZXh0UmFuZ2UgPSBpdC5yYW5nZSgpOworICAg
ICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRUZXh0UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXQu
cmFuZ2UoKSk7CiAgICAgICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyID0gY3VycmVudFRleHRSYW5n
ZS0+c3RhcnRDb250YWluZXIoKTsKICAgICAgICAgTm9kZSYgZW5kQ29udGFpbmVyID0gY3VycmVu
dFRleHRSYW5nZS0+ZW5kQ29udGFpbmVyKCk7CiAgICAgICAgIGludCBzdGFydE9mZnNldCA9IGN1
cnJlbnRUZXh0UmFuZ2UtPnN0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCmluZGV4IDljMWFlODg4OTUxZmIzYmIy
NTZlZDdlMDllMjQxNzZiYzhkM2MzODkuLjAyMjAxMmM3MDZiNGFkMDg0Mzc1NjQ1ZTlhMjU5Njli
MGNhNjY4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlv
bkNvbW1hbmRJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlv
bkNvbW1hbmRJT1MuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgRGljdGF0aW9uQ29tbWFuZElP
Uzo6ZG9BcHBseSgpCiAgICAgaW50IHN0YXJ0SW5kZXggPSBlbmRJbmRleCAtIHJlc3VsdExlbmd0
aDsKIAogICAgIGlmIChzdGFydEluZGV4ID49IDApIHsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9j
dW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRydWUpOwor
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVs
ZW1lbnQoKSwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRydWUpKTsKICAgICAgICAgQVNTRVJUKHJl
c3VsdFJhbmdlKTsgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGlzPwogICAgICAgICBkb2N1
bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoKnJlc3VsdFJhbmdlLCBt
X21ldGFkYXRhKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQppbmRleCAxNjE1OTA3ZDY5MTEwYzY4NWY3NzMwNzMx
OGJiMmE1NTcxOTY4YTRlLi5iZDg0MDY1MTJlNDU4OTAxM2Q5NzMwZGE5Njk1NWQ3Mjg1OTg0N2Ew
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3Vw
TGVnYWN5Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXBMZWdhY3kubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQg
IlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdl
LmgiCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKICNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5o
IgogI2ltcG9ydCAiVmlzaWJsZVNlbGVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CmluZGV4IDdlMjJjNTIyYWRjOGUyMjdiNjM5YmNlZTZkYjQ2ZDBhMzkyOTNkNTMuLjA0YjE4ZGMy
ZGJmYzJmZjljN2M4ZTM1YjU1NjI2OWYwY2M0MWM1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1
ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKICNpbmNs
dWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDM3NDE4NTYzNjc4
OTdjYzNlYWZhYzg2ZjgxOTEwNTI2ODZmZDFkYWEuLjUxMWRiMWE2ZjQ1YTZlMTBlNjhhYzczZmI2
M2JhOTRkZjA5NGVlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNp
bmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApp
bmRleCA2ODg4NzhkZDFiYWI3MWI1MmFkYzM0N2QzYzFiMWE3N2Q0N2UyY2EwLi44MmNlNGNhNDhm
NzdjNjY0NzBjZGUyZTVkMWY4YWZkNGY4ZDE4MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAi
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUg
IlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC03Myw3ICs3NCw2IEBACiAjaW5jbHVk
ZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMu
aD4KIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNv
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggNDc1ZTY0YmFkZjUwMDQ5
NTJhMmY2M2ZkNjY3MWQ1MTMyYTM0NDFkYi4uMzQ3Y2MxYjJjZGE0NGUxYzIwM2UzOTg1YWE3Y2M4
N2MyZDhkMzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAppbmRleCBlMzRjZDE2NzVmMTMzODc5ZTQ1YzY5MTFkNmRhYjYyYmI5NDcy
NTE0Li4wNmMwNTViNzVlMmYyZDk2ZTE0MTM4OTgyNzMzOGJiOTMyY2I2YWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiU2Ny
b2xsYmFyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJTcGF0aWFsTmF2aWdhdGlvbi5o
IgogI2luY2x1ZGUgIlN0YXRpY1Bhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZElt
YWdlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhOTFlODZlODZhMDIwOTE0ZjQ4ZWY5NTEyZDg2
NzFjYmNmNWMyZGM0Li5kOTEzYTk2ZTIxODg3OGY1YzA2ZDJmMGFiMGI0YmUxODk0MWRlYTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTEwOSw2ICsxMDksNyBAQAogI2luY2x1ZGUgIlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlNvY2tldFByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNw
YWNlLmgiCkBAIC04NTMsNyArODU0LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdl
JiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICAg
ICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCByYW5nZXMgd2hlbiByZXBsYWNpbmcgdGV4
dCwgc3VjaCB0aGF0IGVhcmxpZXIgdGV4dCByZXBsYWNlbWVudHMgZG9uJ3QgY2xvYmJlciByZXBs
YWNlbWVudCByYW5nZXMgbGF0ZXIgb24uCiAgICAgICAgIGF1dG8mIHJhbmdlcyA9IHJhbmdlc0J5
Q29udGFpbmVyTm9kZS5maW5kKGNvbnRhaW5lciktPnZhbHVlOwogICAgICAgICBmb3IgKGF1dG8g
aXRlcmF0b3IgPSByYW5nZXMucmJlZ2luKCk7IGl0ZXJhdG9yICE9IHJhbmdlcy5yZW5kKCk7ICsr
aXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lci5nZXQoKSwgaXRlcmF0b3ItPmxvY2F0aW9u
LCBpdGVyYXRvci0+bGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjcmVhdGVMaXZl
UmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIu
Z2V0KCksIGl0ZXJhdG9yLT5sb2NhdGlvbiwgaXRlcmF0b3ItPmxlbmd0aCkpOwogICAgICAgICAg
ICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+Y29sbGFwc2VkKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCmluZGV4IDJiOTM5MGMx
YzYzYjVhMDhjNjI5YmIyODAwYjM5ODU5MDUwZTAyNTIuLjViMjU5Y2Q3NDg2ZDJmZDdjMTk4ZmY3
YjRkZWFjMjYxNDlmYjI4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcApA
QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiU2ltcGxl
UmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRT
dHlsZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDMwMDkxMzhmMmRj
MDI0ZWM3ODI3MjkyMGFlMWU0MDI5ZjBlODczMDcuLjhhYzVkZjQzOTZkZDYyYTEyNzFiZTUwZjk4
NmMwZjYyODkxZjQ0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC02MSw2
ICs2MSw3IEBACiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0ICJSZW5kZXJlZERvY3Vt
ZW50TWFya2VyLmgiCiAjaW1wb3J0ICJTaGFkb3dSb290LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5n
ZS5oIgogI2ltcG9ydCAiVGV4dEJvdW5kYXJpZXMuaCIKICNpbXBvcnQgIlRleHRJdGVyYXRvci5o
IgogI2ltcG9ydCAiVmlzaWJsZVBvc2l0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggODIyMDQyNGEyMjc1MGE3ZTgyZjQ2MzM4NTBhMDNkYWE2
Y2Y0N2Q2OC4uYzUzMDE5MTk3MTBiNGZmODhjOTNjMTBlMTQxYWQ3MjJlODY3OTEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAj
aW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggODhmN2E3YzdkMjk4NTI2NGM3MjQ3NmM5MWU3MTBjZmUyOTU3ZTg3YS4uZDhlNTQyYjdh
MDQ3NTBjMjRlZmYxNzI2ZjVmMDU3MDU5ZTE1YzEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTc0LDYgKzE3NCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0
LmgiCkBAIC0yMDAzLDcgKzIwMDQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6Omlu
dmFsaWRhdGVDb250cm9sVGludHMoKQogCiBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBp
bnQgcmFuZ2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoJnNjb3BlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAg
cmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKCZzY29wZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpKTsKIH0KIAogdW5zaWdu
ZWQgSW50ZXJuYWxzOjpsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFu
Z2UmIHJhbmdlKQpAQCAtMjAzNCwxMiArMjAzNSwxMiBAQCBTdHJpbmcgSW50ZXJuYWxzOjpyYW5n
ZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkKIAog
UmVmPFJhbmdlPiBJbnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgaW50IHJhbmdlTG9j
YXRpb24sIGludCByYW5nZUxlbmd0aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJy
YW5nZShyYW5nZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgcmFuZ2VMb2NhdGlvbiwg
cmFuZ2VMZW5ndGgpKTsKIH0KIAogUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlT2ZTdHJp
bmdOZWFyTG9jYXRpb24oY29uc3QgUmFuZ2UmIHNlYXJjaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIHVuc2lnbmVkIHRhcmdldE9mZnNldCkKIHsKLSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFp
blRleHQoc2VhcmNoUmFuZ2UsIHRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICByZXR1cm4g
Y3JlYXRlTGl2ZVJhbmdlKGZpbmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0ZXh0LCB7
IH0sIHRhcmdldE9mZnNldCkpOwogfQogCiAjaWYgIVBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FZGl0aW5nUmFuZ2UuY3BwCmluZGV4IGNmMWMwM2FhYTU5ZGU4NGNlODNhNDk4MzUwMWQ0
ZWNlOTJkYzJlN2MuLjA4ZjdiYmM4YmZmZmQ1ODMyOWZiMmQxMjU5ZmNjNzE0YzA4ODc2YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVTZWxlY3Rp
b24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgogCkBA
IC01Myw3ICs1NCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1Jh
bmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluCiAgICAgICAgIC8vIGRpcmVj
dGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMu
IE91ciBzb2x1dGlvbiBpcwogICAgICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxl
bWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuCiAgICAg
ICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4K
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRF
bGVtZW50KCksIHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOworICAg
ICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVu
dE9yRG9jdW1lbnRFbGVtZW50KCksIHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBs
ZW5ndGgpKTsKICAgICB9CiAKICAgICBBU1NFUlQoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09
IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKQEAgLTY3LDE3ICs2OCwxNyBA
QCBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpG
cmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRpbgogICAgIGlmICghcGFyYWdyYXBoUmFuZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgV2ViQ29yZTo6Q29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUgPSBwYXJhZ3JhcGhSYW5nZS5nZXQoKS0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5y
b290Tm9kZSgpOworICAgIGF1dG8mIHJvb3ROb2RlID0gcGFyYWdyYXBoUmFuZ2UuZ2V0KCktPnN0
YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKICAgICBpbnQgcGFyYWdyYXBo
U3RhcnRJbmRleCA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoV2ViQ29yZTo6
UmFuZ2U6OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3Jh
cGhSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkp
LnB0cigpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBzdGF0aWNfY2Fz
dDxpbnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJh
bmdlKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJv
b3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sb2Nh
dGlvbiksIGxlbmd0aCkpOwogfQogCiBFZGl0aW5nUmFuZ2UgRWRpdGluZ1JhbmdlOjpmcm9tUmFu
Z2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSYW5nZSogcmFuZ2UsIEVk
aXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCiB7CiAgICAg
QVNTRVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZl
VG86OkVkaXRhYmxlUm9vdCk7CiAKLSAgICBzaXplX3QgbG9jYXRpb247Ci0gICAgc2l6ZV90IGxl
bmd0aDsKKyAgICBzaXplX3QgbG9jYXRpb24gPSAwOworICAgIHNpemVfdCBsZW5ndGggPSAwOwog
ICAgIGlmICghcmFuZ2UgfHwgIVdlYkNvcmU6OlRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRM
ZW5ndGhGcm9tUmFuZ2UoZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9j
dW1lbnRFbGVtZW50KCksIHJhbmdlLCBsb2NhdGlvbiwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQppbmRleCAwODRm
MzAwNWQ2MTAzZDRlMjUwMzNjMjU2YzcwYzBlMDY0MDQxY2Q4Li43OWIyZTRmNTdmN2IxNWJlMGM5
OWIzYjMxODY1ZWY4ZGM3YjQxNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVy
YXRvci5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXS0RPTUludGVybmFscy5oIgog
I2ltcG9ydCAiV0tET01SYW5nZS5oIgorI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KIAogQGludGVyZmFjZSBXS0RPTVRleHRJ
dGVyYXRvciAoKSB7CkBAIC02Miw3ICs2Myw3IEBAIC0gKEJPT0wpYXRFbmQKIAogLSAoV0tET01S
YW5nZSAqKWN1cnJlbnRSYW5nZQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvV0tET01SYW5nZShf
dGV4dEl0ZXJhdG9yLT5yYW5nZSgpLnB0cigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9N
UmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKF90ZXh0SXRlcmF0b3ItPnJhbmdlKCkpLnB0cigpKTsKIH0K
IAogLy8gRklYTUU6IENvbnNpZGVyIGRlcHJlY2F0aW5nIHRoaXMgbWV0aG9kIGFuZCBjcmVhdGlu
ZyBvbmUgdGhhdCBkb2VzIG5vdCByZXF1aXJlIGNvcHlpbmcgOC1iaXQgY2hhcmFjdGVycy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKaW5kZXggOWUyNDc1OGNkOTJjZjc1MDg2ZmNjMjE4MjRiMzVjODgw
NzEyMzI3My4uMmNmY2RjYjIxYTA3YjZmZDU0ZmM1MTBhNWI2ZWU5MWQ3NmFhNjY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBs
ZVJhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVsbENoZWNrZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9y
Lmg+CkBAIC02NSw4ICs2Niw2IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRp
YyB1aW50NjRfdCBnZW5lcmF0ZVRleHRDaGVja2luZ1JlcXVlc3RJRCgpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuY3BwCmluZGV4IDVmYjUzMjkzYWE3NDRiZjYwZGRlNjNmMTczN2Y3
ZDRlMGRhYjBkYzEuLjBmNGU5NDk1ODc1N2ZiZDI4NzQyODZkNzA0YmI4NzQzN2ZiMWE3N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURv
Y3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaW1wbGVSYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDRiYmFmNzkzZjdhNjVkMzZjMzQ1N2VhMDJmZDQ0ZjMy
ZDQxYzFhYzUuLjNkMDIzOWY2MjJjODlhYmIzODIyMWFhZjdlZmQyYWYyZGVjMmQ4YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTc3LDYg
Kzc3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU3VicmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgpAQCAtOTEsOCAr
OTIsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIEpT
QzsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwo
V1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHdlYkZyYW1lQ291bnRlciwgKCJXZWJGcmFtZSIp
KTsKIApAQCAtNzEyLDcgKzcxMSw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0b3BMb2FkaW5nKCkKIFdl
YkZyYW1lKiBXZWJGcmFtZTo6ZnJhbWVGb3JDb250ZXh0KEpTQ29udGV4dFJlZiBjb250ZXh0KQog
ewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdE9iaiA9IHRvSlMoY29udGV4
dCk7Ci0gICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cq
PihnbG9iYWxPYmplY3RPYmotPnZtKCksIGdsb2JhbE9iamVjdE9iaik7CisgICAgSlNET01XaW5k
b3cqIHdpbmRvdyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVj
dE9iai0+dm0oKSwgZ2xvYmFsT2JqZWN0T2JqKTsKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byogY29yZUZyYW1lID0gd2luZG93LT53cmFwcGVkKCku
ZnJhbWUoKTsKQEAgLTcyOCw3ICs3MjcsNyBAQCBKU1ZhbHVlUmVmIFdlYkZyYW1lOjpqc1dyYXBw
ZXJGb3JXb3JsZChJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUqIG5vZGVIYW5kbGUsIEluagogCiAg
ICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IG1fY29yZUZyYW1lLT5zY3JpcHQoKS5nbG9i
YWxPYmplY3Qod29ybGQtPmNvcmVXb3JsZCgpKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKGds
b2JhbE9iamVjdCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwog
ICAgIHJldHVybiB0b1JlZihnbG9iYWxPYmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIG5vZGVIYW5kbGUtPmNvcmVOb2RlKCkpKTsKIH0KIApAQCAtNzM5LDcgKzczOCw3IEBA
IEpTVmFsdWVSZWYgV2ViRnJhbWU6OmpzV3JhcHBlckZvcldvcmxkKEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGUqIHJhbmdlSGFuZGxlLCBJCiAKICAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0
ID0gbV9jb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+Y29yZVdvcmxkKCkp
OwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHRvUmVmKGdsb2JhbE9iamVj
dCwgdG9KUyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgcmFuZ2VIYW5kbGUtPmNvcmVSYW5n
ZSgpKSk7CiB9CiAKQEAgLTc0OCw3ICs3NDcsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OmNvdW50ZXJW
YWx1ZShKU09iamVjdFJlZiBlbGVtZW50KQogICAgIGlmICghdG9KUyhlbGVtZW50KS0+aW5oZXJp
dHM8SlNFbGVtZW50Pih0b0pTKGVsZW1lbnQpLT52bSgpKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCi0gICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoJmpzQ2FzdDxKU0VsZW1l
bnQqPih0b0pTKGVsZW1lbnQpKS0+d3JhcHBlZCgpKTsKKyAgICByZXR1cm4gY291bnRlclZhbHVl
Rm9yRWxlbWVudCgmSlNDOjpqc0Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSktPndyYXBw
ZWQoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6cHJvdmlzaW9uYWxVUkwoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCBhOTc2NGJlZTE2ZjY4MDQ4MGRmZWRkMTBjOTAwMGRmMjg4MTBkY2Y1Li45MDViZTg0N2Vk
NDU4ODYxZjk3MjQ5NzljODJkNzc3ZTAwNzg5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTI0LDYgKzEyNCw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYWRvd1Jv
b3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVy
YXRvci5oPgpAQCAtMTk3Nyw3ICsxOTc4LDcgQEAgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VO
ZWFyUG9zaXRpb25NYXRjaGVzVGV4dChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW8KIHsK
ICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzZWxlY3Rpb25SYW5nZS0+b3duZXJEb2N1
bWVudCgpLCBzZWxlY3Rpb25SYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB0cnVlKTsK
LSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlbGVjdGlvblJhbmdlLmdldCgpLCBt
YXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdl
KGZpbmRDbG9zZXN0UGxhaW5UZXh0KCpzZWxlY3Rpb25SYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7
IH0sIHRhcmdldE9mZnNldCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRTZWxlY3Rp
b25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCkBAIC00MDE4LDcgKzQwMTksNyBAQCB2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVu
Z3RoRGVsdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIG5ld1NlbGVjdGlv
bkxvY2F0aW9uLnVuc2FmZUdldCgpLCBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCkpKQor
ICAgIGlmIChhdXRvIHJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgbmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0
KCksIG5ld1NlbGVjdGlvbkxlbmd0aC51bnNhZmVHZXQoKSkpKQogICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQp
OwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTQxNDEsNyArNDE0Miw3IEBAIHZvaWQg
V2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29u
dGV4dFJlcXVlc3QgcmVxdWVzCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBhdXRvIG1pZHBvaW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHJvb3RDb250YWluZXJOb2RlLmdldCgpLCBtaWRwb2ludExvY2F0aW9uLnVuc2Fm
ZUdldCgpLCAwKTsKKyAgICAgICAgYXV0byBtaWRwb2ludFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdl
KFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdENvbnRhaW5lck5v
ZGUuZ2V0KCksIG1pZHBvaW50TG9jYXRpb24udW5zYWZlR2V0KCksIDApKTsKIAogICAgICAgICBh
dXRvIG1pZHBvaW50ID0gbWlkcG9pbnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAgICAgICBz
dGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPSBzdGFydE9mV29yZChtaWRwb2ludCk7
CkBAIC00MjAyLDcgKzQyMDMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRp
bmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlcwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZWN0cy5hcHBl
bmQoeyBjb250ZXh0SXRlcmF0b3IucmFuZ2UoKS0+YWJzb2x1dGVCb3VuZGluZ0JveChSYW5nZTo6
Qm91bmRpbmdSZWN0QmVoYXZpb3I6Oklnbm9yZUVtcHR5VGV4dFNlbGVjdGlvbnMpLCB7IGN1cnJl
bnRMb2NhdGlvbiwgMSB9IH0pOworICAgICAgICAgICAgcmVjdHMuYXBwZW5kKHsgY3JlYXRlTGl2
ZVJhbmdlKGNvbnRleHRJdGVyYXRvci5yYW5nZSgpKS0+YWJzb2x1dGVCb3VuZGluZ0JveChSYW5n
ZTo6Qm91bmRpbmdSZWN0QmVoYXZpb3I6Oklnbm9yZUVtcHR5VGV4dFNlbGVjdGlvbnMpLCB7IGN1
cnJlbnRMb2NhdGlvbiwgMSB9IH0pOwogICAgICAgICAgICAgY3VycmVudExvY2F0aW9uKys7CiAg
ICAgICAgICAgICBjb250ZXh0SXRlcmF0b3IuYWR2YW5jZSgxKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRl
eCAwYWU0ZWFmZDhmNDExOWFhYjUzMGFlMTM2YWM5MGMwNTVjNDc1MjM1Li5iNDliMTU0Y2M5ZDNi
ZmM5NjE2ZmNmZWY0ZjgwODYzNTRlYmM3YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtODYsNiArODYsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlSW5oZXJpdGVk
RGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVmlzaWJsZVVuaXRzLmg+CkBAIC05OSw3ICsxMDAsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1Jbml0aWFsaXplKCkKIHsKQEAgLTQwNyw4ICs0MDcsNiBAQCB2b2lkIFdlYlBhZ2U6OmZv
bnRBdFNlbGVjdGlvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKHsgYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ29weUF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IuZ2V0KCkpKSB9LCBDVEZvbnRH
ZXRTaXplKGN0Rm9udCksIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIGNhbGxiYWNrSUQpKTsK
IH0KLSAgICAKLQogCiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAKQEAgLTUwNyw2ICs1MDUs
NyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlibwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09O
VFJPTFMpCisKIHN0YXRpYyBTdHJpbmcmIHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RyaW5nKCJSZXBsYWNlU2Vs
ZWN0aW9uUGFzdGVib2FyZCIpOwpAQCAtNTIzLDYgKzUyMiw3IEBAIHZvaWQgV2ViUGFnZTo6cmVw
bGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvCiAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCiAgICAgICAgIFdlYlBhc3RlYm9h
cmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5yZW1vdmVPdmVycmlkZShy
ZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgdHlwZSk7CiB9CisKICNlbmRpZgogCiBi
b29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JikKQEAgLTc5MCw2ICs3OTAsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdl
c1RvUERGRnJvbVBERkRvY3VtZW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBQREZEb2N1bWVudCAq
cAogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQorCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2Vi
UGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICB1aW50MzJfdCBwb2xpY3lSZXN1bHQgPSAwOwpAQCAtODA5LDE2ICs4MTAsMjAgQEAg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVS
TChXZWJGcmFtZSogZnJhbWUsIGNvbnMKIAogICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247
CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pCisKIHZvaWQgV2ViUGFnZTo6aGFuZGxlVGVsZXBob25lTnVtYmVyQ2xp
Y2soY29uc3QgU3RyaW5nJiBudW1iZXIsIGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dUZWxlcGhvbmVOdW1iZXJNZW51KG51bWJl
ciwgcG9pbnQpKTsKIH0KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykK
Kwogdm9pZCBXZWJQYWdlOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soRnJhbWVTZWxlY3Rp
b24mIHNlbGVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBob25lTnVtYmVycywgY29uc3Qg
SW50UG9pbnQmIHBvaW50KQogewogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24u
c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwpAQCAtODM3LDYgKzg0Miw3IEBAIHZvaWQgV2ViUGFn
ZTo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24s
IGNvbnN0IFZlY3RvCiAgICAgZmx1c2hQZW5kaW5nRWRpdG9yU3RhdGVVcGRhdGUoKTsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNv
bnRleHREYXRhKHBvaW50LCBzZWxlY3Rpb25EYXRhVmVjdG9yLCBwaG9uZU51bWJlcnMsIHNlbGVj
dGlvbi5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSwgVXNlckRhdGEoKSkpOwogfQor
CiAjZW5kaWYKIAogU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0CkBAIC0xMDMwLDcgKzEwMzYsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYsIE1vbgogewog
fQogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKwogdm9pZCBX
ZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3Qg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQpIGNvbnN0
CiB7CiAgICAgc3dpdGNoICh0YXJnZXRDb250ZXh0LnR5cGUoKSkgewpAQCAtMTA2MCw2ICsxMDY3
LDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCh1aW50
NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgbV9wYWdlLT5wbGF5YmFja1RhcmdldFBpY2tlcldhc0Rp
c21pc3NlZChjb250ZXh0SWQpOwogfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KaW5kZXggMjczYWRlMTA2NDEwNjVlMjJhNTQ3Zjk0NWNjNDI5Mzcy
NGVlYmQ3Ni4uZjBlMDg0ODU5MDdjYWVjZDU3YWE0MTBiOTc2MzgxNGU3MGFiNTllYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQpAQCAtNzEsNiArNzEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaW1w
bGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TcGVsbENoZWNrZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNzQw
MDM1M2IxZjU5OGIyMTA4ZDk5NTAyZjY4YmU0NDNlYTQ2NTRjMi4uMjRhYWNlNzQyODllNDE3NTky
NmNmZDIyNzgwMGZhMjkwNDgzZjhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCkBAIC0xMDAsNiArMTAwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdWJmcmFt
ZUxvYWRlci5oPgpAQCAtODA2LDggKzgwNyw4IEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFu
Z2U6KFdlYkNvcmU6OlJhbmdlICopcmFuZ2UKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1
cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAKLSAgICBzaXplX3QgbG9jYXRpb247Ci0g
ICAgc2l6ZV90IGxlbmd0aDsKKyAgICBzaXplX3QgbG9jYXRpb24gPSAwOworICAgIHNpemVfdCBs
ZW5ndGggPSAwOwogICAgIGlmICghV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZShfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5yb290RWRp
dGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UsIGxvY2F0aW9uLCBsZW5ndGgp
KQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAKQEAgLTgzNiw3
ICs4MzcsNyBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToo
TlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOgogICAgICAgICBhdXRvKiBlbGVtZW50
ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9y
RG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShXZWJDb3JlOjpUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2UubG9jYXRpb24s
IG5zcmFuZ2UubGVuZ3RoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKHJhbmdlSXNSZWxhdGl2ZVRv
ID09IFdlYlJhbmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwpAQCAtODUxLDggKzg1Miw4IEBA
IC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5z
cmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhSYW5nZS5nZXQoKS0+c3RhcnRDb250YWluZXIoKS50
cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKHJv
b3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRPZmZzZXQoKSkucHRyKCkpOwotICAgIHJl
dHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZy
b290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIHN0YXRpY19jYXN0PGludD4obnNyYW5nZS5s
b2NhdGlvbiksIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBhdXRvIHBhcmFncmFwaFN0YXJ0SW5kZXgg
PSBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKFdlYkNvcmU6OlJhbmdlOjpjcmVh
dGUocm9vdE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2RlLCAwLCAmcGFyYWdyYXBoUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIG5zcmFu
Z2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKSk7CiB9CiAKIC0gKERPTVJhbmdlICopX2NvbnZl
cnROU1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDQ3NmI4NzEwYTI2
ZjYwODc3OTA0Njc4OTc2YzQzNGRmMWMxMThkY2YuLjczMzYyMDczZTBiNWMzNWM4OWU0YmVhYmRj
NGJlMjYwOWJjNDBhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDggQEAKICNpbXBvcnQg
IkRPTVJhbmdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvUmFuZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KQEAgLTg1LDEwICs4NywxMCBAQCAtIChCT09MKWF0RW5kCiAKIC0g
KERPTVJhbmdlICopY3VycmVudFJhbmdlCiB7Ci0gICAgV2ViQ29yZTo6VGV4dEl0ZXJhdG9yJiB0
ZXh0SXRlcmF0b3IgPSAqX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3I7Ci0gICAgaWYgKHRleHRJdGVy
YXRvci5hdEVuZCgpKQorICAgIGF1dG8mIGl0ZXJhdG9yID0gKl9wcml2YXRlLT5fdGV4dEl0ZXJh
dG9yOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4ga2l0KHRleHRJdGVyYXRvci5yYW5nZSgpLnB0cigpKTsKKyAgICByZXR1cm4g
a2l0KGNyZWF0ZUxpdmVSYW5nZShpdGVyYXRvci5yYW5nZSgpKS5wdHIoKSk7CiB9CiAKIC8vIEZJ
WE1FOiBDb25zaWRlciBkZXByZWNhdGluZyB0aGlzIG1ldGhvZCBhbmQgY3JlYXRpbmcgb25lIHRo
YXQgZG9lcyBub3QgcmVxdWlyZSBjb3B5aW5nIDgtYml0IGNoYXJhY3RlcnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392676</attachid>
            <date>2020-03-05 21:45:24 -0800</date>
            <delta_ts>2020-03-07 11:06:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208432-20200305214519.patch</filename>
            <type>text/plain</type>
            <size>53459</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTYwMTBiOWZhMGY2MzY4
MGNjMjNmOWExYjNmNDdiM2IzYWJlNjM5YS4uY2ExMmQyYzFiOGNhYTI4NjAxNDhiNWQyNzI4Y2U1
MmFjODQzZWNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTAzLTA1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9m
IGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgRE9NIFJhbmdlIGNsYXNzIGlzIGEgbGl2ZSBy
YW5nZS4gVGhlIGxpdmUgdXBkYXRpbmcgZmVhdHVyZSBvZiB0aGVzZSByYW5nZXMgbWVhbgorICAg
ICAgICB0aGV5IGFyZSBleHBlbnNpdmUgdG8gY3JlYXRlIGFuZCBkZXN0cm95IGFuZCBhbHNvIG1h
a2UgYWxsIERPTSBtdXRhdGlvbiBtb3JlIGV4cGVuc2l2ZQorICAgICAgICB3aGlsZSB0aGV5IGFy
ZSBhbGl2ZS4gV2Ugd2lsbCBiZSBhYmxlIHRvIHNwZWVkIHVwLCBsaWtlbHkgbWVhc3VyYWJsZSBv
biBTcGVlZG9tZXRlciwKKyAgICAgICAgaWYgd2UgY2FuIGN1dCBkb3duIHVzZXMgb2YgbGl2ZSBy
YW5nZXMuCisKKyAgICAgICAgLSBSZWZhY3RvcmVkIHRoZSBTdGF0aWNSYW5nZSBjbGFzcyB0byBj
cmVhdGUgdHdvIG5ldyBzdHJ1Y3RzLgorICAgICAgICAtIFRoZSBCb3VuZGFyeVBvaW50IHN0cnVj
dCBpbXBsZW1lbnRzIHdoYXQgdGhlIERPTSBzdGFuZGFyZCBjYWxscyBhIGJvdW5kYXJ5IHBvaW50
OgorICAgICAgICAgIGEgbm9kZSBhbmQgb2Zmc2V0LiBTaW1pbGFyIHRvIHRoZSBSYW5nZUJvdW5k
YXJ5UG9pbnQgY2xhc3MsIHdoaWNoIHN1cHBvcnRzCisgICAgICAgICAgYmVpbmcgdGhlIGJvdW5k
YXJ5IHBvaW50IG9mIGEgbGl2ZSByYW5nZSwgYnV0IHNpbXBsZXIgYW5kIG5vdCBsaXZlLgorICAg
ICAgICAtIFRoZSBTaW1wbGVSYW5nZSBzdHJ1Y3QgaW1wbGVtZW50cyB3aGF0IHRoZSBET00gc3Rh
bmRhcmQgY2FsbHMgYSByYW5nZSAobm90IGEgbGl2ZQorICAgICAgICAgIHJhbmdlKS4gTGlrZSBT
dGF0aWNSYW5nZSBidXQgd2l0aG91dCByZWZlcmVuY2UgY291bnRpbmcgYW5kIERPTSBiaW5kaW5n
LgorICAgICAgICAtIFNpbmNlIFN0YXRpY1JhbmdlIGlzIGRlcml2ZWQgcHVibGljbHkgZnJvbSBT
aW1wbGVSYW5nZSB5b3UgY2FuIHBhc3MgZWl0aGVyIHRvIGFueQorICAgICAgICAgIGZ1bmN0aW9u
IHRoYXQgdGFrZXMgYSBTaW1wbGVSYW5nZS4gQW5kIHNpbmNlIHRoZXJlIGlzIGEgY29uc3RydWN0
b3IgdG8gY3JlYXRlIGEKKyAgICAgICAgICBTaW1wbGVSYW5nZSBmcm9tIGEgUmFuZ2UgeW91IGNh
biBwYXNzIGEgUmFuZ2UgdG8gdGhvc2UgZnVuY3Rpb25zIHRvby4KKyAgICAgICAgLSBSZW5hbWVk
IFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UgdG8gU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJhbmdlR3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGlnaGxpZ2h0UmFuZ2VHcm91cDo6SGlnaGxpZ2h0UmFuZ2VHcm91cCk6
IFRha2UgU2ltcGxlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpIaWdobGlnaHRSYW5nZUdyb3Vw
OjpjcmVhdGU6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SGlnaGxpZ2h0UmFuZ2VHcm91cDo6
YWRkVG9TZXRMaWtlKTogQ2FsbCBTdGF0aWNSYW5nZTo6Y3JlYXRlLgorICAgICAgICAoV2ViQ29y
ZTo6SGlnaGxpZ2h0UmFuZ2VHcm91cDo6cmVtb3ZlRnJvbVNldExpa2UpOiBUYWtlIFNpbXBsZVJh
bmdlLgorICAgICAgICAoV2ViQ29yZTo6SGlnaGxpZ2h0UmFuZ2VHcm91cDo6YWRkVG9TZXRMaWtl
KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VHcm91
cC5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRk
ZWQgQm91bmRhcnlQb2ludC5jcHAgYW5kIFNpbXBsZVJhbmdlLmNwcC4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIEJvdW5kYXJ5UG9pbnQuY3BwL2gg
YW5kIFNpbXBsZVJhbmdlLmNwcC9oLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVIaWdobGlnaHRQb3NpdGlvbnMpOiBVcGRh
dGVkIHRvIHVzZSBTaW1wbGVSYW5nZS4KKworICAgICAgICAqIGRvbS9Cb3VuZGFyeVBvaW50LmNw
cDogQWRkZWQuCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuaDogQWRkZWQuCisgICAgICAg
ICogZG9tL1NpbXBsZVJhbmdlLmNwcDogQWRkZWQuCisgICAgICAgICogZG9tL1NpbXBsZVJhbmdl
Lmg6IEFkZGVkLgorCisgICAgICAgICogZG9tL1N0YXRpY1JhbmdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0YXRpY1JhbmdlOjpTdGF0aWNSYW5nZSk6IFRha2UgYW4gcnZhbHVlIHJlZmVyZW5j
ZSB0byBhIFNpbXBsZVJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUmFuZ2U6OmNyZWF0
ZSk6IERpdHRvLiBDaGFuZ2VkIHRoZSBvdGhlciBvdmVybG9hZHMgdG8gY3JlYXRlCisgICAgICAg
IGEgU2ltcGxlUmFuZ2UgZmlyc3QgdGhlbiBjYWxsIHRocm91Z2ggdG8gdGhlIG1haW4gb25lLgor
ICAgICAgICAoV2ViQ29yZTo6aXNEb2N1bWVudFR5cGVPckF0dHIpOiBXcm90ZSBhIG11Y2ggbW9y
ZSBlZmZpY2llbnQgdmVyc2lvbiBvZiB0aGlzLgorICAgICAgICBUaGUgb2xkIHZlcnNpb24gY2Fs
bGVkIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIG5vZGVUeXBlIHR3aWNlLiBUaGlzIGNhbGxzIGl0IGF0
CisgICAgICAgIG1vc3Qgb25jZSwgYW5kIG1vc3RseSBkb2Vzbid0IGNhbGwgaXQgYXQgYWxsLgor
ICAgICAgICAqIGRvbS9TdGF0aWNSYW5nZS5oOiBTaW1wbGlmaWVkIHRoaXMgY2xhc3MsIHB1dHRp
bmcgbW9zdCBvZiB0aGUgYWN0dWFsIHJhbmdlCisgICAgICAgIGxvZ2ljIGludG8gdGhlIGJhc2Ug
Y2xhc3MuIE5vdGUgdGhhdCB0aGlzIGNoYW5nZSBlbGltaW5hdGVkIHRoZSBwZWN1bGlhciBjb2Rl
CisgICAgICAgIHRoYXQgaW4gdGhlID09IG9wZXJhdG9yIHRoYXQgY29tcGFyZWQgbm9kZXMgdXNp
bmcgaXNFcXVhbE5vZGUgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBub2RlIGlkZW50aXR5LiBU
aGVyZSB3YXMgbm8gb25lIHdobyBuZWVkZWQgdGhhdCBvdGhlciBiZWhhdmlvci4gQWxzbyBmaXhl
ZAorICAgICAgICBtaXN0YWtlbiB1c2Ugb2YgdW5zaWduZWQgbG9uZyBpbiBTdGF0aWNSYW5nZTo6
SW5pdC4gSXQncyB1bnNpZ25lZCBsb25nIGluCisgICAgICAgIHRoZSBJREwgZmlsZSwgYnV0IGNv
bmZ1c2luZ2x5IHRoYXQncyBqdXN0IHVuc2lnbmVkIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAg
KiBkb20vU3RhdGljUmFuZ2UuaWRsOiBUd2Vha2VkIGZvcm1hdHRpbmcuCisKKyAgICAgICAgKiBl
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBVcGRhdGVkIGZvciByZW5hbWUK
KyAgICAgICAgb2YgU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlUmFu
Z2VXaXRoVGV4dENvbW1hbmQ6OmRvQXBwbHkpOiBVcGRhdGVkIHNpbmNlIFZpc2libGVTZWxlY3Rp
b24KKyAgICAgICAgdGFrZXMgU2ltcGxlUmFuZ2Ugbm93LgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBVcGRhdGVkIGZv
cgorICAgICAgICByZW5hbWUgb2YgU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKyAgICAgICAgKiBlZGl0
aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCk6IFVwZGF0
ZWQKKyAgICAgICAgc2luY2UgYSBzZWxlY3Rpb24gbm93IHRha2VzIGEgU2ltcGxlUmFuZ2UmLCBu
b3QgYSBTdGF0aWNSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6IFVwZGF0ZWQgZm9yCisgICAgICAgIHJlbmFtZSBv
ZiBTdGF0aWNSYW5nZTo6Y3JlYXRlLgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVu
Q29tbWFuZCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24p
OiBVc2UgU2ltcGxlUmFuZ2UKKyAgICAgICAgaW5zdGVhZCBvZiBTdGF0aWNSYW5nZSBhbmQgUmFu
Z2UuCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmg6IFVwZGF0ZWQgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbTogQWRkZWQgaW5j
bHVkZS4KKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDogRGl0dG8uCisgICAgICAg
ICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UpOiBVcGRhdGVkIHNpbmNlIFZpc2liZWxTZWxlY3Rp
b24KKyAgICAgICAgdGFrZXMgU2ltcGxlUmFuZ2Ugbm93LgorCisgICAgICAgICogcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29s
bGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyk6IFR3ZWFrZWQgY29kaW5nCisgICAgICAgIHN0
eWxlIGEgYml0LgorCiAyMDIwLTAyLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBTaW1wbGlmeSBncmFkaWVudCBwYXJzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE0M2ViOTc0
NzcwNmUwN2IzMjM3NTgyZDBlNGQxN2YyNWIyMTQ0MWMuLjc1NmE0ZTQ1OTZiZDg2YWQ0MWU3YzEw
YjMwNmUwNTAyYWVlMjhhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMDQg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEJlZ2luIG1vdmluZyBv
ZmYgb2YgbGl2ZSByYW5nZXMgZm9yIFdlYktpdCBpbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQzMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRpbmdSYW5nZTo6ZnJvbVJhbmdlKTogSW5pdGlhbGl6ZSBv
dXQgYXJndW1lbnRzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6IEFkZGVkIGluY2x1ZGUuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDogRGl0dG8uCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06IERpdHRvLgorCiAyMDIwLTAzLTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmUtZmV0Y2ggZmlyc3Qg
cGFnZSBpbiBuZXcgUERGIGxvYWRpbmcgbW9kZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggODVjNzczMzAyY2IyMWQ4MzZkOGEwNjRjYWM4NjFlNmQ5ODYzYmU0Ni4uMmQyNGFjNjM1
Y2ViZDk4NDE5YzUyOWFhNjM1MGZiZDU4MWY2ZmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9mIGxpdmUgcmFuZ2VzIGZvciBX
ZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOiBBZGRlZCBp
bmNsdWRlLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06IERpdHRvLgorICAgICAgICAo
LVtXZWJGcmFtZSBfY29udmVydFRvTlNSYW5nZTpdKTogSW5pdGlhbGl6ZWQgb3V0IGFyZ3VtZW50
cy4KKwogMjAyMC0wMy0wNSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhwb3J0IE5vd1BsYXlpbmcgY29tbWFuZHMgdG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlh
IHBsYXlpbmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSYW5nZUdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJhbmdlR3JvdXAuY3BwCmluZGV4IGZj
MTI5NDAwYWQ1YzZhMjBiYWIzZTRkM2FmNWM5MjI0NWViYzNmNGUuLmQ3YTlkOTliZTY1ZTFjODVh
OTI0YWQyYTFlMjBkNTAzY2VkYWY5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJhbmdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJhbmdlR3JvdXAuY3BwCkBAIC0zMCwxOSArMzAs
MTcgQEAKICNpbmNsdWRlICJKU0RPTVNldExpa2UuaCIKICNpbmNsdWRlICJKU1N0YXRpY1Jhbmdl
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVk
ZSAiU3RhdGljUmFuZ2UuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGlnaGxpZ2h0UmFuZ2VHcm91
cDo6SGlnaGxpZ2h0UmFuZ2VHcm91cChSZWY8U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCitIaWdobGln
aHRSYW5nZUdyb3VwOjpIaWdobGlnaHRSYW5nZUdyb3VwKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSkKIHsKLSAgICBhdXRvIG15UmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKTsKLSAgICBhZGRUb1NldExp
a2UobXlSYW5nZS5nZXQoKSk7CisgICAgYWRkVG9TZXRMaWtlKHJhbmdlKTsKIH0KIAotUmVmPEhp
Z2hsaWdodFJhbmdlR3JvdXA+IEhpZ2hsaWdodFJhbmdlR3JvdXA6OmNyZWF0ZShTdGF0aWNSYW5n
ZSYgcmFuZ2UpCitSZWY8SGlnaGxpZ2h0UmFuZ2VHcm91cD4gSGlnaGxpZ2h0UmFuZ2VHcm91cDo6
Y3JlYXRlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIaWdobGlnaHRSYW5nZUdyb3VwKHJhbmdlKSk7CiB9CkBAIC01MCwxMyArNDgsMTMgQEAg
UmVmPEhpZ2hsaWdodFJhbmdlR3JvdXA+IEhpZ2hsaWdodFJhbmdlR3JvdXA6OmNyZWF0ZShTdGF0
aWNSYW5nZSYgcmFuZ2UpCiB2b2lkIEhpZ2hsaWdodFJhbmdlR3JvdXA6OmluaXRpYWxpemVTZXRM
aWtlKERPTVNldEFkYXB0ZXImIHNldCkKIHsKICAgICBmb3IgKGF1dG8mIHJhbmdlRGF0YSA6IG1f
cmFuZ2VzRGF0YSkKLSAgICAgICAgc2V0LmFkZDxJRExJbnRlcmZhY2U8U3RhdGljUmFuZ2U+Pihy
YW5nZURhdGEtPnJhbmdlKTsKKyAgICAgICAgc2V0LmFkZDxJRExJbnRlcmZhY2U8U3RhdGljUmFu
Z2U+PihTdGF0aWNSYW5nZTo6Y3JlYXRlKFNpbXBsZVJhbmdlIHsgcmFuZ2VEYXRhLT5yYW5nZSB9
KSk7CiB9CiAKLWJvb2wgSGlnaGxpZ2h0UmFuZ2VHcm91cDo6cmVtb3ZlRnJvbVNldExpa2UoY29u
c3QgU3RhdGljUmFuZ2UmIHJhbmdlKQorYm9vbCBIaWdobGlnaHRSYW5nZUdyb3VwOjpyZW1vdmVG
cm9tU2V0TGlrZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgcmV0dXJuIG1fcmFu
Z2VzRGF0YS5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmcmFuZ2VdKGNvbnN0IFJlZjxIaWdobGlnaHRS
YW5nZURhdGE+JiBjdXJyZW50KSB7Ci0gICAgICAgIHJldHVybiBjdXJyZW50LmdldCgpLnJhbmdl
LmdldCgpID09IHJhbmdlOworICAgIHJldHVybiBtX3Jhbmdlc0RhdGEucmVtb3ZlRmlyc3RNYXRj
aGluZyhbJnJhbmdlXShjb25zdCBIaWdobGlnaHRSYW5nZURhdGEmIGN1cnJlbnQpIHsKKyAgICAg
ICAgcmV0dXJuIGN1cnJlbnQucmFuZ2UgPT0gcmFuZ2U7CiAgICAgfSk7CiB9CiAKQEAgLTY1LDE0
ICs2MywxMiBAQCB2b2lkIEhpZ2hsaWdodFJhbmdlR3JvdXA6OmNsZWFyRnJvbVNldExpa2UoKQog
ICAgIG1fcmFuZ2VzRGF0YS5jbGVhcigpOwogfQogCi1ib29sIEhpZ2hsaWdodFJhbmdlR3JvdXA6
OmFkZFRvU2V0TGlrZShTdGF0aWNSYW5nZSYgcmFuZ2UpCitib29sIEhpZ2hsaWdodFJhbmdlR3Jv
dXA6OmFkZFRvU2V0TGlrZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKG5v
dEZvdW5kICE9IG1fcmFuZ2VzRGF0YS5maW5kTWF0Y2hpbmcoWyZyYW5nZV0oY29uc3QgUmVmPEhp
Z2hsaWdodFJhbmdlRGF0YT4mIGN1cnJlbnQpIHsgcmV0dXJuIGN1cnJlbnQuZ2V0KCkucmFuZ2Uu
Z2V0KCkgPT0gcmFuZ2U7IH0pKQorICAgIGlmIChub3RGb3VuZCAhPSBtX3Jhbmdlc0RhdGEuZmlu
ZE1hdGNoaW5nKFsmcmFuZ2VdKGNvbnN0IEhpZ2hsaWdodFJhbmdlRGF0YSYgY3VycmVudCkgeyBy
ZXR1cm4gY3VycmVudC5yYW5nZSA9PSByYW5nZTsgfSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBtX3Jhbmdlc0RhdGEuYXBwZW5kKEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKHJhbmdl
KSk7Ci0gICAgCisgICAgbV9yYW5nZXNEYXRhLmFwcGVuZChIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZShTaW1wbGVSYW5nZSB7IHJhbmdlIH0pKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRS
YW5nZUdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRS
YW5nZUdyb3VwLmgKaW5kZXggNGQ4MWU5ZWY3MjMzNDAzZmMzMzg1ZTE0NjMxZmNiMGE5YzVlYTYw
Yi4uMGNjYzMzNzJlMmUzNjBlZDliZmQxMmZkMmNjZTAxZGQzOWEzM2RmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmFuZ2VHcm91cC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJhbmdlR3JvdXAu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNSw1MiArMjUsNDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGNlcHRpb25P
ci5oIgogI2luY2x1ZGUgIlBvc2l0aW9uLmgiCi0jaW5jbHVkZSAiU3RhdGljUmFuZ2UuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIERP
TVNldEFkYXB0ZXI7Ci1jbGFzcyBTdGF0aWNSYW5nZTsKLWNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbjsKIAotc3RydWN0IEhpZ2hsaWdodFJhbmdlRGF0YSA6IFJlZkNvdW50ZWQ8
SGlnaGxpZ2h0UmFuZ2VEYXRhPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEhpZ2hsaWdodFJhbmdl
RGF0YT4gewotICAgIAotICAgIEhpZ2hsaWdodFJhbmdlRGF0YShSZWY8U3RhdGljUmFuZ2U+JiYg
cmFuZ2UpCi0gICAgICAgIDogcmFuZ2UoV1RGTW92ZShyYW5nZSkpCitzdHJ1Y3QgSGlnaGxpZ2h0
UmFuZ2VEYXRhIDogUmVmQ291bnRlZDxIaWdobGlnaHRSYW5nZURhdGE+LCBDYW5NYWtlV2Vha1B0
cjxIaWdobGlnaHRSYW5nZURhdGE+IHsKKyAgICBTaW1wbGVSYW5nZSByYW5nZTsKKyAgICBPcHRp
b25hbDxQb3NpdGlvbj4gc3RhcnRQb3NpdGlvbjsKKyAgICBPcHRpb25hbDxQb3NpdGlvbj4gZW5k
UG9zaXRpb247CisKKyAgICBzdGF0aWMgUmVmPEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKFNp
bXBsZVJhbmdlJiYgcmFuZ2UpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBI
aWdobGlnaHRSYW5nZURhdGEoV1RGTW92ZShyYW5nZSkpKTsKICAgICB9Ci0gICAgCi0gICAgc3Rh
dGljIFJlZjxIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShSZWY8U3RhdGljUmFuZ2U+JiYgcmFu
Z2UpCisKK3ByaXZhdGU6CisgICAgSGlnaGxpZ2h0UmFuZ2VEYXRhKFNpbXBsZVJhbmdlJiYgcmFu
Z2UpCisgICAgICAgIDogcmFuZ2UoV1RGTW92ZShyYW5nZSkpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBIaWdobGlnaHRSYW5nZURhdGEoV1RGTW92ZShyYW5nZSkpKTsKICAg
ICB9Ci0gICAgCi0gICAgUmVmPFN0YXRpY1JhbmdlPiByYW5nZTsKLSAgICBPcHRpb25hbDxQb3Np
dGlvbj4gc3RhcnRQb3NpdGlvbjsKLSAgICBPcHRpb25hbDxQb3NpdGlvbj4gZW5kUG9zaXRpb247
CiB9OwogCiBjbGFzcyBIaWdobGlnaHRSYW5nZUdyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8SGln
aGxpZ2h0UmFuZ2VHcm91cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SGlnaGxpZ2h0UmFu
Z2VHcm91cD4gY3JlYXRlKFN0YXRpY1JhbmdlJik7Ci0gICAgCisgICAgc3RhdGljIFJlZjxIaWdo
bGlnaHRSYW5nZUdyb3VwPiBjcmVhdGUoY29uc3QgU2ltcGxlUmFuZ2UmKTsKKwogICAgIHZvaWQg
Y2xlYXJGcm9tU2V0TGlrZSgpOwotICAgIGJvb2wgYWRkVG9TZXRMaWtlKFN0YXRpY1JhbmdlJik7
Ci0gICAgYm9vbCByZW1vdmVGcm9tU2V0TGlrZShjb25zdCBTdGF0aWNSYW5nZSYpOworICAgIGJv
b2wgYWRkVG9TZXRMaWtlKGNvbnN0IFNpbXBsZVJhbmdlJik7CisgICAgYm9vbCByZW1vdmVGcm9t
U2V0TGlrZShjb25zdCBTaW1wbGVSYW5nZSYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVNldExpa2Uo
RE9NU2V0QWRhcHRlciYpOwotICAgIAorCiAgICAgY29uc3QgVmVjdG9yPFJlZjxIaWdobGlnaHRS
YW5nZURhdGE+PiYgcmFuZ2VzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzRGF0YTsgfQog
CiAgICAgLy8gRklYTUU6IEFkZCBXRUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0aW9uJiBz
dHlsZSgpOwotICAgIAorCiBwcml2YXRlOgogICAgIFZlY3RvcjxSZWY8SGlnaGxpZ2h0UmFuZ2VE
YXRhPj4gbV9yYW5nZXNEYXRhOyAvLyBGSVhNRTogdXNlIGEgSGFzaFNldCBpbnN0ZWFkIG9mIGEg
VmVjdG9yIDxyZGFyOi8vcHJvYmxlbS81Nzc2MDYxND4KLSAgICBleHBsaWNpdCBIaWdobGlnaHRS
YW5nZUdyb3VwKFJlZjxTdGF0aWNSYW5nZT4mJik7CisgICAgZXhwbGljaXQgSGlnaGxpZ2h0UmFu
Z2VHcm91cChjb25zdCBTaW1wbGVSYW5nZSYpOwogfTsKIAogfQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGE3MjFmYmIxYWQ4YTVhYTZiZGEwOWI2M2IzYTJhOWQ5OTdjOTExMmYuLjA0MTI5Y2I4NWYzMTE5
YTRmMWJlMjgwM2JiZWM2OGY5MThlMTlhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04MjQsNiArODI0
LDcgQEAgZG9tL0F0dHIuY3BwCiBkb20vQmVmb3JlTG9hZEV2ZW50LmNwcAogZG9tL0JlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50LmNwcAogZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcAorZG9tL0JvdW5k
YXJ5UG9pbnQuY3BwCiBkb20vQ0RBVEFTZWN0aW9uLmNwcAogZG9tL0NoYXJhY3RlckRhdGEuY3Bw
CiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKQEAgLTk0OSw2ICs5NTAsNyBAQCBkb20v
U2VjdXJpdHlPcmlnaW5Qb2xpY3kuY3BwCiBkb20vU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVu
dC5jcHAKIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcAogZG9tL1NoYWRvd1Jvb3QuY3BwCitkb20vU2lt
cGxlUmFuZ2UuY3BwCiBkb20vU2ltdWxhdGVkQ2xpY2suY3BwCiBkb20vU2xvdEFzc2lnbm1lbnQu
Y3BwCiBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMTM3MWJhNzUzYzZiNmMwODRkMWVm
NDczZjE2OTU2OTU3MDgyZGE5Li5kODcwN2QyMWM2ZDBiZDQzNzQzZGQyYTJlYTJiNWI2NDIzNWQw
MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yNjAzLDYgKzI2MDMsOCBAQAogCQk5MzE1M0JEQTE0MTgxRjdBMDBGQ0Y1QkUg
LyogbWlzc2luZ0ltYWdlQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTMxNTNCRDkxNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAy
eC5wbmcgKi87IH07CiAJCTkzMTUzQkRDMTQxOTU5QkMwMEZDRjVCRSAvKiB0ZXh0QXJlYVJlc2l6
ZUNvcm5lci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMTUzQkRCMTQxOTU5QkIwMEZDRjVCRSAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcg
Ki87IH07CiAJCTkzMTUzQkUyMTQxOTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JFMTE0
MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBuZyAqLzsgfTsKKwkJOTMxNkRERkIyNDBD
NjRCNDAwOTM0MEFBIC8qIFNpbXBsZVJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE2RERGODI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFu
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
MzE2REUwMDI0MEM2NEY5MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNkRERkUyNDBDNjRGODAwOTM0MEFB
IC8qIEJvdW5kYXJ5UG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MzFCQ0M2MTExMjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExp
c3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzFCQ0M2MDExMjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMxQ0JEMEQxNjFB
NDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQ0JEMDcxNjFBNDRFOTAwRTRDODc0IC8qIFNj
cm9sbGluZ1N0YXRlTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzMUNCRDBGMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMUNCRDA5MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTA2MjcsNiArMTA2MjksMTAgQEAKIAkJOTMxNTNCRDkxNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3Np
bmdJbWFnZUAyeC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAibWlzc2luZ0ltYWdlQDJ4LnBuZyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTUzQkRCMTQxOTU5QkIwMEZDRjVCRSAvKiB0ZXh0QXJl
YVJlc2l6ZUNvcm5lci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAvKiBt
aXNzaW5nSW1hZ2UucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gbWlzc2luZ0ltYWdlLnBuZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNkRERjgyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZVJhbmdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTZEREZBMjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1w
bGVSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVS
YW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTZEREZEMjQwQzY0Rjgw
MDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJvdW5kYXJ5UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5MzE2RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbldyYXBwZWRPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQ0JE
MDYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZU5vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgwMTEsNiArMjgwMTcsOCBAQAogCQkJCTg1MDMxQjI2
MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVVbmxvYWRFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFC
MjcwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggKi8sCiAJCQkJN0MxRThD
RkYxRUQwQzJCRTAwQjFEOTgzIC8qIEJlZm9yZVVubG9hZEV2ZW50LmlkbCAqLywKKwkJCQk5MzE2
RERGRDI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5jcHAgKi8sCisJCQkJOTMxNkRE
RkUyNDBDNjRGODAwOTM0MEFBIC8qIEJvdW5kYXJ5UG9pbnQuaCAqLywKIAkJCQk3QzFFOEQwMDFF
RDBDMkJFMDBCMUQ5ODMgLyogQ2FsbGJhY2tSZXN1bHQuaCAqLywKIAkJCQk2NTUwQjY5MzA5OURG
MDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCAqLywKIAkJCQk2NTUwQjY5NDA5OURGMDI3
MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggKi8sCkBAIC0yODQwNSw2ICsyODQxMyw4IEBACiAJ
CQkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovLAogCQkJCTQ2
REZGNDk2MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5oICovLAogCQkJCTQ2REZG
NDk3MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5pZGwgKi8sCisJCQkJOTMxNkRE
RkEyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdlLmNwcCAqLywKKwkJCQk5MzE2RERGODI0
MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuaCAqLywKIAkJCQk1NzJBN0YyMjFDNkU1QTY2
MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovLAogCQkJCTU3MkE3RjIwMUM2RTU3MTkw
MDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICovLAogCQkJCTMxNzQxQUFCMTY2MzVFNDUwMDhB
NUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCAqLywKQEAgLTI5MjE1LDYgKzI5MjI1LDcg
QEAKIAkJCQlCQzVFQjVFMTBFODFCRTg3MDBCMjU5NjUgLyogQm9yZGVyRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTg5NTU2RUQxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNUVCNURCMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTMxNkRFMDAyNDBDNjRGOTAwOTM0MEFBIC8qIEJvdW5kYXJ5
UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFRDhDMzdBMTgzQkZGOEMwMDlFNTNCRCAvKiBC
b3hTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlEREIwOTlFNjQ5MjAwNTZFNTgxIC8q
IEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRTFGNDNGMUQ2
MjU0RTEwMDk0NjI1QyAvKiBCcmVha0xpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMzgyLDYg
KzMyMzkzLDcgQEAKIAkJCQkxMTJCMzRENTFFNjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxh
eW91dFBhZ2luYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RTlCMTE5MTgxMDkxNkYwMDNB
Q0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4
MkNCMDUzMUE3OEExNEIwMEFGRkNDNCAvKiBTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzMTZEREZCMjQwQzY0QjQwMDkzNDBBQSAvKiBT
aW1wbGVSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVBMUVBN0QxNTJCQ0YwODAwNEQwMEI2
IC8qIFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTdGMjEx
QzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTc0MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2Uw
ZjM2NDA3ZTc3ZWU4YmNkNTA5NTk4ZGJhYzQwZDM0OGNhNDM2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQm91bmRhcnlQb2ludC5o
IgorCisjaW5jbHVkZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0JvdW5kYXJ5
UG9pbnQ6OkJvdW5kYXJ5UG9pbnQoY29uc3QgQm91bmRhcnlQb2ludCYgb3RoZXIpCisgICAgOiBj
b250YWluZXIob3RoZXIuY29udGFpbmVyLmNvcHlSZWYoKSkKKyAgICAsIG9mZnNldChvdGhlci5v
ZmZzZXQpCit7Cit9CisKK0JvdW5kYXJ5UG9pbnQmIEJvdW5kYXJ5UG9pbnQ6Om9wZXJhdG9yPShj
b25zdCBCb3VuZGFyeVBvaW50JiBvdGhlcikKK3sKKyAgICBjb250YWluZXIgPSBvdGhlci5jb250
YWluZXIuY29weVJlZigpOworICAgIG9mZnNldCA9IG90aGVyLm9mZnNldDsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK0JvdW5kYXJ5UG9pbnQmIEJvdW5kYXJ5UG9pbnQ6Om9wZXJhdG9yPShCb3Vu
ZGFyeVBvaW50JiYpID0gZGVmYXVsdDsKKworRG9jdW1lbnQmIEJvdW5kYXJ5UG9pbnQ6OmRvY3Vt
ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGFpbmVyLT5kb2N1bWVudCgpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTE1ZTUxMWE0ZDY2YmM4
OTQwYTFhM2IxNDk0Y2Y5M2MwMWQzNjE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0JvdW5kYXJ5UG9pbnQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBOb2RlOworCitzdHJ1Y3QgQm91bmRhcnlQb2ludCB7
CisgICAgUmVmPE5vZGU+IGNvbnRhaW5lcjsKKyAgICB1bnNpZ25lZCBvZmZzZXQgeyAwIH07CisK
KyAgICBCb3VuZGFyeVBvaW50KFJlZjxOb2RlPiYmLCB1bnNpZ25lZCk7CisKKyAgICAvLyBVbmxp
a2UgUmVmLCB3ZSBhbGxvdyBjb3B5aW5nIGEgQm91bmRhcnlQb2ludCB3aXRob3V0IGFuIGV4cGxp
Y2l0IGNvcHlSZWYoKS4KKyAgICBCb3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsK
KyAgICBCb3VuZGFyeVBvaW50KEJvdW5kYXJ5UG9pbnQmJikgPSBkZWZhdWx0OworICAgIEJvdW5k
YXJ5UG9pbnQmIG9wZXJhdG9yPShjb25zdCBCb3VuZGFyeVBvaW50Jik7CisgICAgQm91bmRhcnlQ
b2ludCYgb3BlcmF0b3I9KEJvdW5kYXJ5UG9pbnQmJik7CisKKyAgICBEb2N1bWVudCYgZG9jdW1l
bnQoKSBjb25zdDsKK307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBvaW50Jiwg
Y29uc3QgQm91bmRhcnlQb2ludCYpOworCitpbmxpbmUgQm91bmRhcnlQb2ludDo6Qm91bmRhcnlQ
b2ludChSZWY8Tm9kZT4mJiBjb250YWluZXIsIHVuc2lnbmVkIG9mZnNldCkKKyAgICA6IGNvbnRh
aW5lcihXVEZNb3ZlKGNvbnRhaW5lcikpCisgICAgLCBvZmZzZXQob2Zmc2V0KQoreworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJvdW5k
YXJ5UG9pbnQmIGIpCit7CisgICAgcmV0dXJuICZhLmNvbnRhaW5lciA9PSAmYi5jb250YWluZXIg
JiYgYS5vZmZzZXQgPT0gYi5vZmZzZXQ7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDg3ZDE0Zjk0OTc5YTU3OTMwMDQwYTgxNmIzZWVjOWMzYzI2Zjc0ZGUuLjI4MmZiZGRjMWMz
YTAxMmUyZDczOTMyYjFjNDllZjkzZGUzMzFlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMjc0MCw3ICsyNzQwLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSGlnaGxpZ2h0UG9zaXRp
b25zKCkKICAgICAgICAgICAgIGZvciAoYXV0byYgcmFuZ2VEYXRhIDogaGlnaGxpZ2h0LnZhbHVl
LT5yYW5nZXNEYXRhKCkpIHsKICAgICAgICAgICAgICAgICBpZiAocmFuZ2VEYXRhLT5zdGFydFBv
c2l0aW9uICYmIHJhbmdlRGF0YS0+ZW5kUG9zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIGlmICgmcmFuZ2VEYXRhLT5yYW5nZS0+c3RhcnRDb250
YWluZXIoKS0+dHJlZVNjb3BlKCkgIT0gJnJhbmdlRGF0YS0+cmFuZ2UtPmVuZENvbnRhaW5lcigp
LT50cmVlU2NvcGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoJnJhbmdlRGF0YS0+cmFuZ2Uuc3Rh
cnRDb250YWluZXIoKS50cmVlU2NvcGUoKSAhPSAmcmFuZ2VEYXRhLT5yYW5nZS5lbmRDb250YWlu
ZXIoKS50cmVlU2NvcGUoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgcmFuZ2VzRGF0YS5hcHBlbmQobWFrZVdlYWtQdHIocmFuZ2VEYXRhLnB0cigpKSk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFu
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
OWRmOTljODViZjFlODU3MWRiZWFhNTlhY2RlODVhMDU1ZTM5NzY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtMCwwICsxLDY4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgi
CisKKyNpbmNsdWRlICJSYW5nZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NpbXBsZVJh
bmdlOjpTaW1wbGVSYW5nZShjb25zdCBCb3VuZGFyeVBvaW50JiBzdGFydCwgY29uc3QgQm91bmRh
cnlQb2ludCYgZW5kKQorICAgIDogc3RhcnQoc3RhcnQpCisgICAgLCBlbmQoZW5kKQoreworfQor
CitTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoQm91bmRhcnlQb2ludCYmIHN0YXJ0LCBCb3VuZGFy
eVBvaW50JiYgZW5kKQorICAgIDogc3RhcnQoV1RGTW92ZShzdGFydCkpCisgICAgLCBlbmQoV1RG
TW92ZShlbmQpKQoreworfQorCitTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2Um
IG90aGVyKQorICAgIDogc3RhcnQob3RoZXIuc3RhcnRDb250YWluZXIoKSwgb3RoZXIuc3RhcnRP
ZmZzZXQoKSkKKyAgICAsIGVuZChvdGhlci5lbmRDb250YWluZXIoKSwgb3RoZXIuZW5kT2Zmc2V0
KCkpCit7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3Qg
U2ltcGxlUmFuZ2UmIGIpCit7CisgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVu
ZCA9PSBiLmVuZDsKK30KKworUmVmPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHJhbmdlLnN0YXJ0LmRv
Y3VtZW50KCksIHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSwgcmFuZ2Uuc3RhcnQub2Zmc2V0
LCByYW5nZS5lbmQuY29udGFpbmVyLnB0cigpLCByYW5nZS5lbmQub2Zmc2V0KTsKK30KKworUmVm
UHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSkKK3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKCpyYW5nZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJh
bmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjY1YzliOGE0OTU3M2JmNWVkN2JkZmJhODkzOTcxMDkyMTM5M2E1
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJv
dW5kYXJ5UG9pbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSYW5nZTsKKwor
c3RydWN0IFNpbXBsZVJhbmdlIHsKKyAgICBCb3VuZGFyeVBvaW50IHN0YXJ0OworICAgIEJvdW5k
YXJ5UG9pbnQgZW5kOworCisgICAgTm9kZSYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVy
biBzdGFydC5jb250YWluZXIuZ2V0KCk7IH0KKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXJ0Lm9mZnNldDsgfQorICAgIE5vZGUmIGVuZENvbnRhaW5lcigpIGNv
bnN0IHsgcmV0dXJuIGVuZC5jb250YWluZXIuZ2V0KCk7IH0KKyAgICB1bnNpZ25lZCBlbmRPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBlbmQub2Zmc2V0OyB9CisKKyAgICBib29sIGNvbGxhcHNlZCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09IGVuZDsgfQorCisgICAgU2ltcGxlUmFuZ2UoY29uc3Qg
Qm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKKyAgICBTaW1wbGVSYW5nZShC
b3VuZGFyeVBvaW50JiYsIEJvdW5kYXJ5UG9pbnQmJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBT
aW1wbGVSYW5nZShjb25zdCBSYW5nZSYpOworCisgICAgLy8gQ29udmVuaWVuY2Ugb3ZlcmxvYWRz
IHRvIGhlbHAgd2l0aCB0cmFuc2l0aW9uIGZyb20gdXNpbmcgYSBsb3Qgb2YgbGl2ZSByYW5nZXMu
IENvbnNpZGVyIHJlbW92aW5nIHRoZXNlIGV2ZW50dWFsbHkuCisgICAgU2ltcGxlUmFuZ2UoY29u
c3QgUmFuZ2UqKTsgLy8gQ3Jhc2hlcyBpZiBwYXNzZWQgYSBudWxscHRyLgorICAgIFNpbXBsZVJh
bmdlKGNvbnN0IFJlZjxSYW5nZT4mKTsKK307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1w
bGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CisKK1dFQkNPUkVfRVhQT1JUIFJlZjxSYW5n
ZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJik7CitXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
KTsKKworaW5saW5lIFNpbXBsZVJhbmdlOjpTaW1wbGVSYW5nZShjb25zdCBSYW5nZSogcmFuZ2Up
CisgICAgOiBTaW1wbGVSYW5nZSgqcmFuZ2UpCit7Cit9CisKK2lubGluZSBTaW1wbGVSYW5nZTo6
U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYgcmFuZ2UpCisgICAgOiBTaW1wbGVSYW5nZShy
YW5nZS5nZXQoKSkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0
YXRpY1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5jcHAKaW5kZXgg
ODEzNmRhMTkzMzBhMDJjYTk1MzRkZDQwY2JmMDNhZWY1ZGI5MTc5Zi4uNWJjNjJmMTc0MTRhODZi
ZTQwMjgxYTNjYmVmMjdmZWRjYTQ4M2E3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1N0YXRpY1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDM1ICsyNiwzNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0YXRpY1Jh
bmdlLmgiCiAKLSNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKLSNpbmNsdWRlICJOb2RlLmgiCiAj
aW5jbHVkZSAiUmFuZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdGF0aWNSYW5nZTo6
U3RhdGljUmFuZ2UoUmVmPE5vZGU+JiYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBSZWY8Tm9kZT4mJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICA6
IG1fc3RhcnRDb250YWluZXIoV1RGTW92ZShzdGFydENvbnRhaW5lcikpCi0gICAgLCBtX3N0YXJ0
T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250
YWluZXIpKQotICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorU3RhdGljUmFuZ2U6OlN0YXRp
Y1JhbmdlKFNpbXBsZVJhbmdlJiYgcmFuZ2UpCisgICAgOiBTaW1wbGVSYW5nZShXVEZNb3ZlKHJh
bmdlKSkKIHsKIH0KIAotU3RhdGljUmFuZ2U6On5TdGF0aWNSYW5nZSgpID0gZGVmYXVsdDsKLQot
UmVmPFN0YXRpY1JhbmdlPiBTdGF0aWNSYW5nZTo6Y3JlYXRlKFJlZjxOb2RlPiYmIHN0YXJ0Q29u
dGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgUmVmPE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1
bnNpZ25lZCBlbmRPZmZzZXQpCitSZWY8U3RhdGljUmFuZ2U+IFN0YXRpY1JhbmdlOjpjcmVhdGUo
U2ltcGxlUmFuZ2UmJiByYW5nZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGF0aWNS
YW5nZShXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSwgc3RhcnRPZmZzZXQsIFdURk1vdmUoZW5kQ29u
dGFpbmVyKSwgZW5kT2Zmc2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGljUmFu
Z2UoV1RGTW92ZShyYW5nZSkpKTsKIH0KIAotUmVmPFN0YXRpY1JhbmdlPiBTdGF0aWNSYW5nZTo6
Y3JlYXRlRnJvbVJhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSkKK3N0YXRpYyBib29sIGlzRG9jdW1l
bnRUeXBlT3JBdHRyKE5vZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJuIFN0YXRpY1JhbmdlOjpjcmVh
dGUocmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSwgcmFuZ2UuZW5k
Q29udGFpbmVyKCksIHJhbmdlLmVuZE9mZnNldCgpKTsKLX0KKyAgICAvLyBCZWZvcmUgY2FsbGlu
ZyBub2RlVHlwZSwgZG8gdHdvIGZhc3Qgbm9uLXZpcnR1YWwgY2hlY2tzIHRoYXQgY292ZXIgYWxt
b3N0IGFsbCBub3JtYWwgbm9kZXMsIGJ1dCBhcmUgZmFsc2UgZm9yIERvY3VtZW50VHlwZSBhbmQg
QXR0ci4KKyAgICBpZiAoaXM8Q29udGFpbmVyTm9kZT4obm9kZSkgfHwgaXM8VGV4dD4obm9kZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotc3RhdGljIGlubGluZSBib29sIGlzRG9jdW1lbnRU
eXBlT3JBdHRyKE5vZGUmIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUuaXNEb2N1bWVudFR5cGVO
b2RlKCkgfHwgbm9kZS5pc0F0dHJpYnV0ZU5vZGUoKTsKKyAgICAvLyBDYWxsIG5vZGVUeXBlIGV4
cGxpY2l0bHkgYW5kIHVzZSBhIHN3aXRjaCBzbyB3ZSBkb24ndCBoYXZlIHRvIGNhbGwgaXQgdHdp
Y2UuCisgICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKCkpIHsKKyAgICBjYXNlIE5vZGU6OkFUVFJJ
QlVURV9OT0RFOgorICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
fQogCiBFeGNlcHRpb25PcjxSZWY8U3RhdGljUmFuZ2U+PiBTdGF0aWNSYW5nZTo6Y3JlYXRlKElu
aXQmJiBpbml0KQpAQCAtNjMsMjcgKzYyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFN0YXRpY1Jhbmdl
Pj4gU3RhdGljUmFuZ2U6OmNyZWF0ZShJbml0JiYgaW5pdCkKICAgICBBU1NFUlQoaW5pdC5lbmRD
b250YWluZXIpOwogICAgIGlmIChpc0RvY3VtZW50VHlwZU9yQXR0cigqaW5pdC5zdGFydENvbnRh
aW5lcikgfHwgaXNEb2N1bWVudFR5cGVPckF0dHIoKmluaXQuZW5kQ29udGFpbmVyKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2RlVHlwZUVycm9yIH07Ci0gICAgcmV0dXJu
IFN0YXRpY1JhbmdlOjpjcmVhdGUoaW5pdC5zdGFydENvbnRhaW5lci5yZWxlYXNlTm9uTnVsbCgp
LCBpbml0LnN0YXJ0T2Zmc2V0LCBpbml0LmVuZENvbnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBp
bml0LmVuZE9mZnNldCk7Ci19Ci0KLU5vZGUqIFN0YXRpY1JhbmdlOjpzdGFydENvbnRhaW5lcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIChOb2RlKiltX3N0YXJ0Q29udGFpbmVyLnB0cigpOwotfQot
Ci1Ob2RlKiBTdGF0aWNSYW5nZTo6ZW5kQ29udGFpbmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
KE5vZGUqKW1fZW5kQ29udGFpbmVyLnB0cigpOwotfQotCi1ib29sIFN0YXRpY1JhbmdlOjpjb2xs
YXBzZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXJ0T2Zmc2V0ID09IG1fZW5kT2Zmc2V0
ICYmIG1fc3RhcnRDb250YWluZXIucHRyKCkgPT0gbV9lbmRDb250YWluZXIucHRyKCk7Ci19Ci0K
LWJvb2wgU3RhdGljUmFuZ2U6Om9wZXJhdG9yPT0oY29uc3QgU3RhdGljUmFuZ2UmIG90aGVyKSBj
b25zdAotewotICAgIHJldHVybiAobV9zdGFydE9mZnNldCA9PSBvdGhlci5zdGFydE9mZnNldCgp
ICYmIG1fZW5kT2Zmc2V0ID09IG90aGVyLmVuZE9mZnNldCgpICYmIG1fc3RhcnRDb250YWluZXIt
PmlzRXF1YWxOb2RlKG90aGVyLnN0YXJ0Q29udGFpbmVyKCkpICYmIG1fZW5kQ29udGFpbmVyLT5p
c0VxdWFsTm9kZShvdGhlci5lbmRDb250YWluZXIoKSkpOworICAgIHJldHVybiBjcmVhdGUoeyB7
IGluaXQuc3RhcnRDb250YWluZXIucmVsZWFzZU5vbk51bGwoKSwgaW5pdC5zdGFydE9mZnNldCB9
LCB7IGluaXQuZW5kQ29udGFpbmVyLnJlbGVhc2VOb25OdWxsKCksIGluaXQuZW5kT2Zmc2V0IH0g
fSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmgKaW5kZXggZjgwZDg1ZTUyODY4ZWM1
NDBhYzRmYzNhNDFiNmY4YjVjYWRlZDZiNS4uYTE4ZGFkYTU1ZDE1YzNjN2Y0MGQ3ZGRkNjI4MTcz
MjRkOTQyZDExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNDUgKzI2LDI1IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
Zi5oPgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBOb2RlOwotY2xhc3MgUmFuZ2U7Ci0K
LWNsYXNzIFN0YXRpY1JhbmdlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhdGljUmFuZ2U+IHsKK2Ns
YXNzIFN0YXRpY1JhbmdlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhdGljUmFuZ2U+LCBwdWJsaWMg
U2ltcGxlUmFuZ2UgewogcHVibGljOgotICAgIH5TdGF0aWNSYW5nZSgpOwotCi0gICAgc3RhdGlj
IFJlZjxTdGF0aWNSYW5nZT4gY3JlYXRlRnJvbVJhbmdlKGNvbnN0IFJhbmdlJik7Ci0gICAgc3Rh
dGljIFJlZjxTdGF0aWNSYW5nZT4gY3JlYXRlKFJlZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgUmVmPE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBl
bmRPZmZzZXQpOwotCiAgICAgc3RydWN0IEluaXQgewogICAgICAgICBSZWZQdHI8Tm9kZT4gc3Rh
cnRDb250YWluZXI7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRPZmZzZXQgeyAwIH07Cisg
ICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsgMCB9OwogICAgICAgICBSZWZQdHI8Tm9kZT4g
ZW5kQ29udGFpbmVyOwotICAgICAgICB1bnNpZ25lZCBsb25nIGVuZE9mZnNldCB7IDAgfTsKKyAg
ICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0IHsgMCB9OwogICAgIH07CiAKICAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8UmVmPFN0YXRpY1JhbmdlPj4gY3JlYXRlKEluaXQmJik7Ci0KLSAgICB1bnNpZ25l
ZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KLSAgICB1bnNp
Z25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQotICAgIE5vZGUq
IHN0YXJ0Q29udGFpbmVyKCkgY29uc3Q7Ci0gICAgTm9kZSogZW5kQ29udGFpbmVyKCkgY29uc3Q7
Ci0gICAgYm9vbCBjb2xsYXBzZWQoKSBjb25zdDsKLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3RhdGljUmFuZ2UmKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0YXRpY1JhbmdlPiBj
cmVhdGUoU2ltcGxlUmFuZ2UmJik7CiAKIHByaXZhdGU6Ci0gICAgU3RhdGljUmFuZ2UoUmVmPE5v
ZGU+JiYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBSZWY8Tm9kZT4mJiBl
bmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCk7Ci0KLSAgICBSZWY8Tm9kZT4gbV9zdGFy
dENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0OwotICAgIFJlZjxOb2RlPiBt
X2VuZENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBtX2VuZE9mZnNldDsKKyAgICBTdGF0aWNSYW5n
ZShTaW1wbGVSYW5nZSYmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdGF0aWNSYW5nZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuaWRsCmlu
ZGV4IDMwYjBhMTdlNDkwMDUwZjU0NzdlZjliOTkzYTNkODQ3NTc1ZmMxNzcuLmQ4Yjk0NzljZjdk
OGE0ZmFjOTRlNzBmZjNjY2Y4N2FmNjI5MmNkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdGF0aWNSYW5nZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1Jhbmdl
LmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUsIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCw4ICszOCw4IEBACiB9OwogCiBkaWN0aW9uYXJ5IFN0YXRpY1JhbmdlSW5pdCB7Ci0gIHJl
cXVpcmVkIE5vZGUgc3RhcnRDb250YWluZXI7Ci0gIHJlcXVpcmVkIHVuc2lnbmVkIGxvbmcgc3Rh
cnRPZmZzZXQ7Ci0gIHJlcXVpcmVkIE5vZGUgZW5kQ29udGFpbmVyOwotICByZXF1aXJlZCB1bnNp
Z25lZCBsb25nIGVuZE9mZnNldDsKKyAgICByZXF1aXJlZCBOb2RlIHN0YXJ0Q29udGFpbmVyOwor
ICAgIHJlcXVpcmVkIHVuc2lnbmVkIGxvbmcgc3RhcnRPZmZzZXQ7CisgICAgcmVxdWlyZWQgTm9k
ZSBlbmRDb250YWluZXI7CisgICAgcmVxdWlyZWQgdW5zaWduZWQgbG9uZyBlbmRPZmZzZXQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApp
bmRleCA1ZGFiN2JhMTAxYTAxODVkY2QyNzljN2M2M2NhOTQ2MDhiMDcyNmYxLi43ZGRiMGFiMjUy
MTk0OTMyMDU1OGVkNDExODRiNTEwY2E5NjBlZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBAIFZlY3Rv
cjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2Vz
KCkgY29uc3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9
OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGUoKmZpcnN0UmFuZ2UpIH07CiB9
CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFy
Z2V0UmFuZ2VzRm9yQmluZGluZ3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDA0MWY5ZDExN2Q2
YTAxZWIyYzU4NWE4YjIxNGQzM2RjZThkODgwMGYuLmFkNzgyMzJhOGEyMDg2N2NkNTk5MWIzZDJm
ODBiM2Y0ZDRiNmY2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBSZXBs
YWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OndpbGxBcHBseUNvbW1hbmQoKQogCiB2b2lkIFJlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0gICAgVmlzaWJsZVNlbGVjdGlv
biBzZWxlY3Rpb24gPSAqbV9yYW5nZVRvQmVSZXBsYWNlZDsKKyAgICBWaXNpYmxlU2VsZWN0aW9u
IHNlbGVjdGlvbiB7ICptX3JhbmdlVG9CZVJlcGxhY2VkIH07CiAKICAgICBpZiAoIW1fcmFuZ2VU
b0JlUmVwbGFjZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTg5LDcgKzg5LDcgQEAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4geyAx
LCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9Owor
ICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGUoKm1fcmFuZ2VUb0JlUmVwbGFjZWQp
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDdkYjNmOWI0NWQ4
YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UuLjUxMzMxNDUzOTNkMTczYTU3OWQwYTUwYzBi
ZmYxYzhlMzVhZDgzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZChSYW5nZSYg
cmFuZ2VUb0JlQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pCiAgICAgOiBDb21w
b3NpdGVFZGl0Q29tbWFuZChyYW5nZVRvQmVDb3JyZWN0ZWQuc3RhcnRDb250YWluZXIoKS5kb2N1
bWVudCgpLCBFZGl0QWN0aW9uOjpJbnNlcnRSZXBsYWNlbWVudCkKICAgICAsIG1fcmFuZ2VUb0Jl
Q29ycmVjdGVkKHJhbmdlVG9CZUNvcnJlY3RlZCkKLSAgICAsIG1fc2VsZWN0aW9uVG9CZUNvcnJl
Y3RlZChtX3JhbmdlVG9CZUNvcnJlY3RlZCkKKyAgICAsIG1fc2VsZWN0aW9uVG9CZUNvcnJlY3Rl
ZChtX3JhbmdlVG9CZUNvcnJlY3RlZC5nZXQoKSkKICAgICAsIG1fY29ycmVjdGlvbihjb3JyZWN0
aW9uKQogewogfQpAQCAtMTI0LDcgKzEyNCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFu
Z2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewot
ICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVD
b3JyZWN0ZWQpIH07CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZShtX3Jhbmdl
VG9CZUNvcnJlY3RlZCkgfTsKIH0KIAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAwMWY1M2RiYTAzYmVhYzc5N2Q3NmFh
OGFlNTY2ZDJmZDEyNWM4MjNkLi5jNGQ4MGZiNTUwOGYxZTI2YzY4OTE4NTM4MmFlZmMwY2ZkYjlh
MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTQ5OSw3
ICs0OTksNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5k
KEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0RwogICAgIGlmICghcmFuZ2UgfHwgaXNF
ZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQogICAgICAgICByZXR1cm4gZnJhbWUoKS5lZGl0
b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0
UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAKLSAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxs
QXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKnJh
bmdlKSB9KTsKKyAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0
aGlzLCB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSB9KTsKIH0KIAogdm9pZCBUeXBp
bmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFu
ZFR5cGVGb3JBZGRlZFR5cGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxl
Y3Rpb24uY3BwCmluZGV4IGYzMjdjYjMwMzAxYjY4MDI5MWEzODllOTE5MzkzMmI2YjhkOTYxMTgu
LjBkMjFjYzA4NGVlZjZlYTYwMDdmNjE3NTVkMmY4Y2M5YTE4NDU2YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgorI2luY2x1ZGUgIlNp
bXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJs
ZVVuaXRzLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTg4LDIyICs4OCwxMyBAQCBWaXNpYmxl
U2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYmFzZSwg
Y29uc3QgVmlzaWJsZVBvcwogICAgIHZhbGlkYXRlKCk7CiB9CiAKLVZpc2libGVTZWxlY3Rpb246
OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUmFuZ2UmIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHks
IGJvb2wgaXNEaXJlY3Rpb25hbCkKLSAgICA6IG1fYmFzZShyYW5nZS5zdGFydFBvc2l0aW9uKCkp
Ci0gICAgLCBtX2V4dGVudChyYW5nZS5lbmRQb3NpdGlvbigpKQorVmlzaWJsZVNlbGVjdGlvbjo6
VmlzaWJsZVNlbGVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIEVBZmZpbml0eSBhZmZp
bml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQorICAgIDogbV9iYXNlKGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbigmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSkp
CisgICAgLCBtX2V4dGVudChjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oJnJhbmdlLmVuZENv
bnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSkpCiAgICAgLCBtX2FmZmluaXR5KGFmZmluaXR5
KQogICAgICwgbV9pc0RpcmVjdGlvbmFsKGlzRGlyZWN0aW9uYWwpCiB7Ci0gICAgdmFsaWRhdGUo
KTsKLX0KLQotVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBTdGF0aWNS
YW5nZSYgc3RhdGljUmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFs
KQotICAgIDogbV9iYXNlKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdGF0aWNSYW5nZS5z
dGFydENvbnRhaW5lcigpLCBzdGF0aWNSYW5nZS5zdGFydE9mZnNldCgpKSkKLSAgICAsIG1fZXh0
ZW50KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdGF0aWNSYW5nZS5lbmRDb250YWluZXIo
KSwgc3RhdGljUmFuZ2UuZW5kT2Zmc2V0KCkpKQotICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkK
LSAgICAsIG1faXNEaXJlY3Rpb25hbChpc0RpcmVjdGlvbmFsKQotewotICAgIEFTU0VSVCgmc3Rh
dGljUmFuZ2Uuc3RhcnRDb250YWluZXIoKS0+dHJlZVNjb3BlKCkgPT0gJnN0YXRpY1JhbmdlLmVu
ZENvbnRhaW5lcigpLT50cmVlU2NvcGUoKSk7CisgICAgQVNTRVJUKCZyYW5nZS5zdGFydENvbnRh
aW5lcigpLnRyZWVTY29wZSgpID09ICZyYW5nZS5lbmRDb250YWluZXIoKS50cmVlU2NvcGUoKSk7
CiAgICAgdmFsaWRhdGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxl
Y3Rpb24uaAppbmRleCAyZDQyZDhmN2VmMWZhMjFmMjg5MDMzZmFkNmI4MzFlYTBjM2UzZGRjLi5k
NDlmMTIwYjY1ZDA2YTlkNjg1ZWFkNTAzM2EyZTkxMmYzYjFjZTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaApAQCAtMzEsNyArMzEsOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQb3NpdGlvbjsKLWNsYXNzIFN0YXRpY1JhbmdlOworCitzdHJ1
Y3QgU2ltcGxlUmFuZ2U7CiAKIGNvbnN0IEVBZmZpbml0eSBTRUxfREVGQVVMVF9BRkZJTklUWSA9
IERPV05TVFJFQU07CiBlbnVtIFNlbGVjdGlvbkRpcmVjdGlvbiA6IHVpbnQ4X3QgeyBEaXJlY3Rp
b25Gb3J3YXJkLCBEaXJlY3Rpb25CYWNrd2FyZCwgRGlyZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxl
ZnQgfTsKQEAgLTQ0LDEwICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIFZpc2libGVTZWxlY3Rpb24o
Y29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsK
ICAgICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBF
QWZmaW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFs
c2UpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBSYW5nZSYs
IEVBZmZpbml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBm
YWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBTdGF0aWNS
YW5nZSYsIEVBZmZpbml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9u
YWwgPSBmYWxzZSk7Ci0gICAgCisgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihj
b25zdCBTaW1wbGVSYW5nZSYsIEVBZmZpbml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29s
IGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVj
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA4MGFiYmUyZDkw
ZTdiMzIwM2Q1ZTA4YzAyMjNkMDlhMmU4YWZkZTViLi4yOTE4MjQ2NWQ4Y2YyOTM5Y2IyMTYwMjQ5
ZmVhMmFlMTFlYTE3YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CkBAIC01MCw2ICs1MCw3IEBACiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgogI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgi
CiAjaW1wb3J0ICJXZWJDb250ZW50UmVhZGVyLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRT
dHJpbmdFeHRyYXMuaCIKQEAgLTU5LDggKzYwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5l
bCgpCiB7CiAgICAgYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGI5Yzc5ODhmYzRlZDczNjUyY2MyODdjZTU4MTk1
NWE4ZDA0NDI4ZDUuLjQzY2JjNGM5YjQzYjVmNTcwZmU0ZDk4OWJjNDBmODkzNmM5M2MwMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiU1ZHQUVsZW1lbnQuaCIKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKICNp
bmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCkBAIC03OSw2ICs4MCw3IEBACiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVy
dGllcy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCmluZGV4IDJiOTM5MGMxYzYzYjVhMDhjNjI5YmIy
ODAwYjM5ODU5MDUwZTAyNTIuLjJkMjExMDRiMzIxZTYzY2I4Yzg1OTc5NTI5MmYwMmIxZmNhZmVm
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcApAQCAtNDMsNiArNDMsNyBA
QAogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNs
dWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogCkBAIC04
Miw3ICs4Myw3IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmVhdGVX
aXRoUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLCBUZXh0SW5kCiAgICAgdGVtcG9yYXJ5U2VsZWN0
aW9uT3B0aW9ucy5hZGQoVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpJZ25vcmVTZWxlY3Rpb25D
aGFuZ2VzKTsKICAgICB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb246OkVuYWJsZUFwcGVhcmFuY2VVcGRhdGVzKTsKICNlbmRpZgotICAgIFRlbXBv
cmFyeVNlbGVjdGlvbkNoYW5nZSBzZWxlY3Rpb25DaGFuZ2UoKmZyYW1lLCB7IHJhbmdlIH0sIHRl
bXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMpOworICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBz
ZWxlY3Rpb25DaGFuZ2UoKmZyYW1lLCB7IFNpbXBsZVJhbmdlIHsgcmFuZ2UgfSB9LCB0ZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25zKTsKIAogICAgIFRleHRJbmRpY2F0b3JEYXRhIGRhdGE7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCBjYmU1NDEwMTdk
MGZmMzFjMTkwZDUwZDQ0YTBlZjY0ODFlYjkyMGUxLi4wMWIxZmRiNGVmYWRiOTc1ZWQ1YzQ3MzA5
YmM0NWYwNWIwYWZhZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVu
dEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVy
TWFjLm1tCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2ltcGxl
UmFuZ2UuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNsdWRlICJX
aGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9u
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDIx
Zjc0OGNmNWZkYzM0N2E2ZjFjNDEyMjdjNGI4ZWViOWQ3MDQ4MzEuLmE4NzYyMWRmZjEwODIxNGQx
NTdkODdiNzg1YjYxMzA1ZjI5MmE2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAKQEAgLTEwMzgsNyArMTAzOCw2IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJ
bmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBh
aW50CiAgICAgcmV0dXJuIG1hcmtlZFRleHRzOwogfQogCi0KIFZlY3RvcjxNYXJrZWRUZXh0PiBJ
bmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBo
YXNlIHBoYXNlKSBjb25zdAogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5oaWdobGlnaHRBUElFbmFibGVkKCkpCkBAIC0xMDU5LDE3ICsxMDU4LDE3
IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNG
b3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgZm9yIChhdXRvJiByYW5nZURhdGEgOiBoaWdobGlnaHQudmFsdWUtPnJhbmdlc0RhdGEoKSkg
ewogICAgICAgICAgICAgaWYgKHJhbmdlRGF0YS0+c3RhcnRQb3NpdGlvbiAmJiByYW5nZURhdGEt
PmVuZFBvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgUG9zaXRpb24gc3RhcnRQb3MgPSByYW5n
ZURhdGEtPnN0YXJ0UG9zaXRpb24udmFsdWUoKTsKLSAgICAgICAgICAgICAgICBQb3NpdGlvbiBl
bmRQb3MgPSByYW5nZURhdGEtPmVuZFBvc2l0aW9uLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+
cmVuZGVyZXIoKTsKLSAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydFBvcy5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
ZW5kUmVuZGVyZXIgPSBlbmRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAg
ICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5kT2Zmc2V0
ID49IDApOworICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSByYW5nZURh
dGEtPnN0YXJ0UG9zaXRpb24udmFsdWUoKTsKKyAgICAgICAgICAgICAgICBQb3NpdGlvbiBlbmRQ
b3NpdGlvbiA9IHJhbmdlRGF0YS0+ZW5kUG9zaXRpb24udmFsdWUoKTsKKyAgICAgICAgICAgICAg
ICBhdXRvKiBzdGFydFJlbmRlcmVyID0gc3RhcnRQb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc3RhcnRQ
b3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgICAgICAgICAgICAgIGF1dG8q
IGVuZFJlbmRlcmVyID0gZW5kUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBlbmRPZmZzZXQgPSBlbmRQb3NpdGlvbi5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpOwogICAgICAgICAgICAgICAgIGlmICghc3RhcnRSZW5kZXJlciB8
fCAhZW5kUmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAg
ICAgICAgICAgYXV0byBoaWdobGlnaHREYXRhID0gSGlnaGxpZ2h0RGF0YShyZW5kZXJlcigpLnZp
ZXcoKSk7Ci0gICAgICAgICAgICAgICAgaGlnaGxpZ2h0RGF0YS5zZXRSZW5kZXJSYW5nZSh7c3Rh
cnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNl
dCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpfSk7CisgICAgICAgICAgICAgICAg
aGlnaGxpZ2h0RGF0YS5zZXRSZW5kZXJSYW5nZSh7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVy
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0IH0pOwogICAgICAgICAgICAgICAgIGF1dG8gW2hpZ2hs
aWdodFN0YXJ0LCBoaWdobGlnaHRFbmRdID0gaGlnaGxpZ2h0U3RhcnRFbmQoaGlnaGxpZ2h0RGF0
YSk7CiAgICAgICAgICAgICAgICAgaWYgKGhpZ2hsaWdodFN0YXJ0IDwgaGlnaGxpZ2h0RW5kKQog
ICAgICAgICAgICAgICAgICAgICBtYXJrZWRUZXh0cy5hcHBlbmQoeyBoaWdobGlnaHRTdGFydCwg
aGlnaGxpZ2h0RW5kLCBNYXJrZWRUZXh0OjpIaWdobGlnaHQsIG51bGxwdHIsIGhpZ2hsaWdodC5r
ZXkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAppbmRleCBjZjFjMDNhYWE1
OWRlODRjZTgzYTQ5ODM1MDFkNGVjZTkyZGMyZTdjLi4xYWZhZTVlYmJmNWU2M2Q5YmVkZjMwMzlk
ZjQ0NTFjOWI1NTNhNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5n
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFu
Z2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW4KICAgICBpZiAoIXBhcmFncmFw
aFJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGUmIHJvb3ROb2RlID0gcGFyYWdyYXBoUmFuZ2UuZ2V0KCktPnN0YXJ0Q29udGFpbmVyKCku
dHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFJh
bmdlLmdldCgpLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CiAgICAg
aW50IHBhcmFncmFwaFN0YXJ0SW5kZXggPSBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUocm9vdE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2Rl
LCAwLCAmcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlLT5z
dGFydE9mZnNldCgpKS5wdHIoKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4
ICsgc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sb2NhdGlvbiksIGxlbmd0aCk7CiB9CkBAIC03Niw4
ICs3Niw4IEBAIEVkaXRpbmdSYW5nZSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShXZWJDb3JlOjpG
cmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJhbmdlCiB7CiAgICAgQVNTRVJUKGVkaXRpbmdS
YW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9v
dCk7CiAKLSAgICBzaXplX3QgbG9jYXRpb247Ci0gICAgc2l6ZV90IGxlbmd0aDsKKyAgICBzaXpl
X3QgbG9jYXRpb24gPSAwOworICAgIHNpemVfdCBsZW5ndGggPSAwOwogICAgIGlmICghcmFuZ2Ug
fHwgIVdlYkNvcmU6OlRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uo
ZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCks
IHJhbmdlLCBsb2NhdGlvbiwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggNzcwOTI3M2Ni
ZjgzM2UwY2U4YWJlNTVjODY4ODA5NjBjZTE2MmRjMy4uMjIwZWZlZDU4ZWQxNTc3OWU3NWI5YzQ4
YzE3MDcxN2ZmZTJkZjBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGUuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmll
dy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IGM5NzAxN2E4OGJmZjhlZDc0OTM2Y2Zm
MThkN2Y3NTk4NDBiZDQ2YTMuLmM1MmFmNjU5YjEwYTkwNjQ4OWRkOGExOTM2MDcyMDI2ZThjYmMz
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhdGhVdGls
aXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZVJh
bmdlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRp
Y2F0b3JXaW5kb3cuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggMmZmOGFhM2M5MzEzM2RkMWI1NzFmOTViYTY5NTNkYWU5MGJhZGExOS4uY2Ux
OGI1NjI3YjJhZjc1NWFmNTBkMGM2YzkzZDNmY2VlYWRlMjY5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIyNiw2ICsyMjYsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYWRvd1Jvb3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2ltcGxlUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0
aXR1dGVEYXRhLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCmluZGV4IDBhZTRlYWZkOGY0MTE5YWFiNTMwYWUxMzZhYzkwYzA1NWM0
NzUyMzUuLmM3OTA2M2YwOGFiZGRkMzA3ZmU1ZGQ1MzQyZjI0YmQ3NmI0MjJlMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBA
IC04Niw2ICs4Niw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Nj
cm9sbFZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU3R5bGVJbmhlcml0ZWREYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW0KaW5kZXggMjQwN2YxMDY5YjU3ZmJmNjU5NDg4NzU0MTI4Y2U4ZmFiMWVjYmJmOS4u
ODA2ZGEwYmZiMDdkYWU5Y2I3MzY0OGEyYWYwZmZmNGQyOTMzN2NjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0KQEAgLTU0LDYgKzU0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
T2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxl
UmFuZ2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL21hYy9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CiAjaW1wb3J0IDx3dGYvVVJM
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA3
NDAwMzUzYjFmNTk4YjIxMDhkOTk1MDJmNjhiZTQ0M2VhNDY1NGMyLi5iZjJhZTI4NjhmMmRiYjQ3
ZjU4NzBmOGRjZWU2ZTkzOGU2OGZjZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTEwMCw2ICsxMDAsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJv
bGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJlcGxhY2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N1YmZy
YW1lTG9hZGVyLmg+CkBAIC04MDYsOCArODA3LDggQEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNS
YW5nZTooV2ViQ29yZTo6UmFuZ2UgKilyYW5nZQogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJl
dHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIHNpemVfdCBsb2NhdGlvbjsK
LSAgICBzaXplX3QgbGVuZ3RoOworICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CisgICAgc2l6ZV90
IGxlbmd0aCA9IDA7CiAgICAgaWYgKCFXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnJvb3RF
ZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZSwgbG9jYXRpb24sIGxlbmd0
aCkpCiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392871</attachid>
            <date>2020-03-07 11:06:09 -0800</date>
            <delta_ts>2020-03-07 13:18:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208432-20200307110608.patch</filename>
            <type>text/plain</type>
            <size>50848</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhMmU0ZDM4OWJhZDUy
MzllM2U1ZDFiYTkzZjc2MjU2YjVmYjQ1NS4uMWYzNmFiYzVkNmI3YzY0ZjYzNjEyMmFlMDdiZTE4
MDdhMzdiNTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTAzLTA3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9m
IGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgRE9NIFJhbmdlIGNsYXNzIGlzIGEgbGl2ZSBy
YW5nZS4gVGhlIGxpdmUgdXBkYXRpbmcgZmVhdHVyZSBvZiB0aGVzZSByYW5nZXMgbWVhbgorICAg
ICAgICB0aGV5IGFyZSBleHBlbnNpdmUgdG8gY3JlYXRlIGFuZCBkZXN0cm95IGFuZCBhbHNvIG1h
a2UgYWxsIERPTSBtdXRhdGlvbiBtb3JlIGV4cGVuc2l2ZQorICAgICAgICB3aGlsZSB0aGV5IGFy
ZSBhbGl2ZS4gV2Ugd2lsbCBiZSBhYmxlIHRvIHNwZWVkIHVwLCBsaWtlbHkgbWVhc3VyYWJsZSBv
biBTcGVlZG9tZXRlciwKKyAgICAgICAgaWYgd2UgY2FuIGN1dCBkb3duIHVzZXMgb2YgbGl2ZSBy
YW5nZXMuCisKKyAgICAgICAgLSBSZWZhY3RvcmVkIHRoZSBTdGF0aWNSYW5nZSBjbGFzcyB0byBj
cmVhdGUgdHdvIG5ldyBzdHJ1Y3RzLgorICAgICAgICAtIFRoZSBCb3VuZGFyeVBvaW50IHN0cnVj
dCBpbXBsZW1lbnRzIHdoYXQgdGhlIERPTSBzdGFuZGFyZCBjYWxscyBhIGJvdW5kYXJ5IHBvaW50
OgorICAgICAgICAgIGEgbm9kZSBhbmQgb2Zmc2V0LiBTaW1pbGFyIHRvIHRoZSBSYW5nZUJvdW5k
YXJ5UG9pbnQgY2xhc3MsIHdoaWNoIHN1cHBvcnRzCisgICAgICAgICAgYmVpbmcgdGhlIGJvdW5k
YXJ5IHBvaW50IG9mIGEgbGl2ZSByYW5nZSwgYnV0IHNpbXBsZXIgYW5kIG5vdCBsaXZlLgorICAg
ICAgICAtIFRoZSBTaW1wbGVSYW5nZSBzdHJ1Y3QgaW1wbGVtZW50cyB3aGF0IHRoZSBET00gc3Rh
bmRhcmQgY2FsbHMgYSByYW5nZSAobm90IGEgbGl2ZQorICAgICAgICAgIHJhbmdlKS4gTGlrZSBT
dGF0aWNSYW5nZSBidXQgd2l0aG91dCByZWZlcmVuY2UgY291bnRpbmcgYW5kIERPTSBiaW5kaW5n
LgorICAgICAgICAtIFNpbmNlIFN0YXRpY1JhbmdlIGlzIGRlcml2ZWQgcHVibGljbHkgZnJvbSBT
aW1wbGVSYW5nZSB5b3UgY2FuIHBhc3MgZWl0aGVyIHRvIGFueQorICAgICAgICAgIGZ1bmN0aW9u
IHRoYXQgdGFrZXMgYSBTaW1wbGVSYW5nZS4gQW5kIHNpbmNlIHRoZXJlIGlzIGEgY29uc3RydWN0
b3IgdG8gY3JlYXRlIGEKKyAgICAgICAgICBTaW1wbGVSYW5nZSBmcm9tIGEgUmFuZ2UgeW91IGNh
biBwYXNzIGEgUmFuZ2UgdG8gdGhvc2UgZnVuY3Rpb25zIHRvby4KKyAgICAgICAgLSBSZW5hbWVk
IFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UgdG8gU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6IEFkZGVkIEJvdW5kYXJ5UG9pbnQuaCwgU2ltcGxlUmFu
Z2UuaCwgYW5kIFN0YXRpY1JhbmdlLmguCisgICAgICAgICogU291cmNlcy50eHQ6IEFkZGVkIEJv
dW5kYXJ5UG9pbnQuY3BwIGFuZCBTaW1wbGVSYW5nZS5jcHAuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBCb3VuZGFyeVBvaW50LmNwcC9oIGFuZCBT
aW1wbGVSYW5nZS5jcHAvaC4KKworICAgICAgICAqIGRvbS9Cb3VuZGFyeVBvaW50LmNwcDogQWRk
ZWQuCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuaDogQWRkZWQuCisgICAgICAgICogZG9t
L1NpbXBsZVJhbmdlLmNwcDogQWRkZWQuCisgICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmg6IEFk
ZGVkLgorCisgICAgICAgICogZG9tL1N0YXRpY1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0YXRpY1JhbmdlOjpTdGF0aWNSYW5nZSk6IFRha2UgYW4gcnZhbHVlIHJlZmVyZW5jZSB0byBh
IFNpbXBsZVJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUmFuZ2U6OmNyZWF0ZSk6IERp
dHRvLiBDaGFuZ2VkIHRoZSBvdGhlciBvdmVybG9hZHMgdG8gY3JlYXRlCisgICAgICAgIGEgU2lt
cGxlUmFuZ2UgZmlyc3QgdGhlbiBjYWxsIHRocm91Z2ggdG8gdGhlIG1haW4gb25lLgorICAgICAg
ICAoV2ViQ29yZTo6aXNEb2N1bWVudFR5cGVPckF0dHIpOiBXcm90ZSBhIG11Y2ggbW9yZSBlZmZp
Y2llbnQgdmVyc2lvbiBvZiB0aGlzLgorICAgICAgICBUaGUgb2xkIHZlcnNpb24gY2FsbGVkIHRo
ZSB2aXJ0dWFsIGZ1bmN0aW9uIG5vZGVUeXBlIHR3aWNlLiBUaGlzIGNhbGxzIGl0IGF0CisgICAg
ICAgIG1vc3Qgb25jZSwgYW5kIG1vc3RseSBkb2Vzbid0IGNhbGwgaXQgYXQgYWxsLgorICAgICAg
ICAqIGRvbS9TdGF0aWNSYW5nZS5oOiBTaW1wbGlmaWVkIHRoaXMgY2xhc3MsIHB1dHRpbmcgbW9z
dCBvZiB0aGUgYWN0dWFsIHJhbmdlCisgICAgICAgIGxvZ2ljIGludG8gdGhlIGJhc2UgY2xhc3Mu
IE5vdGUgdGhhdCB0aGlzIGNoYW5nZSBlbGltaW5hdGVkIHRoZSBwZWN1bGlhciBjb2RlCisgICAg
ICAgIHRoYXQgaW4gdGhlID09IG9wZXJhdG9yIHRoYXQgY29tcGFyZWQgbm9kZXMgdXNpbmcgaXNF
cXVhbE5vZGUgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBub2RlIGlkZW50aXR5LiBUaGVyZSB3
YXMgbm8gb25lIHdobyBuZWVkZWQgdGhhdCBvdGhlciBiZWhhdmlvci4gQWxzbyBmaXhlZAorICAg
ICAgICBtaXN0YWtlbiB1c2Ugb2YgdW5zaWduZWQgbG9uZyBpbiBTdGF0aWNSYW5nZTo6SW5pdC4g
SXQncyB1bnNpZ25lZCBsb25nIGluCisgICAgICAgIHRoZSBJREwgZmlsZSwgYnV0IGNvbmZ1c2lu
Z2x5IHRoYXQncyBqdXN0IHVuc2lnbmVkIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgKiBkb20v
U3RhdGljUmFuZ2UuaWRsOiBUd2Vha2VkIGZvcm1hdHRpbmcuCisKKyAgICAgICAgKiBlZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVk
aXRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBVcGRhdGVkIGZvciByZW5hbWUKKyAgICAg
ICAgb2YgU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQ6OmRvQXBwbHkpOiBVcGRhdGVkIHNpbmNlIFZpc2libGVTZWxlY3Rpb24KKyAg
ICAgICAgdGFrZXMgU2ltcGxlUmFuZ2Ugbm93LgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJh
bmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBVcGRhdGVkIGZvcgorICAg
ICAgICByZW5hbWUgb2YgU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKyAgICAgICAgKiBlZGl0aW5nL1Nw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCk6IFVwZGF0ZWQKKyAg
ICAgICAgc2luY2UgYSBzZWxlY3Rpb24gbm93IHRha2VzIGEgU2ltcGxlUmFuZ2UmLCBub3QgYSBT
dGF0aWNSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6
OnRhcmdldFJhbmdlcyBjb25zdCk6IFVwZGF0ZWQgZm9yCisgICAgICAgIHJlbmFtZSBvZiBTdGF0
aWNSYW5nZTo6Y3JlYXRlLgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFu
ZCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24pOiBVc2Ug
U2ltcGxlUmFuZ2UKKyAgICAgICAgaW5zdGVhZCBvZiBTdGF0aWNSYW5nZSBhbmQgUmFuZ2UuCisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92
ZS4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbTogQWRkZWQgaW5jbHVkZS4K
KyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDogRGl0dG8uCisgICAgICAgICogcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yOjpjcmVhdGVXaXRoUmFuZ2UpOiBVcGRhdGVkIHNpbmNlIFZpc2liZWxTZWxlY3Rpb24KKyAg
ICAgICAgdGFrZXMgU2ltcGxlUmFuZ2Ugbm93LgorCisgICAgICAgICogcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29sbGVjdE1h
cmtlZFRleHRzRm9ySGlnaGxpZ2h0cyk6IFR3ZWFrZWQgY29kaW5nCisgICAgICAgIHN0eWxlIGEg
Yml0LgorCiAyMDIwLTAzLTA3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQVg6IFByb3ZpZGUgYSB3YXkgdG8gcnVuIHRlc3RzIGluIGlzb2xhdGVkIHRy
ZWUgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBlMThiNGIyNDNjYzhlM2Q5NDdiYTM2ZWMwYWRhNTQ4NzdhMGIy
NmMwLi5iNDZhYzhmZDczMDNiYTAzNWRlZjZhMTE1MDcwOWJjOTZhZGE5YWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIwLTAzLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9mIGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQg
aW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0aW5nUmFu
Z2U6OmZyb21SYW5nZSk6IEluaXRpYWxpemUgb3V0IGFyZ3VtZW50cy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
OiBBZGRlZCBpbmNsdWRlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHA6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
OiBEaXR0by4KKwogMjAyMC0wMy0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIHVuaWZpZWQgYnVpbGQgZml4OyBmb3J3YXJkIGRlY2xhcmUg
cmVmZXJlbmNlZCB0eXBlcy4gSW4gdGhpcyBjYXNlLCBXZWJDb3JlOjpJbWFnZURhdGEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggMTU5OGVhNjUwNjhiNTRkZTNmOGNmNDhhOGRhNjkz
ODgzOWFmZTNlOC4uNDI5OTk4ZjBjNzU2NDUzYzI2ODc4OTI5Njg4YjBhZjMyZjQ4YTQyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTA3ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2Zm
IG9mIGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9T
Lm1tOiBBZGRlZCBpbmNsdWRlLgorCiAyMDIwLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZS1hZGQgYEluc3BlY3RvckZy
b250ZW5kSG9zdGAgc3VwcG9ydCBmb3IgbW92aW5nIHRoZSBpbnNwZWN0ZWQgd2luZG93CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAzZjgxMmIzZDYzNTcyZTU0Y2NlOTVhZDAyZmJm
ZTQ3NzJhYzdjZC4uYWQ2OTI3NmE5YWZhOTcyNjNmNDhmMTAxYjcwMDViNDRmYjdkNGE1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTA3ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2Zm
IG9mIGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tOiBBZGRlZCBpbmNsdWRlLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUu
bW06IERpdHRvLgorICAgICAgICAoLVtXZWJGcmFtZSBfY29udmVydFRvTlNSYW5nZTpdKTogSW5p
dGlhbGl6ZWQgb3V0IGFyZ3VtZW50cy4KKwogMjAyMC0wMy0wNiAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGbGFreSBUZXN0OiBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNDk2YmI2NDA3
NzY3ZTVjYTQ5NDM3MGMyZWEzY2I4OWNjOWM5MGI1MS4uYTAzOGJlMjE4ZmJmZTJlZWI0MmJjNDhl
ZGU4ZWY2MWQ2ZDZjOTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zNTYsNiArMzU2LDcgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9BY3RpdmVET01P
YmplY3QuaAogICAgIGRvbS9BdHRyLmgKICAgICBkb20vQXR0cmlidXRlLmgKKyAgICBkb20vQm91
bmRhcnlQb2ludC5oCiAgICAgZG9tL0NEQVRBU2VjdGlvbi5oCiAgICAgZG9tL0NhbGxiYWNrUmVz
dWx0LmgKICAgICBkb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC00NTEsOCArNDUyLDEwIEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudC5oCiAgICAgZG9tL1NoYWRvd1Jvb3QuaAogICAgIGRvbS9TaGFkb3dSb290
TW9kZS5oCisgICAgZG9tL1NpbXBsZVJhbmdlLmgKICAgICBkb20vU2ltdWxhdGVkQ2xpY2tPcHRp
b25zLmgKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5oCisgICAgZG9tL1N0YXRpY1JhbmdlLmgK
ICAgICBkb20vU3R5bGVkRWxlbWVudC5oCiAgICAgZG9tL1N1Y2Nlc3NPci5oCiAgICAgZG9tL1Rh
c2tTb3VyY2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwMWE4YTVlYzAxMzQ4NDdjMzA4MWMwMjc3ZmEz
OWVhNzc2MjgzYTY2Li4xYjhiODIzY2M3ZjFlNmEwMWM0MzQ1ZjYyNWU5MzUxYTFjOTIyZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtODI0LDYgKzgyNCw3IEBAIGRvbS9BdHRyLmNwcAogZG9tL0JlZm9y
ZUxvYWRFdmVudC5jcHAKIGRvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKIGRvbS9CZWZv
cmVVbmxvYWRFdmVudC5jcHAKK2RvbS9Cb3VuZGFyeVBvaW50LmNwcAogZG9tL0NEQVRBU2VjdGlv
bi5jcHAKIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcAogZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC05NDksNiArOTUwLDcgQEAgZG9tL1NlY3VyaXR5T3JpZ2luUG9saWN5LmNwcAogZG9t
L1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuY3BwCiBkb20vU2VsZWN0b3JRdWVyeS5jcHAK
IGRvbS9TaGFkb3dSb290LmNwcAorZG9tL1NpbXBsZVJhbmdlLmNwcAogZG9tL1NpbXVsYXRlZENs
aWNrLmNwcAogZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAogZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNGFmOTU1MDYzN2RhMTQ1ZmIxMjIzMmU0YWVjNzNlN2E1MzAyN2JlZi4uZjEyODRkZDYy
Y2Q1ZTZjOGViNTNlNzdiMTZkZjYxY2U1NTIyYWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYwNSw2ICsyNjA1LDggQEAK
IAkJOTMxNTNCREExNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkQ5MTQxODFG
N0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovOyB9OwogCQk5MzE1M0JEQzE0MTk1
OUJDMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JEQjE0MTk1OUJCMDBGQ0Y1QkUg
LyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovOyB9OwogCQk5MzE1M0JFMjE0MTk1QTU3MDBG
Q0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMxNTNCRTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFn
ZS5wbmcgKi87IH07CisJCTkzMTZEREZCMjQwQzY0QjQwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNkRERjgy
NDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTMxNkRFMDAyNDBDNjRGOTAwOTM0MEFBIC8qIEJv
dW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMxQkNDNjExMTI0REZD
QjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzMUNCRDBEMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0
ZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MUNCRDA3MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzFDQkQwRjE2MUE0NEU5
MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFDQkQwOTE2MUE0NEU5MDBFNEM4NzQg
LyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNjMzLDYgKzEwNjM1LDEwIEBACiAJCTkzMTUz
QkQ5MTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIm1p
c3NpbmdJbWFnZUAyeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE1M0JE
QjE0MTk1OUJCMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0g
dGV4dEFyZWFSZXNpemVDb3JuZXIucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzE1M0JFMTE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBuZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG1p
c3NpbmdJbWFnZS5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTZEREY4MjQw
QzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTaW1wbGVSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzE2
RERGQTI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5MzE2RERGRDI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCb3VuZGFyeVBvaW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNkRERkUyNDBDNjRGODAwOTM0MEFBIC8q
IEJvdW5kYXJ5UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm91bmRh
cnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzFBRTNCODFGQjgwRUFF
MDBGNUVGQjIgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUJD
QzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDYW5TdGFydExpc3RlbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUNCRDA2MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxp
bmdTdGF0ZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Ny
b2xsaW5nU3RhdGVOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDI0
LDYgKzI4MDMwLDggQEAKIAkJCQk4NTAzMUIyNjBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5s
b2FkRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjI3MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVV
bmxvYWRFdmVudC5oICovLAogCQkJCTdDMUU4Q0ZGMUVEMEMyQkUwMEIxRDk4MyAvKiBCZWZvcmVV
bmxvYWRFdmVudC5pZGwgKi8sCisJCQkJOTMxNkRERkQyNDBDNjRGODAwOTM0MEFBIC8qIEJvdW5k
YXJ5UG9pbnQuY3BwICovLAorCQkJCTkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFy
eVBvaW50LmggKi8sCiAJCQkJN0MxRThEMDAxRUQwQzJCRTAwQjFEOTgzIC8qIENhbGxiYWNrUmVz
dWx0LmggKi8sCiAJCQkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5j
cHAgKi8sCiAJCQkJNjU1MEI2OTQwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oICov
LApAQCAtMjg0MTgsNiArMjg0MjYsOCBAQAogCQkJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAv
KiBTaGFkb3dSb290LmlkbCAqLywKIAkJCQk0NkRGRjQ5NjFEQzI2MDEzMDBCODBCNDggLyogU2hh
ZG93Um9vdE1vZGUuaCAqLywKIAkJCQk0NkRGRjQ5NzFEQzI2MDEzMDBCODBCNDggLyogU2hhZG93
Um9vdE1vZGUuaWRsICovLAorCQkJCTkzMTZEREZBMjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVS
YW5nZS5jcHAgKi8sCisJCQkJOTMxNkRERjgyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdl
LmggKi8sCiAJCQkJNTcyQTdGMjIxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNw
cCAqLywKIAkJCQk1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAq
LywKIAkJCQkzMTc0MUFBQjE2NjM1RTQ1MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25z
LmggKi8sCkBAIC0yOTIyOCw2ICsyOTIzOCw3IEBACiAJCQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1
OTY1IC8qIEJvcmRlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4OTU1NkVEMThENEE0NDAw
MDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVEQjBFODFC
N0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzMTZERTAw
MjQwQzY0RjkwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RUQ4QzM3QTE4M0JGRjhDMDA5RTUzQkQgLyogQm94U2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMzA5RERCMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkUxRjQzRjFENjI1NEUxMDA5NDYyNUMgLyogQnJlYWtMaW5lcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTU0OSw2ICszMTU2MCw3IEBACiAJCQkJQTE3RDI3NUUxRUFD
NTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDOTAyN0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNz
aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzk2RjVFQzgxQjU4NzIyNjAwOTFF
QTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5MEY2NTU2MUIyMjUzQkUwMDIxNjNB
MSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMzk2LDYgKzMy
NDA4LDcgQEAKIAkJCQkxMTJCMzRENTFFNjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91
dFBhZ2luYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RTlCMTE5MTgxMDkxNkYwMDNBQ0NE
RiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4MkNC
MDUzMUE3OEExNEIwMEFGRkNDNCAvKiBTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzMTZEREZCMjQwQzY0QjQwMDkzNDBBQSAvKiBTaW1w
bGVSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVBMUVBN0QxNTJCQ0YwODAwNEQwMEI2IC8q
IFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTdGMjExQzZF
NTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTc0
MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKQEAgLTMyODAzLDcgKzMyODE2LDYgQEAKIAkJCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0
NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4
RjYwODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MjRCNDY1MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRT
aXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc1OUU5NDAxNEVGMUNGODAwMjZB
MkREIC8qIFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc1OUU5NDMxNEVGMUNGODAw
MjZBMkREIC8qIFRleHRUcmFja0N1ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91
bmRhcnlQb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdlMGYzNjQwN2U3N2VlOGJjZDUwOTU5OGRiYWM0
MGQzNDhjYTQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFy
eVBvaW50LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnQuaCIKKworI2luY2x1ZGUgIk5vZGUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitCb3VuZGFyeVBvaW50OjpCb3VuZGFyeVBvaW50KGNvbnN0
IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQorICAgIDogY29udGFpbmVyKG90aGVyLmNvbnRhaW5lci5j
b3B5UmVmKCkpCisgICAgLCBvZmZzZXQob3RoZXIub2Zmc2V0KQoreworfQorCitCb3VuZGFyeVBv
aW50JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oY29uc3QgQm91bmRhcnlQb2ludCYgb3RoZXIp
Cit7CisgICAgY29udGFpbmVyID0gb3RoZXIuY29udGFpbmVyLmNvcHlSZWYoKTsKKyAgICBvZmZz
ZXQgPSBvdGhlci5vZmZzZXQ7CisgICAgcmV0dXJuICp0aGlzOworfQorCitCb3VuZGFyeVBvaW50
JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oQm91bmRhcnlQb2ludCYmKSA9IGRlZmF1bHQ7CisK
K0RvY3VtZW50JiBCb3VuZGFyeVBvaW50Ojpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNvbnRhaW5lci0+ZG9jdW1lbnQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0JvdW5kYXJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzUxNWU1MTFhNGQ2NmJjODk0MGExYTNiMTQ5NGNmOTNjMDFkMzYxOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1JlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3Mg
Tm9kZTsKKworc3RydWN0IEJvdW5kYXJ5UG9pbnQgeworICAgIFJlZjxOb2RlPiBjb250YWluZXI7
CisgICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OworCisgICAgQm91bmRhcnlQb2ludChSZWY8Tm9k
ZT4mJiwgdW5zaWduZWQpOworCisgICAgLy8gVW5saWtlIFJlZiwgd2UgYWxsb3cgY29weWluZyBh
IEJvdW5kYXJ5UG9pbnQgd2l0aG91dCBhbiBleHBsaWNpdCBjb3B5UmVmKCkuCisgICAgQm91bmRh
cnlQb2ludChjb25zdCBCb3VuZGFyeVBvaW50Jik7CisgICAgQm91bmRhcnlQb2ludChCb3VuZGFy
eVBvaW50JiYpID0gZGVmYXVsdDsKKyAgICBCb3VuZGFyeVBvaW50JiBvcGVyYXRvcj0oY29uc3Qg
Qm91bmRhcnlQb2ludCYpOworICAgIEJvdW5kYXJ5UG9pbnQmIG9wZXJhdG9yPShCb3VuZGFyeVBv
aW50JiYpOworCisgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7Cit9OworCitib29sIG9w
ZXJhdG9yPT0oY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKKwor
aW5saW5lIEJvdW5kYXJ5UG9pbnQ6OkJvdW5kYXJ5UG9pbnQoUmVmPE5vZGU+JiYgY29udGFpbmVy
LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgOiBjb250YWluZXIoV1RGTW92ZShjb250YWluZXIpKQor
ICAgICwgb2Zmc2V0KG9mZnNldCkKK3sKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBvaW50JiBiKQoreworICAgIHJldHVy
biAmYS5jb250YWluZXIgPT0gJmIuY29udGFpbmVyICYmIGEub2Zmc2V0ID09IGIub2Zmc2V0Owor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmM2FkOWE4N2JlZjBhYTA4MjAwNDdm
NWEyZTYxMmIzODg5ZGEwMGM4Li4xZjFkNGE2M2YyMjhjMzk1MDc3ZTExNTFhOWExNzA2MTk5YTY1
ZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI3NTIsNyArMjc1Miw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnVwZGF0ZUhpZ2hsaWdodFBvc2l0aW9ucygpCiAgICAgICAgICAgICBmb3IgKGF1
dG8mIHJhbmdlRGF0YSA6IGhpZ2hsaWdodC52YWx1ZS0+cmFuZ2VzRGF0YSgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHJhbmdlRGF0YS0+c3RhcnRQb3NpdGlvbiAmJiByYW5nZURhdGEtPmVuZFBv
c2l0aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBp
ZiAoJnJhbmdlRGF0YS0+cmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPnRyZWVTY29wZSgpICE9ICZy
YW5nZURhdGEtPnJhbmdlLT5lbmRDb250YWluZXIoKS0+dHJlZVNjb3BlKCkpCisgICAgICAgICAg
ICAgICAgaWYgKCZyYW5nZURhdGEtPnJhbmdlLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgp
ICE9ICZyYW5nZURhdGEtPnJhbmdlLT5lbmRDb250YWluZXIoKS50cmVlU2NvcGUoKSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgcmFuZ2VzRGF0YS5hcHBl
bmQobWFrZVdlYWtQdHIocmFuZ2VEYXRhLnB0cigpKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NpbXBsZVJhbmdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWRmOTljODViZjFlODU3MWRiZWFhNTlh
Y2RlODVhMDU1ZTM5NzY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXBsZVJhbmdlLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCisKKyNpbmNsdWRlICJSYW5nZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NpbXBsZVJhbmdlOjpTaW1wbGVSYW5nZShjb25zdCBC
b3VuZGFyeVBvaW50JiBzdGFydCwgY29uc3QgQm91bmRhcnlQb2ludCYgZW5kKQorICAgIDogc3Rh
cnQoc3RhcnQpCisgICAgLCBlbmQoZW5kKQoreworfQorCitTaW1wbGVSYW5nZTo6U2ltcGxlUmFu
Z2UoQm91bmRhcnlQb2ludCYmIHN0YXJ0LCBCb3VuZGFyeVBvaW50JiYgZW5kKQorICAgIDogc3Rh
cnQoV1RGTW92ZShzdGFydCkpCisgICAgLCBlbmQoV1RGTW92ZShlbmQpKQoreworfQorCitTaW1w
bGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UmIG90aGVyKQorICAgIDogc3RhcnQob3Ro
ZXIuc3RhcnRDb250YWluZXIoKSwgb3RoZXIuc3RhcnRPZmZzZXQoKSkKKyAgICAsIGVuZChvdGhl
ci5lbmRDb250YWluZXIoKSwgb3RoZXIuZW5kT2Zmc2V0KCkpCit7Cit9CisKK2Jvb2wgb3BlcmF0
b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCit7CisgICAg
cmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9PSBiLmVuZDsKK30KKworUmVmPFJh
bmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQoreworICAgIHJl
dHVybiBSYW5nZTo6Y3JlYXRlKHJhbmdlLnN0YXJ0LmRvY3VtZW50KCksIHJhbmdlLnN0YXJ0LmNv
bnRhaW5lci5wdHIoKSwgcmFuZ2Uuc3RhcnQub2Zmc2V0LCByYW5nZS5lbmQuY29udGFpbmVyLnB0
cigpLCByYW5nZS5lbmQub2Zmc2V0KTsKK30KKworUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFu
Z2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAgICBpZiAoIXJhbmdl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKCpy
YW5nZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5n
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY1Yzli
OGE0OTU3M2JmNWVkN2JkZmJhODkzOTcxMDkyMTM5M2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSYW5nZTsKKworc3RydWN0IFNpbXBsZVJhbmdlIHsKKyAg
ICBCb3VuZGFyeVBvaW50IHN0YXJ0OworICAgIEJvdW5kYXJ5UG9pbnQgZW5kOworCisgICAgTm9k
ZSYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBzdGFydC5jb250YWluZXIuZ2V0KCk7
IH0KKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0Lm9mZnNl
dDsgfQorICAgIE5vZGUmIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGVuZC5jb250YWlu
ZXIuZ2V0KCk7IH0KKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBlbmQu
b2Zmc2V0OyB9CisKKyAgICBib29sIGNvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09
IGVuZDsgfQorCisgICAgU2ltcGxlUmFuZ2UoY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJv
dW5kYXJ5UG9pbnQmKTsKKyAgICBTaW1wbGVSYW5nZShCb3VuZGFyeVBvaW50JiYsIEJvdW5kYXJ5
UG9pbnQmJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZShjb25zdCBSYW5nZSYp
OworCisgICAgLy8gQ29udmVuaWVuY2Ugb3ZlcmxvYWRzIHRvIGhlbHAgd2l0aCB0cmFuc2l0aW9u
IGZyb20gdXNpbmcgYSBsb3Qgb2YgbGl2ZSByYW5nZXMuIENvbnNpZGVyIHJlbW92aW5nIHRoZXNl
IGV2ZW50dWFsbHkuCisgICAgU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UqKTsgLy8gQ3Jhc2hlcyBp
ZiBwYXNzZWQgYSBudWxscHRyLgorICAgIFNpbXBsZVJhbmdlKGNvbnN0IFJlZjxSYW5nZT4mKTsK
K307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJh
bmdlJik7CisKK1dFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJik7CitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVS
YW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKKworaW5saW5lIFNpbXBsZVJhbmdl
OjpTaW1wbGVSYW5nZShjb25zdCBSYW5nZSogcmFuZ2UpCisgICAgOiBTaW1wbGVSYW5nZSgqcmFu
Z2UpCit7Cit9CisKK2lubGluZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJh
bmdlPiYgcmFuZ2UpCisgICAgOiBTaW1wbGVSYW5nZShyYW5nZS5nZXQoKSkKK3sKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5jcHAKaW5kZXggODEzNmRhMTkzMzBhMDJjYTk1MzRkZDQw
Y2JmMDNhZWY1ZGI5MTc5Zi4uNWJjNjJmMTc0MTRhODZiZTQwMjgxYTNjYmVmMjdmZWRjYTQ4M2E3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDM1ICsyNiwzNCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0YXRpY1JhbmdlLmgiCiAKLSNpbmNsdWRlICJET01F
eGNlcHRpb24uaCIKLSNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TdGF0aWNSYW5nZTo6U3RhdGljUmFuZ2UoUmVmPE5vZGU+JiYg
c3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBSZWY8Tm9kZT4mJiBlbmRDb250
YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICA6IG1fc3RhcnRDb250YWluZXIoV1RGTW92
ZShzdGFydENvbnRhaW5lcikpCi0gICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAg
ICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQotICAgICwgbV9lbmRPZmZz
ZXQoZW5kT2Zmc2V0KQorU3RhdGljUmFuZ2U6OlN0YXRpY1JhbmdlKFNpbXBsZVJhbmdlJiYgcmFu
Z2UpCisgICAgOiBTaW1wbGVSYW5nZShXVEZNb3ZlKHJhbmdlKSkKIHsKIH0KIAotU3RhdGljUmFu
Z2U6On5TdGF0aWNSYW5nZSgpID0gZGVmYXVsdDsKLQotUmVmPFN0YXRpY1JhbmdlPiBTdGF0aWNS
YW5nZTo6Y3JlYXRlKFJlZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgUmVmPE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCitSZWY8
U3RhdGljUmFuZ2U+IFN0YXRpY1JhbmdlOjpjcmVhdGUoU2ltcGxlUmFuZ2UmJiByYW5nZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGF0aWNSYW5nZShXVEZNb3ZlKHN0YXJ0Q29udGFp
bmVyKSwgc3RhcnRPZmZzZXQsIFdURk1vdmUoZW5kQ29udGFpbmVyKSwgZW5kT2Zmc2V0KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGljUmFuZ2UoV1RGTW92ZShyYW5nZSkpKTsKIH0K
IAotUmVmPFN0YXRpY1JhbmdlPiBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKGNvbnN0IFJh
bmdlJiByYW5nZSkKK3N0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBlT3JBdHRyKE5vZGUmIG5vZGUp
CiB7Ci0gICAgcmV0dXJuIFN0YXRpY1JhbmdlOjpjcmVhdGUocmFuZ2Uuc3RhcnRDb250YWluZXIo
KSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSwgcmFuZ2UuZW5kQ29udGFpbmVyKCksIHJhbmdlLmVuZE9m
ZnNldCgpKTsKLX0KKyAgICAvLyBCZWZvcmUgY2FsbGluZyBub2RlVHlwZSwgZG8gdHdvIGZhc3Qg
bm9uLXZpcnR1YWwgY2hlY2tzIHRoYXQgY292ZXIgYWxtb3N0IGFsbCBub3JtYWwgbm9kZXMsIGJ1
dCBhcmUgZmFsc2UgZm9yIERvY3VtZW50VHlwZSBhbmQgQXR0ci4KKyAgICBpZiAoaXM8Q29udGFp
bmVyTm9kZT4obm9kZSkgfHwgaXM8VGV4dD4obm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAotc3RhdGljIGlubGluZSBib29sIGlzRG9jdW1lbnRUeXBlT3JBdHRyKE5vZGUmIG5vZGUpCi17
Ci0gICAgcmV0dXJuIG5vZGUuaXNEb2N1bWVudFR5cGVOb2RlKCkgfHwgbm9kZS5pc0F0dHJpYnV0
ZU5vZGUoKTsKKyAgICAvLyBDYWxsIG5vZGVUeXBlIGV4cGxpY2l0bHkgYW5kIHVzZSBhIHN3aXRj
aCBzbyB3ZSBkb24ndCBoYXZlIHRvIGNhbGwgaXQgdHdpY2UuCisgICAgc3dpdGNoIChub2RlLm5v
ZGVUeXBlKCkpIHsKKyAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgorICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiBFeGNlcHRpb25PcjxSZWY8U3Rh
dGljUmFuZ2U+PiBTdGF0aWNSYW5nZTo6Y3JlYXRlKEluaXQmJiBpbml0KQpAQCAtNjMsMjcgKzYy
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFN0YXRpY1JhbmdlPj4gU3RhdGljUmFuZ2U6OmNyZWF0ZShJ
bml0JiYgaW5pdCkKICAgICBBU1NFUlQoaW5pdC5lbmRDb250YWluZXIpOwogICAgIGlmIChpc0Rv
Y3VtZW50VHlwZU9yQXR0cigqaW5pdC5zdGFydENvbnRhaW5lcikgfHwgaXNEb2N1bWVudFR5cGVP
ckF0dHIoKmluaXQuZW5kQ29udGFpbmVyKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWROb2RlVHlwZUVycm9yIH07Ci0gICAgcmV0dXJuIFN0YXRpY1JhbmdlOjpjcmVhdGUoaW5p
dC5zdGFydENvbnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBpbml0LnN0YXJ0T2Zmc2V0LCBpbml0
LmVuZENvbnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBpbml0LmVuZE9mZnNldCk7Ci19Ci0KLU5v
ZGUqIFN0YXRpY1JhbmdlOjpzdGFydENvbnRhaW5lcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChO
b2RlKiltX3N0YXJ0Q29udGFpbmVyLnB0cigpOwotfQotCi1Ob2RlKiBTdGF0aWNSYW5nZTo6ZW5k
Q29udGFpbmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKE5vZGUqKW1fZW5kQ29udGFpbmVyLnB0
cigpOwotfQotCi1ib29sIFN0YXRpY1JhbmdlOjpjb2xsYXBzZWQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3N0YXJ0T2Zmc2V0ID09IG1fZW5kT2Zmc2V0ICYmIG1fc3RhcnRDb250YWluZXIucHRy
KCkgPT0gbV9lbmRDb250YWluZXIucHRyKCk7Ci19Ci0KLWJvb2wgU3RhdGljUmFuZ2U6Om9wZXJh
dG9yPT0oY29uc3QgU3RhdGljUmFuZ2UmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAobV9z
dGFydE9mZnNldCA9PSBvdGhlci5zdGFydE9mZnNldCgpICYmIG1fZW5kT2Zmc2V0ID09IG90aGVy
LmVuZE9mZnNldCgpICYmIG1fc3RhcnRDb250YWluZXItPmlzRXF1YWxOb2RlKG90aGVyLnN0YXJ0
Q29udGFpbmVyKCkpICYmIG1fZW5kQ29udGFpbmVyLT5pc0VxdWFsTm9kZShvdGhlci5lbmRDb250
YWluZXIoKSkpOworICAgIHJldHVybiBjcmVhdGUoeyB7IGluaXQuc3RhcnRDb250YWluZXIucmVs
ZWFzZU5vbk51bGwoKSwgaW5pdC5zdGFydE9mZnNldCB9LCB7IGluaXQuZW5kQ29udGFpbmVyLnJl
bGVhc2VOb25OdWxsKCksIGluaXQuZW5kT2Zmc2V0IH0gfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
YXRpY1JhbmdlLmgKaW5kZXggZjgwZDg1ZTUyODY4ZWM1NDBhYzRmYzNhNDFiNmY4YjVjYWRlZDZi
NS4uYTE4ZGFkYTU1ZDE1YzNjN2Y0MGQ3ZGRkNjI4MTczMjRkOTQyZDExYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1N0YXRpY1JhbmdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjYsNDUgKzI2LDI1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgIlNpbXBsZVJh
bmdlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBOb2RlOwotY2xhc3MgUmFuZ2U7Ci0KLWNsYXNzIFN0YXRpY1JhbmdlIDogcHVi
bGljIFJlZkNvdW50ZWQ8U3RhdGljUmFuZ2U+IHsKK2NsYXNzIFN0YXRpY1JhbmdlIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3RhdGljUmFuZ2U+LCBwdWJsaWMgU2ltcGxlUmFuZ2UgewogcHVibGljOgot
ICAgIH5TdGF0aWNSYW5nZSgpOwotCi0gICAgc3RhdGljIFJlZjxTdGF0aWNSYW5nZT4gY3JlYXRl
RnJvbVJhbmdlKGNvbnN0IFJhbmdlJik7Ci0gICAgc3RhdGljIFJlZjxTdGF0aWNSYW5nZT4gY3Jl
YXRlKFJlZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgUmVm
PE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpOwotCiAgICAgc3RydWN0
IEluaXQgewogICAgICAgICBSZWZQdHI8Tm9kZT4gc3RhcnRDb250YWluZXI7Ci0gICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RhcnRPZmZzZXQgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0IHsgMCB9OwogICAgICAgICBSZWZQdHI8Tm9kZT4gZW5kQ29udGFpbmVyOwotICAgICAgICB1
bnNpZ25lZCBsb25nIGVuZE9mZnNldCB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0
IHsgMCB9OwogICAgIH07CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFN0YXRpY1Jhbmdl
Pj4gY3JlYXRlKEluaXQmJik7Ci0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KLSAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2VuZE9mZnNldDsgfQotICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyKCkgY29uc3Q7
Ci0gICAgTm9kZSogZW5kQ29udGFpbmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBjb2xsYXBzZWQoKSBj
b25zdDsKLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RhdGljUmFuZ2UmKSBjb25z
dDsKKyAgICBzdGF0aWMgUmVmPFN0YXRpY1JhbmdlPiBjcmVhdGUoU2ltcGxlUmFuZ2UmJik7CiAK
IHByaXZhdGU6Ci0gICAgU3RhdGljUmFuZ2UoUmVmPE5vZGU+JiYgc3RhcnRDb250YWluZXIsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCBSZWY8Tm9kZT4mJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7Ci0KLSAgICBSZWY8Tm9kZT4gbV9zdGFydENvbnRhaW5lcjsKLSAgICB1bnNpZ25l
ZCBtX3N0YXJ0T2Zmc2V0OwotICAgIFJlZjxOb2RlPiBtX2VuZENvbnRhaW5lcjsKLSAgICB1bnNp
Z25lZCBtX2VuZE9mZnNldDsKKyAgICBTdGF0aWNSYW5nZShTaW1wbGVSYW5nZSYmKTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuaWRsCmluZGV4IDMwYjBhMTdlNDkwMDUwZjU0Nzdl
ZjliOTkzYTNkODQ3NTc1ZmMxNzcuLmQ4Yjk0NzljZjdkOGE0ZmFjOTRlNzBmZjNjY2Y4N2FmNjI5
MmNkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw4ICszOCw4IEBACiB9OwogCiBk
aWN0aW9uYXJ5IFN0YXRpY1JhbmdlSW5pdCB7Ci0gIHJlcXVpcmVkIE5vZGUgc3RhcnRDb250YWlu
ZXI7Ci0gIHJlcXVpcmVkIHVuc2lnbmVkIGxvbmcgc3RhcnRPZmZzZXQ7Ci0gIHJlcXVpcmVkIE5v
ZGUgZW5kQ29udGFpbmVyOwotICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIGVuZE9mZnNldDsKKyAg
ICByZXF1aXJlZCBOb2RlIHN0YXJ0Q29udGFpbmVyOworICAgIHJlcXVpcmVkIHVuc2lnbmVkIGxv
bmcgc3RhcnRPZmZzZXQ7CisgICAgcmVxdWlyZWQgTm9kZSBlbmRDb250YWluZXI7CisgICAgcmVx
dWlyZWQgdW5zaWduZWQgbG9uZyBlbmRPZmZzZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCA1ZGFiN2JhMTAxYTAxODVkY2Qy
NzljN2M2M2NhOTQ2MDhiMDcyNmYxLi43ZGRiMGFiMjUyMTk0OTMyMDU1OGVkNDExODRiNTEwY2E5
NjBlZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBAIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKICAgICBpZiAoIWZpcnN0
UmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5n
ZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9OworICAgIHJldHVybiB7IDEsIFN0YXRp
Y1JhbmdlOjpjcmVhdGUoKmZpcnN0UmFuZ2UpIH07CiB9CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGlj
UmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQuY3BwCmluZGV4IDA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIxNGQzM2RjZThk
ODgwMGYuLmFkNzgyMzJhOGEyMDg2N2NkNTk5MWIzZDJmODBiM2Y0ZDRiNmY2MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFu
ZC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6
OndpbGxBcHBseUNvbW1hbmQoKQogCiB2b2lkIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6
ZG9BcHBseSgpCiB7Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSAqbV9yYW5nZVRv
QmVSZXBsYWNlZDsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiB7ICptX3JhbmdlVG9C
ZVJlcGxhY2VkIH07CiAKICAgICBpZiAoIW1fcmFuZ2VUb0JlUmVwbGFjZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTg5LDcgKzg5LDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdl
V2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKIAogVmVjdG9y
PFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0
UmFuZ2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJv
bVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1Jh
bmdlOjpjcmVhdGUoKm1fcmFuZ2VUb0JlUmVwbGFjZWQpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwCmluZGV4IDdkYjNmOWI0NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgz
ODIzN2UuLjUxMzMxNDUzOTNkMTczYTU3OWQwYTUwYzBiZmYxYzhlMzVhZDgzNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNw
cApAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZChSYW5nZSYgcmFuZ2VUb0JlQ29ycmVjdGVkLCBjb25z
dCBTdHJpbmcmIGNvcnJlY3Rpb24pCiAgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChyYW5nZVRv
QmVDb3JyZWN0ZWQuc3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBFZGl0QWN0aW9uOjpJbnNl
cnRSZXBsYWNlbWVudCkKICAgICAsIG1fcmFuZ2VUb0JlQ29ycmVjdGVkKHJhbmdlVG9CZUNvcnJl
Y3RlZCkKLSAgICAsIG1fc2VsZWN0aW9uVG9CZUNvcnJlY3RlZChtX3JhbmdlVG9CZUNvcnJlY3Rl
ZCkKKyAgICAsIG1fc2VsZWN0aW9uVG9CZUNvcnJlY3RlZChtX3JhbmdlVG9CZUNvcnJlY3RlZC5n
ZXQoKSkKICAgICAsIG1fY29ycmVjdGlvbihjb3JyZWN0aW9uKQogewogfQpAQCAtMTI0LDcgKzEy
NCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgp
IGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIHJldHVybiB7IDEsIFN0YXRpY1Jh
bmdlOjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpIH07CisgICAgcmV0dXJu
IHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZShtX3JhbmdlVG9CZUNvcnJlY3RlZCkgfTsKIH0KIAog
UmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVu
dERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmNwcAppbmRleCAwMWY1M2RiYTAzYmVhYzc5N2Q3NmFhOGFlNTY2ZDJmZDEyNWM4MjNkLi5jNGQ4
MGZiNTUwOGYxZTI2YzY4OTE4NTM4MmFlZmMwY2ZkYjlhMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTQ5OSw3ICs0OTksNyBAQCBib29sIFR5cGluZ0Nv
bW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRU
eXBlLCBUZXh0RwogICAgIGlmICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1
dCgpKQogICAgICAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0
aGlzLCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAK
LSAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEs
IFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKnJhbmdlKSB9KTsKKyAgICByZXR1cm4gZnJh
bWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIFN0YXRpY1JhbmdlOjpj
cmVhdGUoKnJhbmdlKSB9KTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRv
T3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCmluZGV4IGYzMjdjYjMw
MzAxYjY4MDI5MWEzODllOTE5MzkzMmI2YjhkOTYxMTguLjBkMjFjYzA4NGVlZjZlYTYwMDdmNjE3
NTVkMmY4Y2M5YTE4NDU2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2Vs
ZWN0aW9uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNs
dWRlICJTdGF0aWNSYW5nZS5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8c3Rk
aW8uaD4KQEAgLTg4LDIyICs4OCwxMyBAQCBWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYmFzZSwgY29uc3QgVmlzaWJsZVBvcwogICAgIHZh
bGlkYXRlKCk7CiB9CiAKLVZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3Qg
UmFuZ2UmIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKLSAg
ICA6IG1fYmFzZShyYW5nZS5zdGFydFBvc2l0aW9uKCkpCi0gICAgLCBtX2V4dGVudChyYW5nZS5l
bmRQb3NpdGlvbigpKQorVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBT
aW1wbGVSYW5nZSYgcmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFs
KQorICAgIDogbV9iYXNlKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigmcmFuZ2Uuc3RhcnRD
b250YWluZXIoKSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSkpCisgICAgLCBtX2V4dGVudChjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24oJnJhbmdlLmVuZENvbnRhaW5lcigpLCByYW5nZS5lbmRPZmZz
ZXQoKSkpCiAgICAgLCBtX2FmZmluaXR5KGFmZmluaXR5KQogICAgICwgbV9pc0RpcmVjdGlvbmFs
KGlzRGlyZWN0aW9uYWwpCiB7Ci0gICAgdmFsaWRhdGUoKTsKLX0KLQotVmlzaWJsZVNlbGVjdGlv
bjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBTdGF0aWNSYW5nZSYgc3RhdGljUmFuZ2UsIEVBZmZp
bml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQotICAgIDogbV9iYXNlKGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihzdGF0aWNSYW5nZS5zdGFydENvbnRhaW5lcigpLCBzdGF0aWNS
YW5nZS5zdGFydE9mZnNldCgpKSkKLSAgICAsIG1fZXh0ZW50KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihzdGF0aWNSYW5nZS5lbmRDb250YWluZXIoKSwgc3RhdGljUmFuZ2UuZW5kT2Zmc2V0
KCkpKQotICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKLSAgICAsIG1faXNEaXJlY3Rpb25hbChp
c0RpcmVjdGlvbmFsKQotewotICAgIEFTU0VSVCgmc3RhdGljUmFuZ2Uuc3RhcnRDb250YWluZXIo
KS0+dHJlZVNjb3BlKCkgPT0gJnN0YXRpY1JhbmdlLmVuZENvbnRhaW5lcigpLT50cmVlU2NvcGUo
KSk7CisgICAgQVNTRVJUKCZyYW5nZS5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpID09ICZy
YW5nZS5lbmRDb250YWluZXIoKS50cmVlU2NvcGUoKSk7CiAgICAgdmFsaWRhdGUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAppbmRleCAyZDQyZDhmN2Vm
MWZhMjFmMjg5MDMzZmFkNmI4MzFlYTBjM2UzZGRjLi5kNDlmMTIwYjY1ZDA2YTlkNjg1ZWFkNTAz
M2EyZTkxMmYzYjFjZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uaApAQCAtMzEsNyArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQb3Np
dGlvbjsKLWNsYXNzIFN0YXRpY1JhbmdlOworCitzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKIGNvbnN0
IEVBZmZpbml0eSBTRUxfREVGQVVMVF9BRkZJTklUWSA9IERPV05TVFJFQU07CiBlbnVtIFNlbGVj
dGlvbkRpcmVjdGlvbiA6IHVpbnQ4X3QgeyBEaXJlY3Rpb25Gb3J3YXJkLCBEaXJlY3Rpb25CYWNr
d2FyZCwgRGlyZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxlZnQgfTsKQEAgLTQ0LDEwICs0NSw3IEBA
IHB1YmxpYzoKIAogICAgIFZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mLCBFQWZmaW5p
dHksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKICAgICBWaXNpYmxlU2VsZWN0aW9uKGNv
bnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHkgPSBTRUxfREVGQVVMVF9B
RkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwotCi0gICAgV0VCQ09SRV9FWFBP
UlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBSYW5nZSYsIEVBZmZpbml0eSA9IFNFTF9ERUZBVUxU
X0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBTdGF0aWNSYW5nZSYsIEVBZmZpbml0eSA9IFNFTF9E
RUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7Ci0gICAgCisgICAg
V0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYsIEVBZmZp
bml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmlz
aWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQppbmRleCA4MGFiYmUyZDkwZTdiMzIwM2Q1ZTA4YzAyMjNkMDlhMmU4
YWZkZTViLi4yOTE4MjQ2NWQ4Y2YyOTM5Y2IyMTYwMjQ5ZmVhMmFlMTFlYTE3YzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01MCw2ICs1MCw3IEBACiAjaW1w
b3J0ICJSZW5kZXJJbWFnZS5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgi
CiAjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW1wb3J0ICJTaW1wbGVSYW5n
ZS5oIgogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJXZWJDb250ZW50UmVh
ZGVyLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKQEAgLTU5LDgg
KzYwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwotCiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpCiB7CiAgICAgYXV0byogY2xpZW50
ID0gdGhpcy0+Y2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IGI5Yzc5ODhmYzRlZDczNjUyY2MyODdjZTU4MTk1NWE4ZDA0NDI4ZDUuLjQzY2JjNGM5YjQz
YjVmNTcwZmU0ZDk4OWJjNDBmODkzNmM5M2MwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU1ZHQUVsZW1lbnQuaCIK
IAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVy
LmgiCkBAIC03OSw2ICs4MCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaW1w
bGVSYW5nZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVGV4dEluZGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3Iu
Y3BwCmluZGV4IDJiOTM5MGMxYzYzYjVhMDhjNjI5YmIyODAwYjM5ODU5MDUwZTAyNTIuLjJkMjEx
MDRiMzIxZTYzY2I4Yzg1OTc5NTI5MmYwMmIxZmNhZmVmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9U
ZXh0SW5kaWNhdG9yLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Lmgi
CisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogCkBAIC04Miw3ICs4Myw3IEBAIFJlZlB0cjxUZXh0
SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoY29uc3QgUmFuZ2UmIHJh
bmdlLCBUZXh0SW5kCiAgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucy5hZGQoVGVtcG9yYXJ5
U2VsZWN0aW9uT3B0aW9uOjpJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKTsKICAgICB0ZW1wb3JhcnlT
ZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246OkVuYWJsZUFwcGVh
cmFuY2VVcGRhdGVzKTsKICNlbmRpZgotICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBzZWxl
Y3Rpb25DaGFuZ2UoKmZyYW1lLCB7IHJhbmdlIH0sIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMp
OworICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBzZWxlY3Rpb25DaGFuZ2UoKmZyYW1lLCB7
IFNpbXBsZVJhbmdlIHsgcmFuZ2UgfSB9LCB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zKTsKIAog
ICAgIFRleHRJbmRpY2F0b3JEYXRhIGRhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQppbmRleCBjYmU1NDEwMTdkMGZmMzFjMTkwZDUwZDQ0YTBlZjY0ODFl
YjkyMGUxLi4wMWIxZmRiNGVmYWRiOTc1ZWQ1YzQ3MzA5YmM0NWYwNWIwYWZhZDAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC02NCw2ICs2NCw3IEBA
CiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJXaGVl
bEV2ZW50RGVsdGFGaWx0ZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIK
ICNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDIxZjc0OGNmNWZkYzM0N2E2ZjFjNDEyMjdj
NGI4ZWViOWQ3MDQ4MzEuLmE4NzYyMWRmZjEwODIxNGQxNTdkODdiNzg1YjYxMzA1ZjI5MmE2Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEwMzgs
NyArMTAzOCw2IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFy
a2VkVGV4dHNGb3JEb2N1bWVudE1hcmtlcnMoVGV4dFBhaW50CiAgICAgcmV0dXJuIG1hcmtlZFRl
eHRzOwogfQogCi0KIFZlY3RvcjxNYXJrZWRUZXh0PiBJbmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFy
a2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBoYXNlIHBoYXNlKSBjb25zdAogewogICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5oaWdobGlnaHRB
UElFbmFibGVkKCkpCkBAIC0xMDU5LDE3ICsxMDU4LDE3IEBAIFZlY3RvcjxNYXJrZWRUZXh0PiBJ
bmxpbmVUZXh0Qm94Ojpjb2xsZWN0TWFya2VkVGV4dHNGb3JIaWdobGlnaHRzKFRleHRQYWludFBo
YXNlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZm9yIChhdXRvJiByYW5nZURhdGEg
OiBoaWdobGlnaHQudmFsdWUtPnJhbmdlc0RhdGEoKSkgewogICAgICAgICAgICAgaWYgKHJhbmdl
RGF0YS0+c3RhcnRQb3NpdGlvbiAmJiByYW5nZURhdGEtPmVuZFBvc2l0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgUG9zaXRpb24gc3RhcnRQb3MgPSByYW5nZURhdGEtPnN0YXJ0UG9zaXRpb24udmFs
dWUoKTsKLSAgICAgICAgICAgICAgICBQb3NpdGlvbiBlbmRQb3MgPSByYW5nZURhdGEtPmVuZFBv
c2l0aW9uLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRl
cmVyID0gc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAg
ICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
OwotICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmRQb3MuZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0
ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5kT2Zmc2V0ID49IDApOworICAgICAgICAgICAgICAg
IFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSByYW5nZURhdGEtPnN0YXJ0UG9zaXRpb24udmFsdWUo
KTsKKyAgICAgICAgICAgICAgICBQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IHJhbmdlRGF0YS0+ZW5k
UG9zaXRpb24udmFsdWUoKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBzdGFydFJlbmRlcmVyID0g
c3RhcnRQb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc3RhcnRQb3NpdGlvbi5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpOworICAgICAgICAgICAgICAgIGF1dG8qIGVuZFJlbmRlcmVyID0gZW5kUG9zaXRp
b24uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBlbmRPZmZzZXQgPSBlbmRQb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAg
ICAgICAgICAgICAgIGlmICghc3RhcnRSZW5kZXJlciB8fCAhZW5kUmVuZGVyZXIpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICAgICAgYXV0byBoaWdobGlnaHRE
YXRhID0gSGlnaGxpZ2h0RGF0YShyZW5kZXJlcigpLnZpZXcoKSk7Ci0gICAgICAgICAgICAgICAg
aGlnaGxpZ2h0RGF0YS5zZXRSZW5kZXJSYW5nZSh7c3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihlbmRPZmZzZXQpfSk7CisgICAgICAgICAgICAgICAgaGlnaGxpZ2h0RGF0YS5zZXRSZW5kZXJS
YW5nZSh7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
IH0pOwogICAgICAgICAgICAgICAgIGF1dG8gW2hpZ2hsaWdodFN0YXJ0LCBoaWdobGlnaHRFbmRd
ID0gaGlnaGxpZ2h0U3RhcnRFbmQoaGlnaGxpZ2h0RGF0YSk7CiAgICAgICAgICAgICAgICAgaWYg
KGhpZ2hsaWdodFN0YXJ0IDwgaGlnaGxpZ2h0RW5kKQogICAgICAgICAgICAgICAgICAgICBtYXJr
ZWRUZXh0cy5hcHBlbmQoeyBoaWdobGlnaHRTdGFydCwgaGlnaGxpZ2h0RW5kLCBNYXJrZWRUZXh0
OjpIaWdobGlnaHQsIG51bGxwdHIsIGhpZ2hsaWdodC5rZXkgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RWRpdGluZ1JhbmdlLmNwcAppbmRleCBjZjFjMDNhYWE1OWRlODRjZTgzYTQ5ODM1MDFkNGVjZTky
ZGMyZTdjLi4xYWZhZTVlYmJmNWU2M2Q5YmVkZjMwMzlkZjQ0NTFjOWI1NTNhNjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1l
LCBjb25zdCBFZGl0aW4KICAgICBpZiAoIXBhcmFncmFwaFJhbmdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFdlYkNvcmU6OkNvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0gcGFyYWdy
YXBoUmFuZ2UuZ2V0KCktPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsK
KyAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFJhbmdlLmdldCgpLT5zdGFydENvbnRhaW5l
cigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CiAgICAgaW50IHBhcmFncmFwaFN0YXJ0SW5kZXgg
PSBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKFdlYkNvcmU6OlJhbmdlOjpjcmVh
dGUocm9vdE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2RlLCAwLCAmcGFyYWdyYXBoUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydE9mZnNldCgpKS5wdHIoKSk7CiAg
ICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgc3RhdGljX2Nhc3Q8aW50PihyYW5n
ZS5sb2NhdGlvbiksIGxlbmd0aCk7CiB9CkBAIC03Niw4ICs3Niw4IEBAIEVkaXRpbmdSYW5nZSBF
ZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNv
cmU6OlJhbmdlCiB7CiAgICAgQVNTRVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCk7CiAKLSAgICBzaXplX3QgbG9jYXRp
b247Ci0gICAgc2l6ZV90IGxlbmd0aDsKKyAgICBzaXplX3QgbG9jYXRpb24gPSAwOworICAgIHNp
emVfdCBsZW5ndGggPSAwOwogICAgIGlmICghcmFuZ2UgfHwgIVdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHJhbmdlLCBsb2NhdGlvbiwgbGVuZ3Ro
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggNzcwOTI3M2NiZjgzM2UwY2U4YWJlNTVjODY4ODA5NjBj
ZTE2MmRjMy4uMjIwZWZlZDU4ZWQxNTc3OWU3NWI5YzQ4YzE3MDcxN2ZmZTJkZjBkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5n
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2ltcGxlUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
Y3BwCmluZGV4IGM5NzAxN2E4OGJmZjhlZDc0OTM2Y2ZmMThkN2Y3NTk4NDBiZDQ2YTMuLmM1MmFm
NjU5YjEwYTkwNjQ4OWRkOGExOTM2MDcyMDI2ZThjYmMzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTQ2LDYgKzQ2
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1l
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3JXaW5kb3cuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzZmMTM2NzU4ZGZk
NGZjOTJjNDE5NmM3OWNlOTgyZWI4ZjM4M2ZjNi4uOWRlNDZkNzNkMTViZGQyNGNiZDZkZDVhOTM1
ZjZjYzg4OGMxYzhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTIyNiw2ICsyMjYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYWRvd1Jvb3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3ViZnJhbWVM
b2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDBh
ZTRlYWZkOGY0MTE5YWFiNTMwYWUxMzZhYzkwYzA1NWM0NzUyMzUuLmM3OTA2M2YwOGFiZGRkMzA3
ZmU1ZGQ1MzQyZjI0YmQ3NmI0MjJlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC04Niw2ICs4Niw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVJbmhlcml0ZWREYXRh
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9W
aXNpYmxlVW5pdHMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KaW5kZXggODgxYmRmNDQ1NzQ4MmQ5OTAwZTExNjM4MTFm
OTdmMjdmNGM3M2NjNy4uNTg3YzM0ZWNjZjBiZjhiZGM3NGM3YjBkYzA0ZjAwMDk0MDFjZDA5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVJT1MubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGV4
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NlbGVjdGlvblJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEJvdW5kYXJpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGV4dEZsYWdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVQb3NpdGlvbi5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5tbQppbmRleCAyNDA3ZjEwNjliNTdmYmY2NTk0ODg3NTQxMjhjZThm
YWIxZWNiYmY5Li44MDZkYTBiZmIwN2RhZTljYjczNjQ4YTJhZjBmZmY0ZDI5MzM3Y2MwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtNTQsNiArNTQsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJPYmplY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KICNpbXBv
cnQgPHd0Zi9VUkwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCmluZGV4IDc0MDAzNTNiMWY1OThiMjEwOGQ5OTUwMmY2OGJlNDQzZWE0NjU0YzIuLmJmMmFl
Mjg2OGYyZGJiNDdmNTg3MGY4ZGNlZTZlOTM4ZTY4ZmNlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
Y3JpcHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NtYXJ0UmVw
bGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KQEAgLTgwNiw4ICs4MDcsOCBAQCAtIChOU1JhbmdlKV9j
b252ZXJ0VG9OU1JhbmdlOihXZWJDb3JlOjpSYW5nZSAqKXJhbmdlCiAgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCi0gICAgc2l6ZV90
IGxvY2F0aW9uOwotICAgIHNpemVfdCBsZW5ndGg7CisgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsK
KyAgICBzaXplX3QgbGVuZ3RoID0gMDsKICAgICBpZiAoIVdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0
aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHJhbmdlLCBsb2Nh
dGlvbiwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDAp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392882</attachid>
            <date>2020-03-07 13:19:00 -0800</date>
            <delta_ts>2020-03-08 08:55:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208432-20200307131859.patch</filename>
            <type>text/plain</type>
            <size>50858</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhMmU0ZDM4OWJhZDUy
MzllM2U1ZDFiYTkzZjc2MjU2YjVmYjQ1NS4uMWYzNmFiYzVkNmI3YzY0ZjYzNjEyMmFlMDdiZTE4
MDdhMzdiNTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTAzLTA3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9m
IGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgRE9NIFJhbmdlIGNsYXNzIGlzIGEgbGl2ZSBy
YW5nZS4gVGhlIGxpdmUgdXBkYXRpbmcgZmVhdHVyZSBvZiB0aGVzZSByYW5nZXMgbWVhbgorICAg
ICAgICB0aGV5IGFyZSBleHBlbnNpdmUgdG8gY3JlYXRlIGFuZCBkZXN0cm95IGFuZCBhbHNvIG1h
a2UgYWxsIERPTSBtdXRhdGlvbiBtb3JlIGV4cGVuc2l2ZQorICAgICAgICB3aGlsZSB0aGV5IGFy
ZSBhbGl2ZS4gV2Ugd2lsbCBiZSBhYmxlIHRvIHNwZWVkIHVwLCBsaWtlbHkgbWVhc3VyYWJsZSBv
biBTcGVlZG9tZXRlciwKKyAgICAgICAgaWYgd2UgY2FuIGN1dCBkb3duIHVzZXMgb2YgbGl2ZSBy
YW5nZXMuCisKKyAgICAgICAgLSBSZWZhY3RvcmVkIHRoZSBTdGF0aWNSYW5nZSBjbGFzcyB0byBj
cmVhdGUgdHdvIG5ldyBzdHJ1Y3RzLgorICAgICAgICAtIFRoZSBCb3VuZGFyeVBvaW50IHN0cnVj
dCBpbXBsZW1lbnRzIHdoYXQgdGhlIERPTSBzdGFuZGFyZCBjYWxscyBhIGJvdW5kYXJ5IHBvaW50
OgorICAgICAgICAgIGEgbm9kZSBhbmQgb2Zmc2V0LiBTaW1pbGFyIHRvIHRoZSBSYW5nZUJvdW5k
YXJ5UG9pbnQgY2xhc3MsIHdoaWNoIHN1cHBvcnRzCisgICAgICAgICAgYmVpbmcgdGhlIGJvdW5k
YXJ5IHBvaW50IG9mIGEgbGl2ZSByYW5nZSwgYnV0IHNpbXBsZXIgYW5kIG5vdCBsaXZlLgorICAg
ICAgICAtIFRoZSBTaW1wbGVSYW5nZSBzdHJ1Y3QgaW1wbGVtZW50cyB3aGF0IHRoZSBET00gc3Rh
bmRhcmQgY2FsbHMgYSByYW5nZSAobm90IGEgbGl2ZQorICAgICAgICAgIHJhbmdlKS4gTGlrZSBT
dGF0aWNSYW5nZSBidXQgd2l0aG91dCByZWZlcmVuY2UgY291bnRpbmcgYW5kIERPTSBiaW5kaW5n
LgorICAgICAgICAtIFNpbmNlIFN0YXRpY1JhbmdlIGlzIGRlcml2ZWQgcHVibGljbHkgZnJvbSBT
aW1wbGVSYW5nZSB5b3UgY2FuIHBhc3MgZWl0aGVyIHRvIGFueQorICAgICAgICAgIGZ1bmN0aW9u
IHRoYXQgdGFrZXMgYSBTaW1wbGVSYW5nZS4gQW5kIHNpbmNlIHRoZXJlIGlzIGEgY29uc3RydWN0
b3IgdG8gY3JlYXRlIGEKKyAgICAgICAgICBTaW1wbGVSYW5nZSBmcm9tIGEgUmFuZ2UgeW91IGNh
biBwYXNzIGEgUmFuZ2UgdG8gdGhvc2UgZnVuY3Rpb25zIHRvby4KKyAgICAgICAgLSBSZW5hbWVk
IFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UgdG8gU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6IEFkZGVkIEJvdW5kYXJ5UG9pbnQuaCwgU2ltcGxlUmFu
Z2UuaCwgYW5kIFN0YXRpY1JhbmdlLmguCisgICAgICAgICogU291cmNlcy50eHQ6IEFkZGVkIEJv
dW5kYXJ5UG9pbnQuY3BwIGFuZCBTaW1wbGVSYW5nZS5jcHAuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBCb3VuZGFyeVBvaW50LmNwcC9oIGFuZCBT
aW1wbGVSYW5nZS5jcHAvaC4KKworICAgICAgICAqIGRvbS9Cb3VuZGFyeVBvaW50LmNwcDogQWRk
ZWQuCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuaDogQWRkZWQuCisgICAgICAgICogZG9t
L1NpbXBsZVJhbmdlLmNwcDogQWRkZWQuCisgICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmg6IEFk
ZGVkLgorCisgICAgICAgICogZG9tL1N0YXRpY1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0YXRpY1JhbmdlOjpTdGF0aWNSYW5nZSk6IFRha2UgYW4gcnZhbHVlIHJlZmVyZW5jZSB0byBh
IFNpbXBsZVJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUmFuZ2U6OmNyZWF0ZSk6IERp
dHRvLiBDaGFuZ2VkIHRoZSBvdGhlciBvdmVybG9hZHMgdG8gY3JlYXRlCisgICAgICAgIGEgU2lt
cGxlUmFuZ2UgZmlyc3QgdGhlbiBjYWxsIHRocm91Z2ggdG8gdGhlIG1haW4gb25lLgorICAgICAg
ICAoV2ViQ29yZTo6aXNEb2N1bWVudFR5cGVPckF0dHIpOiBXcm90ZSBhIG11Y2ggbW9yZSBlZmZp
Y2llbnQgdmVyc2lvbiBvZiB0aGlzLgorICAgICAgICBUaGUgb2xkIHZlcnNpb24gY2FsbGVkIHRo
ZSB2aXJ0dWFsIGZ1bmN0aW9uIG5vZGVUeXBlIHR3aWNlLiBUaGlzIGNhbGxzIGl0IGF0CisgICAg
ICAgIG1vc3Qgb25jZSwgYW5kIG1vc3RseSBkb2Vzbid0IGNhbGwgaXQgYXQgYWxsLgorICAgICAg
ICAqIGRvbS9TdGF0aWNSYW5nZS5oOiBTaW1wbGlmaWVkIHRoaXMgY2xhc3MsIHB1dHRpbmcgbW9z
dCBvZiB0aGUgYWN0dWFsIHJhbmdlCisgICAgICAgIGxvZ2ljIGludG8gdGhlIGJhc2UgY2xhc3Mu
IE5vdGUgdGhhdCB0aGlzIGNoYW5nZSBlbGltaW5hdGVkIHRoZSBwZWN1bGlhciBjb2RlCisgICAg
ICAgIHRoYXQgaW4gdGhlID09IG9wZXJhdG9yIHRoYXQgY29tcGFyZWQgbm9kZXMgdXNpbmcgaXNF
cXVhbE5vZGUgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBub2RlIGlkZW50aXR5LiBUaGVyZSB3
YXMgbm8gb25lIHdobyBuZWVkZWQgdGhhdCBvdGhlciBiZWhhdmlvci4gQWxzbyBmaXhlZAorICAg
ICAgICBtaXN0YWtlbiB1c2Ugb2YgdW5zaWduZWQgbG9uZyBpbiBTdGF0aWNSYW5nZTo6SW5pdC4g
SXQncyB1bnNpZ25lZCBsb25nIGluCisgICAgICAgIHRoZSBJREwgZmlsZSwgYnV0IGNvbmZ1c2lu
Z2x5IHRoYXQncyBqdXN0IHVuc2lnbmVkIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgKiBkb20v
U3RhdGljUmFuZ2UuaWRsOiBUd2Vha2VkIGZvcm1hdHRpbmcuCisKKyAgICAgICAgKiBlZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVk
aXRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBVcGRhdGVkIGZvciByZW5hbWUKKyAgICAg
ICAgb2YgU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQ6OmRvQXBwbHkpOiBVcGRhdGVkIHNpbmNlIFZpc2libGVTZWxlY3Rpb24KKyAg
ICAgICAgdGFrZXMgU2ltcGxlUmFuZ2Ugbm93LgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJh
bmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOiBVcGRhdGVkIGZvcgorICAg
ICAgICByZW5hbWUgb2YgU3RhdGljUmFuZ2U6OmNyZWF0ZS4KKyAgICAgICAgKiBlZGl0aW5nL1Nw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCk6IFVwZGF0ZWQKKyAg
ICAgICAgc2luY2UgYSBzZWxlY3Rpb24gbm93IHRha2VzIGEgU2ltcGxlUmFuZ2UmLCBub3QgYSBT
dGF0aWNSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6
OnRhcmdldFJhbmdlcyBjb25zdCk6IFVwZGF0ZWQgZm9yCisgICAgICAgIHJlbmFtZSBvZiBTdGF0
aWNSYW5nZTo6Y3JlYXRlLgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFu
ZCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24pOiBVc2Ug
U2ltcGxlUmFuZ2UKKyAgICAgICAgaW5zdGVhZCBvZiBTdGF0aWNSYW5nZSBhbmQgUmFuZ2UuCisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92
ZS4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbTogQWRkZWQgaW5jbHVkZS4K
KyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDogRGl0dG8uCisgICAgICAgICogcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yOjpjcmVhdGVXaXRoUmFuZ2UpOiBVcGRhdGVkIHNpbmNlIFZpc2liZWxTZWxlY3Rpb24KKyAg
ICAgICAgdGFrZXMgU2ltcGxlUmFuZ2Ugbm93LgorCisgICAgICAgICogcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29sbGVjdE1h
cmtlZFRleHRzRm9ySGlnaGxpZ2h0cyk6IFR3ZWFrZWQgY29kaW5nCisgICAgICAgIHN0eWxlIGEg
Yml0LgorCiAyMDIwLTAzLTA3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQVg6IFByb3ZpZGUgYSB3YXkgdG8gcnVuIHRlc3RzIGluIGlzb2xhdGVkIHRy
ZWUgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBlMThiNGIyNDNjYzhlM2Q5NDdiYTM2ZWMwYWRhNTQ4NzdhMGIy
NmMwLi5iNDZhYzhmZDczMDNiYTAzNWRlZjZhMTE1MDcwOWJjOTZhZGE5YWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIwLTAzLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9mIGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQg
aW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0aW5nUmFu
Z2U6OmZyb21SYW5nZSk6IEluaXRpYWxpemUgb3V0IGFyZ3VtZW50cy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
OiBBZGRlZCBpbmNsdWRlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHA6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
OiBEaXR0by4KKwogMjAyMC0wMy0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIHVuaWZpZWQgYnVpbGQgZml4OyBmb3J3YXJkIGRlY2xhcmUg
cmVmZXJlbmNlZCB0eXBlcy4gSW4gdGhpcyBjYXNlLCBXZWJDb3JlOjpJbWFnZURhdGEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggMTU5OGVhNjUwNjhiNTRkZTNmOGNmNDhhOGRhNjkz
ODgzOWFmZTNlOC4uNDI5OTk4ZjBjNzU2NDUzYzI2ODc4OTI5Njg4YjBhZjMyZjQ4YTQyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTA3ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2Zm
IG9mIGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9T
Lm1tOiBBZGRlZCBpbmNsdWRlLgorCiAyMDIwLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZS1hZGQgYEluc3BlY3RvckZy
b250ZW5kSG9zdGAgc3VwcG9ydCBmb3IgbW92aW5nIHRoZSBpbnNwZWN0ZWQgd2luZG93CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAzZjgxMmIzZDYzNTcyZTU0Y2NlOTVhZDAyZmJm
ZTQ3NzJhYzdjZC4uYWQ2OTI3NmE5YWZhOTcyNjNmNDhmMTAxYjcwMDViNDRmYjdkNGE1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTA3ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBCZWdpbiBtb3Zpbmcgb2Zm
IG9mIGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tOiBBZGRlZCBpbmNsdWRlLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUu
bW06IERpdHRvLgorICAgICAgICAoLVtXZWJGcmFtZSBfY29udmVydFRvTlNSYW5nZTpdKTogSW5p
dGlhbGl6ZWQgb3V0IGFyZ3VtZW50cy4KKwogMjAyMC0wMy0wNiAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGbGFreSBUZXN0OiBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNDk2YmI2NDA3
NzY3ZTVjYTQ5NDM3MGMyZWEzY2I4OWNjOWM5MGI1MS4uYTAzOGJlMjE4ZmJmZTJlZWI0MmJjNDhl
ZGU4ZWY2MWQ2ZDZjOTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zNTYsNiArMzU2LDcgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9BY3RpdmVET01P
YmplY3QuaAogICAgIGRvbS9BdHRyLmgKICAgICBkb20vQXR0cmlidXRlLmgKKyAgICBkb20vQm91
bmRhcnlQb2ludC5oCiAgICAgZG9tL0NEQVRBU2VjdGlvbi5oCiAgICAgZG9tL0NhbGxiYWNrUmVz
dWx0LmgKICAgICBkb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC00NTEsOCArNDUyLDEwIEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudC5oCiAgICAgZG9tL1NoYWRvd1Jvb3QuaAogICAgIGRvbS9TaGFkb3dSb290
TW9kZS5oCisgICAgZG9tL1NpbXBsZVJhbmdlLmgKICAgICBkb20vU2ltdWxhdGVkQ2xpY2tPcHRp
b25zLmgKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5oCisgICAgZG9tL1N0YXRpY1JhbmdlLmgK
ICAgICBkb20vU3R5bGVkRWxlbWVudC5oCiAgICAgZG9tL1N1Y2Nlc3NPci5oCiAgICAgZG9tL1Rh
c2tTb3VyY2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwMWE4YTVlYzAxMzQ4NDdjMzA4MWMwMjc3ZmEz
OWVhNzc2MjgzYTY2Li4xYjhiODIzY2M3ZjFlNmEwMWM0MzQ1ZjYyNWU5MzUxYTFjOTIyZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtODI0LDYgKzgyNCw3IEBAIGRvbS9BdHRyLmNwcAogZG9tL0JlZm9y
ZUxvYWRFdmVudC5jcHAKIGRvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKIGRvbS9CZWZv
cmVVbmxvYWRFdmVudC5jcHAKK2RvbS9Cb3VuZGFyeVBvaW50LmNwcAogZG9tL0NEQVRBU2VjdGlv
bi5jcHAKIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcAogZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC05NDksNiArOTUwLDcgQEAgZG9tL1NlY3VyaXR5T3JpZ2luUG9saWN5LmNwcAogZG9t
L1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuY3BwCiBkb20vU2VsZWN0b3JRdWVyeS5jcHAK
IGRvbS9TaGFkb3dSb290LmNwcAorZG9tL1NpbXBsZVJhbmdlLmNwcAogZG9tL1NpbXVsYXRlZENs
aWNrLmNwcAogZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAogZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNGFmOTU1MDYzN2RhMTQ1ZmIxMjIzMmU0YWVjNzNlN2E1MzAyN2JlZi4uZjEyODRkZDYy
Y2Q1ZTZjOGViNTNlNzdiMTZkZjYxY2U1NTIyYWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYwNSw2ICsyNjA1LDggQEAK
IAkJOTMxNTNCREExNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkQ5MTQxODFG
N0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovOyB9OwogCQk5MzE1M0JEQzE0MTk1
OUJDMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JEQjE0MTk1OUJCMDBGQ0Y1QkUg
LyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovOyB9OwogCQk5MzE1M0JFMjE0MTk1QTU3MDBG
Q0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMxNTNCRTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFn
ZS5wbmcgKi87IH07CisJCTkzMTZEREZCMjQwQzY0QjQwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNkRERjgy
NDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTMxNkRFMDAyNDBDNjRGOTAwOTM0MEFBIC8qIEJv
dW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMxQkNDNjExMTI0REZD
QjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzMUNCRDBEMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0
ZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MUNCRDA3MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzFDQkQwRjE2MUE0NEU5
MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFDQkQwOTE2MUE0NEU5MDBFNEM4NzQg
LyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNjMzLDYgKzEwNjM1LDEwIEBACiAJCTkzMTUz
QkQ5MTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIm1p
c3NpbmdJbWFnZUAyeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE1M0JE
QjE0MTk1OUJCMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0g
dGV4dEFyZWFSZXNpemVDb3JuZXIucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzE1M0JFMTE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBuZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG1p
c3NpbmdJbWFnZS5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTZEREY4MjQw
QzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTaW1wbGVSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzE2
RERGQTI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5MzE2RERGRDI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCb3VuZGFyeVBvaW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNkRERkUyNDBDNjRGODAwOTM0MEFBIC8q
IEJvdW5kYXJ5UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm91bmRh
cnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzFBRTNCODFGQjgwRUFF
MDBGNUVGQjIgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUJD
QzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDYW5TdGFydExpc3RlbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUNCRDA2MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxp
bmdTdGF0ZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Ny
b2xsaW5nU3RhdGVOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDI0
LDYgKzI4MDMwLDggQEAKIAkJCQk4NTAzMUIyNjBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5s
b2FkRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjI3MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVV
bmxvYWRFdmVudC5oICovLAogCQkJCTdDMUU4Q0ZGMUVEMEMyQkUwMEIxRDk4MyAvKiBCZWZvcmVV
bmxvYWRFdmVudC5pZGwgKi8sCisJCQkJOTMxNkRERkQyNDBDNjRGODAwOTM0MEFBIC8qIEJvdW5k
YXJ5UG9pbnQuY3BwICovLAorCQkJCTkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFy
eVBvaW50LmggKi8sCiAJCQkJN0MxRThEMDAxRUQwQzJCRTAwQjFEOTgzIC8qIENhbGxiYWNrUmVz
dWx0LmggKi8sCiAJCQkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5j
cHAgKi8sCiAJCQkJNjU1MEI2OTQwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oICov
LApAQCAtMjg0MTgsNiArMjg0MjYsOCBAQAogCQkJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAv
KiBTaGFkb3dSb290LmlkbCAqLywKIAkJCQk0NkRGRjQ5NjFEQzI2MDEzMDBCODBCNDggLyogU2hh
ZG93Um9vdE1vZGUuaCAqLywKIAkJCQk0NkRGRjQ5NzFEQzI2MDEzMDBCODBCNDggLyogU2hhZG93
Um9vdE1vZGUuaWRsICovLAorCQkJCTkzMTZEREZBMjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVS
YW5nZS5jcHAgKi8sCisJCQkJOTMxNkRERjgyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdl
LmggKi8sCiAJCQkJNTcyQTdGMjIxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNw
cCAqLywKIAkJCQk1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAq
LywKIAkJCQkzMTc0MUFBQjE2NjM1RTQ1MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25z
LmggKi8sCkBAIC0yOTIyOCw2ICsyOTIzOCw3IEBACiAJCQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1
OTY1IC8qIEJvcmRlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4OTU1NkVEMThENEE0NDAw
MDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVEQjBFODFC
N0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzMTZERTAw
MjQwQzY0RjkwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RUQ4QzM3QTE4M0JGRjhDMDA5RTUzQkQgLyogQm94U2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMzA5RERCMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkUxRjQzRjFENjI1NEUxMDA5NDYyNUMgLyogQnJlYWtMaW5lcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTU0OSw2ICszMTU2MCw3IEBACiAJCQkJQTE3RDI3NUUxRUFD
NTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDOTAyN0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNz
aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzk2RjVFQzgxQjU4NzIyNjAwOTFF
QTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5MEY2NTU2MUIyMjUzQkUwMDIxNjNB
MSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMzk2LDYgKzMy
NDA4LDcgQEAKIAkJCQkxMTJCMzRENTFFNjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91
dFBhZ2luYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RTlCMTE5MTgxMDkxNkYwMDNBQ0NE
RiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4MkNC
MDUzMUE3OEExNEIwMEFGRkNDNCAvKiBTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzMTZEREZCMjQwQzY0QjQwMDkzNDBBQSAvKiBTaW1w
bGVSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVBMUVBN0QxNTJCQ0YwODAwNEQwMEI2IC8q
IFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTdGMjExQzZF
NTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTc0
MUFBRDE2NjM2NjA5MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKQEAgLTMyODAzLDcgKzMyODE2LDYgQEAKIAkJCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0
NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4
RjYwODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MjRCNDY1MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRT
aXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc1OUU5NDAxNEVGMUNGODAwMjZB
MkREIC8qIFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc1OUU5NDMxNEVGMUNGODAw
MjZBMkREIC8qIFRleHRUcmFja0N1ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91
bmRhcnlQb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdlMGYzNjQwN2U3N2VlOGJjZDUwOTU5OGRiYWM0
MGQzNDhjYTQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFy
eVBvaW50LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnQuaCIKKworI2luY2x1ZGUgIk5vZGUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitCb3VuZGFyeVBvaW50OjpCb3VuZGFyeVBvaW50KGNvbnN0
IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQorICAgIDogY29udGFpbmVyKG90aGVyLmNvbnRhaW5lci5j
b3B5UmVmKCkpCisgICAgLCBvZmZzZXQob3RoZXIub2Zmc2V0KQoreworfQorCitCb3VuZGFyeVBv
aW50JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oY29uc3QgQm91bmRhcnlQb2ludCYgb3RoZXIp
Cit7CisgICAgY29udGFpbmVyID0gb3RoZXIuY29udGFpbmVyLmNvcHlSZWYoKTsKKyAgICBvZmZz
ZXQgPSBvdGhlci5vZmZzZXQ7CisgICAgcmV0dXJuICp0aGlzOworfQorCitCb3VuZGFyeVBvaW50
JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oQm91bmRhcnlQb2ludCYmKSA9IGRlZmF1bHQ7CisK
K0RvY3VtZW50JiBCb3VuZGFyeVBvaW50Ojpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNvbnRhaW5lci0+ZG9jdW1lbnQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0JvdW5kYXJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjE1MTRlYzNiNjBlYzFiZjlmNDE5YWY3N2JhNDEzYzkzOThkYjA2NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1JlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3Mg
Tm9kZTsKKworc3RydWN0IEJvdW5kYXJ5UG9pbnQgeworICAgIFJlZjxOb2RlPiBjb250YWluZXI7
CisgICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OworCisgICAgQm91bmRhcnlQb2ludChSZWY8Tm9k
ZT4mJiwgdW5zaWduZWQpOworCisgICAgLy8gVW5saWtlIFJlZiwgd2UgYWxsb3cgY29weWluZyBh
IEJvdW5kYXJ5UG9pbnQgd2l0aG91dCBhbiBleHBsaWNpdCBjb3B5UmVmKCkuCisgICAgQm91bmRh
cnlQb2ludChjb25zdCBCb3VuZGFyeVBvaW50Jik7CisgICAgQm91bmRhcnlQb2ludChCb3VuZGFy
eVBvaW50JiYpID0gZGVmYXVsdDsKKyAgICBCb3VuZGFyeVBvaW50JiBvcGVyYXRvcj0oY29uc3Qg
Qm91bmRhcnlQb2ludCYpOworICAgIEJvdW5kYXJ5UG9pbnQmIG9wZXJhdG9yPShCb3VuZGFyeVBv
aW50JiYpOworCisgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7Cit9OworCitib29sIG9w
ZXJhdG9yPT0oY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKKwor
aW5saW5lIEJvdW5kYXJ5UG9pbnQ6OkJvdW5kYXJ5UG9pbnQoUmVmPE5vZGU+JiYgY29udGFpbmVy
LCB1bnNpZ25lZCBvZmZzZXQpCisgICAgOiBjb250YWluZXIoV1RGTW92ZShjb250YWluZXIpKQor
ICAgICwgb2Zmc2V0KG9mZnNldCkKK3sKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBvaW50JiBiKQoreworICAgIHJldHVy
biBhLmNvbnRhaW5lci5wdHIoKSA9PSBiLmNvbnRhaW5lci5wdHIoKSAmJiBhLm9mZnNldCA9PSBi
Lm9mZnNldDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjNhZDlhODdiZWYw
YWEwODIwMDQ3ZjVhMmU2MTJiMzg4OWRhMDBjOC4uMWYxZDRhNjNmMjI4YzM5NTA3N2UxMTUxYTlh
MTcwNjE5OWE2NWQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNzUyLDcgKzI3NTIs
NyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIaWdobGlnaHRQb3NpdGlvbnMoKQogICAgICAgICAg
ICAgZm9yIChhdXRvJiByYW5nZURhdGEgOiBoaWdobGlnaHQudmFsdWUtPnJhbmdlc0RhdGEoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChyYW5nZURhdGEtPnN0YXJ0UG9zaXRpb24gJiYgcmFuZ2VE
YXRhLT5lbmRQb3NpdGlvbikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgaWYgKCZyYW5nZURhdGEtPnJhbmdlLT5zdGFydENvbnRhaW5lcigpLT50cmVlU2Nv
cGUoKSAhPSAmcmFuZ2VEYXRhLT5yYW5nZS0+ZW5kQ29udGFpbmVyKCktPnRyZWVTY29wZSgpKQor
ICAgICAgICAgICAgICAgIGlmICgmcmFuZ2VEYXRhLT5yYW5nZS0+c3RhcnRDb250YWluZXIoKS50
cmVlU2NvcGUoKSAhPSAmcmFuZ2VEYXRhLT5yYW5nZS0+ZW5kQ29udGFpbmVyKCkudHJlZVNjb3Bl
KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHJhbmdl
c0RhdGEuYXBwZW5kKG1ha2VXZWFrUHRyKHJhbmdlRGF0YS5wdHIoKSkpOwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlkZjk5Yzg1YmYxZTg1
NzFkYmVhYTU5YWNkZTg1YTA1NWUzOTc2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgorCisjaW5jbHVkZSAi
UmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaW1wbGVSYW5nZTo6U2ltcGxlUmFu
Z2UoY29uc3QgQm91bmRhcnlQb2ludCYgc3RhcnQsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGVuZCkK
KyAgICA6IHN0YXJ0KHN0YXJ0KQorICAgICwgZW5kKGVuZCkKK3sKK30KKworU2ltcGxlUmFuZ2U6
OlNpbXBsZVJhbmdlKEJvdW5kYXJ5UG9pbnQmJiBzdGFydCwgQm91bmRhcnlQb2ludCYmIGVuZCkK
KyAgICA6IHN0YXJ0KFdURk1vdmUoc3RhcnQpKQorICAgICwgZW5kKFdURk1vdmUoZW5kKSkKK3sK
K30KKworU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlJiBvdGhlcikKKyAgICA6
IHN0YXJ0KG90aGVyLnN0YXJ0Q29udGFpbmVyKCksIG90aGVyLnN0YXJ0T2Zmc2V0KCkpCisgICAg
LCBlbmQob3RoZXIuZW5kQ29udGFpbmVyKCksIG90aGVyLmVuZE9mZnNldCgpKQoreworfQorCiti
b29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBi
KQoreworICAgIHJldHVybiBhLnN0YXJ0ID09IGIuc3RhcnQgJiYgYS5lbmQgPT0gYi5lbmQ7Cit9
CisKK1JlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkK
K3sKKyAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShyYW5nZS5zdGFydC5kb2N1bWVudCgpLCByYW5n
ZS5zdGFydC5jb250YWluZXIucHRyKCksIHJhbmdlLnN0YXJ0Lm9mZnNldCwgcmFuZ2UuZW5kLmNv
bnRhaW5lci5wdHIoKSwgcmFuZ2UuZW5kLm9mZnNldCk7Cit9CisKK1JlZlB0cjxSYW5nZT4gY3Jl
YXRlTGl2ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCit7CisgICAg
aWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZUxp
dmVSYW5nZSgqcmFuZ2UpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY2NWM5YjhhNDk1NzNiZjVlZDdiZGZiYTg5Mzk3MTA5MjEzOTNhNTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCb3VuZGFyeVBvaW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmFuZ2U7CisKK3N0cnVjdCBTaW1wbGVS
YW5nZSB7CisgICAgQm91bmRhcnlQb2ludCBzdGFydDsKKyAgICBCb3VuZGFyeVBvaW50IGVuZDsK
KworICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuY29udGFp
bmVyLmdldCgpOyB9CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBz
dGFydC5vZmZzZXQ7IH0KKyAgICBOb2RlJiBlbmRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBl
bmQuY29udGFpbmVyLmdldCgpOyB9CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gZW5kLm9mZnNldDsgfQorCisgICAgYm9vbCBjb2xsYXBzZWQoKSBjb25zdCB7IHJldHVy
biBzdGFydCA9PSBlbmQ7IH0KKworICAgIFNpbXBsZVJhbmdlKGNvbnN0IEJvdW5kYXJ5UG9pbnQm
LCBjb25zdCBCb3VuZGFyeVBvaW50Jik7CisgICAgU2ltcGxlUmFuZ2UoQm91bmRhcnlQb2ludCYm
LCBCb3VuZGFyeVBvaW50JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UoY29u
c3QgUmFuZ2UmKTsKKworICAgIC8vIENvbnZlbmllbmNlIG92ZXJsb2FkcyB0byBoZWxwIHdpdGgg
dHJhbnNpdGlvbiBmcm9tIHVzaW5nIGEgbG90IG9mIGxpdmUgcmFuZ2VzLiBDb25zaWRlciByZW1v
dmluZyB0aGVzZSBldmVudHVhbGx5LgorICAgIFNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlKik7IC8v
IENyYXNoZXMgaWYgcGFzc2VkIGEgbnVsbHB0ci4KKyAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8
UmFuZ2U+Jik7Cit9OworCitib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25z
dCBTaW1wbGVSYW5nZSYpOworCitXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IGNyZWF0ZUxpdmVS
YW5nZShjb25zdCBTaW1wbGVSYW5nZSYpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBj
cmVhdGVMaXZlUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CisKK2lubGluZSBT
aW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlKQorICAgIDogU2ltcGxl
UmFuZ2UoKnJhbmdlKQoreworfQorCitpbmxpbmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNv
bnN0IFJlZjxSYW5nZT4mIHJhbmdlKQorICAgIDogU2ltcGxlUmFuZ2UocmFuZ2UuZ2V0KCkpCit7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuY3BwCmluZGV4IDgxMzZkYTE5MzMwYTAy
Y2E5NTM0ZGQ0MGNiZjAzYWVmNWRiOTE3OWYuLjViYzYyZjE3NDE0YTg2YmU0MDI4MWEzY2JlZjI3
ZmVkY2E0ODNhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwzNSArMjYsMzQg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgogCi0jaW5j
bHVkZSAiRE9NRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RhdGljUmFuZ2U6OlN0YXRpY1JhbmdlKFJl
ZjxOb2RlPiYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgUmVmPE5vZGU+
JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgOiBtX3N0YXJ0Q29udGFp
bmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQotICAgICwgbV9zdGFydE9mZnNldChzdGFydE9m
ZnNldCkKLSAgICAsIG1fZW5kQ29udGFpbmVyKFdURk1vdmUoZW5kQ29udGFpbmVyKSkKLSAgICAs
IG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKK1N0YXRpY1JhbmdlOjpTdGF0aWNSYW5nZShTaW1wbGVS
YW5nZSYmIHJhbmdlKQorICAgIDogU2ltcGxlUmFuZ2UoV1RGTW92ZShyYW5nZSkpCiB7CiB9CiAK
LVN0YXRpY1JhbmdlOjp+U3RhdGljUmFuZ2UoKSA9IGRlZmF1bHQ7Ci0KLVJlZjxTdGF0aWNSYW5n
ZT4gU3RhdGljUmFuZ2U6OmNyZWF0ZShSZWY8Tm9kZT4mJiBzdGFydENvbnRhaW5lciwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIFJlZjxOb2RlPiYmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zm
c2V0KQorUmVmPFN0YXRpY1JhbmdlPiBTdGF0aWNSYW5nZTo6Y3JlYXRlKFNpbXBsZVJhbmdlJiYg
cmFuZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGljUmFuZ2UoV1RGTW92ZShz
dGFydENvbnRhaW5lciksIHN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKGVuZENvbnRhaW5lciksIGVuZE9m
ZnNldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRpY1JhbmdlKFdURk1vdmUocmFu
Z2UpKSk7CiB9CiAKLVJlZjxTdGF0aWNSYW5nZT4gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5n
ZShjb25zdCBSYW5nZSYgcmFuZ2UpCitzdGF0aWMgYm9vbCBpc0RvY3VtZW50VHlwZU9yQXR0cihO
b2RlJiBub2RlKQogewotICAgIHJldHVybiBTdGF0aWNSYW5nZTo6Y3JlYXRlKHJhbmdlLnN0YXJ0
Q29udGFpbmVyKCksIHJhbmdlLnN0YXJ0T2Zmc2V0KCksIHJhbmdlLmVuZENvbnRhaW5lcigpLCBy
YW5nZS5lbmRPZmZzZXQoKSk7Ci19CisgICAgLy8gQmVmb3JlIGNhbGxpbmcgbm9kZVR5cGUsIGRv
IHR3byBmYXN0IG5vbi12aXJ0dWFsIGNoZWNrcyB0aGF0IGNvdmVyIGFsbW9zdCBhbGwgbm9ybWFs
IG5vZGVzLCBidXQgYXJlIGZhbHNlIGZvciBEb2N1bWVudFR5cGUgYW5kIEF0dHIuCisgICAgaWYg
KGlzPENvbnRhaW5lck5vZGU+KG5vZGUpIHx8IGlzPFRleHQ+KG5vZGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0RvY3VtZW50VHlwZU9yQXR0cihOb2Rl
JiBub2RlKQotewotICAgIHJldHVybiBub2RlLmlzRG9jdW1lbnRUeXBlTm9kZSgpIHx8IG5vZGUu
aXNBdHRyaWJ1dGVOb2RlKCk7CisgICAgLy8gQ2FsbCBub2RlVHlwZSBleHBsaWNpdGx5IGFuZCB1
c2UgYSBzd2l0Y2ggc28gd2UgZG9uJ3QgaGF2ZSB0byBjYWxsIGl0IHR3aWNlLgorICAgIHN3aXRj
aCAobm9kZS5ub2RlVHlwZSgpKSB7CisgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKKyAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogRXhjZXB0aW9u
T3I8UmVmPFN0YXRpY1JhbmdlPj4gU3RhdGljUmFuZ2U6OmNyZWF0ZShJbml0JiYgaW5pdCkKQEAg
LTYzLDI3ICs2Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTdGF0aWNSYW5nZT4+IFN0YXRpY1Jhbmdl
OjpjcmVhdGUoSW5pdCYmIGluaXQpCiAgICAgQVNTRVJUKGluaXQuZW5kQ29udGFpbmVyKTsKICAg
ICBpZiAoaXNEb2N1bWVudFR5cGVPckF0dHIoKmluaXQuc3RhcnRDb250YWluZXIpIHx8IGlzRG9j
dW1lbnRUeXBlT3JBdHRyKCppbml0LmVuZENvbnRhaW5lcikpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkTm9kZVR5cGVFcnJvciB9OwotICAgIHJldHVybiBTdGF0aWNSYW5nZTo6
Y3JlYXRlKGluaXQuc3RhcnRDb250YWluZXIucmVsZWFzZU5vbk51bGwoKSwgaW5pdC5zdGFydE9m
ZnNldCwgaW5pdC5lbmRDb250YWluZXIucmVsZWFzZU5vbk51bGwoKSwgaW5pdC5lbmRPZmZzZXQp
OwotfQotCi1Ob2RlKiBTdGF0aWNSYW5nZTo6c3RhcnRDb250YWluZXIoKSBjb25zdAotewotICAg
IHJldHVybiAoTm9kZSopbV9zdGFydENvbnRhaW5lci5wdHIoKTsKLX0KLQotTm9kZSogU3RhdGlj
UmFuZ2U6OmVuZENvbnRhaW5lcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChOb2RlKiltX2VuZENv
bnRhaW5lci5wdHIoKTsKLX0KLQotYm9vbCBTdGF0aWNSYW5nZTo6Y29sbGFwc2VkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9zdGFydE9mZnNldCA9PSBtX2VuZE9mZnNldCAmJiBtX3N0YXJ0Q29u
dGFpbmVyLnB0cigpID09IG1fZW5kQ29udGFpbmVyLnB0cigpOwotfQotCi1ib29sIFN0YXRpY1Jh
bmdlOjpvcGVyYXRvcj09KGNvbnN0IFN0YXRpY1JhbmdlJiBvdGhlcikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gKG1fc3RhcnRPZmZzZXQgPT0gb3RoZXIuc3RhcnRPZmZzZXQoKSAmJiBtX2VuZE9mZnNl
dCA9PSBvdGhlci5lbmRPZmZzZXQoKSAmJiBtX3N0YXJ0Q29udGFpbmVyLT5pc0VxdWFsTm9kZShv
dGhlci5zdGFydENvbnRhaW5lcigpKSAmJiBtX2VuZENvbnRhaW5lci0+aXNFcXVhbE5vZGUob3Ro
ZXIuZW5kQ29udGFpbmVyKCkpKTsKKyAgICByZXR1cm4gY3JlYXRlKHsgeyBpbml0LnN0YXJ0Q29u
dGFpbmVyLnJlbGVhc2VOb25OdWxsKCksIGluaXQuc3RhcnRPZmZzZXQgfSwgeyBpbml0LmVuZENv
bnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBpbml0LmVuZE9mZnNldCB9IH0pOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdGF0aWNSYW5nZS5oCmluZGV4IGY4MGQ4NWU1Mjg2OGVjNTQwYWM0ZmMzYTQxYjZm
OGI1Y2FkZWQ2YjUuLmExOGRhZGE1NWQxNWMzYzdmNDBkN2RkZDYyODE3MzI0ZDk0MmQxMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ1ICsyNiwyNSBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRl
ICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgTm9kZTsKLWNsYXNzIFJhbmdlOwotCi1jbGFzcyBTdGF0aWNS
YW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpY1JhbmdlPiB7CitjbGFzcyBTdGF0aWNSYW5n
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpY1JhbmdlPiwgcHVibGljIFNpbXBsZVJhbmdlIHsK
IHB1YmxpYzoKLSAgICB+U3RhdGljUmFuZ2UoKTsKLQotICAgIHN0YXRpYyBSZWY8U3RhdGljUmFu
Z2U+IGNyZWF0ZUZyb21SYW5nZShjb25zdCBSYW5nZSYpOwotICAgIHN0YXRpYyBSZWY8U3RhdGlj
UmFuZ2U+IGNyZWF0ZShSZWY8Tm9kZT4mJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIFJlZjxOb2RlPiYmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKLQog
ICAgIHN0cnVjdCBJbml0IHsKICAgICAgICAgUmVmUHRyPE5vZGU+IHN0YXJ0Q29udGFpbmVyOwot
ICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0T2Zmc2V0IHsgMCB9OworICAgICAgICB1bnNpZ25l
ZCBzdGFydE9mZnNldCB7IDAgfTsKICAgICAgICAgUmVmUHRyPE5vZGU+IGVuZENvbnRhaW5lcjsK
LSAgICAgICAgdW5zaWduZWQgbG9uZyBlbmRPZmZzZXQgeyAwIH07CisgICAgICAgIHVuc2lnbmVk
IGVuZE9mZnNldCB7IDAgfTsKICAgICB9OwogCiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxT
dGF0aWNSYW5nZT4+IGNyZWF0ZShJbml0JiYpOwotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KLSAgICBOb2RlKiBzdGFydENvbnRhaW5l
cigpIGNvbnN0OwotICAgIE5vZGUqIGVuZENvbnRhaW5lcigpIGNvbnN0OwotICAgIGJvb2wgY29s
bGFwc2VkKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0YXRpY1Jh
bmdlJikgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdGF0aWNSYW5nZT4gY3JlYXRlKFNpbXBsZVJh
bmdlJiYpOwogCiBwcml2YXRlOgotICAgIFN0YXRpY1JhbmdlKFJlZjxOb2RlPiYmIHN0YXJ0Q29u
dGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgUmVmPE5vZGU+JiYgZW5kQ29udGFpbmVyLCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwotCi0gICAgUmVmPE5vZGU+IG1fc3RhcnRDb250YWluZXI7Ci0g
ICAgdW5zaWduZWQgbV9zdGFydE9mZnNldDsKLSAgICBSZWY8Tm9kZT4gbV9lbmRDb250YWluZXI7
Ci0gICAgdW5zaWduZWQgbV9lbmRPZmZzZXQ7CisgICAgU3RhdGljUmFuZ2UoU2ltcGxlUmFuZ2Um
Jik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFuZ2Uu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY1JhbmdlLmlkbAppbmRleCAzMGIwYTE3ZTQ5
MDA1MGY1NDc3ZWY5Yjk5M2EzZDg0NzU3NWZjMTc3Li5kOGI5NDc5Y2Y3ZDhhNGZhYzk0ZTcwZmYz
Y2NmODdhZjYyOTJjZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljUmFu
Z2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNSYW5nZS5pZGwKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlLCBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsOCArMzgsOCBA
QAogfTsKIAogZGljdGlvbmFyeSBTdGF0aWNSYW5nZUluaXQgewotICByZXF1aXJlZCBOb2RlIHN0
YXJ0Q29udGFpbmVyOwotICByZXF1aXJlZCB1bnNpZ25lZCBsb25nIHN0YXJ0T2Zmc2V0OwotICBy
ZXF1aXJlZCBOb2RlIGVuZENvbnRhaW5lcjsKLSAgcmVxdWlyZWQgdW5zaWduZWQgbG9uZyBlbmRP
ZmZzZXQ7CisgICAgcmVxdWlyZWQgTm9kZSBzdGFydENvbnRhaW5lcjsKKyAgICByZXF1aXJlZCB1
bnNpZ25lZCBsb25nIHN0YXJ0T2Zmc2V0OworICAgIHJlcXVpcmVkIE5vZGUgZW5kQ29udGFpbmVy
OworICAgIHJlcXVpcmVkIHVuc2lnbmVkIGxvbmcgZW5kT2Zmc2V0OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggNWRhYjdiYTEw
MWEwMTg1ZGNkMjc5YzdjNjNjYTk0NjA4YjA3MjZmMS4uN2RkYjBhYjI1MjE5NDkzMjA1NThlZDQx
MTg0YjUxMGNhOTYwZWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKQEAgLTM4OCw3ICszODgsNyBAQCBWZWN0b3I8UmVmUHRyPFN0YXRp
Y1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiAgICAg
aWYgKCFmaXJzdFJhbmdlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHsgMSwg
U3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmlyc3RSYW5nZSkgfTsKKyAgICByZXR1cm4g
eyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlKCpmaXJzdFJhbmdlKSB9OwogfQogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJp
bmRpbmdzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAppbmRleCAwNDFmOWQxMTdkNmEwMWViMmM1ODVhOGIy
MTRkMzNkY2U4ZDg4MDBmLi5hZDc4MjMyYThhMjA4NjdjZDU5OTFiM2QyZjgwYjNmNGQ0YjZmNjBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGJvb2wgUmVwbGFjZVJhbmdlV2l0aFRl
eHRDb21tYW5kOjp3aWxsQXBwbHlDb21tYW5kKCkKIAogdm9pZCBSZXBsYWNlUmFuZ2VXaXRoVGV4
dENvbW1hbmQ6OmRvQXBwbHkoKQogewotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0g
Km1fcmFuZ2VUb0JlUmVwbGFjZWQ7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24geyAq
bV9yYW5nZVRvQmVSZXBsYWNlZCB9OwogCiAgICAgaWYgKCFtX3JhbmdlVG9CZVJlcGxhY2VkKQog
ICAgICAgICByZXR1cm47CkBAIC04OSw3ICs4OSw3IEBAIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFJl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0
CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1h
bmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6
OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRvQmVSZXBsYWNlZCkgfTsKKyAgICByZXR1cm4geyAx
LCBTdGF0aWNSYW5nZTo6Y3JlYXRlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3ZGIzZjliNDVkOGIzZjc2NzZlMzBmOTdl
MDc2YTVlYTk4MzgyMzdlLi41MTMzMTQ1MzkzZDE3M2E1NzlkMGE1MGMwYmZmMWM4ZTM1YWQ4MzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIFNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQ6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQoUmFuZ2UmIHJhbmdlVG9CZUNvcnJl
Y3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQogICAgIDogQ29tcG9zaXRlRWRpdENvbW1h
bmQocmFuZ2VUb0JlQ29ycmVjdGVkLnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgRWRpdEFj
dGlvbjo6SW5zZXJ0UmVwbGFjZW1lbnQpCiAgICAgLCBtX3JhbmdlVG9CZUNvcnJlY3RlZChyYW5n
ZVRvQmVDb3JyZWN0ZWQpCi0gICAgLCBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQobV9yYW5nZVRv
QmVDb3JyZWN0ZWQpCisgICAgLCBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQobV9yYW5nZVRvQmVD
b3JyZWN0ZWQuZ2V0KCkpCiAgICAgLCBtX2NvcnJlY3Rpb24oY29ycmVjdGlvbikKIHsKIH0KQEAg
LTEyNCw3ICsxMjQsNyBAQCBTdHJpbmcgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRF
dmVudERhdGEoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4geyAx
LCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVkKSB9Owor
ICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGUobV9yYW5nZVRvQmVDb3JyZWN0ZWQp
IH07CiB9CiAKIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6
OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKaW5kZXggMDFmNTNkYmEwM2JlYWM3OTdkNzZhYThhZTU2NmQyZmQxMjVj
ODIzZC4uYzRkODBmYjU1MDhmMWUyNmM2ODkxODUzODJhZWZjMGNmZGI5YTIyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC00OTksNyArNDk5LDcgQEAgYm9v
bCBUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFu
ZCBjb21tYW5kVHlwZSwgVGV4dEcKICAgICBpZiAoIXJhbmdlIHx8IGlzRWRpdGluZ1RleHRBcmVh
T3JUZXh0SW5wdXQoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5
RWRpdGluZygqdGhpcywgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJpbmRp
bmdzKCkpOwogCi0gICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygq
dGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkgfSk7CisgICAg
cmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBTdGF0
aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkgfSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRU
eXBpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRl
eCBmMzI3Y2IzMDMwMWI2ODAyOTFhMzg5ZTkxOTM5MzJiNmI4ZDk2MTE4Li4wZDIxY2MwODRlZWY2
ZWE2MDA3ZjYxNzU1ZDJmOGNjOWExODQ1NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCi0jaW5jbHVkZSAiU3RhdGljUmFuZ2UuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CkBAIC04OCwyMiArODgsMTMgQEAgVmlzaWJsZVNlbGVjdGlvbjo6Vmlz
aWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIGJhc2UsIGNvbnN0IFZpc2libGVQ
b3MKICAgICB2YWxpZGF0ZSgpOwogfQogCi1WaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0
aW9uKGNvbnN0IFJhbmdlJiByYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGlzRGlyZWN0
aW9uYWwpCi0gICAgOiBtX2Jhc2UocmFuZ2Uuc3RhcnRQb3NpdGlvbigpKQotICAgICwgbV9leHRl
bnQocmFuZ2UuZW5kUG9zaXRpb24oKSkKK1Zpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rp
b24oY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNE
aXJlY3Rpb25hbCkKKyAgICA6IG1fYmFzZShjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oJnJh
bmdlLnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLnN0YXJ0T2Zmc2V0KCkpKQorICAgICwgbV9leHRl
bnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZyYW5nZS5lbmRDb250YWluZXIoKSwgcmFu
Z2UuZW5kT2Zmc2V0KCkpKQogICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKICAgICAsIG1faXNE
aXJlY3Rpb25hbChpc0RpcmVjdGlvbmFsKQogewotICAgIHZhbGlkYXRlKCk7Ci19Ci0KLVZpc2li
bGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgU3RhdGljUmFuZ2UmIHN0YXRpY1Jh
bmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKLSAgICA6IG1fYmFz
ZShjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2Uuc3RhcnRDb250YWluZXIo
KSwgc3RhdGljUmFuZ2Uuc3RhcnRPZmZzZXQoKSkpCi0gICAgLCBtX2V4dGVudChjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24oc3RhdGljUmFuZ2UuZW5kQ29udGFpbmVyKCksIHN0YXRpY1Jhbmdl
LmVuZE9mZnNldCgpKSkKLSAgICAsIG1fYWZmaW5pdHkoYWZmaW5pdHkpCi0gICAgLCBtX2lzRGly
ZWN0aW9uYWwoaXNEaXJlY3Rpb25hbCkKLXsKLSAgICBBU1NFUlQoJnN0YXRpY1JhbmdlLnN0YXJ0
Q29udGFpbmVyKCktPnRyZWVTY29wZSgpID09ICZzdGF0aWNSYW5nZS5lbmRDb250YWluZXIoKS0+
dHJlZVNjb3BlKCkpOworICAgIEFTU0VSVCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKS50cmVlU2Nv
cGUoKSA9PSAmcmFuZ2UuZW5kQ29udGFpbmVyKCkudHJlZVNjb3BlKCkpOwogICAgIHZhbGlkYXRl
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKaW5kZXgg
MmQ0MmQ4ZjdlZjFmYTIxZjI4OTAzM2ZhZDZiODMxZWEwYzNlM2RkYy4uZDQ5ZjEyMGI2NWQwNmE5
ZDY4NWVhZDUwMzNhMmU5MTJmM2IxY2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlU2VsZWN0aW9uLmgKQEAgLTMxLDcgKzMxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUG9zaXRpb247Ci1jbGFzcyBTdGF0aWNSYW5nZTsKKworc3RydWN0IFNpbXBsZVJhbmdl
OwogCiBjb25zdCBFQWZmaW5pdHkgU0VMX0RFRkFVTFRfQUZGSU5JVFkgPSBET1dOU1RSRUFNOwog
ZW51bSBTZWxlY3Rpb25EaXJlY3Rpb24gOiB1aW50OF90IHsgRGlyZWN0aW9uRm9yd2FyZCwgRGly
ZWN0aW9uQmFja3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH07CkBAIC00NCwx
MCArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9u
JiwgRUFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAgICAgVmlzaWJsZVNl
bGVjdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5ID0gU0VM
X0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKLQotICAgIFdF
QkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgUmFuZ2UmLCBFQWZmaW5pdHkgPSBT
RUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgU3RhdGljUmFuZ2UmLCBFQWZmaW5p
dHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwot
ICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFu
Z2UmLCBFQWZmaW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFs
ID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogICAgIFdFQkNPUkVf
RVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggODBhYmJlMmQ5MGU3YjMyMDNkNWUwOGMw
MjIzZDA5YTJlOGFmZGU1Yi4uMjkxODI0NjVkOGNmMjkzOWNiMjE2MDI0OWZlYTJhZTExZWExN2M3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNTAsNiArNTAs
NyBAQAogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oIgogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2ltcG9ydCAi
U2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgogI2ltcG9ydCAiV2Vi
Q29udGVudFJlYWRlci5oIgogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgi
CkBAIC01OSw4ICs2MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKLQogdm9pZCBFZGl0b3I6OnNob3dGb250UGFuZWwoKQogewogICAgIGF1
dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAppbmRleCBiOWM3OTg4ZmM0ZWQ3MzY1MmNjMjg3Y2U1ODE5NTVhOGQwNDQyOGQ1Li40
M2NiYzRjOWI0M2I1ZjU3MGZlNGQ5ODliYzQwZjg5MzZjOTNjMDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNWR0FF
bGVtZW50LmgiCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorCiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRh
dGFUcmFuc2Zlci5oIgpAQCAtNzksNiArODAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5j
bHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNs
dWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcAppbmRleCAyYjkzOTBjMWM2M2I1YTA4YzYyOWJiMjgwMGIzOTg1OTA1MGUw
MjUyLi4yZDIxMTA0YjMyMWU2M2NiOGM4NTk3OTUyOTJmMDJiMWZjYWZlZjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKIApAQCAtODIsNyArODMsNyBAQCBS
ZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKGNvbnN0
IFJhbmdlJiByYW5nZSwgVGV4dEluZAogICAgIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMuYWRk
KFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyk7CiAgICAg
dGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucy5hZGQoVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpF
bmFibGVBcHBlYXJhbmNlVXBkYXRlcyk7CiAjZW5kaWYKLSAgICBUZW1wb3JhcnlTZWxlY3Rpb25D
aGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZSwgeyByYW5nZSB9LCB0ZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25zKTsKKyAgICBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdl
KCpmcmFtZSwgeyBTaW1wbGVSYW5nZSB7IHJhbmdlIH0gfSwgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0
aW9ucyk7CiAKICAgICBUZXh0SW5kaWNhdG9yRGF0YSBkYXRhOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggY2JlNTQxMDE3ZDBmZjMxYzE5MGQ1MGQ0
NGEwZWY2NDgxZWI5MjBlMS4uMDFiMWZkYjRlZmFkYjk3NWVkNWM0NzMwOWJjNDVmMDViMGFmYWQw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtNjQs
NiArNjQsNyBAQAogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5j
bHVkZSAiV2hlZWxFdmVudERlbHRhRmlsdGVyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RN
b25pdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyMWY3NDhjZjVmZGMzNDdh
NmYxYzQxMjI3YzRiOGVlYjlkNzA0ODMxLi5hODc2MjFkZmYxMDgyMTRkMTU3ZDg3Yjc4NWI2MTMw
NWYyOTJhNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CkBAIC0xMDM4LDcgKzEwMzgsNiBAQCBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6
Y29sbGVjdE1hcmtlZFRleHRzRm9yRG9jdW1lbnRNYXJrZXJzKFRleHRQYWludAogICAgIHJldHVy
biBtYXJrZWRUZXh0czsKIH0KIAotCiBWZWN0b3I8TWFya2VkVGV4dD4gSW5saW5lVGV4dEJveDo6
Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhUZXh0UGFpbnRQaGFzZSBwaGFzZSkgY29u
c3QKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
aGlnaGxpZ2h0QVBJRW5hYmxlZCgpKQpAQCAtMTA1OSwxNyArMTA1OCwxNyBAQCBWZWN0b3I8TWFy
a2VkVGV4dD4gSW5saW5lVGV4dEJveDo6Y29sbGVjdE1hcmtlZFRleHRzRm9ySGlnaGxpZ2h0cyhU
ZXh0UGFpbnRQaGFzZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAoYXV0byYg
cmFuZ2VEYXRhIDogaGlnaGxpZ2h0LnZhbHVlLT5yYW5nZXNEYXRhKCkpIHsKICAgICAgICAgICAg
IGlmIChyYW5nZURhdGEtPnN0YXJ0UG9zaXRpb24gJiYgcmFuZ2VEYXRhLT5lbmRQb3NpdGlvbikg
ewotICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0UG9zID0gcmFuZ2VEYXRhLT5zdGFydFBv
c2l0aW9uLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgUG9zaXRpb24gZW5kUG9zID0gcmFuZ2VE
YXRhLT5lbmRQb3NpdGlvbi52YWx1ZSgpOwotICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
c3RhcnRSZW5kZXJlciA9IHN0YXJ0UG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0g
ICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKTsKLSAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0g
ZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICAgICAgaW50
IGVuZE9mZnNldCA9IGVuZFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA+PSAwICYmIGVuZE9mZnNldCA+PSAwKTsKKyAgICAg
ICAgICAgICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcmFuZ2VEYXRhLT5zdGFydFBvc2l0
aW9uLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgUG9zaXRpb24gZW5kUG9zaXRpb24gPSByYW5n
ZURhdGEtPmVuZFBvc2l0aW9uLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgYXV0byogc3RhcnRS
ZW5kZXJlciA9IHN0YXJ0UG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHN0YXJ0UG9zaXRpb24uZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBlbmRSZW5kZXJlciA9
IGVuZFBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gZW5kUG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0UmVuZGVyZXIgfHwgIWVuZFJlbmRlcmVy
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgICAgIGF1dG8g
aGlnaGxpZ2h0RGF0YSA9IEhpZ2hsaWdodERhdGEocmVuZGVyZXIoKS52aWV3KCkpOwotICAgICAg
ICAgICAgICAgIGhpZ2hsaWdodERhdGEuc2V0UmVuZGVyUmFuZ2Uoe3N0YXJ0UmVuZGVyZXIsIGVu
ZFJlbmRlcmVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZW5kT2Zmc2V0KX0pOworICAgICAgICAgICAgICAgIGhpZ2hsaWdodERhdGEu
c2V0UmVuZGVyUmFuZ2UoeyBzdGFydFJlbmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCB9KTsKICAgICAgICAgICAgICAgICBhdXRvIFtoaWdobGlnaHRTdGFydCwgaGln
aGxpZ2h0RW5kXSA9IGhpZ2hsaWdodFN0YXJ0RW5kKGhpZ2hsaWdodERhdGEpOwogICAgICAgICAg
ICAgICAgIGlmIChoaWdobGlnaHRTdGFydCA8IGhpZ2hsaWdodEVuZCkKICAgICAgICAgICAgICAg
ICAgICAgbWFya2VkVGV4dHMuYXBwZW5kKHsgaGlnaGxpZ2h0U3RhcnQsIGhpZ2hsaWdodEVuZCwg
TWFya2VkVGV4dDo6SGlnaGxpZ2h0LCBudWxscHRyLCBoaWdobGlnaHQua2V5IH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKaW5kZXggY2YxYzAzYWFhNTlkZTg0Y2U4M2E0OTgz
NTAxZDRlY2U5MmRjMmU3Yy4uMWFmYWU1ZWJiZjVlNjNkOWJlZGYzMDM5ZGY0NDUxYzliNTUzYTYz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZy
YW1lJiBmcmFtZSwgY29uc3QgRWRpdGluCiAgICAgaWYgKCFwYXJhZ3JhcGhSYW5nZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBXZWJDb3JlOjpDb250YWluZXJOb2RlJiByb290Tm9k
ZSA9IHBhcmFncmFwaFJhbmdlLmdldCgpLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJv
b3ROb2RlKCk7CisgICAgYXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhSYW5nZS5nZXQoKS0+c3Rh
cnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwogICAgIGludCBwYXJhZ3JhcGhT
dGFydEluZGV4ID0gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChXZWJDb3JlOjpS
YW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9kZSwgMCwgJnBhcmFncmFw
aFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRPZmZzZXQoKSku
cHRyKCkpOwogICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIHN0YXRpY19jYXN0
PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOwogfQpAQCAtNzYsOCArNzYsOCBAQCBFZGl0
aW5nUmFuZ2UgRWRpdGluZ1JhbmdlOjpmcm9tUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBj
b25zdCBXZWJDb3JlOjpSYW5nZQogewogICAgIEFTU0VSVChlZGl0aW5nUmFuZ2VJc1JlbGF0aXZl
VG8gPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpOwogCi0gICAgc2l6
ZV90IGxvY2F0aW9uOwotICAgIHNpemVfdCBsZW5ndGg7CisgICAgc2l6ZV90IGxvY2F0aW9uID0g
MDsKKyAgICBzaXplX3QgbGVuZ3RoID0gMDsKICAgICBpZiAoIXJhbmdlIHx8ICFXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKGZyYW1lLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZSwgbG9jYXRp
b24sIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IDc3MDkyNzNjYmY4MzNlMGNlOGFiZTU1
Yzg2ODgwOTYwY2UxNjJkYzMuLjIyMGVmZWQ1OGVkMTU3NzllNzViOWM0OGMxNzA3MTdmZmUyZGYw
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcAppbmRleCBjOTcwMTdhODhiZmY4ZWQ3NDkzNmNmZjE4ZDdmNzU5ODQwYmQ0
NmEzLi5jNTJhZjY1OWIxMGE5MDY0ODlkZDhhMTkzNjA3MjAyNmU4Y2JjMzZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBA
IC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
dWdpbkRvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2luZG93Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM2
ZjEzNjc1OGRmZDRmYzkyYzQxOTZjNzljZTk4MmViOGYzODNmYzYuLjlkZTQ2ZDczZDE1YmRkMjRj
YmQ2ZGQ1YTkzNWY2Y2M4ODhjMWM4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMjYsNiArMjI2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFkb3dSb290Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1N1YmZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJzdGl0dXRlRGF0YS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQppbmRleCAwYWU0ZWFmZDhmNDExOWFhYjUzMGFlMTM2YWM5MGMwNTVjNDc1MjM1Li5jNzkwNjNm
MDhhYmRkZDMwN2ZlNWRkNTM0MmYyNGJkNzZiNDIyZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtODYsNiArODYsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlSW5o
ZXJpdGVkRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCmluZGV4IDg4MWJkZjQ0NTc0ODJkOTkw
MGUxMTYzODExZjk3ZjI3ZjRjNzNjYzcuLjU4N2MzNGVjY2YwYmY4YmRjNzRjN2IwZGMwNGYwMDA5
NDAxY2QwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lSU9TLm1tCkBAIC00NCw2ICs0NCw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlclRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyZWREb2N1bWVudE1hcmtlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZWxlY3Rpb25SZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Np
bXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRCb3VuZGFyaWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRGbGFncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlUG9zaXRpb24u
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggMjQwN2YxMDY5YjU3ZmJmNjU5NDg4
NzU0MTI4Y2U4ZmFiMWVjYmJmOS4uODA2ZGEwYmZiMDdkYWU5Y2I3MzY0OGEyYWYwZmZmNGQyOTMz
N2NjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTU0LDYgKzU0LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Q
cml2YXRlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQppbmRleCA3NDAwMzUzYjFmNTk4YjIxMDhkOTk1MDJmNjhiZTQ0M2VhNDY1
NGMyLi5iZjJhZTI4NjhmMmRiYjQ3ZjU4NzBmOGRjZWU2ZTkzOGU2OGZjZThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEwMCw2ICsxMDAsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TbWFydFJlcGxhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1N1YmZyYW1lTG9hZGVyLmg+CkBAIC04MDYsOCArODA3LDggQEAgLSAo
TlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooV2ViQ29yZTo6UmFuZ2UgKilyYW5nZQogICAgIGlm
ICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIAot
ICAgIHNpemVfdCBsb2NhdGlvbjsKLSAgICBzaXplX3QgbGVuZ3RoOworICAgIHNpemVfdCBsb2Nh
dGlvbiA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgaWYgKCFXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBy
YW5nZSwgbG9jYXRpb24sIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsKIAo=
</data>
<flag name="review"
          id="408280"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>