<?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>211389</bug_id>
          
          <creation_ts>2020-05-04 10:32:42 -0700</creation_ts>
          <short_desc>Remove HAVE(IOSURFACE) checks in Cocoa-platform-specific code</short_desc>
          <delta_ts>2020-05-04 18:01:22 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1648610</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-04 10:32:42 -0700</bug_when>
    <thetext>Remove HAVE(IOSURFACE) checks in Cocoa-platform-specific code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648678</commentid>
    <comment_count>1</comment_count>
      <attachid>398401</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-04 12:44:50 -0700</bug_when>
    <thetext>Created attachment 398401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648689</commentid>
    <comment_count>2</comment_count>
      <attachid>398403</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-04 12:54:57 -0700</bug_when>
    <thetext>Created attachment 398403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648769</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2020-05-04 15:10:40 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #0)
&gt; Remove HAVE(IOSURFACE) checks in Cocoa-platform-specific code

Is this true even for the simulator nowadays? (I&apos;m assuming yes since ios-sim is green).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648789</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-04 15:54:12 -0700</bug_when>
    <thetext>The relevant quote from PlatformHave.h is:

#if PLATFORM(COCOA)
#define HAVE_IOSURFACE 1
#endif

I was going based on that. Not changing anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648808</commentid>
    <comment_count>5</comment_count>
      <attachid>398403</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-05-04 16:24:06 -0700</bug_when>
    <thetext>Comment on attachment 398403
Patch

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

&gt; Source/WebKit/ChangeLog:35
&gt; +        Merged #if expressions into a single one.

I went back to ChangeLog to understand why. Since this is in Cocoa directory, when is HAVE(IOSURFACE) false here?

&gt; Tools/DumpRenderTree/ios/PixelDumpSupportIOS.mm:-58
&gt; -    // TODO: &lt;rdar://problem/6558366&gt; DumpRenderTree: Investigate testRepaintSweepHorizontally and dumpSelectionRect
&gt; -    BEGIN_BLOCK_OBJC_EXCEPTIONS;

I&apos;m not sure if/how the TODO is related to BEGIN_BLOCK_OBJC_EXCEPTIONS. In fact, they were added at different times. Perhaps it should stay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648812</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-05-04 16:29:02 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #5)
&gt; Comment on attachment 398403 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398403&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:35
&gt; &gt; +        Merged #if expressions into a single one.
&gt; 
&gt; I went back to ChangeLog to understand why. Since this is in Cocoa
&gt; directory, when is HAVE(IOSURFACE) false here?

Used to be false in the Sim, right? But no longer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648813</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-05-04 16:29:44 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #6)
&gt; (In reply to Alexey Proskuryakov from comment #5)
&gt; &gt; Comment on attachment 398403 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=398403&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:35
&gt; &gt; &gt; +        Merged #if expressions into a single one.
&gt; &gt; 
&gt; &gt; I went back to ChangeLog to understand why. Since this is in Cocoa
&gt; &gt; directory, when is HAVE(IOSURFACE) false here?
&gt; 
&gt; Used to be false in the Sim, right? But no longer.

Oh, undersea already said that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648862</commentid>
    <comment_count>8</comment_count>
      <attachid>398403</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-04 17:37:32 -0700</bug_when>
    <thetext>Comment on attachment 398403
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/ChangeLog:35
&gt;&gt;&gt;&gt; +        Merged #if expressions into a single one.
&gt;&gt;&gt; 
&gt;&gt;&gt; I went back to ChangeLog to understand why. Since this is in Cocoa directory, when is HAVE(IOSURFACE) false here?
&gt;&gt; 
&gt;&gt; Used to be false in the Sim, right? But no longer.
&gt; 
&gt; Oh, undersea already said that.

OK, will go further on this.

&gt;&gt; Tools/DumpRenderTree/ios/PixelDumpSupportIOS.mm:-58
&gt;&gt; -    BEGIN_BLOCK_OBJC_EXCEPTIONS;
&gt; 
&gt; I&apos;m not sure if/how the TODO is related to BEGIN_BLOCK_OBJC_EXCEPTIONS. In fact, they were added at different times. Perhaps it should stay?

Yes, they are not related.

I removed the two for two different reasons, and forgot to mention one in the change log.

I removed the &quot;TODO&quot; comment because there is no real reason to have a comment in the code. It’s OK to have a bug about perhaps implementing this some day, but I don’t think the comment in the code helps enough to be worth it. The real driver is the skipped tests, not the comment in the code. Also, these are features of pixel tests. I’m thinking that pixel tests of legacy WebKit are not a very high priority for future enhancement.

If you don’t agree, I would be happy to bring the TODO back (although I will say FIXME instead).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648864</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-04 17:37:53 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #7)
&gt; Oh, undersea already said that.

Thanks, autocorrect!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648872</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-04 18:00:43 -0700</bug_when>
    <thetext>Committed r261133: &lt;https://trac.webkit.org/changeset/261133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648873</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-04 18:01:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/62870016&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398401</attachid>
            <date>2020-05-04 12:44:50 -0700</date>
            <delta_ts>2020-05-04 12:54:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211389-20200504124449.patch</filename>
            <type>text/plain</type>
            <size>47258</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRiNDVhMTkzYjFlZDVk
MGQ5NzBhNzZjMTdkOGFmNGIxYTg4MjdkNS4uMjk4YTc0ODczNjRhMGYxYzBhODBkN2UyYjg5YmU4
OTlmZTBlZjE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA1LTA0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgSEFWRShJT1NVUkZB
Q0UpIGNoZWNrcyBpbiBDb2NvYS1wbGF0Zm9ybS1zcGVjaWZpYyBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvY29jb2EvTWVtb3J5UmVs
ZWFzZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1SZWxlYXNlTWVtb3J5KTog
UmVtb3ZlIEhBVkUoSU9TVVJGQUNFKSBzaW5jZSBpdCdzIGFsd2F5cyB0cnVlCisgICAgICAgIG9u
IENvY29hIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFj
ZSBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YWxsb2NhdGVJT1N1cmZhY2VCYWNraW5nU3RvcmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVGcmFtZWJ1ZmZl
clRleHR1cmVCYWNraW5nU3RvcmVGcm9tTGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbTogRGl0dG8uCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExh
eWVyIGRpc3BsYXldKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1h
Z2VUcmFuc2ZlclNlc3Npb25WVC5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpZQ2JDclRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weUltYWdlVG9QbGF0Zm9y
bVRleHR1cmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1Rl
eHR1cmVDb3BpZXJDVi5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MuaDogRGl0dG8uCisKIDIwMjAtMDUtMDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxl
LmNvbT4KIAogICAgICAgICBNZWRpYSBjb250cm9scyB0cmFja3MgbWVudSBzaG93cyAiQXV0byIg
c2VsZWN0ZWQgaW5zdGVhZCBvZiB0cmFjayBzZWxlY3RlZCB2aWEgdGhlIEpTIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKaW5kZXggODJlM2ZlNzgzYmQ2MTA3NGE0OGFmZmFhNGU3NGNjODA5ZmEwMjFiMy4u
YWNkZWVmYmYwNjVlYmFjZTRjMWI3OWEzNmIwMGM0MzhkYTdlODEwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDUtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBIQVZFKElPU1VSRkFDRSkgY2hlY2tzIGluIENvY29h
LXBsYXRmb3JtLXNwZWNpZmljIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTM4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6IFJlbW92ZSBI
QVZFKElPU1VSRkFDRSkuCisKIDIwMjAtMDUtMDEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVh
ZEBzb255LmNvbT4KIAogICAgICAgICBVc2UgZXhwb3J0IG1hY3JvcyBvbiBhbGwgcGxhdGZvcm1z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDc0NjJmZGQ3ZDAxM2MzNmVhNzMyZmFmZDEwODA5MDMyYTU4NGZkNTUuLmUw
YTg2ZDc0YjA2NzQxOGE2MjQ2Y2MxN2JjYWRhNDk5Njk1NzE2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMjAtMDUtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSBIQVZFKElPU1VSRkFDRSkgY2hlY2tzIGluIENvY29hLXBsYXRmb3JtLXNw
ZWNpZmljIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMTM4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZSk6IFJlbW92ZSBIQVZF
KElPU1VSRkFDRSkgc2luY2UKKyAgICAgICAgdGhpcyBpcyBDb2NvYS1zcGVjaWZpYyBjb2RlLgor
ICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNr
aW5nU3RvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmNsZWFyQmFja2luZ1N0b3JlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Ynl0ZXNQZXJQaXhlbCBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9u
dEJ1ZmZlcik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGlzcGxheSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5KTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cmZh
Y2VCdWZmZXJGb3JtYXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hv
dF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50b0ltYWdl
T2ZXaWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkpOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChX
ZWJLaXQ6OnJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2luZ1N0b3JlKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1hcEFsbElPU3VyZmFjZUJhY2tpbmdT
dG9yZSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuaDoKKyAgICAgICAgTWVyZ2VkICNpZiBleHByZXNzaW9ucyBpbnRvIGEgc2luZ2xlIG9u
ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJQcml2YXRlOjpzYW1wbGVCdWZm
ZXJVcGRhdGVkKTogUmVtb3ZlIEhBVkUoSU9TVVJGQUNFKQorICAgICAgICBzaW5jZSB0aGlzIGlz
IENvY29hLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpyZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6cmVtb3Rl
VmlkZW9TYW1wbGVBdmFpbGFibGUpOiBEaXR0by4KKwogMjAyMC0wNS0wNCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNwZWN1bGF0aXZl
IGJ1aWxkIGZpeCBmb3IgcjI2MTA3MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvUXVhcnR6Q29yZVNQSS5oCmluZGV4IDUzM2Y3MGRkZjg1YmQxZmJiZWNiMjY3NjU3NGI5
NzA5ODVlM2ZiNDMuLjJkZmU2YTQ3NWVmN2YyOGU4YjZkOTFhMmJhODU0OWVkYTc1MDg5NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgK
QEAgLTE2NywyMiArMTY3LDggQEAgV1RGX0VYVEVSTl9DX0JFR0lOCiAvLyBGSVhNRTogRGVjbGFy
ZSB0aGVzZSBmdW5jdGlvbnMgZXZlbiB3aGVuIFVTRShBUFBMRV9JTlRFUk5BTF9TREspIGlzIHRy
dWUgb25jZSB3ZSBjYW4gZml4IDxyZGFyOi8vcHJvYmxlbS8yNjU4NDgyOD4gaW4gYSBiZXR0ZXIg
d2F5LgogI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogdm9pZCBDQVJlbmRlclNlcnZlckNh
cHR1cmVMYXllcldpdGhUcmFuc2Zvcm0obWFjaF9wb3J0X3QsIHVpbnQzMl90IGNsaWVudElkLCB1
aW50NjRfdCBsYXllcklkLCB1aW50MzJfdCBzbG90SWQsIGludDMyX3Qgb3gsIGludDMyX3Qgb3ks
IGNvbnN0IENBVHJhbnNmb3JtM0QqKTsKLQotI2lmIEhBVkUoSU9TVVJGQUNFKQogdm9pZCBDQVJl
bmRlclNlcnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShtYWNoX3BvcnRfdCBzZXJ2ZXJfcG9y
dCwgdWludDMyX3QgY2xpZW50X2lkLCB1aW50NjRfdCBsYXllcl9pZCwgSU9TdXJmYWNlUmVmLCBp
bnQzMl90IG94LCBpbnQzMl90IG95LCBjb25zdCBDQVRyYW5zZm9ybTNEKik7CiB2b2lkIENBUmVu
ZGVyU2VydmVyUmVuZGVyRGlzcGxheUxheWVyV2l0aFRyYW5zZm9ybUFuZFRpbWVPZmZzZXQobWFj
aF9wb3J0X3QsIENGU3RyaW5nUmVmIGRpc3BsYXlfbmFtZSwgdWludDMyX3QgY2xpZW50X2lkLCB1
aW50NjRfdCBsYXllcl9pZCwgSU9TdXJmYWNlUmVmLCBpbnQzMl90IG94LCBpbnQzMl90IG95LCBj
b25zdCBDQVRyYW5zZm9ybTNEKiwgQ0ZUaW1lSW50ZXJ2YWwpOwotI2Vsc2UKLXR5cGVkZWYgc3Ry
dWN0IENBUmVuZGVyU2VydmVyQnVmZmVyKiBDQVJlbmRlclNlcnZlckJ1ZmZlclJlZjsKLUNBUmVu
ZGVyU2VydmVyQnVmZmVyUmVmIENBUmVuZGVyU2VydmVyQ3JlYXRlQnVmZmVyKHNpemVfdCwgc2l6
ZV90KTsKLXZvaWQgQ0FSZW5kZXJTZXJ2ZXJEZXN0cm95QnVmZmVyKENBUmVuZGVyU2VydmVyQnVm
ZmVyUmVmKTsKLXNpemVfdCBDQVJlbmRlclNlcnZlckdldEJ1ZmZlcldpZHRoKENBUmVuZGVyU2Vy
dmVyQnVmZmVyUmVmKTsKLXNpemVfdCBDQVJlbmRlclNlcnZlckdldEJ1ZmZlckhlaWdodChDQVJl
bmRlclNlcnZlckJ1ZmZlclJlZik7Ci1zaXplX3QgQ0FSZW5kZXJTZXJ2ZXJHZXRCdWZmZXJSb3dC
eXRlcyhDQVJlbmRlclNlcnZlckJ1ZmZlclJlZik7Ci11aW50OF90KiBDQVJlbmRlclNlcnZlckdl
dEJ1ZmZlckRhdGEoQ0FSZW5kZXJTZXJ2ZXJCdWZmZXJSZWYpOwotc2l6ZV90IENBUmVuZGVyU2Vy
dmVyR2V0QnVmZmVyRGF0YVNpemUoQ0FSZW5kZXJTZXJ2ZXJCdWZmZXJSZWYpOwotCi1ib29sIENB
UmVuZGVyU2VydmVyUmVuZGVyTGF5ZXJXaXRoVHJhbnNmb3JtKG1hY2hfcG9ydF90LCB1aW50MzJf
dCBjbGllbnRfaWQsIHVpbnQ2NF90IGxheWVyX2lkLCBDQVJlbmRlclNlcnZlckJ1ZmZlclJlZiwg
aW50MzJfdCBveCwgaW50MzJfdCBveSwgY29uc3QgQ0FUcmFuc2Zvcm0zRCopOwotI2VuZGlmCiAj
ZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogdHlwZWRlZiBzdHJ1Y3QgX0NBTWFj
aFBvcnQgKkNBTWFjaFBvcnRSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVt
b3J5UmVsZWFzZUNvY29hLm1tCmluZGV4IGIwM2Q2ODk1NjMzZjY1YTg1Mjk5ZmRhNmQ3OTRkYzIy
NTI5YTVlOTkuLmVkZjBiYmYxZGFjN2RhNWYwMTI1ODkzNjFhY2YwZTk3NWY3M2E3NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCkBAIC02
Nyw5ICs2Nyw3IEBAIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKQogICAgIHRp
bGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpLnRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCgw
KTsKICNlbmRpZgogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgSU9TdXJmYWNlUG9vbDo6c2hh
cmVkUG9vbCgpLmRpc2NhcmRBbGxTdXJmYWNlcygpOwotI2VuZGlmCiAKICNpZiBDQUNIRV9TVUJJ
TUFHRVMKICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCmlu
ZGV4IGVhZjUyZTMwY2Y1NTVjNzRkNmM1M2QzYmVhNzExYmJlMmFmMjMyYWUuLjEwY2IwYTAzNjFl
MDk4NDhjNDdhZGRkMWY1YzZlMzc0MDRhNjRhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQogCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKQEAgLTM2LDE3ICsz
NywxMiBAQAogI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0ZS5oPgogI2VuZGlmCiAKLSNp
ZiBIQVZFKElPU1VSRkFDRSkKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2VuZGlm
Ci0KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRlICJDb3Jl
VmlkZW9Tb2Z0TGluay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
UEFMOwogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IHRyYW5zZmVyQkdSQVBpeGVsQnVmZmVyVG9JT1N1cmZhY2UoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlcikKIHsKICNpZiBVU0UoQUNDRUxFUkFURSkKQEAgLTE0OCw3ICsx
NDQsNiBAQCBJT1N1cmZhY2VSZWYgUmVtb3RlVmlkZW9TYW1wbGU6OnN1cmZhY2UoKSBjb25zdAog
CiAgICAgcmV0dXJuIG1faW9TdXJmYWNlID8gbV9pb1N1cmZhY2UtPnN1cmZhY2UoKSA6IG51bGxw
dHI7CiB9Ci0jZW5kaWYKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAppbmRleCA1YWI4MmU1NGRiYmZjMjQ2N2MwOWNh
Nzc5ZjY0NGM2MmE2MDIxNWU3Li5mMjU2MTk3NmZmMzYwMmEyZjAxYjdhZTQ2NTAwZmI1ZGFkMWVh
ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVW
aWRlb1NhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZVZpZGVvU2FtcGxlLmgKQEAgLTI3LDE1ICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCiAKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNpbmNs
dWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvU2FtcGxlLmgiCiAjaW5j
bHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAK
LSNpZiBIQVZFKElPU1VSRkFDRSkKLSNpbmNsdWRlICJJT1N1cmZhY2UuaCIKLSNlbmRpZgotCiB0
eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NywxMSArNDQsOSBAQCBwdWJsaWM6CiAgICAgUmVtb3RlVmlkZW9TYW1w
bGUmIG9wZXJhdG9yPShSZW1vdGVWaWRlb1NhbXBsZSYmKSA9IGRlZmF1bHQ7CiAgICAgflJlbW90
ZVZpZGVvU2FtcGxlKCkgPSBkZWZhdWx0OwogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3Jl
YXRlKE1lZGlhU2FtcGxlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlhVGlt
ZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIElPU3VyZmFj
ZVJlZiBzdXJmYWNlKCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgIGNvbnN0IE1lZGlhVGltZSYgdGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZTsgfQogICAgIHVpbnQzMl90IHZpZGVvRm9ybWF0KCkg
Y29uc3QgeyByZXR1cm4gbV92aWRlb0Zvcm1hdDsgfQpAQCAtNjEsMTIgKzU2LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgewotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgICAgICBpZiAobV9p
b1N1cmZhY2UpCiAgICAgICAgICAgICBlbmNvZGVyIDw8IG1faW9TdXJmYWNlLT5jcmVhdGVTZW5k
UmlnaHQoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5jb2RlciA8PCBXVEY6Ok1hY2hT
ZW5kUmlnaHQoKTsKLSNlbmRpZgogICAgICAgICBlbmNvZGVyIDw8IG1fcm90YXRpb247CiAgICAg
ICAgIGVuY29kZXIgPDwgbV90aW1lOwogICAgICAgICBlbmNvZGVyIDw8IG1fdmlkZW9Gb3JtYXQ7
CkBAIC03NiwxMiArNjksMTEgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBSZW1vdGVWaWRlb1NhbXBsZSYgc2FtcGxlKQogICAgIHsKLSNpZiBIQVZFKElPU1VSRkFDRSkK
ICAgICAgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2VuZFJpZ2h0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgc2Ft
cGxlLm1fc2VuZFJpZ2h0ID0gV1RGTW92ZShzZW5kUmlnaHQpOwotI2VuZGlmCisKICAgICAgICAg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb247CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocm90YXRpb24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExLDEz
ICsxMDMsMTAgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLQotI2lmIEhBVkUoSU9TVVJG
QUNFKQogICAgIFJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNlUmVm
LCBNZWRpYVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RG
OjpNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwotI2VuZGlmCiAgICAgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gbV9yb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
IH07CiAgICAgTWVkaWFUaW1lIG1fdGltZTsKICAgICB1aW50MzJfdCBtX3ZpZGVvRm9ybWF0IHsg
MCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZTM0
OTdjZDBhM2NhNzY5ZmU2YTlmOGNjYTRkNTNiNDhjMDBlNzBmZi4uNDFiMWE2ZmE2ZjdmOTJlNTc1
ODJmNzhiYTJhOTcyNjUzMTcyNzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tCkBAIC03NzksMjEgKzc3OSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1cGRhdGVDR0xDb250ZXh0KCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YWxsb2NhdGVJT1N1cmZhY2VCYWNraW5nU3RvcmUoSW50U2l6ZSBzaXplKQogewotI2lmIEhB
VkUoSU9TVVJGQUNFKQogICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjph
bGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZSBhdCAlZCB4ICVkLiAoJXApIiwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpLCB0aGlzKTsKICAgICBbbV93ZWJHTExheWVyIGFsbG9jYXRlSU9T
dXJmYWNlQmFja2luZ1N0b3JlV2l0aFNpemU6c2l6ZSB1c2luZ0FscGhhOmNvbnRleHRBdHRyaWJ1
dGVzKCkuYWxwaGFdOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0jZW5kaWYKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dXBkYXRlRnJhbWVidWZmZXJUZXh0dXJl
QmFja2luZ1N0b3JlRnJvbUxheWVyKCkKIHsKLSNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBMT0co
V2ViR0wsICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dXBkYXRlRnJhbWVidWZmZXJUZXh0dXJl
QmFja2luZ1N0b3JlRnJvbUxheWVyKCkuICglcCkiLCB0aGlzKTsKICAgICBbbV93ZWJHTExheWVy
IGJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2VdOwotI2VuZGlmCiB9CisKICNl
bmRpZiAvLyBVU0UoQU5HTEUpCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzR0xF
UzJDb21wbGlhbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDM5MWZjMjNjZDBhOGY4NjlhY2MxMDczMmQx
NGZkZjQ1MGZjMjg1NTYuLmFjNmIxZTE3Nzg2ZDAyNWFhYTc4ZWE4OTU1OWVlMDJhYTczNjlhMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
SU9TdXJmYWNlLmgiCiAKLSNpZiBIQVZFKElPU1VSRkFDRSkKLQogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW1wb3J0
ICJIb3N0V2luZG93LmgiCkBAIC00OTksNSArNDk3LDMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSU9TdXJmYWNlJiBzdXJmYWNlKQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBv
b2xDb2NvYS5tbQppbmRleCA4MDE3NWRkZmUxNmNmNDA0MGNkNTI3ZjI2NzY4ODBhOTM1YWYyMTdi
Li5hMjFmNzY2NjQ0Y2E2YjgxNWVkMDEzMzc2M2FhM2M5NzFmZjgxYTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
UG9vbENvY29hLm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIklPU3VyZmFjZVBvb2wuaCIKIAotI2lmIEhBVkUoSU9TVVJGQUNFKQotCiAjaW1wb3J0IDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNSAr
NDEsMyBAQCB2b2lkIElPU3VyZmFjZVBvb2w6OnBsYXRmb3JtR2FyYmFnZUNvbGxlY3ROb3coKQog
fQogCiB9Ci0KLSNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAppbmRleCBjYjRjODJlMGUw
ODAxM2VmN2QzMGEyZDhhNGYxZTA0ZDZlOWU4MjBlLi42NTJlZjU0MjRmMDQ2OWM2MzExZjFhMTJk
MzE4MGI0YjAyZWU2YzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oCkBAIC00Nyw3ICs0Nyw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiB7CiAgICAgTmFrZWRQdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IF9jb250ZXh0OwogICAgIGZsb2F0IF9kZXZpY2VQaXhlbFJhdGlvOwot
I2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKSkKKyNpZiBV
U0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gX2NvbnRlbnRzQnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
T1N1cmZhY2U+IF9kcmF3aW5nQnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
T1N1cmZhY2U+IF9zcGFyZUJ1ZmZlcjsKQEAgLTcwLDcgKzcwLDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KIAogLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdp
dGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZTsKIAotI2lmIEhBVkUoSU9T
VVJGQUNFKSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKSkKKyNpZiBVU0UoT1BFTkdMKSB8
fCBVU0UoQU5HTEUpCiAtICh2b2lkKWFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlV2l0aFNp
emU6KFdlYkNvcmU6OkludFNpemUpc2l6ZSB1c2luZ0FscGhhOihCT09MKXVzaW5nQWxwaGE7CiAt
ICh2b2lkKWJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2U7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
Lm1tCmluZGV4IGE3YzUwYzcyMTU2OGQ5OTY2YzIwMmFhNjA2OGU1ZDU4ODU4ODMzYjMuLjY5ZWQ0
MzcwNWIxM2M4MDE3YWVhY2I2MTQxNzQzYWFjNzE4YTNmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMTU3LDcg
KzE1Nyw3IEBAIC0gKHZvaWQpZGlzcGxheQogICAgIH0KICNlbGlmIFVTRShPUEVOR0xfRVMpCiAg
ICAgX2NvbnRleHQtPnByZXNlbnRSZW5kZXJidWZmZXIoKTsKLSNlbGlmIEhBVkUoSU9TVVJGQUNF
KSAmJiBVU0UoQU5HTEUpCisjZWxpZiBVU0UoQU5HTEUpCiAgICAgaWYgKCFfY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpIHsKICAgICAgICAgLy8gQ29udGV4dCBpcyBsaWtlbHkgYmVpbmcg
dG9ybiBkb3duLgogICAgICAgICByZXR1cm47CkBAIC0yMTEsNyArMjExLDcgQEAgLSAodm9pZCly
ZWxlYXNlR0xSZXNvdXJjZXMKIH0KICNlbmRpZgogCi0jaWYgSEFWRShJT1NVUkZBQ0UpICYgKFVT
RShPUEVOR0wpIHx8IFVTRShBTkdMRSkpCisjaWYgVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKQog
LSAodm9pZClhbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZVdpdGhTaXplOihXZWJDb3JlOjpJ
bnRTaXplKXNpemUgdXNpbmdBbHBoYTooQk9PTCl1c2luZ0FscGhhCiB7CiAgICAgX2J1ZmZlclNp
emUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCmluZGV4IDM2NzRlMzY5OTQ1MWZiZjc2
M2FiMzU1YTU2NTE0YWE4ZjJkYWI1ZTAuLjRkOWY4MzFiZGFiYzUyYWMzYjBkNWE3OWQwNGVkM2Yw
OWFmYWY1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgKQEAgLTUzLDE0ICs1MywxNCBAQCBw
dWJsaWM6CiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdl
UmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3Jl
ZCA9IGZhbHNlKTsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENN
U2FtcGxlQnVmZmVyUmVmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZh
bHNlKTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisj
aWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxNZWRp
YVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxNZWRpYVNhbXBsZT4g
Y3JlYXRlTWVkaWFTYW1wbGUoY29uc3QgUmVtb3RlVmlkZW9TYW1wbGUmKTsKICNlbmRpZgogI2Vu
ZGlmCiAKLSNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoSU9TdXJmYWNlUmVmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIo
SU9TdXJmYWNlUmVmLCBjb25zdCBJbnRTaXplJik7CiAjZW5kaWYKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJbWFnZVRyYW5z
ZmVyU2Vzc2lvblZUKHVpbnQzMl90IHBpeGVsRm9ybWF0KTsKIAotI2lmIEhBVkUoSU9TVVJGQUNF
KSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQog
ICAgIENGRGljdGlvbmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhJ
T1N1cmZhY2VSZWYpOwogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQ01T
YW1wbGVCdWZmZXIoSU9TdXJmYWNlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXpl
Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCmluZGV4IDEzNmU5ZTAzY2JhY2U0
ZDZkZGU2ZDAwYjY3Njk4YTMzMDA2YmNkODcuLmE4NzQ2N2E2OTc4OTlmYTg4MDNiOWYxYjc2MTM4
YzEzMmZjNTBjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQpAQCAtMzUsNyArMzUsNyBA
QAogI2ltcG9ydCA8Q29yZU1lZGlhL0NNRm9ybWF0RGVzY3JpcHRpb24uaD4KICNpbXBvcnQgPENv
cmVNZWRpYS9DTVNhbXBsZUJ1ZmZlci5oPgogCi0jaWYgSEFWRShJT1NVUkZBQ0UpICYmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKKyNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgogI2VuZGlmCiAKQEAgLTI2OCw3ICsyNjgsNyBA
QCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNy
ZWF0ZUNNU2FtcGxlQnVmZmVyKENHSW1hZwogICAgIHJldHVybiBjcmVhdGVDTVNhbXBsZUJ1ZmZl
cihwaXhlbEJ1ZmZlci5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSk7CiB9CiAKLSNpZiBIQVZFKElP
U1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBpbnQzMl90IHJvdW5kVXBUb01hY3Jv
YmxvY2tNdWx0aXBsZShpbnQzMl90IHNpemUpCkBAIC0zNjcsNyArMzY3LDcgQEAgUmVmUHRyPE1l
ZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0TWVkaWFTYW1wbGUoTWVk
aWFTYW1wbGUmIHNhbXAKICAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUocmVz
aXplZEJ1ZmZlci5nZXQoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWly
cm9yZWQoKSk7CiB9CiAKLSNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQorI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRp
YVNhbXBsZShjb25zdCBSZW1vdGVWaWRlb1NhbXBsZSYgcmVtb3RlU2FtcGxlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29w
aWVyQ1YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0
dXJlQ29waWVyQ1YuY3BwCmluZGV4IDI3YWE4NzkwMDYzYTY5MWQ5NzIxMjM4YTI5OGQyOTkzYWU4
ZTQwOTguLjg0YzlhZmExOTBkNDJmMzM2MzhlZTRhODQwYTIzNWMwOTcxMTFkMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGll
ckNWLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1Rl
eHR1cmVDb3BpZXJDVi5jcHAKQEAgLTU3LDcgKzU3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiBlbnVtIGNsYXNzIFBpeGVsUmFuZ2UgewogICAgIFVu
a25vd24sCiAgICAgVmlkZW8sCkBAIC0zNzQsNyArMzczLDYgQEAgc3RhdGljIGNvbnN0IFZlY3Rv
cjxHTGZsb2F0PiBZQ2JDclRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKFBp
eGVsUmEKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbWF0cmljZXMuZ2V0KCkuZW5kKCkpOwogICAg
IHJldHVybiBpdGVyYXRvci0+c2Vjb25kOwogfQotI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQog
CiBWaWRlb1RleHR1cmVDb3BpZXJDVjo6VmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wmIGNvbnRleHQpCiAgICAgOiBtX3NoYXJlZENvbnRleHQoY29udGV4dCkKQEAg
LTgwMiw3ICs4MDAsNiBAQCBib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VUb1Bs
YXRmb3JtVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLCBzaQogICAgIH0KICNlbmRpZiAv
LyBVU0UoQU5HTEUpCiAKLSNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAvLyBGSVhNRTogVGhpcyBj
dXJyZW50bHkgb25seSBzdXBwb3J0cyAnNDIwdicgYW5kICc0MjBmJyBwaXhlbCBmb3JtYXRzLiBJ
bnZlc3RpZ2F0ZSBzdXBwb3J0aW5nIG1vcmUgcGl4ZWwgZm9ybWF0cy4KICAgICBPU1R5cGUgcGl4
ZWxGb3JtYXQgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKGltYWdlKTsKICAgICBp
ZiAocGl4ZWxGb3JtYXQgIT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZp
ZGVvUmFuZ2UgJiYgcGl4ZWxGb3JtYXQgIT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhC
aVBsYW5hckZ1bGxSYW5nZSkgewpAQCAtOTQ0LDkgKzk0MSw2IEBAIGJvb2wgVmlkZW9UZXh0dXJl
Q29waWVyQ1Y6OmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKENWUGl4ZWxCdWZmZXJSZWYgaW1h
Z2UsIHNpCiAgICAgbV9sYXN0RmxpcFkgPSBmbGlwWTsKIAogICAgIHJldHVybiB0cnVlOwotI2Vs
c2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCiB9CiAKIGJv
b2wgVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShUZXh0dXJlVHlwZSBpbnB1dFZpZGVvVGV4dHVyZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZLCBib29s
IHN3YXBDb2xvckNoYW5uZWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKaW5kZXggMTVkZTA2YTNmZTU5
NjU1YjQ2NDcwYmE3MWRlZGQ3Y2MzZDBiZGZmMS4uYTJkZDNmYzRkN2Q3MzVkMGVjZGJmOWU1ZDdi
MGM5YzAwYzQyMjc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCkBAIC02MiwxOSArNjIsMTIgQEAg
cHJpdmF0ZToKICAgICBib29sIGluaXRpYWxpemVDb250ZXh0T2JqZWN0cygpOwogICAgIGJvb2wg
aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAg
IHVuc2lnbmVkIGxhc3RUZXh0dXJlU2VlZChHQ0dMdWludCB0ZXh0dXJlKQogICAgIHsKLSAgICAg
ICAgYXV0byBpdGVyYXRvciA9IG1fbGFzdFRleHR1cmVTZWVkLmZpbmQodGV4dHVyZSk7Ci0gICAg
ICAgIHJldHVybiBpdGVyYXRvciA9PSBtX2xhc3RUZXh0dXJlU2VlZC5lbmQoKSA/IDAgOiBpdGVy
YXRvci0+dmFsdWU7CisgICAgICAgIHJldHVybiBtX2xhc3RUZXh0dXJlU2VlZC5nZXQodGV4dHVy
ZSk7CiAgICAgfQotI2VuZGlmCiAKICNpZiBVU0UoQU5HTEUpCi0jaWYgIUhBVkUoSU9TVVJGQUNF
KQotI2Vycm9yIFVTRShBTkdMRSkgcmVxdWlyZXMgSEFWRShJT1NVUkZBQ0UpCi0jZW5kaWYgLy8g
IUhBVkUoSU9TVVJGQUNFKQotCiAgICAgLy8gUmV0dXJucyBhIGhhbmRsZSB3aGljaCwgaWYgbm9u
LW51bGwsIG11c3QgYmUgcmVsZWFzZWQgdmlhIHRoZQogICAgIC8vIGRldGFjaCBjYWxsIGJlbG93
LgogICAgIHZvaWQqIGF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIHR5cGUsIElPU3VyZmFjZVJlZiwgR0NHTHVpbnQgcGxhbmUpOwpAQCAtMTA1LDE0
ICs5OCwxMiBAQCBwcml2YXRlOgogICAgIEdDR0xpbnQgbV95VGV4dHVyZVNpemVVbmlmb3JtTG9j
YXRpb24geyAtMSB9OwogICAgIEdDR0xpbnQgbV91dlRleHR1cmVTaXplVW5pZm9ybUxvY2F0aW9u
IHsgLTEgfTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIGJvb2wgbV9sYXN0RmxpcFkgeyBm
YWxzZSB9OwogICAgIFVuc2FmZVBvaW50ZXI8SU9TdXJmYWNlUmVmPiBtX2xhc3RTdXJmYWNlOwog
ICAgIHVpbnQzMl90IG1fbGFzdFN1cmZhY2VTZWVkIHsgMCB9OwogCiAgICAgdXNpbmcgVGV4dHVy
ZVNlZWRNYXAgPSBIYXNoTWFwPEdDR0x1aW50LCB1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPEdDR0x1
aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+OwogICAg
IFRleHR1cmVTZWVkTWFwIG1fbGFzdFRleHR1cmVTZWVkOwotI2VuZGlmCiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCmluZGV4IDdlMjA4YzJhYjlkNWE4
YTIwY2MyYTE4NDVlYmM3MjQ5MDQzODY0ZDIuLjRlZWIwNWY3ZWVhZjIyMDlmM2VkNDA5ZTUyYmIx
NDA3M2Y3OTk0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5o
CkBAIC0zMSw5ICszMSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVDb2NvYS5oIgogCiAjaWYg
VVNFKFNZU1RFTV9QUkVWSUVXKQotI2lmIEhBVkUoSU9TVVJGQUNFKQogI2luY2x1ZGUgIklPU3Vy
ZmFjZS5oIgotI2VuZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAg
LTE2OSwxMCArMTY3LDggQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAg
ICBSZXRhaW5QdHI8Q0lDb250ZXh0PiBtX2NpQ29udGV4dDsKLSNpZiBIQVZFKElPU1VSRkFDRSkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX2xhcmdlQmFkZ2VTdXJmYWNlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fc21hbGxCYWRnZVN1cmZhY2U7Ci0jZW5kaWYK
ICNlbmRpZgogCiAgICAgYm9vbCBtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2li
aWxpdHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggOTI1ODk4NTlhMzkxNTUxNTA3Njdi
NzlmMWM1OTA2YzAwODlmOGQ2NS4uODg2NzBmZjBmOGNhZTI5NzExNTJlNzIwN2VjMDU1OWJmMmE4
Y2YwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBMaWJXZWJSVEND
b2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZToKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5z
ZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSBzYW1wbGUudmlkZW9Gb3JtYXQoKSkKICAgICAg
ICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZShzYW1wbGUudmlkZW9Gb3JtYXQoKSk7CiAKLSNpZiBIQVZFKElPU1VSRkFDRSkg
JiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlUGl4ZWxC
dWZmZXIoc2FtcGxlLnN1cmZhY2UoKSk7CiAgICAgd2VicnRjOjplbmNvZGVMb2NhbEVuY29kZXJG
cmFtZShlbmNvZGVyLCBwaXhlbEJ1ZmZlci5nZXQoKSwgc2FtcGxlLnRpbWUoKS50b1RpbWVTY2Fs
ZSgxMDAwMDAwKS50aW1lVmFsdWUoKSwgdG9XZWJSVENWaWRlb1JvdGF0aW9uKHNhbXBsZS5yb3Rh
dGlvbigpKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQppbmRleCA1MzllMjNmZDQ2Y2Q0YWRlM2ZiNjkyOThkY2MzNDNiZTM2MTcy
ZTAyLi5jMjhjOWY0NjhlNThiZmMxZjEyMGU3YWRhOTk2ZjAzOWNhZjljNTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zOCwxMSArMzgsOCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1
YXJ0ekNvcmVTUEkuaD4KLQotI2lmIEhBVkUoSU9TVVJGQUNFKQogI2ltcG9ydCA8bWFjaC9tYWNo
X3BvcnQuaD4KLSNlbmRpZgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC03MCw5ICs2Nyw2IEBAIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjp+UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoKQogCiB2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUs
IGZsb2F0IHNjYWxlLCBib29sIGFjY2VsZXJhdGVzRHJhd2luZywgYm9vbCBkZWVwQ29sb3IsIGJv
b2wgaXNPcGFxdWUpCiB7Ci0jaWYgIUhBVkUoSU9TVVJGQUNFKQotICAgIGFjY2VsZXJhdGVzRHJh
d2luZyA9IGZhbHNlOwotI2VuZGlmCiAgICAgaWYgKG1fc2l6ZSA9PSBzaXplICYmIG1fc2NhbGUg
PT0gc2NhbGUgJiYgbV9kZWVwQ29sb3IgPT0gZGVlcENvbG9yICYmIG1fYWNjZWxlcmF0ZXNEcmF3
aW5nID09IGFjY2VsZXJhdGVzRHJhd2luZyAmJiBtX2lzT3BhcXVlID09IGlzT3BhcXVlKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTk1LDkgKzg5LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogewogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgp
OwogICAgIG1fYmFja0J1ZmZlci5kaXNjYXJkKCk7Ci0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAg
bV9zZWNvbmRhcnlCYWNrQnVmZmVyLmRpc2NhcmQoKTsKLSNlbmRpZgogfQogCiB2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApA
QCAtMTA3LDcgKzk5LDYgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fYWNjZWxlcmF0ZXNE
cmF3aW5nOwogICAgIGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKIAotI2lmIEhBVkUoSU9TVVJGQUNF
KQogICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2luZykgewogICAgICAgICBpZiAobV9mcm9udEJ1
ZmZlci5zdXJmYWNlKQogICAgICAgICAgICAgZW5jb2RlciA8PCBtX2Zyb250QnVmZmVyLnN1cmZh
Y2UtPmNyZWF0ZVNlbmRSaWdodCgpOwpAQCAtMTE1LDcgKzEwNiw2IEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ICAgICAgICBlbmNvZGVyIDw8IFdURjo6TWFjaFNlbmRSaWdodCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotI2VuZGlmCiAKICAgICBBU1NFUlQoIW1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKIApA
QCAtMTM4LDcgKzEyOCw2IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyQmFja2luZ1N0CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubV9pc09wYXF1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
I2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIGlmIChyZXN1bHQubV9hY2NlbGVyYXRlc0RyYXdpbmcp
IHsKICAgICAgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc2VuZFJpZ2h0KSkKQEAgLTE0Niw3ICsxMzUsNiBAQCBib29sIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllckJh
Y2tpbmdTdAogICAgICAgICByZXN1bHQubV9mcm9udEJ1ZmZlclNlbmRSaWdodCA9IFdURk1vdmUo
c2VuZFJpZ2h0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotI2VuZGlmCiAKICAgICBB
U1NFUlQoIXJlc3VsdC5tX2FjY2VsZXJhdGVzRHJhd2luZyk7CiAKQEAgLTE3Nyw3ICsxNjUsNiBA
QCBXZWJDb3JlOjpJbnRTaXplIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpiYWNraW5nU3RvcmVT
aXplKCkgY29uc3QKIAogdW5zaWduZWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmJ5dGVzUGVy
UGl4ZWwoKSBjb25zdAogewotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIHN3aXRjaCAoc3VyZmFj
ZUJ1ZmZlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6
UkdCQTogcmV0dXJuIDQ7CiAgICAgY2FzZSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVW
NDIyOiByZXR1cm4gMjsKQEAgLTE4Niw3ICsxNzMsNiBAQCB1bnNpZ25lZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6Ynl0ZXNQZXJQaXhlbCgpIGNvbnN0CiAgICAgY2FzZSBXZWJDb3JlOjpJT1N1
cmZhY2U6OkZvcm1hdDo6UkdCMTBBODogcmV0dXJuIDU7CiAjZW5kaWYKICAgICB9Ci0jZW5kaWYK
ICAgICByZXR1cm4gNDsKIH0KIApAQCAtMTk0LDcgKzE4MCw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogewogICAgIFdlYkNvcmU6Oklu
dFNpemUgZXhwYW5kZWRTY2FsZWRTaXplID0gYmFja2luZ1N0b3JlU2l6ZSgpOwogCi0jaWYgSEFW
RShJT1NVUkZBQ0UpCiAgICAgaWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7CiAgICAgICAgIGlm
ICghbV9iYWNrQnVmZmVyLnN1cmZhY2UgfHwgbV9iYWNrQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2Uo
KSkgewogICAgICAgICAgICAgc3RkOjpzd2FwKG1fYmFja0J1ZmZlciwgbV9zZWNvbmRhcnlCYWNr
QnVmZmVyKTsKQEAgLTIxMCw3ICsxOTUsNiBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Ojpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAgICAgICAgc2V0QnVmZmVyVm9sYXRpbGl0eShC
dWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2VuZGlm
CiAKICAgICBBU1NFUlQoIW1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKICAgICBzdGQ6OnN3YXAobV9m
cm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKQEAgLTI1NCw3ICsyMzgsNiBAQCBib29sIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIAogICAgIHN3YXBUb1ZhbGlkRnJvbnRCdWZm
ZXIoKTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2lu
ZykgewogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gYmFja0ltYWdlOwogICAgICAgICBp
ZiAobV9iYWNrQnVmZmVyLnN1cmZhY2UgJiYgIXdpbGxQYWludEVudGlyZUJhY2tpbmdTdG9yZSkK
QEAgLTI2OSw5ICsyNTIsNyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5
KCkKIAogICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5zdXJmYWNlLT5yZWxlYXNlR3JhcGhpY3ND
b250ZXh0KCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UKLSNlbmRpZgotICAgIHsKKyAgICB9IGVs
c2UgewogICAgICAgICBBU1NFUlQoIW1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1fZnJvbnRC
dWZmZXIuYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIApAQCAtNDAyLDcgKzM4Myw2
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXll
cihDQUxheWVyICpsYXllciwgTGF5ZXJDb250CiB7CiAgICAgbGF5ZXIuY29udGVudHNPcGFxdWUg
PSBtX2lzT3BhcXVlOwogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgaWYgKGFjY2VsZXJhdGVz
RHJhd2luZygpKSB7CiAgICAgICAgIHN3aXRjaCAoY29udGVudHNUeXBlKSB7CiAgICAgICAgIGNh
c2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZToKQEAgLTQxOSw3ICszOTksNiBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIoQ0FMYXll
ciAqbGF5ZXIsIExheWVyQ29udAogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0j
ZW5kaWYKIAogICAgIEFTU0VSVCghYWNjZWxlcmF0ZXNEcmF3aW5nKCkpOwogICAgIGxheWVyLmNv
bnRlbnRzID0gKF9fYnJpZGdlIGlkKW1fZnJvbnRCdWZmZXIuYml0bWFwLT5tYWtlQ0dJbWFnZUNv
cHkoKS5nZXQoKTsKQEAgLTQzMCw3ICs0MDksNiBAQCBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6dGFrZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCgpCiAg
ICAgcmV0dXJuIFdURk1vdmUobV9mcm9udENvbnRleHRQZW5kaW5nRmx1c2gpOwogfQogCi0jaWYg
SEFWRShJT1NVUkZBQ0UpCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJW
b2xhdGlsaXR5KEJ1ZmZlclR5cGUgdHlwZSwgYm9vbCBpc1ZvbGF0aWxlKQogewogICAgIC8vIFJl
dHVybiB2YWx1ZSBpcyB0cnVlIGlmIHdlIHN1Y2NlZWRlZCBpbiBtYWtpbmcgdm9sYXRpbGUuCkBA
IC00ODQsMjQgKzQ2MiwxNSBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZm
ZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGUgdHlwZSwgYm9vbCBpc1ZvbGF0aQogICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KLSNlbHNlCi1ib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRC
dWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGUsIGJvb2wpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0jZW5kaWYKIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyOjpkaXNjYXJk
KCkKIHsKLSNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBpZiAoc3VyZmFjZSkKICAgICAgICAgV2Vi
Q29yZTo6SU9TdXJmYWNlOjptb3ZlVG9Qb29sKFdURk1vdmUoc3VyZmFjZSkpOwogICAgIGlzVm9s
YXRpbGUgPSBmYWxzZTsKLSNlbmRpZgogICAgIGJpdG1hcCA9IG51bGxwdHI7CiB9CiAKLSNpZiBI
QVZFKElPU1VSRkFDRSkKIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzdXJmYWNlQnVmZmVyRm9ybWF0KCkgY29uc3QKIHsKICNpZiBIQVZFKElPU1VS
RkFDRV9SR0IxMCkKQEAgLTUxMSw2ICs0ODAsNSBAQCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1h
dCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VyZmFjZUJ1ZmZlckZvcm1hdCgpIGNvbnN0CiAK
ICAgICByZXR1cm4gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OlJHQkE7CiB9Ci0jZW5kaWYg
Ly8gSEFWRShJT1NVUkZBQ0UpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA5YWM4OWVlMmVl
YTE0MjI4ZGI2NTNlMWYwOTU0NGE5YmZlZDgwYmM3Li42MWM0ZjQyNmVkMjU2OGY4MmU4YTBiMGE1
ODZkYTkwNDY3MjM2MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQpAQCAtMTAwOSw3ICsxMDA5LDYgQEAgLSAoUmVmUHRyPFdlYktpdDo6
Vmlld1NuYXBzaG90PilfdGFrZVZpZXdTbmFwc2hvdAogCiAgICAgQ0FUcmFuc2Zvcm0zRCB0cmFu
c2Zvcm0gPSBDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSwg
MSk7CiAKLSNpZiBIQVZFKElPU1VSRkFDRSkKICNpZiBIQVZFKElPU1VSRkFDRV9SR0IxMCkKICAg
ICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBzbmFwc2hvdEZvcm1hdCA9IFdlYkNvcmU6OnNj
cmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcigpID8gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6
OlJHQjEwIDogV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OlJHQkE7CiAjZWxzZQpAQCAtMTAz
NCwxNiArMTAzMyw2IEBAIC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3
U25hcHNob3QKICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKIAogICAgIHJl
dHVybiBXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOwotI2Vs
c2UgLy8gSEFWRShJT1NVUkZBQ0UpCi0gICAgdWludDMyX3Qgc2xvdElEID0gW1dlYktpdDo6Vmll
d1NuYXBzaG90U3RvcmU6OnNuYXBzaG90dGluZ0NvbnRleHQoKSBjcmVhdGVJbWFnZVNsb3Q6c25h
cHNob3RTaXplIGhhc0FscGhhOllFU107Ci0KLSAgICBpZiAoIXNsb3RJRCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBDQVJlbmRlclNlcnZlckNhcHR1cmVMYXllcldpdGhUcmFuc2Zv
cm0oTUFDSF9QT1JUX05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5jb250ZXh0SWQsICh1aW50NjRf
dClzZWxmLmxheWVyLCBzbG90SUQsIDAsIDAsICZ0cmFuc2Zvcm0pOwotICAgIFdlYkNvcmU6Oklu
dFNpemUgaW1hZ2VTaXplID0gV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0
U2l6ZShzbmFwc2hvdFNpemUpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNy
ZWF0ZShzbG90SUQsIGltYWdlU2l6ZSwgKGltYWdlU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQo
KSk7Ci0jZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCiAjZWxzZSAvLyBIQVZFKENPUkVfQU5JTUFU
SU9OX1JFTkRFUl9TRVJWRVIpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKQEAgLTI4ODgs
NyArMjg3Nyw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXdDb29y
ZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSNpZiBIQVZFKENPUkVfQU5JTUFUSU9OX1JFTkRFUl9TRVJWRVIpICYmIEhBVkUoSU9T
VVJGQUNFKQorI2lmIEhBVkUoQ09SRV9BTklNQVRJT05fUkVOREVSX1NFUlZFUikKICAgICAvLyBJ
ZiB3ZSBhcmUgcGFyZW50ZWQgYW5kIG5vdCBoaWRkZW4sIGFuZCB0aHVzIHdvbid0IGluY3VyIGEg
c2lnbmlmaWNhbnQgcGVuYWx0eSBmcm9tIHBhZ2luZyBpbiB0aWxlcywgc25hcHNob3QgdGhlIHZp
ZXcgaGllcmFyY2h5IGRpcmVjdGx5LgogICAgIE5TU3RyaW5nICpkaXNwbGF5TmFtZSA9IHNlbGYu
d2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwogICAgIGlmIChkaXNwbGF5
TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IGQyOTQ0OTczMmUwZGU3MGM4N2UyODQwMzNkOWIxMDQ5MWM2NWE3YTUuLmIyMzQzZjRl
ODUxMmE2ODIyM2QzOWZmNjBiODJjNDU1MmNmODIwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuY3BwCkBAIC0xNDMsNyArMTQzLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdmlkZW9TYW1w
bGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkgZmluYWwKICAgICB7Ci0jaWYgSEFWRShJ
T1NVUkZBQ0UpCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gcmVt
b3RlU2FtcGxlOwogICAgICAgICBpZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIHNhbXBsZS52
aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpIHsKICAg
ICAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihzYW1wbGUpOwpA
QCAtMTUyLDkgKzE1MSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZW1vdGVTYW1wbGUgPSBS
ZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSk7CiAgICAgICAgIGlmIChyZW1vdGVTYW1w
bGUpCiAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyOjpSZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShtX2lkLCBXVEZNb3ZlKCpy
ZW1vdGVTYW1wbGUpKSwgMCk7Ci0jZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSNlbmRpZgogICAgIH0KIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQ
aXhlbEJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCBkNTQzYTRiNjYzNTI4NzI0OGFkMDU1Yzhk
MjQ5Y2JiMDA0NTI5MGNiLi44YWYwMzQ0NzVmYjFiZjcwZGIxY2MyZWIwYzBiNGFmNGFhNmIxOGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpA
QCAtMTA5LDExICsxMDksOSBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSYgdwogICAgIDogRHJhd2lu
Z0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwg
cHJvY2VzcykKICAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVlPFJlbW90ZUxh
eWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKLSNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAvLyBXZSBk
b24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBkbyB0aGlzIHNvbWV3aGVyZSBlbHNlLgogICAgIElPU3VyZmFjZVBvb2w6
OnNoYXJlZFBvb2woKS5zZXRQb29sU2l6ZSgwKTsKLSNlbmRpZgogCiAgICAgcHJvY2Vzcy5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggOGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkxZDlhNmU0
ZDVmNTgyYy4uNzIxNWZlNzc5MjMzZGY3OGZhMzliNzc0NmM2OGQyZTllZDRkZWY2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTMwNyw3ICszMDcsNiBAQCB2b2lkIFJlbW90ZUxh
eWVyVHJlZUhvc3Q6OmRldGFjaFJvb3RMYXllcigpCiAgICAgbV9yb290Tm9kZSA9IG51bGxwdHI7
CiB9CiAKLSNpZiBIQVZFKElPU1VSRkFDRSkKIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5TWFwSU9T
dXJmYWNlQmFja2luZ1N0b3JlKENBTGF5ZXIgKmxheWVyKQogewogICAgIGlmIChsYXllci5jb250
ZW50cyAmJiBDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWxheWVyLmNvbnRlbnRzKSA9
PSBDQU1hY2hQb3J0R2V0VHlwZUlEKCkpIHsKQEAgLTMxOSwxMyArMzE4LDEwIEBAIHN0YXRpYyB2
b2lkIHJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2luZ1N0b3JlKENBTGF5ZXIgKmxheWVyKQog
ICAgIGZvciAoQ0FMYXllciAqc3VibGF5ZXIgaW4gbGF5ZXIuc3VibGF5ZXJzKQogICAgICAgICBy
ZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZShzdWJsYXllcik7CiB9Ci0jZW5kaWYK
IAogdm9pZCBSZW1vdGVMYXllclRyZWVIb3N0OjptYXBBbGxJT1N1cmZhY2VCYWNraW5nU3RvcmUo
KQogewotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIHJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFj
a2luZ1N0b3JlKHJvb3RMYXllcigpKTsKLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcAppbmRleCAwMDIxOGFhNzMwMTc4ZGRjMjQxY2I1YWY1ZGI0NzM0ODI0
M2ZmNDk4Li5hNTE5M2E4OWY1Y2E4MGMwMjRhNWViOWIzNmI0NzViYTYxN2Q4MWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuY3BwCkBAIC0yNiw4ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCiAKLSNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCi0jaWYgSEFWRShJT1NVUkZBQ0UpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBIQVZFKElPU1VSRkFDRSkKIAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
Q0cuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNzgsNSArNzcsNCBA
QCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoSU9TVVJGQUNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgK
aW5kZXggY2YyODk3OWM2ZjE0ZDc2MmU2OTYwNTZhMDc1YTliZTIyODVhNDhmOC4uZDA2MzAzYzE3
MGRjMmQzNDk1YzY5YWY1ZmUyYmJjNzI4YWYwNzY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0yNSw4ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotI2lmIEhB
VkUoSU9TVVJGQUNFKQorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShJT1NVUkZBQ0Up
CiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgpAQCAtNTAsNSArNDksNCBAQCBwdWJs
aWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0Up
Ci0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQorI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNF
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggZmNm
NDg0YWQ0MDhkYWM3ZjBkMjExYTkyZjMzYzQ0NmEwODA0MDlmMy4uMzRlZDRlNjMwYWMxOThiMzEw
ODAzMGY3OWFhMjNjNTNhOTNmNjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtODQs
MTIgKzg0LDggQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2FtcGxlQnVmZmVyVXBkYXRl
ZChjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHIKIHsKICAgICBpZiAodHJhY2suaWQo
KSAhPSBtX3JlY29yZGVkVmlkZW9UcmFja0lEKQogICAgICAgICByZXR1cm47Ci0jaWYgSEFWRShJ
T1NVUkZBQ0UpCiAgICAgaWYgKGF1dG8gcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6
OmNyZWF0ZShzYW1wbGUpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgV1RGTW92ZSgqcmVtb3Rl
U2FtcGxlKSB9LCBtX2lkZW50aWZpZXIpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSNlbmRpZgogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjphdWRpb1NhbXBsZXNB
dmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYg
YXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6
ZV90IG51bWJlck9mRnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYTY2Zjk1
NzdhODYxZTk5OGE4ZjI5NGNkM2FlYjU2ODVjZWRmNDk2OS4uNjdhYjU1OTY0NjM1MDhjYzUwOTVi
ODc1OTI1ZWYyYWRjY2ZhYzE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0xMzcs
MTYgKzEzNywxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUHJvdmlkZXI6OlN1c3BlbmRh
YmxlU29ja2V0RmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXI6OgogfQogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCisKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExp
YldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0jaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQotICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBlZmZpY2llbnQgc2VuZGluZyBvZiB2
aWRlbyBmcmFtZXMgd2l0aCBJT1NVUkZBQ0UKLSNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVBy
b2Nlc3NFbmFibGVkKCkpOwotI2VuZGlmCiAjZW5kaWYKICAgICByZXR1cm4gTGliV2ViUlRDUHJv
dmlkZXJDb2NvYTo6Y3JlYXRlRGVjb2RlckZhY3RvcnkoKTsKIH0KKwogI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMGFjMzg0MTFlOTJjODQw
M2MyODA0N2Y0ZjQ1OWRlN2JjNTU1OGUwYi4uMDBjYzIzYzAxMzgwNzIzNDIzZDkyMWVlZTgwNjM4
ZmRiNDJiYTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0xOTMsNyArMTkzLDYgQEAgcHVi
bGljOgogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUo
dGltZSwgYXVkaW9EYXRhLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAgICAgfQog
Ci0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgdm9pZCByZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJs
ZShSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VCh0eXBlKCkgPT0gVHlwZTo6VmlkZW8pOwpAQCAtMjE2LDcgKzIxNSw2IEBAIHB1YmxpYzoKIAog
ICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxl
UmVmKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRl
ZChjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQog
ICAgIHsKQEAgLTM5NiwxOCArMzk0LDExIEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllCiAgICAg
fQogfQogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
OjpyZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciBpZCwgUmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUpCiB7CiAgICAgaWYgKGF1dG8gc291cmNl
ID0gbV9zb3VyY2VzLmdldChpZCkpCiAgICAgICAgIHNvdXJjZS0+cmVtb3RlVmlkZW9TYW1wbGVB
dmFpbGFibGUoV1RGTW92ZShzYW1wbGUpKTsKIH0KLSNlbHNlCi1OT19SRVRVUk5fRFVFX1RPX0FT
U0VSVCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpyZW1vdGVWaWRlb1NhbXBsZUF2YWls
YWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgUmVtb3RlVmlkZW9TYW1wbGUmJikK
LXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLSNlbmRpZgogCiBJUEM6OkNvbm5lY3Rp
b24qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OmNvbm5lY3Rpb24oKQogewpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzYzRlMTMw
YTllMGI5M2E5ZjhmYzZlNWYyN2IwZTE1YjlkMmI5OWUuLjUzNGVlOTQ3OTY2Mjk4NGY3NGMxZjRk
OThhNTc5YjA3NzQxMjRmNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNS0wNCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEhBVkUoSU9TVVJGQUNFKSBjaGVja3Mg
aW4gQ29jb2EtcGxhdGZvcm0tc3BlY2lmaWMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3Vw
cG9ydElPUy5tbToKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyk6IFJl
bW92ZSBCRUdJTi9FTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIHNpbmNlIHRoZXkg
YXJlIG5vdCBuZWVkZWQvYXBwcm9wcmlhdGUgaW4gdGVzdCBjb2RlLiBSZW1vdmUgSEFWRShJT1NV
UkZBQ0UpCisgICAgICAgIHNpbmNlIHRoaXMgaXMgQ29jb2Etc3BlY2lmaWMuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tOgorICAgICAgICAoV1RS
OjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UpOiBEaXR0by4KKwogMjAyMC0w
NS0wNCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAg
ICBbV1BFXVtHVEtdIFNob3VsZCBpbnN0YWxsIHB5dGhvbjMtc2VjcmV0c3RvcmFnZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1MubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRleCAxNDNk
ZTcxMDIzMTNiY2U3ZjA3OTZiOTliNTU0NjMxODVkYWE5ZjA0Li5mMTUxZWZjOGRmMWZkOTU5ZGI2
N2VkNjljMDc5Mjk1YzQ4YjQzODVjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
UGl4ZWxEdW1wU3VwcG9ydElPUy5tbQpAQCAtNTQsOSArNTQsNiBAQCBleHRlcm4gRHVtcFJlbmRl
clRyZWVCcm93c2VyVmlldyAqZ1dlYkJyb3dzZXJWaWV3OwogCiBSZWZQdHI8Qml0bWFwQ29udGV4
dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5j
cmVtZW50YWxSZXBhaW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdTZWxlY3Rp
b25SZWN0KQogewotICAgIC8vIFRPRE86IDxyZGFyOi8vcHJvYmxlbS82NTU4MzY2PiBEdW1wUmVu
ZGVyVHJlZTogSW52ZXN0aWdhdGUgdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxseSBhbmQgZHVt
cFNlbGVjdGlvblJlY3QKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KICAgICBX
ZWJUaHJlYWRMb2NrKCk7CiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogCkBAIC02Niw3ICs2
Myw2IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZp
ZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAgICAgaW50IGJ1ZmZlcldpZHRoID0gY2Vp
bCh2aWV3U2l6ZS53aWR0aCAqIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBpbnQgYnVmZmVySGVp
Z2h0ID0gY2VpbCh2aWV3U2l6ZS5oZWlnaHQgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSNpZiBI
QVZFKElPU1VSRkFDRSkKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc25hcHNob3RTaXplKHZpZXdT
aXplKTsKICAgICBzbmFwc2hvdFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwogCkBAIC04
NiwzOCArODIsNiBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZy
b21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogCiAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQtPmNnQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJ1ZmZl
cldpZHRoLCBidWZmZXJIZWlnaHQpLCBjZ0ltYWdlLmdldCgpKTsKICAgICByZXR1cm4gYml0bWFw
Q29udGV4dDsKLSNlbHNlCi0gICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9y
bTNETWFrZVNjYWxlKGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciwgMSk7Ci0g
ICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVX
aXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0KLSAgICBDQVJlbmRlclNlcnZlckJ1ZmZlclJl
ZiBidWZmZXIgPSBDQVJlbmRlclNlcnZlckNyZWF0ZUJ1ZmZlcihidWZmZXJXaWR0aCwgYnVmZmVy
SGVpZ2h0KTsKLSAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkNBUmVu
ZGVyU2VydmVyQ3JlYXRlQnVmZmVyIGZhaWxlZCBmb3IgYnVmZmVyIHdpdGggd2lkdGggJWQgaGVp
Z2h0ICVkXG4iLCBidWZmZXJXaWR0aCwgYnVmZmVySGVpZ2h0KTsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQotCi0gICAgQ0FSZW5kZXJTZXJ2ZXJSZW5kZXJMYXllcldpdGhUcmFuc2Zv
cm0oTUFDSF9QT1JUX05VTEwsIFtnV2ViQnJvd3NlclZpZXcgbGF5ZXJdLmNvbnRleHQuY29udGV4
dElkLCByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihbZ1dlYkJyb3dzZXJWaWV3IGxheWVyXSks
IGJ1ZmZlciwgMCwgMCwgJnRyYW5zZm9ybSk7Ci0KLSAgICB1aW50OF90KiBkYXRhID0gQ0FSZW5k
ZXJTZXJ2ZXJHZXRCdWZmZXJEYXRhKGJ1ZmZlcik7Ci0gICAgc2l6ZV90IHJvd0J5dGVzID0gQ0FS
ZW5kZXJTZXJ2ZXJHZXRCdWZmZXJSb3dCeXRlcyhidWZmZXIpOwotCi0gICAgUmV0YWluUHRyPENH
RGF0YVByb3ZpZGVyUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoRGF0YSgwLCBkYXRhLCBDQVJlbmRlclNlcnZlckdldEJ1ZmZlckRhdGFTaXplKGJ1ZmZlciks
IG51bGxwdHIpKTsKLSAgICAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZShidWZmZXJXaWR0aCwgYnVmZmVySGVpZ2h0LCA4LCAzMiwgcm93
Qnl0ZXMsIHNSR0JTcGFjZSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0Jp
dG1hcEJ5dGVPcmRlcjMySG9zdCwgcHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJp
bmdJbnRlbnREZWZhdWx0KSk7Ci0KLSAgICB2b2lkKiBiaXRtYXBCdWZmZXIgPSBudWxscHRyOwot
ICAgIHNpemVfdCBiaXRtYXBSb3dCeXRlcyA9IDA7Ci0gICAgYXV0byBiaXRtYXBDb250ZXh0ID0g
Y3JlYXRlQml0bWFwQ29udGV4dChidWZmZXJXaWR0aCwgYnVmZmVySGVpZ2h0LCBiaXRtYXBSb3dC
eXRlcywgYml0bWFwQnVmZmVyKTsKLSAgICBpZiAoIWJpdG1hcENvbnRleHQpIHsKLSAgICAgICAg
Q0FSZW5kZXJTZXJ2ZXJEZXN0cm95QnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLQotICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LT5jZ0Nv
bnRleHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBidWZmZXJXaWR0aCwgYnVmZmVySGVpZ2h0KSwgY2dJ
bWFnZS5nZXQoKSk7Ci0gICAgQ0FSZW5kZXJTZXJ2ZXJEZXN0cm95QnVmZmVyKGJ1ZmZlcik7Ci0K
LSAgICByZXR1cm4gYml0bWFwQ29udGV4dDsKLSNlbmRpZgogCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Bs
YXRmb3JtV2ViVmlld0lPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3Jt
V2ViVmlld0lPUy5tbQppbmRleCBkY2VhMzhjZGFjZTc2ODI2NTIwYjBiMWZkOGNlMDA4YmEzYmM3
YTY0Li4wMWUyNmY5MmZkOWU1Y2E2ZjNhZmIxMTI3YmVmNzdlOGExY2IwMzYzIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCkBAIC0zMTIs
MTcgKzMxMiw4IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzZXREcmF3c0JhY2tncm91bmQoYm9v
bCkKIHsKIH0KIAotI2lmICFIQVZFKElPU1VSRkFDRSkKLXN0YXRpYyB2b2lkIHJlbGVhc2VEYXRh
UHJvdmlkZXJEYXRhKHZvaWQqIGluZm8sIGNvbnN0IHZvaWQqLCBzaXplX3QpCi17Ci0gICAgQ0FS
ZW5kZXJTZXJ2ZXJEZXN0cm95QnVmZmVyKHN0YXRpY19jYXN0PENBUmVuZGVyU2VydmVyQnVmZmVy
UmVmPihpbmZvKSk7Ci19Ci0jZW5kaWYKLQogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3Jt
V2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotCiAgICAgQ0dTaXplIHZpZXdTaXplID0gbV92aWV3LmJvdW5kcy5zaXplOwog
ICAgIFJFTEVBU0VfQVNTRVJUKHZpZXdTaXplLndpZHRoKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2
aWV3U2l6ZS5oZWlnaHQpOwpAQCAtMzQ2LDExICszMzcsMTAgQEAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiAgICAgICAgIHZpZXdz
VG9VbmhpZGUudW5jaGVja2VkQXBwZW5kKGVuZEdyYWJiZXJWaWV3KTsKICAgICB9CiAKLSNpZiBI
QVZFKElPU1VSRkFDRSkKICAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CiAgICAgX19i
bG9jayBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcmVzdWx0OwogICAgIAotICAgIFJldGFpblB0cjxX
S1NuYXBzaG90Q29uZmlndXJhdGlvbj4gc25hcHNob3RDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLU25hcHNob3RDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzbmFwc2hv
dENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFJlY3Q6Q0dSZWN0TWFrZSgw
LCAwLCB2aWV3U2l6ZS53aWR0aCwgdmlld1NpemUuaGVpZ2h0KV07CiAgICAgW3NuYXBzaG90Q29u
ZmlndXJhdGlvbiBzZXRTbmFwc2hvdFdpZHRoOkAodmlld1NpemUud2lkdGgpXTsKICAgICAKQEAg
LTM2NSwzMiArMzU1LDExIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6
OndpbmRvd1NuYXBzaG90SW1hZ2UoKQogICAgIH1dOwogICAgIHdoaWxlICghaXNEb25lKQogICAg
ICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29w
TW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXTsKLSNlbHNlCi0gICAgQ0dGbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDI7IC8vIEZJWE1FOiBoYXJkY29kZSAyeCBmb3Igbm93LiBJ
biBmdXR1cmUgd2UgY291bGQgcmVzcGVjdCAxeCBhbmQgM3ggYXMgd2UgZG8gb24gTWFjLgotICAg
IENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IsIDEpOwotICAgIAotICAgIGludCBidWZmZXJX
aWR0aCA9IGNlaWwodmlld1NpemUud2lkdGggKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgaW50
IGJ1ZmZlckhlaWdodCA9IGNlaWwodmlld1NpemUuaGVpZ2h0ICogZGV2aWNlU2NhbGVGYWN0b3Ip
OwogCi0gICAgQ0FSZW5kZXJTZXJ2ZXJCdWZmZXJSZWYgYnVmZmVyID0gQ0FSZW5kZXJTZXJ2ZXJD
cmVhdGVCdWZmZXIoYnVmZmVyV2lkdGgsIGJ1ZmZlckhlaWdodCk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoYnVmZmVyKTsKLQotICAgIENBUmVuZGVyU2VydmVyUmVuZGVyTGF5ZXJXaXRoVHJhbnNmb3Jt
KE1BQ0hfUE9SVF9OVUxMLCBtX3ZpZXcubGF5ZXIuY29udGV4dC5jb250ZXh0SWQsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3Q+KG1fdmlldy5sYXllciksIGJ1ZmZlciwgMCwgMCwgJnRyYW5zZm9y
bSk7Ci0KLSAgICB1aW50OF90KiBkYXRhID0gQ0FSZW5kZXJTZXJ2ZXJHZXRCdWZmZXJEYXRhKGJ1
ZmZlcik7Ci0gICAgc2l6ZV90IHJvd0J5dGVzID0gQ0FSZW5kZXJTZXJ2ZXJHZXRCdWZmZXJSb3dC
eXRlcyhidWZmZXIpOwotCi0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzUkdCU3BhY2UgPSBD
R0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0gICAgYXV0byBw
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShidWZmZXIsIGRh
dGEsIENBUmVuZGVyU2VydmVyR2V0QnVmZmVyRGF0YVNpemUoYnVmZmVyKSwgcmVsZWFzZURhdGFQ
cm92aWRlckRhdGEpKTsKLSAgICAKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShidWZmZXJXaWR0aCwgYnVmZmVySGVpZ2h0LCA4LCAzMiwgcm93Qnl0ZXMsIHNSR0JTcGFj
ZSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCwgcHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKLSNlbmRpZgogICAgIGZvciAoYXV0byB2
aWV3IDogdmlld3NUb1VuaGlkZSkKICAgICAgICAgW3ZpZXcgc2V0SGlkZGVuOk5PXTsKIAogICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAogdm9p
ZCBQbGF0Zm9ybVdlYlZpZXc6OnNldE5hdmlnYXRpb25HZXN0dXJlc0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398403</attachid>
            <date>2020-05-04 12:54:57 -0700</date>
            <delta_ts>2020-05-04 16:24:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211389-20200504125456.patch</filename>
            <type>text/plain</type>
            <size>47392</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IxN2FjNTNhNzEwNGVl
NjNjMTY4NzY5YWMyZDIyYjE1YWU3MzY3Zi4uYWM5ZmQzMGQ5OTlhMWE1ZjYxYTBhNzVlMWE2M2Q0
ZWI0YThhMTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA1LTA0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgSEFWRShJT1NVUkZB
Q0UpIGNoZWNrcyBpbiBDb2NvYS1wbGF0Zm9ybS1zcGVjaWZpYyBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvY29jb2EvTWVtb3J5UmVs
ZWFzZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1SZWxlYXNlTWVtb3J5KTog
UmVtb3ZlIEhBVkUoSU9TVVJGQUNFKSBzaW5jZSBpdCdzIGFsd2F5cyB0cnVlCisgICAgICAgIG9u
IENvY29hIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFj
ZSBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YWxsb2NhdGVJT1N1cmZhY2VCYWNraW5nU3RvcmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVGcmFtZWJ1ZmZl
clRleHR1cmVCYWNraW5nU3RvcmVGcm9tTGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbTogRGl0dG8uCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExh
eWVyIGRpc3BsYXldKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1h
Z2VUcmFuc2ZlclNlc3Npb25WVC5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpZQ2JDclRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weUltYWdlVG9QbGF0Zm9y
bVRleHR1cmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1Rl
eHR1cmVDb3BpZXJDVi5oOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MuaDogRGl0dG8uCisKIDIwMjAtMDUtMDQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdvcmtlcjogc2hvdWxkIHVzZSB0aGUgbmFt
ZSBvZiB0aGUgd29ya2VyIGlmIGl0IGV4aXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggODJlM2Zl
NzgzYmQ2MTA3NGE0OGFmZmFhNGU3NGNjODA5ZmEwMjFiMy4uYWNkZWVmYmYwNjVlYmFjZTRjMWI3
OWEzNmIwMGM0MzhkYTdlODEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjAtMDUtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
bW92ZSBIQVZFKElPU1VSRkFDRSkgY2hlY2tzIGluIENvY29hLXBsYXRmb3JtLXNwZWNpZmljIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM4
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6IFJlbW92ZSBIQVZFKElPU1VSRkFDRSkuCisKIDIw
MjAtMDUtMDEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBVc2UgZXhwb3J0IG1hY3JvcyBvbiBhbGwgcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmNzMyOWYy
YzE3MGQ0NmNkNzM2YmJiNDRiMTcwMjhmOTYzYjkyYjAuLjI1ZGJiOWY4YzliZTE2OGY0YWJiZDQ2
ODhhOGJmZGYxODI1ZjFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMDUtMDQg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBIQVZFKElP
U1VSRkFDRSkgY2hlY2tzIGluIENvY29hLXBsYXRmb3JtLXNwZWNpZmljIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjplbmNvZGVGcmFtZSk6IFJlbW92ZSBIQVZFKElPU1VSRkFDRSkgc2luY2UKKyAg
ICAgICAgdGhpcyBpcyBDb2NvYS1zcGVjaWZpYyBjb2RlLgorICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3Jl
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNv
ZGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6Ynl0ZXNQZXJQaXhlbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3Rv
cmVUb0xheWVyKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQpOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cmZhY2VCdWZmZXJGb3JtYXQgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOiBEaXR0by4KKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50b0ltYWdlT2ZXaWR0aDpjb21wbGV0aW9uSGFu
ZGxlcjpdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OnJlY3Vyc2l2ZWx5TWFw
SU9TdXJmYWNlQmFja2luZ1N0b3JlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZUhvc3Q6Om1hcEFsbElPU3VyZmFjZUJhY2tpbmdTdG9yZSk6IERpdHRvLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgTWVy
Z2VkICNpZiBleHByZXNzaW9ucyBpbnRvIGEgc2luZ2xlIG9uZS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUmVjb3JkZXJQcml2YXRlOjpzYW1wbGVCdWZmZXJVcGRhdGVkKTogUmVtb3ZlIEhB
VkUoSU9TVVJGQUNFKQorICAgICAgICBzaW5jZSB0aGlzIGlzIENvY29hLXNwZWNpZmljIGNvZGUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVEZWNvZGVyRmFj
dG9yeSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6
U291cmNlOjpyZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6cmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGUp
OiBEaXR0by4KKwogMjAyMC0wNS0wNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBhIHdheSBmb3IgaW5zcGVjdG9yIHRv
IHR1cm4gb24vb2ZmIElUUCBkZWJ1ZyBtb2RlIGFuZCBBZENsaWNrQXR0cmlidXRpb24gZGVidWcg
bW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oCmluZGV4IDUzM2Y3MGRkZjg1YmQxZmJiZWNiMjY3NjU3NGI5NzA5ODVlM2ZiNDMuLjJkZmU2
YTQ3NWVmN2YyOGU4YjZkOTFhMmJhODU0OWVkYTc1MDg5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKQEAgLTE2NywyMiArMTY3LDgg
QEAgV1RGX0VYVEVSTl9DX0JFR0lOCiAvLyBGSVhNRTogRGVjbGFyZSB0aGVzZSBmdW5jdGlvbnMg
ZXZlbiB3aGVuIFVTRShBUFBMRV9JTlRFUk5BTF9TREspIGlzIHRydWUgb25jZSB3ZSBjYW4gZml4
IDxyZGFyOi8vcHJvYmxlbS8yNjU4NDgyOD4gaW4gYSBiZXR0ZXIgd2F5LgogI2lmICFVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQogdm9pZCBDQVJlbmRlclNlcnZlckNhcHR1cmVMYXllcldpdGhUcmFu
c2Zvcm0obWFjaF9wb3J0X3QsIHVpbnQzMl90IGNsaWVudElkLCB1aW50NjRfdCBsYXllcklkLCB1
aW50MzJfdCBzbG90SWQsIGludDMyX3Qgb3gsIGludDMyX3Qgb3ksIGNvbnN0IENBVHJhbnNmb3Jt
M0QqKTsKLQotI2lmIEhBVkUoSU9TVVJGQUNFKQogdm9pZCBDQVJlbmRlclNlcnZlclJlbmRlckxh
eWVyV2l0aFRyYW5zZm9ybShtYWNoX3BvcnRfdCBzZXJ2ZXJfcG9ydCwgdWludDMyX3QgY2xpZW50
X2lkLCB1aW50NjRfdCBsYXllcl9pZCwgSU9TdXJmYWNlUmVmLCBpbnQzMl90IG94LCBpbnQzMl90
IG95LCBjb25zdCBDQVRyYW5zZm9ybTNEKik7CiB2b2lkIENBUmVuZGVyU2VydmVyUmVuZGVyRGlz
cGxheUxheWVyV2l0aFRyYW5zZm9ybUFuZFRpbWVPZmZzZXQobWFjaF9wb3J0X3QsIENGU3RyaW5n
UmVmIGRpc3BsYXlfbmFtZSwgdWludDMyX3QgY2xpZW50X2lkLCB1aW50NjRfdCBsYXllcl9pZCwg
SU9TdXJmYWNlUmVmLCBpbnQzMl90IG94LCBpbnQzMl90IG95LCBjb25zdCBDQVRyYW5zZm9ybTNE
KiwgQ0ZUaW1lSW50ZXJ2YWwpOwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IENBUmVuZGVyU2VydmVy
QnVmZmVyKiBDQVJlbmRlclNlcnZlckJ1ZmZlclJlZjsKLUNBUmVuZGVyU2VydmVyQnVmZmVyUmVm
IENBUmVuZGVyU2VydmVyQ3JlYXRlQnVmZmVyKHNpemVfdCwgc2l6ZV90KTsKLXZvaWQgQ0FSZW5k
ZXJTZXJ2ZXJEZXN0cm95QnVmZmVyKENBUmVuZGVyU2VydmVyQnVmZmVyUmVmKTsKLXNpemVfdCBD
QVJlbmRlclNlcnZlckdldEJ1ZmZlcldpZHRoKENBUmVuZGVyU2VydmVyQnVmZmVyUmVmKTsKLXNp
emVfdCBDQVJlbmRlclNlcnZlckdldEJ1ZmZlckhlaWdodChDQVJlbmRlclNlcnZlckJ1ZmZlclJl
Zik7Ci1zaXplX3QgQ0FSZW5kZXJTZXJ2ZXJHZXRCdWZmZXJSb3dCeXRlcyhDQVJlbmRlclNlcnZl
ckJ1ZmZlclJlZik7Ci11aW50OF90KiBDQVJlbmRlclNlcnZlckdldEJ1ZmZlckRhdGEoQ0FSZW5k
ZXJTZXJ2ZXJCdWZmZXJSZWYpOwotc2l6ZV90IENBUmVuZGVyU2VydmVyR2V0QnVmZmVyRGF0YVNp
emUoQ0FSZW5kZXJTZXJ2ZXJCdWZmZXJSZWYpOwotCi1ib29sIENBUmVuZGVyU2VydmVyUmVuZGVy
TGF5ZXJXaXRoVHJhbnNmb3JtKG1hY2hfcG9ydF90LCB1aW50MzJfdCBjbGllbnRfaWQsIHVpbnQ2
NF90IGxheWVyX2lkLCBDQVJlbmRlclNlcnZlckJ1ZmZlclJlZiwgaW50MzJfdCBveCwgaW50MzJf
dCBveSwgY29uc3QgQ0FUcmFuc2Zvcm0zRCopOwotI2VuZGlmCiAjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIAogdHlwZWRlZiBzdHJ1Y3QgX0NBTWFjaFBvcnQgKkNBTWFjaFBvcnRS
ZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1t
CmluZGV4IGIwM2Q2ODk1NjMzZjY1YTg1Mjk5ZmRhNmQ3OTRkYzIyNTI5YTVlOTkuLmVkZjBiYmYx
ZGFjN2RhNWYwMTI1ODkzNjFhY2YwZTk3NWY3M2E3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCkBAIC02Nyw5ICs2Nyw3IEBAIHZvaWQg
cGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKQogICAgIHRpbGVDb250cm9sbGVyTWVtb3J5
SGFuZGxlcigpLnRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCgwKTsKICNlbmRpZgogCi0jaWYg
SEFWRShJT1NVUkZBQ0UpCiAgICAgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLmRpc2NhcmRB
bGxTdXJmYWNlcygpOwotI2VuZGlmCiAKICNpZiBDQUNIRV9TVUJJTUFHRVMKICAgICBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyOjpjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCmluZGV4IGVhZjUyZTMwY2Y1NTVj
NzRkNmM1M2QzYmVhNzExYmJlMmFmMjMyYWUuLjEwY2IwYTAzNjFlMDk4NDhjNDdhZGRkMWY1YzZl
Mzc0MDRhNjRhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKICNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKQEAgLTM2LDE3ICszNywxMiBAQAogI2luY2x1ZGUg
PEFjY2VsZXJhdGUvQWNjZWxlcmF0ZS5oPgogI2VuZGlmCiAKLSNpZiBIQVZFKElPU1VSRkFDRSkK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2VuZGlmCi0KICNpbmNsdWRlIDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogCi0jaWYgSEFWRShJ
T1NVUkZBQ0UpCiBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRyYW5z
ZmVyQkdSQVBpeGVsQnVmZmVyVG9JT1N1cmZhY2UoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
cikKIHsKICNpZiBVU0UoQUNDRUxFUkFURSkKQEAgLTE0OCw3ICsxNDQsNiBAQCBJT1N1cmZhY2VS
ZWYgUmVtb3RlVmlkZW9TYW1wbGU6OnN1cmZhY2UoKSBjb25zdAogCiAgICAgcmV0dXJuIG1faW9T
dXJmYWNlID8gbV9pb1N1cmZhY2UtPnN1cmZhY2UoKSA6IG51bGxwdHI7CiB9Ci0jZW5kaWYKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVW
aWRlb1NhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlk
ZW9TYW1wbGUuaAppbmRleCA1YWI4MmU1NGRiYmZjMjQ2N2MwOWNhNzc5ZjY0NGM2MmE2MDIxNWU3
Li5mMjU2MTk3NmZmMzYwMmEyZjAxYjdhZTQ2NTAwZmI1ZGFkMWVhZTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKQEAg
LTI3LDE1ICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0o
Q09DT0EpCiAKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5o
IgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvU2FtcGxlLmgiCiAjaW5jbHVkZSA8d3RmL01hY2hTZW5k
UmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKLSNpZiBIQVZFKElPU1VSRkFD
RSkKLSNpbmNsdWRlICJJT1N1cmZhY2UuaCIKLSNlbmRpZgotCiB0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nywx
MSArNDQsOSBAQCBwdWJsaWM6CiAgICAgUmVtb3RlVmlkZW9TYW1wbGUmIG9wZXJhdG9yPShSZW1v
dGVWaWRlb1NhbXBsZSYmKSA9IGRlZmF1bHQ7CiAgICAgflJlbW90ZVZpZGVvU2FtcGxlKCkgPSBk
ZWZhdWx0OwogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKE1lZGlhU2FtcGxlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1Nh
bXBsZT4gY3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRp
bWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246Ok5vbmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIElPU3VyZmFjZVJlZiBzdXJmYWNlKCkgY29u
c3Q7Ci0jZW5kaWYKIAogICAgIGNvbnN0IE1lZGlhVGltZSYgdGltZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZTsgfQogICAgIHVpbnQzMl90IHZpZGVvRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV92
aWRlb0Zvcm1hdDsgfQpAQCAtNjEsMTIgKzU2LDEwIEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ewotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgICAgICBpZiAobV9pb1N1cmZhY2UpCiAgICAgICAg
ICAgICBlbmNvZGVyIDw8IG1faW9TdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgZW5jb2RlciA8PCBXVEY6Ok1hY2hTZW5kUmlnaHQoKTsKLSNlbmRp
ZgogICAgICAgICBlbmNvZGVyIDw8IG1fcm90YXRpb247CiAgICAgICAgIGVuY29kZXIgPDwgbV90
aW1lOwogICAgICAgICBlbmNvZGVyIDw8IG1fdmlkZW9Gb3JtYXQ7CkBAIC03NiwxMiArNjksMTEg
QEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVWaWRlb1NhbXBs
ZSYgc2FtcGxlKQogICAgIHsKLSNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAgICAgTWFjaFNlbmRS
aWdodCBzZW5kUmlnaHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgc2FtcGxlLm1fc2VuZFJpZ2h0ID0g
V1RGTW92ZShzZW5kUmlnaHQpOwotI2VuZGlmCisKICAgICAgICAgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gcm90YXRpb247CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocm90YXRpb24p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExLDEzICsxMDMsMTAgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLQotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIFJlbW90ZVZp
ZGVvU2FtcGxlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmLCBNZWRpYVRpbWUmJiwgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IG1f
c2VuZFJpZ2h0OwotI2VuZGlmCiAgICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV9yb3Rh
dGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAgICAgTWVkaWFUaW1l
IG1fdGltZTsKICAgICB1aW50MzJfdCBtX3ZpZGVvRm9ybWF0IHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZTM0OTdjZDBhM2NhNzY5ZmU2YTlm
OGNjYTRkNTNiNDhjMDBlNzBmZi4uNDFiMWE2ZmE2ZjdmOTJlNTc1ODJmNzhiYTJhOTcyNjUzMTcy
NzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC03
NzksMjEgKzc3OSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVDR0xD
b250ZXh0KCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVJT1N1cmZh
Y2VCYWNraW5nU3RvcmUoSW50U2l6ZSBzaXplKQogewotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAg
IExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUlPU3VyZmFjZUJh
Y2tpbmdTdG9yZSBhdCAlZCB4ICVkLiAoJXApIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
LCB0aGlzKTsKICAgICBbbV93ZWJHTExheWVyIGFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3Jl
V2l0aFNpemU6c2l6ZSB1c2luZ0FscGhhOmNvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGFdOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dXBkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFja2luZ1N0b3JlRnJvbUxh
eWVyKCkKIHsKLSNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBMT0coV2ViR0wsICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dXBkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFja2luZ1N0b3JlRnJvbUxh
eWVyKCkuICglcCkiLCB0aGlzKTsKICAgICBbbV93ZWJHTExheWVyIGJpbmRGcmFtZWJ1ZmZlclRv
TmV4dEF2YWlsYWJsZVN1cmZhY2VdOwotI2VuZGlmCiB9CisKICNlbmRpZiAvLyBVU0UoQU5HTEUp
CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLm1tCmluZGV4IDM5MWZjMjNjZDBhOGY4NjlhY2MxMDczMmQxNGZkZjQ1MGZjMjg1NTYuLmFj
NmIxZTE3Nzg2ZDAyNWFhYTc4ZWE4OTU1OWVlMDJhYTczNjlhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTI2LDgg
KzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAKLSNp
ZiBIQVZFKElPU1VSRkFDRSkKLQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCkBA
IC00OTksNSArNDk3LDMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgSU9TdXJmYWNlJiBzdXJmYWNlKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQppbmRleCA4
MDE3NWRkZmUxNmNmNDA0MGNkNTI3ZjI2NzY4ODBhOTM1YWYyMTdiLi5hMjFmNzY2NjQ0Y2E2Yjgx
NWVkMDEzMzc2M2FhM2M5NzFmZjgxYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlUG9vbENvY29hLm1tCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIklPU3VyZmFjZVBvb2wu
aCIKIAotI2lmIEhBVkUoSU9TVVJGQUNFKQotCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNSArNDEsMyBAQCB2b2lkIElPU3Vy
ZmFjZVBvb2w6OnBsYXRmb3JtR2FyYmFnZUNvbGxlY3ROb3coKQogfQogCiB9Ci0KLSNlbmRpZiAv
LyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIuaAppbmRleCBjYjRjODJlMGUwODAxM2VmN2QzMGEyZDhhNGYx
ZTA0ZDZlOWU4MjBlLi42NTJlZjU0MjRmMDQ2OWM2MzExZjFhMTJkMzE4MGI0YjAyZWU2YzA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5oCkBAIC00Nyw3ICs0Nyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiB7CiAgICAgTmFrZWRQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IF9j
b250ZXh0OwogICAgIGZsb2F0IF9kZXZpY2VQaXhlbFJhdGlvOwotI2lmIEhBVkUoSU9TVVJGQUNF
KSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKSkKKyNpZiBVU0UoT1BFTkdMKSB8fCBVU0Uo
QU5HTEUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gX2NvbnRlbnRz
QnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IF9kcmF3aW5n
QnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IF9zcGFyZUJ1
ZmZlcjsKQEAgLTcwLDcgKzcwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KIAogLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdpdGhDb2xvclNwYWNlOihDR0Nv
bG9yU3BhY2VSZWYpY29sb3JTcGFjZTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAoVVNFKE9Q
RU5HTCkgfHwgVVNFKEFOR0xFKSkKKyNpZiBVU0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpCiAtICh2
b2lkKWFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlV2l0aFNpemU6KFdlYkNvcmU6OkludFNp
emUpc2l6ZSB1c2luZ0FscGhhOihCT09MKXVzaW5nQWxwaGE7CiAtICh2b2lkKWJpbmRGcmFtZWJ1
ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmluZGV4IGE3YzUwYzcy
MTU2OGQ5OTY2YzIwMmFhNjA2OGU1ZDU4ODU4ODMzYjMuLjY5ZWQ0MzcwNWIxM2M4MDE3YWVhY2I2
MTQxNzQzYWFjNzE4YTNmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMTU3LDcgKzE1Nyw3IEBAIC0gKHZvaWQp
ZGlzcGxheQogICAgIH0KICNlbGlmIFVTRShPUEVOR0xfRVMpCiAgICAgX2NvbnRleHQtPnByZXNl
bnRSZW5kZXJidWZmZXIoKTsKLSNlbGlmIEhBVkUoSU9TVVJGQUNFKSAmJiBVU0UoQU5HTEUpCisj
ZWxpZiBVU0UoQU5HTEUpCiAgICAgaWYgKCFfY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
IHsKICAgICAgICAgLy8gQ29udGV4dCBpcyBsaWtlbHkgYmVpbmcgdG9ybiBkb3duLgogICAgICAg
ICByZXR1cm47CkBAIC0yMTEsNyArMjExLDcgQEAgLSAodm9pZClyZWxlYXNlR0xSZXNvdXJjZXMK
IH0KICNlbmRpZgogCi0jaWYgSEFWRShJT1NVUkZBQ0UpICYgKFVTRShPUEVOR0wpIHx8IFVTRShB
TkdMRSkpCisjaWYgVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKQogLSAodm9pZClhbGxvY2F0ZUlP
U3VyZmFjZUJhY2tpbmdTdG9yZVdpdGhTaXplOihXZWJDb3JlOjpJbnRTaXplKXNpemUgdXNpbmdB
bHBoYTooQk9PTCl1c2luZ0FscGhhCiB7CiAgICAgX2J1ZmZlclNpemUgPSBzaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5oCmluZGV4IDM2NzRlMzY5OTQ1MWZiZjc2M2FiMzU1YTU2NTE0YWE4ZjJk
YWI1ZTAuLjRkOWY4MzFiZGFiYzUyYWMzYjBkNWE3OWQwNGVkM2YwOWFmYWY1NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULmgKQEAgLTUzLDE0ICs1MywxNCBAQCBwdWJsaWM6CiAgICAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmLCBjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKICAgICBS
ZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmLCBj
b25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKIAotI2lmIEhBVkUo
SU9TVVJGQUNFKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVk
aWFTYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUo
Y29uc3QgUmVtb3RlVmlkZW9TYW1wbGUmKTsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBIQVZFKElP
U1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3Jl
YXRlUGl4ZWxCdWZmZXIoSU9TdXJmYWNlUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoSU9TdXJmYWNlUmVmLCBjb25z
dCBJbnRTaXplJik7CiAjZW5kaWYKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUKHVpbnQz
Ml90IHBpeGVsRm9ybWF0KTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIENGRGljdGlvbmFyeVJl
ZiBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhJT1N1cmZhY2VSZWYpOwogICAg
IFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQ01TYW1wbGVCdWZmZXIoSU9TdXJm
YWNlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJik7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULm1tCmluZGV4IDEzNmU5ZTAzY2JhY2U0ZDZkZGU2ZDAwYjY3Njk4YTMz
MDA2YmNkODcuLmE4NzQ2N2E2OTc4OTlmYTg4MDNiOWYxYjc2MTM4YzEzMmZjNTBjZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1h
Z2VUcmFuc2ZlclNlc3Npb25WVC5tbQpAQCAtMzUsNyArMzUsNyBAQAogI2ltcG9ydCA8Q29yZU1l
ZGlhL0NNRm9ybWF0RGVzY3JpcHRpb24uaD4KICNpbXBvcnQgPENvcmVNZWRpYS9DTVNhbXBsZUJ1
ZmZlci5oPgogCi0jaWYgSEFWRShJT1NVUkZBQ0UpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
KyNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0lPU3Vy
ZmFjZVNQSS5oPgogI2VuZGlmCiAKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZUNNU2FtcGxlQnVmZmVy
KENHSW1hZwogICAgIHJldHVybiBjcmVhdGVDTVNhbXBsZUJ1ZmZlcihwaXhlbEJ1ZmZlci5nZXQo
KSwgc2FtcGxlVGltZSwgc2l6ZSk7CiB9CiAKLSNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQorI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogI2lmIFBMQVRG
T1JNKE1BQykKIHN0YXRpYyBpbnQzMl90IHJvdW5kVXBUb01hY3JvYmxvY2tNdWx0aXBsZShpbnQz
Ml90IHNpemUpCkBAIC0zNjcsNyArMzY3LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0TWVkaWFTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXAKICAg
ICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUocmVzaXplZEJ1ZmZlci5nZXQoKSwg
c2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSk7CiB9CiAKLSNp
ZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPE1lZGlhU2Ft
cGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShjb25zdCBSZW1v
dGVWaWRlb1NhbXBsZSYgcmVtb3RlU2FtcGxlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwCmlu
ZGV4IDI3YWE4NzkwMDYzYTY5MWQ5NzIxMjM4YTI5OGQyOTkzYWU4ZTQwOTguLjg0YzlhZmExOTBk
NDJmMzM2MzhlZTRhODQwYTIzNWMwOTcxMTFkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAK
QEAgLTU3LDcgKzU3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgSEFWRShJT1NV
UkZBQ0UpCiBlbnVtIGNsYXNzIFBpeGVsUmFuZ2UgewogICAgIFVua25vd24sCiAgICAgVmlkZW8s
CkBAIC0zNzQsNyArMzczLDYgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxHTGZsb2F0PiBZQ2JDclRv
UkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKFBpeGVsUmEKICAgICBBU1NFUlQo
aXRlcmF0b3IgIT0gbWF0cmljZXMuZ2V0KCkuZW5kKCkpOwogICAgIHJldHVybiBpdGVyYXRvci0+
c2Vjb25kOwogfQotI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQogCiBWaWRlb1RleHR1cmVDb3Bp
ZXJDVjo6VmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRl
eHQpCiAgICAgOiBtX3NoYXJlZENvbnRleHQoY29udGV4dCkKQEAgLTgwMiw3ICs4MDAsNiBAQCBi
b29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShDVlBp
eGVsQnVmZmVyUmVmIGltYWdlLCBzaQogICAgIH0KICNlbmRpZiAvLyBVU0UoQU5HTEUpCiAKLSNp
ZiBIQVZFKElPU1VSRkFDRSkKICAgICAvLyBGSVhNRTogVGhpcyBjdXJyZW50bHkgb25seSBzdXBw
b3J0cyAnNDIwdicgYW5kICc0MjBmJyBwaXhlbCBmb3JtYXRzLiBJbnZlc3RpZ2F0ZSBzdXBwb3J0
aW5nIG1vcmUgcGl4ZWwgZm9ybWF0cy4KICAgICBPU1R5cGUgcGl4ZWxGb3JtYXQgPSBDVlBpeGVs
QnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKGltYWdlKTsKICAgICBpZiAocGl4ZWxGb3JtYXQgIT0g
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2UgJiYgcGl4ZWxG
b3JtYXQgIT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSkg
ewpAQCAtOTQ0LDkgKzk0MSw2IEBAIGJvb2wgVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlJbWFn
ZVRvUGxhdGZvcm1UZXh0dXJlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2UsIHNpCiAgICAgbV9sYXN0
RmxpcFkgPSBmbGlwWTsKIAogICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFs
c2U7Ci0jZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCiB9CiAKIGJvb2wgVmlkZW9UZXh0dXJlQ29w
aWVyQ1Y6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShUZXh0dXJlVHlwZSBpbnB1
dFZpZGVvVGV4dHVyZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZLCBib29sIHN3YXBDb2xvckNoYW5uZWxz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9U
ZXh0dXJlQ29waWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1Zp
ZGVvVGV4dHVyZUNvcGllckNWLmgKaW5kZXggMTVkZTA2YTNmZTU5NjU1YjQ2NDcwYmE3MWRlZGQ3
Y2MzZDBiZGZmMS4uYTJkZDNmYzRkN2Q3MzVkMGVjZGJmOWU1ZDdiMGM5YzAwYzQyMjc2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJl
Q29waWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRl
b1RleHR1cmVDb3BpZXJDVi5oCkBAIC02MiwxOSArNjIsMTIgQEAgcHJpdmF0ZToKICAgICBib29s
IGluaXRpYWxpemVDb250ZXh0T2JqZWN0cygpOwogICAgIGJvb2wgaW5pdGlhbGl6ZVVWQ29udGV4
dE9iamVjdHMoKTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIHVuc2lnbmVkIGxhc3RUZXh0
dXJlU2VlZChHQ0dMdWludCB0ZXh0dXJlKQogICAgIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9
IG1fbGFzdFRleHR1cmVTZWVkLmZpbmQodGV4dHVyZSk7Ci0gICAgICAgIHJldHVybiBpdGVyYXRv
ciA9PSBtX2xhc3RUZXh0dXJlU2VlZC5lbmQoKSA/IDAgOiBpdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIHJldHVybiBtX2xhc3RUZXh0dXJlU2VlZC5nZXQodGV4dHVyZSk7CiAgICAgfQotI2VuZGlm
CiAKICNpZiBVU0UoQU5HTEUpCi0jaWYgIUhBVkUoSU9TVVJGQUNFKQotI2Vycm9yIFVTRShBTkdM
RSkgcmVxdWlyZXMgSEFWRShJT1NVUkZBQ0UpCi0jZW5kaWYgLy8gIUhBVkUoSU9TVVJGQUNFKQot
CiAgICAgLy8gUmV0dXJucyBhIGhhbmRsZSB3aGljaCwgaWYgbm9uLW51bGwsIG11c3QgYmUgcmVs
ZWFzZWQgdmlhIHRoZQogICAgIC8vIGRldGFjaCBjYWxsIGJlbG93LgogICAgIHZvaWQqIGF0dGFj
aElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIHR5cGUsIElP
U3VyZmFjZVJlZiwgR0NHTHVpbnQgcGxhbmUpOwpAQCAtMTA1LDE0ICs5OCwxMiBAQCBwcml2YXRl
OgogICAgIEdDR0xpbnQgbV95VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24geyAtMSB9OwogICAg
IEdDR0xpbnQgbV91dlRleHR1cmVTaXplVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsKIAotI2lmIEhB
VkUoSU9TVVJGQUNFKQogICAgIGJvb2wgbV9sYXN0RmxpcFkgeyBmYWxzZSB9OwogICAgIFVuc2Fm
ZVBvaW50ZXI8SU9TdXJmYWNlUmVmPiBtX2xhc3RTdXJmYWNlOwogICAgIHVpbnQzMl90IG1fbGFz
dFN1cmZhY2VTZWVkIHsgMCB9OwogCiAgICAgdXNpbmcgVGV4dHVyZVNlZWRNYXAgPSBIYXNoTWFw
PEdDR0x1aW50LCB1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+OwogICAgIFRleHR1cmVTZWVkTWFwIG1f
bGFzdFRleHR1cmVTZWVkOwotI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oCmluZGV4IDdlMjA4YzJhYjlkNWE4YTIwY2MyYTE4NDVlYmM3MjQ5
MDQzODY0ZDIuLjRlZWIwNWY3ZWVhZjIyMDlmM2VkNDA5ZTUyYmIxNDA3M2Y3OTk0NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCkBAIC0zMSw5ICszMSw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVDb2NvYS5oIgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQotI2lmIEhBVkUoSU9TVVJGQUNFKQogI2luY2x1ZGUgIklPU3VyZmFjZS5oIgotI2VuZGlmCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTE2OSwxMCArMTY3LDggQEAg
cHJpdmF0ZToKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBSZXRhaW5QdHI8Q0lDb250
ZXh0PiBtX2NpQ29udGV4dDsKLSNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBtX2xhcmdlQmFkZ2VTdXJmYWNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IG1fc21hbGxCYWRnZVN1cmZhY2U7Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgYm9v
bCBtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW0KaW5kZXggOTI1ODk4NTlhMzkxNTUxNTA3NjdiNzlmMWM1OTA2YzAwODlmOGQ2
NS4uODg2NzBmZjBmOGNhZTI5NzExNTJlNzIwN2VjMDU1OWJmMmE4Y2YwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2Rl
RnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZToKICAgICBpZiAo
IW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxG
b3JtYXQoKSAhPSBzYW1wbGUudmlkZW9Gb3JtYXQoKSkKICAgICAgICAgbV9pbWFnZVRyYW5zZmVy
U2Vzc2lvbiA9IFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShzYW1wbGUu
dmlkZW9Gb3JtYXQoKSk7CiAKLSNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlUGl4ZWxCdWZmZXIoc2FtcGxlLnN1cmZh
Y2UoKSk7CiAgICAgd2VicnRjOjplbmNvZGVMb2NhbEVuY29kZXJGcmFtZShlbmNvZGVyLCBwaXhl
bEJ1ZmZlci5nZXQoKSwgc2FtcGxlLnRpbWUoKS50b1RpbWVTY2FsZSgxMDAwMDAwKS50aW1lVmFs
dWUoKSwgdG9XZWJSVENWaWRlb1JvdGF0aW9uKHNhbXBsZS5yb3RhdGlvbigpKSwgc2hvdWxkRW5j
b2RlQXNLZXlGcmFtZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRl
eCA1MzllMjNmZDQ2Y2Q0YWRlM2ZiNjkyOThkY2MzNDNiZTM2MTcyZTAyLi5jMjhjOWY0NjhlNThi
ZmMxZjEyMGU3YWRhOTk2ZjAzOWNhZjljNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCkBAIC0zOCwxMSArMzgsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkxheWVyLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLQot
I2lmIEhBVkUoSU9TVVJGQUNFKQogI2ltcG9ydCA8bWFjaC9tYWNoX3BvcnQuaD4KLSNlbmRpZgor
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCkBAIC03MCw5ICs2Nyw2IEBAIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp+UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUoKQogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1
cmVCYWNraW5nU3RvcmUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIGZsb2F0IHNjYWxlLCBib29s
IGFjY2VsZXJhdGVzRHJhd2luZywgYm9vbCBkZWVwQ29sb3IsIGJvb2wgaXNPcGFxdWUpCiB7Ci0j
aWYgIUhBVkUoSU9TVVJGQUNFKQotICAgIGFjY2VsZXJhdGVzRHJhd2luZyA9IGZhbHNlOwotI2Vu
ZGlmCiAgICAgaWYgKG1fc2l6ZSA9PSBzaXplICYmIG1fc2NhbGUgPT0gc2NhbGUgJiYgbV9kZWVw
Q29sb3IgPT0gZGVlcENvbG9yICYmIG1fYWNjZWxlcmF0ZXNEcmF3aW5nID09IGFjY2VsZXJhdGVz
RHJhd2luZyAmJiBtX2lzT3BhcXVlID09IGlzT3BhcXVlKQogICAgICAgICByZXR1cm47CiAKQEAg
LTk1LDkgKzg5LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5n
U3RvcmUoKQogewogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fYmFja0J1ZmZl
ci5kaXNjYXJkKCk7Ci0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgbV9zZWNvbmRhcnlCYWNrQnVm
ZmVyLmRpc2NhcmQoKTsKLSNlbmRpZgogfQogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtMTA3LDcgKzk5LDYgQEAg
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogICAgIGVuY29k
ZXIgPDwgbV9pc09wYXF1ZTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIGlmIChtX2FjY2Vs
ZXJhdGVzRHJhd2luZykgewogICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5zdXJmYWNlKQogICAg
ICAgICAgICAgZW5jb2RlciA8PCBtX2Zyb250QnVmZmVyLnN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdo
dCgpOwpAQCAtMTE1LDcgKzEwNiw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgICAgICBlbmNvZGVyIDw8
IFdURjo6TWFjaFNlbmRSaWdodCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2VuZGlmCiAK
ICAgICBBU1NFUlQoIW1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKIApAQCAtMTM4LDcgKzEyOCw2IEBA
IGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFJlbW90ZUxheWVyQmFja2luZ1N0CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bV9pc09wYXF1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEhBVkUoSU9TVVJGQUNF
KQogICAgIGlmIChyZXN1bHQubV9hY2NlbGVyYXRlc0RyYXdpbmcpIHsKICAgICAgICAgTWFjaFNl
bmRSaWdodCBzZW5kUmlnaHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0
KSkKQEAgLTE0Niw3ICsxMzUsNiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllckJhY2tpbmdTdAogICAgICAgICBy
ZXN1bHQubV9mcm9udEJ1ZmZlclNlbmRSaWdodCA9IFdURk1vdmUoc2VuZFJpZ2h0KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotI2VuZGlmCiAKICAgICBBU1NFUlQoIXJlc3VsdC5tX2Fj
Y2VsZXJhdGVzRHJhd2luZyk7CiAKQEAgLTE3Nyw3ICsxNjUsNiBAQCBXZWJDb3JlOjpJbnRTaXpl
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpiYWNraW5nU3RvcmVTaXplKCkgY29uc3QKIAogdW5z
aWduZWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmJ5dGVzUGVyUGl4ZWwoKSBjb25zdAogewot
I2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIHN3aXRjaCAoc3VyZmFjZUJ1ZmZlckZvcm1hdCgpKSB7
CiAgICAgY2FzZSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6UkdCQTogcmV0dXJuIDQ7CiAg
ICAgY2FzZSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyOiByZXR1cm4gMjsKQEAg
LTE4Niw3ICsxNzMsNiBAQCB1bnNpZ25lZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Ynl0ZXNQ
ZXJQaXhlbCgpIGNvbnN0CiAgICAgY2FzZSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6UkdC
MTBBODogcmV0dXJuIDU7CiAjZW5kaWYKICAgICB9Ci0jZW5kaWYKICAgICByZXR1cm4gNDsKIH0K
IApAQCAtMTk0LDcgKzE4MCw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBU
b1ZhbGlkRnJvbnRCdWZmZXIoKQogewogICAgIFdlYkNvcmU6OkludFNpemUgZXhwYW5kZWRTY2Fs
ZWRTaXplID0gYmFja2luZ1N0b3JlU2l6ZSgpOwogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAg
aWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7CiAgICAgICAgIGlmICghbV9iYWNrQnVmZmVyLnN1
cmZhY2UgfHwgbV9iYWNrQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkgewogICAgICAgICAgICAg
c3RkOjpzd2FwKG1fYmFja0J1ZmZlciwgbV9zZWNvbmRhcnlCYWNrQnVmZmVyKTsKQEAgLTIxMCw3
ICsxOTUsNiBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250
QnVmZmVyKCkKICAgICAgICAgc2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwg
ZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2VuZGlmCiAKICAgICBBU1NFUlQoIW1f
YWNjZWxlcmF0ZXNEcmF3aW5nKTsKICAgICBzdGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNr
QnVmZmVyKTsKQEAgLTI1NCw3ICsyMzgsNiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpkaXNwbGF5KCkKIAogICAgIHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKTsKIAotI2lmIEhBVkUo
SU9TVVJGQUNFKQogICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2luZykgewogICAgICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gYmFja0ltYWdlOwogICAgICAgICBpZiAobV9iYWNrQnVmZmVyLnN1
cmZhY2UgJiYgIXdpbGxQYWludEVudGlyZUJhY2tpbmdTdG9yZSkKQEAgLTI2OSw5ICsyNTIsNyBA
QCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIAogICAgICAgICAgICAg
bV9mcm9udEJ1ZmZlci5zdXJmYWNlLT5yZWxlYXNlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgICAg
IH0KLSAgICB9IGVsc2UKLSNlbmRpZgotICAgIHsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQoIW1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1fZnJvbnRCdWZmZXIuYml0bWFwLT5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKIApAQCAtNDAyLDcgKzM4Myw2IEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXllciwg
TGF5ZXJDb250CiB7CiAgICAgbGF5ZXIuY29udGVudHNPcGFxdWUgPSBtX2lzT3BhcXVlOwogCi0j
aWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgaWYgKGFjY2VsZXJhdGVzRHJhd2luZygpKSB7CiAgICAg
ICAgIHN3aXRjaCAoY29udGVudHNUeXBlKSB7CiAgICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5
cGU6OklPU3VyZmFjZToKQEAgLTQxOSw3ICszOTksNiBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIExheWVyQ29u
dAogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAogICAgIEFTU0VS
VCghYWNjZWxlcmF0ZXNEcmF3aW5nKCkpOwogICAgIGxheWVyLmNvbnRlbnRzID0gKF9fYnJpZGdl
IGlkKW1fZnJvbnRCdWZmZXIuYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKQEAgLTQz
MCw3ICs0MDksNiBAQCBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6dGFrZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCgpCiAgICAgcmV0dXJuIFdURk1vdmUo
bV9mcm9udENvbnRleHRQZW5kaW5nRmx1c2gpOwogfQogCi0jaWYgSEFWRShJT1NVUkZBQ0UpCiBi
b29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5
cGUgdHlwZSwgYm9vbCBpc1ZvbGF0aWxlKQogewogICAgIC8vIFJldHVybiB2YWx1ZSBpcyB0cnVl
IGlmIHdlIHN1Y2NlZWRlZCBpbiBtYWtpbmcgdm9sYXRpbGUuCkBAIC00ODQsMjQgKzQ2MiwxNSBA
QCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZl
clR5cGUgdHlwZSwgYm9vbCBpc1ZvbGF0aQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNl
bHNlCi1ib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1
ZmZlclR5cGUsIGJvb2wpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKIAogdm9pZCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyOjpkaXNjYXJkKCkKIHsKLSNpZiBIQVZFKElP
U1VSRkFDRSkKICAgICBpZiAoc3VyZmFjZSkKICAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpt
b3ZlVG9Qb29sKFdURk1vdmUoc3VyZmFjZSkpOwogICAgIGlzVm9sYXRpbGUgPSBmYWxzZTsKLSNl
bmRpZgogICAgIGJpdG1hcCA9IG51bGxwdHI7CiB9CiAKLSNpZiBIQVZFKElPU1VSRkFDRSkKIFdl
YkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXJmYWNl
QnVmZmVyRm9ybWF0KCkgY29uc3QKIHsKICNpZiBIQVZFKElPU1VSRkFDRV9SR0IxMCkKQEAgLTUx
MSw2ICs0ODAsNSBAQCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6c3VyZmFjZUJ1ZmZlckZvcm1hdCgpIGNvbnN0CiAKICAgICByZXR1cm4gV2ViQ29y
ZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OlJHQkE7CiB9Ci0jZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0Up
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA5YWM4OWVlMmVlYTE0MjI4ZGI2NTNlMWYwOTU0
NGE5YmZlZDgwYmM3Li42MWM0ZjQyNmVkMjU2OGY4MmU4YTBiMGE1ODZkYTkwNDY3MjM2MGFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpA
QCAtMTAwOSw3ICsxMDA5LDYgQEAgLSAoUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PilfdGFr
ZVZpZXdTbmFwc2hvdAogCiAgICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9y
bTNETWFrZVNjYWxlKGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSwgMSk7CiAKLSNpZiBIQVZFKElP
U1VSRkFDRSkKICNpZiBIQVZFKElPU1VSRkFDRV9SR0IxMCkKICAgICBXZWJDb3JlOjpJT1N1cmZh
Y2U6OkZvcm1hdCBzbmFwc2hvdEZvcm1hdCA9IFdlYkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5k
ZWRDb2xvcigpID8gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OlJHQjEwIDogV2ViQ29yZTo6
SU9TdXJmYWNlOjpGb3JtYXQ6OlJHQkE7CiAjZWxzZQpAQCAtMTAzNCwxNiArMTAzMyw2IEBAIC0g
KFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKICNlbmRpZiAv
LyBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKIAogICAgIHJldHVybiBXZWJLaXQ6OlZpZXdT
bmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOwotI2Vsc2UgLy8gSEFWRShJT1NVUkZB
Q0UpCi0gICAgdWludDMyX3Qgc2xvdElEID0gW1dlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnNu
YXBzaG90dGluZ0NvbnRleHQoKSBjcmVhdGVJbWFnZVNsb3Q6c25hcHNob3RTaXplIGhhc0FscGhh
OllFU107Ci0KLSAgICBpZiAoIXNsb3RJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBDQVJlbmRlclNlcnZlckNhcHR1cmVMYXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JUX05VTEws
IHNlbGYubGF5ZXIuY29udGV4dC5jb250ZXh0SWQsICh1aW50NjRfdClzZWxmLmxheWVyLCBzbG90
SUQsIDAsIDAsICZ0cmFuc2Zvcm0pOwotICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplID0g
V2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzbmFwc2hvdFNpemUp
KTsKLSAgICByZXR1cm4gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShzbG90SUQsIGltYWdl
U2l6ZSwgKGltYWdlU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7Ci0jZW5kaWYgLy8gSEFW
RShJT1NVUkZBQ0UpCiAjZWxzZSAvLyBIQVZFKENPUkVfQU5JTUFUSU9OX1JFTkRFUl9TRVJWRVIp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKQEAgLTI4ODgsNyArMjg3Nyw3IEBAIC0gKHZv
aWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VP
ZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBIQVZFKENP
UkVfQU5JTUFUSU9OX1JFTkRFUl9TRVJWRVIpICYmIEhBVkUoSU9TVVJGQUNFKQorI2lmIEhBVkUo
Q09SRV9BTklNQVRJT05fUkVOREVSX1NFUlZFUikKICAgICAvLyBJZiB3ZSBhcmUgcGFyZW50ZWQg
YW5kIG5vdCBoaWRkZW4sIGFuZCB0aHVzIHdvbid0IGluY3VyIGEgc2lnbmlmaWNhbnQgcGVuYWx0
eSBmcm9tIHBhZ2luZyBpbiB0aWxlcywgc25hcHNob3QgdGhlIHZpZXcgaGllcmFyY2h5IGRpcmVj
dGx5LgogICAgIE5TU3RyaW5nICpkaXNwbGF5TmFtZSA9IHNlbGYud2luZG93LnNjcmVlbi5kaXNw
bGF5Q29uZmlndXJhdGlvbi5uYW1lOwogICAgIGlmIChkaXNwbGF5TmFtZSAmJiAhc2VsZi53aW5k
b3cuaGlkZGVuKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGQyOTQ0OTczMmUw
ZGU3MGM4N2UyODQwMzNkOWIxMDQ5MWM2NWE3YTUuLmIyMzQzZjRlODUxMmE2ODIyM2QzOWZmNjBi
ODJjNDU1MmNmODIwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xNDMsNyAr
MTQzLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFT
YW1wbGUmIHNhbXBsZSkgZmluYWwKICAgICB7Ci0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gcmVtb3RlU2FtcGxlOwogICAgICAg
ICBpZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0g
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpIHsKICAgICAgICAgICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihzYW1wbGUpOwpAQCAtMTUyLDkgKzE1MSw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6
Y3JlYXRlKHNhbXBsZSk7CiAgICAgICAgIGlmIChyZW1vdGVTYW1wbGUpCiAgICAgICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpSZW1v
dGVWaWRlb1NhbXBsZUF2YWlsYWJsZShtX2lkLCBXVEZNb3ZlKCpyZW1vdGVTYW1wbGUpKSwgMCk7
Ci0jZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogICAgIH0KIAog
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihNZWRpYVNh
bXBsZSYgc2FtcGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eS5tbQppbmRleCBkNTQzYTRiNjYzNTI4NzI0OGFkMDU1YzhkMjQ5Y2JiMDA0NTI5MGNiLi44
YWYwMzQ0NzVmYjFiZjcwZGIxY2MyZWIwYzBiNGFmNGFhNmIxOGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTA5LDExICsxMDksOSBA
QCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5KFdlYlBhZ2VQcm94eSYgdwogICAgIDogRHJhd2luZ0FyZWFQcm94eShEcmF3aW5n
QXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwgcHJvY2VzcykKICAgICAsIG1f
cmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlz
KSkKIHsKLSNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBvb2wg
c3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB0
aGlzIHNvbWV3aGVyZSBlbHNlLgogICAgIElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2woKS5zZXRQ
b29sU2l6ZSgwKTsKLSNlbmRpZgogCiAgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0K
aW5kZXggOGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkxZDlhNmU0ZDVmNTgyYy4uNzIxNWZlNzc5
MjMzZGY3OGZhMzliNzc0NmM2OGQyZTllZDRkZWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0KQEAgLTMwNyw3ICszMDcsNiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6OmRldGFj
aFJvb3RMYXllcigpCiAgICAgbV9yb290Tm9kZSA9IG51bGxwdHI7CiB9CiAKLSNpZiBIQVZFKElP
U1VSRkFDRSkKIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2luZ1N0b3Jl
KENBTGF5ZXIgKmxheWVyKQogewogICAgIGlmIChsYXllci5jb250ZW50cyAmJiBDRkdldFR5cGVJ
RCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWxheWVyLmNvbnRlbnRzKSA9PSBDQU1hY2hQb3J0R2V0VHlw
ZUlEKCkpIHsKQEAgLTMxOSwxMyArMzE4LDEwIEBAIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5TWFw
SU9TdXJmYWNlQmFja2luZ1N0b3JlKENBTGF5ZXIgKmxheWVyKQogICAgIGZvciAoQ0FMYXllciAq
c3VibGF5ZXIgaW4gbGF5ZXIuc3VibGF5ZXJzKQogICAgICAgICByZWN1cnNpdmVseU1hcElPU3Vy
ZmFjZUJhY2tpbmdTdG9yZShzdWJsYXllcik7CiB9Ci0jZW5kaWYKIAogdm9pZCBSZW1vdGVMYXll
clRyZWVIb3N0OjptYXBBbGxJT1N1cmZhY2VCYWNraW5nU3RvcmUoKQogewotI2lmIEhBVkUoSU9T
VVJGQUNFKQogICAgIHJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2luZ1N0b3JlKHJvb3RMYXll
cigpKTsKLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApp
bmRleCAwMDIxOGFhNzMwMTc4ZGRjMjQxY2I1YWY1ZGI0NzM0ODI0M2ZmNDk4Li5hNTE5M2E4OWY1
Y2E4MGMwMjRhNWViOWIzNmI0NzViYTYxN2Q4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0yNiw4
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0jaWYg
SEFWRShJT1NVUkZBQ0UpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKElPU1VSRkFD
RSkKIAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNzgsNSArNzcsNCBAQCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEhBVkUoSU9TVVJG
QUNFKQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEhBVkUoSU9TVVJGQUNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggY2YyODk3OWM2ZjE0
ZDc2MmU2OTYwNTZhMDc1YTliZTIyODVhNDhmOC4uZDA2MzAzYzE3MGRjMmQzNDk1YzY5YWY1ZmUy
YmJjNzI4YWYwNzY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0yNSw4ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotI2lmIEhBVkUoSU9TVVJGQUNFKQorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShJT1NVUkZBQ0UpCiAKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oPgpAQCAtNTAsNSArNDksNCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCi0jZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCi0jZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQorI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggZmNmNDg0YWQ0MDhkYWM3ZjBkMjEx
YTkyZjMzYzQ0NmEwODA0MDlmMy4uMzRlZDRlNjMwYWMxOThiMzEwODAzMGY3OWFhMjNjNTNhOTNm
NjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtODQsMTIgKzg0LDggQEAgdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2FtcGxlQnVmZmVyVXBkYXRlZChjb25zdCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVRyYWNrUHIKIHsKICAgICBpZiAodHJhY2suaWQoKSAhPSBtX3JlY29yZGVkVmlk
ZW9UcmFja0lEKQogICAgICAgICByZXR1cm47Ci0jaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgaWYg
KGF1dG8gcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUpKQog
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6
OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgV1RGTW92ZSgqcmVtb3RlU2FtcGxlKSB9LCBtX2lkZW50
aWZpZXIpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogfQogCiB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IG51bWJlck9mRnJhbWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYTY2Zjk1NzdhODYxZTk5OGE4ZjI5NGNk
M2FlYjU2ODVjZWRmNDk2OS4uNjdhYjU1OTY0NjM1MDhjYzUwOTViODc1OTI1ZWYyYWRjY2ZhYzE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0xMzcsMTYgKzEzNywxNSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8TGliV2ViUlRDUHJvdmlkZXI6OlN1c3BlbmRhYmxlU29ja2V0RmFjdG9yeT4g
TGliV2ViUlRDUHJvdmlkZXI6OgogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisKIHN0ZDo6dW5p
cXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyOjpj
cmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIC8v
IFdlIG9ubHkgc3VwcG9ydCBlZmZpY2llbnQgc2VuZGluZyBvZiB2aWRlbyBmcmFtZXMgd2l0aCBJ
T1NVUkZBQ0UKLSNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIExp
YldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkKCkpOwot
I2VuZGlmCiAjZW5kaWYKICAgICByZXR1cm4gTGliV2ViUlRDUHJvdmlkZXJDb2NvYTo6Y3JlYXRl
RGVjb2RlckZhY3RvcnkoKTsKIH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMGFjMzg0MTFlOTJjODQwM2MyODA0N2Y0ZjQ1OWRlN2Jj
NTU1OGUwYi4uMDBjYzIzYzAxMzgwNzIzNDIzZDkyMWVlZTgwNjM4ZmRiNDJiYTU5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuY3BwCkBAIC0xOTMsNyArMTkzLDYgQEAgcHVibGljOgogICAgICAgICBSZWFs
dGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBt
X2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAgICAgfQogCi0jaWYgSEFWRShJT1NVUkZB
Q0UpCiAgICAgdm9pZCByZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShSZW1vdGVWaWRlb1NhbXBs
ZSYmIHJlbW90ZVNhbXBsZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6
VmlkZW8pOwpAQCAtMjE2LDcgKzIxNSw2IEBAIHB1YmxpYzoKIAogICAgICAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxlUmVmKTsKICAgICB9Ci0jZW5k
aWYKIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChjb25zdCBXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIHsKQEAgLTM5NiwxOCAr
Mzk0LDExIEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllCiAgICAgfQogfQogCi0jaWYgSEFWRShJ
T1NVUkZBQ0UpCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpyZW1vdGVWaWRlb1NhbXBs
ZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmVtb3RlVmlkZW9T
YW1wbGUmJiBzYW1wbGUpCiB7CiAgICAgaWYgKGF1dG8gc291cmNlID0gbV9zb3VyY2VzLmdldChp
ZCkpCiAgICAgICAgIHNvdXJjZS0+cmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGUoV1RGTW92ZShz
YW1wbGUpKTsKIH0KLSNlbHNlCi1OT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjpyZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllciwgUmVtb3RlVmlkZW9TYW1wbGUmJikKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLSNlbmRpZgogCiBJUEM6OkNvbm5lY3Rpb24qIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyOjpTb3VyY2U6OmNvbm5lY3Rpb24oKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE4NzZhMzk2NDUyZjhjMTgxMmE4Y2RhYmE2
MzhkNTM1NjMwMjJiMWUuLjExZTc3ZGFlN2I2ZWNkNmU1ZmMxMGE2ZWRkMjg2NjYxZTIwYjU2NzMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNS0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIEhBVkUoSU9TVVJGQUNFKSBjaGVja3MgaW4gQ29jb2EtcGxhdGZvcm0t
c3BlY2lmaWMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjExMzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbToKKyAgICAg
ICAgKGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyk6IFJlbW92ZSBCRUdJTi9FTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIHNpbmNlIHRoZXkgYXJlIG5vdCBuZWVkZWQvYXBw
cm9wcmlhdGUgaW4gdGVzdCBjb2RlLiBSZW1vdmUgSEFWRShJT1NVUkZBQ0UpCisgICAgICAgIHNp
bmNlIHRoaXMgaXMgQ29jb2Etc3BlY2lmaWMuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9p
b3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6
OndpbmRvd1NuYXBzaG90SW1hZ2UpOiBEaXR0by4KKwogMjAyMC0wNS0wNCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDYXRhbGluYV0gQVNT
RVJUSU9OIEZBSUxFRDogVW5zYWZlIHRvIHJlZi9kZXJlZiBmcm9tIGRpZmZlcmVudCB0aHJlYWRz
IHNlZW4gd2l0aCBUZXN0V2ViS2l0QVBJLk11bHRpcGxlQ2xpZW50Q2VydGlmaWNhdGVDb25uZWN0
aW9ucy5GYWlsdXJlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxE
dW1wU3VwcG9ydElPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBw
b3J0SU9TLm1tCmluZGV4IDE0M2RlNzEwMjMxM2JjZTdmMDc5NmI5OWI1NTQ2MzE4NWRhYTlmMDQu
LjYxNzhkMmE1YjQ2ODc1ZTc4MWVhMzliNDljNDUyYWM3M2I1NTIzMDkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tCkBAIC01NCw5ICs1NCw2
IEBAIGV4dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7CiAK
IFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9v
bCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lbnRhbFJlcGFpbnQsIGJvb2wgc3dlZXBIb3Jpem9udGFs
bHksIGJvb2wgZHJhd1NlbGVjdGlvblJlY3QpCiB7Ci0gICAgLy8gVE9ETzogPHJkYXI6Ly9wcm9i
bGVtLzY1NTgzNjY+IER1bXBSZW5kZXJUcmVlOiBJbnZlc3RpZ2F0ZSB0ZXN0UmVwYWludFN3ZWVw
SG9yaXpvbnRhbGx5IGFuZCBkdW1wU2VsZWN0aW9uUmVjdAotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLQogICAgIFdlYlRocmVhZExvY2soKTsKICAgICBbQ0FUcmFuc2FjdGlvbiBm
bHVzaF07CiAKQEAgLTY2LDcgKzYzLDYgQEAgUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJp
dG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWUKICAgICBp
bnQgYnVmZmVyV2lkdGggPSBjZWlsKHZpZXdTaXplLndpZHRoICogZGV2aWNlU2NhbGVGYWN0b3Ip
OwogICAgIGludCBidWZmZXJIZWlnaHQgPSBjZWlsKHZpZXdTaXplLmhlaWdodCAqIGRldmljZVNj
YWxlRmFjdG9yKTsKIAotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBzbmFwc2hvdFNpemUodmlld1NpemUpOwogICAgIHNuYXBzaG90U2l6ZS5zY2FsZShkZXZpY2VT
Y2FsZUZhY3Rvcik7CiAKQEAgLTg2LDM4ICs4Miw0IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBj
cmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1l
CiAKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC0+Y2dDb250ZXh0KCksIENH
UmVjdE1ha2UoMCwgMCwgYnVmZmVyV2lkdGgsIGJ1ZmZlckhlaWdodCksIGNnSW1hZ2UuZ2V0KCkp
OwogICAgIHJldHVybiBiaXRtYXBDb250ZXh0OwotI2Vsc2UKLSAgICBDQVRyYW5zZm9ybTNEIHRy
YW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlU2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IsIGRldmlj
ZVNjYWxlRmFjdG9yLCAxKTsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKLQotICAgIENB
UmVuZGVyU2VydmVyQnVmZmVyUmVmIGJ1ZmZlciA9IENBUmVuZGVyU2VydmVyQ3JlYXRlQnVmZmVy
KGJ1ZmZlcldpZHRoLCBidWZmZXJIZWlnaHQpOwotICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiQ0FSZW5kZXJTZXJ2ZXJDcmVhdGVCdWZmZXIgZmFpbGVkIGZvciBidWZm
ZXIgd2l0aCB3aWR0aCAlZCBoZWlnaHQgJWRcbiIsIGJ1ZmZlcldpZHRoLCBidWZmZXJIZWlnaHQp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBDQVJlbmRlclNlcnZlclJl
bmRlckxheWVyV2l0aFRyYW5zZm9ybShNQUNIX1BPUlRfTlVMTCwgW2dXZWJCcm93c2VyVmlldyBs
YXllcl0uY29udGV4dC5jb250ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KFtnV2Vi
QnJvd3NlclZpZXcgbGF5ZXJdKSwgYnVmZmVyLCAwLCAwLCAmdHJhbnNmb3JtKTsKLQotICAgIHVp
bnQ4X3QqIGRhdGEgPSBDQVJlbmRlclNlcnZlckdldEJ1ZmZlckRhdGEoYnVmZmVyKTsKLSAgICBz
aXplX3Qgcm93Qnl0ZXMgPSBDQVJlbmRlclNlcnZlckdldEJ1ZmZlclJvd0J5dGVzKGJ1ZmZlcik7
Ci0KLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEsIENBUmVuZGVyU2VydmVyR2V0QnVm
ZmVyRGF0YVNpemUoYnVmZmVyKSwgbnVsbHB0cikpOwotICAgIAotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGJ1ZmZlcldpZHRoLCBidWZm
ZXJIZWlnaHQsIDgsIDMyLCByb3dCeXRlcywgc1JHQlNwYWNlLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBwcm92aWRlci5nZXQoKSwg
MCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLQotICAgIHZvaWQqIGJpdG1h
cEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgc2l6ZV90IGJpdG1hcFJvd0J5dGVzID0gMDsKLSAgICBh
dXRvIGJpdG1hcENvbnRleHQgPSBjcmVhdGVCaXRtYXBDb250ZXh0KGJ1ZmZlcldpZHRoLCBidWZm
ZXJIZWlnaHQsIGJpdG1hcFJvd0J5dGVzLCBiaXRtYXBCdWZmZXIpOwotICAgIGlmICghYml0bWFw
Q29udGV4dCkgewotICAgICAgICBDQVJlbmRlclNlcnZlckRlc3Ryb3lCdWZmZXIoYnVmZmVyKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgQ0dDb250ZXh0RHJhd0ltYWdl
KGJpdG1hcENvbnRleHQtPmNnQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJ1ZmZlcldpZHRo
LCBidWZmZXJIZWlnaHQpLCBjZ0ltYWdlLmdldCgpKTsKLSAgICBDQVJlbmRlclNlcnZlckRlc3Ry
b3lCdWZmZXIoYnVmZmVyKTsKLQotICAgIHJldHVybiBiaXRtYXBDb250ZXh0OwotI2VuZGlmCi0K
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCmluZGV4IGRjZWEzOGNkYWNlNzY4MjY1
MjBiMGIxZmQ4Y2UwMDhiYTNiYzdhNjQuLjAxZTI2ZjkyZmQ5ZTVjYTZmM2FmYjExMjdiZWY3N2U4
YTFjYjAzNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3Jt
V2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdl
YlZpZXdJT1MubW0KQEAgLTMxMiwxNyArMzEyLDggQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNl
dERyYXdzQmFja2dyb3VuZChib29sKQogewogfQogCi0jaWYgIUhBVkUoSU9TVVJGQUNFKQotc3Rh
dGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogaW5mbywgY29uc3Qgdm9pZCos
IHNpemVfdCkKLXsKLSAgICBDQVJlbmRlclNlcnZlckRlc3Ryb3lCdWZmZXIoc3RhdGljX2Nhc3Q8
Q0FSZW5kZXJTZXJ2ZXJCdWZmZXJSZWY+KGluZm8pKTsKLX0KLSNlbmRpZgotCiBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKIHsKLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KICAgICBDR1NpemUgdmlld1NpemUgPSBt
X3ZpZXcuYm91bmRzLnNpemU7CiAgICAgUkVMRUFTRV9BU1NFUlQodmlld1NpemUud2lkdGgpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKHZpZXdTaXplLmhlaWdodCk7CkBAIC0zNDYsMTEgKzMzNywxMCBA
QCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdElt
YWdlKCkKICAgICAgICAgdmlld3NUb1VuaGlkZS51bmNoZWNrZWRBcHBlbmQoZW5kR3JhYmJlclZp
ZXcpOwogICAgIH0KIAotI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIF9fYmxvY2sgYm9vbCBpc0Rv
bmUgPSBmYWxzZTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxDR0ltYWdlUmVmPiByZXN1bHQ7CiAg
ICAgCi0gICAgUmV0YWluUHRyPFdLU25hcHNob3RDb25maWd1cmF0aW9uPiBzbmFwc2hvdENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIHNuYXBzaG90Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1NuYXBzaG90
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtzbmFwc2hvdENvbmZpZ3VyYXRpb24g
c2V0UmVjdDpDR1JlY3RNYWtlKDAsIDAsIHZpZXdTaXplLndpZHRoLCB2aWV3U2l6ZS5oZWlnaHQp
XTsKICAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFNuYXBzaG90V2lkdGg6QCh2aWV3U2l6
ZS53aWR0aCldOwogICAgIApAQCAtMzY1LDMyICszNTUsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiAgICAgfV07CiAgICAg
d2hpbGUgKCFpc0RvbmUpCiAgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5N
b2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1d
OwotI2Vsc2UKLSAgICBDR0Zsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMjsgLy8gRklYTUU6IGhh
cmRjb2RlIDJ4IGZvciBub3cuIEluIGZ1dHVyZSB3ZSBjb3VsZCByZXNwZWN0IDF4IGFuZCAzeCBh
cyB3ZSBkbyBvbiBNYWMuCi0gICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9y
bTNETWFrZVNjYWxlKGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciwgMSk7Ci0g
ICAgCi0gICAgaW50IGJ1ZmZlcldpZHRoID0gY2VpbCh2aWV3U2l6ZS53aWR0aCAqIGRldmljZVNj
YWxlRmFjdG9yKTsKLSAgICBpbnQgYnVmZmVySGVpZ2h0ID0gY2VpbCh2aWV3U2l6ZS5oZWlnaHQg
KiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBDQVJlbmRlclNlcnZlckJ1ZmZlclJlZiBidWZm
ZXIgPSBDQVJlbmRlclNlcnZlckNyZWF0ZUJ1ZmZlcihidWZmZXJXaWR0aCwgYnVmZmVySGVpZ2h0
KTsKLSAgICBSRUxFQVNFX0FTU0VSVChidWZmZXIpOwotCi0gICAgQ0FSZW5kZXJTZXJ2ZXJSZW5k
ZXJMYXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JUX05VTEwsIG1fdmlldy5sYXllci5jb250ZXh0
LmNvbnRleHRJZCwgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV92aWV3LmxheWVyKSwgYnVm
ZmVyLCAwLCAwLCAmdHJhbnNmb3JtKTsKLQotICAgIHVpbnQ4X3QqIGRhdGEgPSBDQVJlbmRlclNl
cnZlckdldEJ1ZmZlckRhdGEoYnVmZmVyKTsKLSAgICBzaXplX3Qgcm93Qnl0ZXMgPSBDQVJlbmRl
clNlcnZlckdldEJ1ZmZlclJvd0J5dGVzKGJ1ZmZlcik7Ci0KLSAgICBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIHNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3Bh
Y2VTUkdCKTsKLSAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZVdpdGhEYXRhKGJ1ZmZlciwgZGF0YSwgQ0FSZW5kZXJTZXJ2ZXJHZXRCdWZmZXJEYXRhU2l6ZShi
dWZmZXIpLCByZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSkpOwotICAgIAotICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGJ1ZmZlcldpZHRoLCBidWZmZXJIZWlnaHQsIDgsIDMy
LCByb3dCeXRlcywgc1JHQlNwYWNlLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwg
a0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBwcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwotI2Vu
ZGlmCiAgICAgZm9yIChhdXRvIHZpZXcgOiB2aWV3c1RvVW5oaWRlKQogICAgICAgICBbdmlldyBz
ZXRIaWRkZW46Tk9dOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogfQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0TmF2aWdhdGlvbkdlc3R1
cmVzRW5hYmxlZChib29sIGVuYWJsZWQpCg==
</data>
<flag name="review"
          id="413791"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>