<?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>128404</bug_id>
          
          <creation_ts>2014-02-07 15:02:30 -0800</creation_ts>
          <short_desc>Stop using PLATFORM(MAC) in WebCore/platform except where it means “OS X but not iOS”</short_desc>
          <delta_ts>2014-02-08 09:37:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>philipj</cc>
    
    <cc>roger_fong</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978086</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-07 15:02:30 -0800</bug_when>
    <thetext>So that we can make PLATFORM(MAC) false when building for iOS, we need to replace all uses of it that don’t take iOS into account. Most such uses are about building for Cocoa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978099</commentid>
    <comment_count>1</comment_count>
      <attachid>223503</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-07 15:25:39 -0800</bug_when>
    <thetext>Created attachment 223503
Replace PLATFORM(MAC) with equivalent alternatives</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978102</commentid>
    <comment_count>2</comment_count>
      <attachid>223503</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-07 15:30:29 -0800</bug_when>
    <thetext>Comment on attachment 223503
Replace PLATFORM(MAC) with equivalent alternatives

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

&gt; Source/WebCore/platform/graphics/IntRect.h:196
&gt; +#if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS) &amp;&amp;!defined(NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES)

&amp;&amp;!defined

&gt; Source/WebCore/platform/mac/WebCoreSystemInterface.h:68
&gt; +#if PLATFORM(COCOA) &amp;&amp; USE(CA)

Is USE(CA) even needed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978363</commentid>
    <comment_count>3</comment_count>
      <attachid>223503</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-08 07:09:44 -0800</bug_when>
    <thetext>Comment on attachment 223503
Replace PLATFORM(MAC) with equivalent alternatives

How did you choose between PLATFORM(COCOA) and USE(APPKIT)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978379</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-08 09:37:24 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 223503 [details])
&gt; How did you choose between PLATFORM(COCOA) and USE(APPKIT)?

Those aren’t interchangeable: USE(APPKIT) is true only on Mac. I used it in two places: once around a header import, when the header was subsequently used under USE(CG) and USE(APPKIT) conditions; the other was around a forward-declaration of the AppKit class NSImage. That change caused trouble because some WebKit code that was compiling for iOS relied on that class declaration, so I had to fix WebKit in &lt;http://trac.webkit.org/r163660&gt;.

Oh, and this change itself was committed in &lt;http://trac.webkit.org/r163657&gt; with another build fix in &lt;http://trac.webkit.org/r163658&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223503</attachid>
            <date>2014-02-07 15:25:39 -0800</date>
            <delta_ts>2014-02-08 07:09:44 -0800</delta_ts>
            <desc>Replace PLATFORM(MAC) with equivalent alternatives</desc>
            <filename>bug-128404-20140207152546.patch</filename>
            <type>text/plain</type>
            <size>103579</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1OSBAQAorMjAxNC0wMi0wNyAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUExBVEZPUk0o
TUFDKSBpbiBXZWJDb3JlL3BsYXRmb3JtIGV4Y2VwdCB3aGVyZSBpdCBtZWFucyDigJxPUyBYIGJ1
dCBub3QgaU9T4oCdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjg0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IFJlbW92ZWQgS2V5RXZlbnRN
YWMubW0gZnJvbQorICAgICAgICBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhvbmVvcywg
YmVjYXVzZSB0aGF0IGZpbGUgY29udGFpbnMgIVBMQVRGT1JNKElPUykgZ3VhcmRzLgorICAgICAg
ICBSZW1vdmVkIFdoZWVsRXZlbnRNYWMubW0gZnJvbSB0aGUgc2FtZSBkZWZpbml0aW9uLCBiZWNh
dXNlIHRoYXQgZmlsZSBubyBsb25nZXIgZXhpc3RzLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRl
bnRGaWx0ZXIuaDogQ2hhbmdlZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudS5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9Db250ZXh0TWVudUl0ZW0uaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmNw
cDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmg6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL0RyYWdEYXRhLmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZSk6IENoYW5nZWQgUExBVEZP
Uk0oTUFDKSB0byBVU0UoQ0YpICYmICFQTEFURk9STShXSU4pLgorICAgICAgICAqIHBsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExBVEZPUk0o
Q09DT0EpLgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtTWVudURlc2NyaXB0aW9uLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1XaGVlbEV2ZW50Lmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2
ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1NjaGVtZVJlZ2lz
dHJ5LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpsb2NhbFVSTFNjaGVtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRB
c0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRDYWNoZVJl
c3BvbnNlc0Zyb21VUkxTY2hlbWVJbmRlZmluaXRlbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
aDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0byBVU0UoRk9VTkRBVElPTikgYXJv
dW5kIE5TRGF0YS1yZWxhdGVkCisgICAgICAgIGNvZGUuCisgICAgICAgICogcGxhdGZvcm0vVVJM
Lmg6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0byBVU0UoRk9VTkRBVElPTikgYXJvdW5kIE5TVVJM
LXJlbGF0ZWQgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRnZXQuY3BwOiBDaGFuZ2VkIFBM
QVRGT1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAqIHBsYXRmb3JtL1dpZGdl
dC5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOiBD
aGFuZ2VkICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpIHRvCisgICAgICAgICFQTEFU
Rk9STShDT0NPQSkuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6
IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0byBQTEFURk9STShDT0NPQSkuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwOiBVcGRhdGVkIGNvbW1lbnQuCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOiBS
ZW1vdmVkIFBMQVRGT1JNKE1BQykgZnJvbSBDb2NvYS1vbmx5IGZpbGUuCisgICAgICAgICogcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOiBDaGFuZ2VkICFQTEFURk9STShNQUMpIHRvICFV
U0UoRk9VTkRBVElPTikgYW5kIHVwZGF0ZWQKKyAgICAgICAgY29tbWVudC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jZi9VUkxDRi5jcHA6IENoYW5nZWQgIVBMQVRGT1JNKE1BQykgdG8gIVVTRShGT1VO
REFUSU9OKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOiBDaGFu
Z2VkIG9uZSBpbnN0YW5jZSBvZiBQTEFURk9STShNQUMpIHRvCisgICAgICAgIFVTRShDRykgfHwg
VVNFKEFQUEtJVCksIGFuZCBhbm90aGVyIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwOiBDaGFuZ2VkIFBMQVRG
T1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50Lmg6IENvbGxhcHNlZCBuZXN0ZWQgI2lmcyBpbnRvIGEg
c2luZ2xlICNpZi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmg6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykg
dG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDogRGl0dG8uIEFsc28gcmVtb3ZlZCByZWR1bmRh
bnQgZnJpZW5kIGNsYXNzIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHbHlwaHMuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0Ep
LgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdseXBoczo6Z2x5cGhEYXRhQW5kUGFnZUZvckNoYXJh
Y3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmg6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6IENoYW5nZWQgUExBVEZPUk0oTUFD
KSB0byBVU0UoQVBQS0lUKSBhcm91bmQgdXNlIG9mIE5TSW1hZ2UuCisgICAgICAgIENoYW5nZWQg
YW5vdGhlciBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0Lmg6IENvbGxhcHNlZCBuZXN0ZWQgI2lmcyBpbnRvIGEgc2lu
Z2xlICNpZi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmg6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDogQ2hhbmdlZCBQTEFU
Rk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKFdlYkNvcmU6Omluc3RhbGxl
ZE1lZGlhRW5naW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNU
eXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHA6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6Om5vblN5bnRoZXRpY0l0YWxp
Y0ZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpEZXJpdmVkRm9u
dERhdGE6On5EZXJpdmVkRm9udERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVk
QmFja2luZy5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvTGF5ZXJGbHVzaFNjaGVkdWxlci5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FGaWx0ZXJzLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0QWxsb3dzRm9udFNtb290aGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
Q0cuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cu
Y3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlBhdGg6OnBsYXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZVZpZXcpOiBS
ZW1vdmVkIFBMQVRGT1JNKE1BQykgZ3VhcmRzLCBzaW5jZQorICAgICAgICB0aGlzIGZpbGUgaXMg
b25seSB1c2VkIG9uIE1hYyBhbmQgaU9TLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
czNET3BlbkdMOjpzdXBwb3J0c0V4dGVuc2lvbik6IENoYW5nZWQgdGhlIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgY2hlY2sgdG8KKyAgICAgICAgbWF0Y2ggdGhlIGltcGxlbWVudGF0aW9uLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6
IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0bworICAgICAgICBQTEFURk9STShDT0NPQSkuCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tOiBBZGRlZCAhUExBVEZPUk0oSU9TKS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaDogQ2hhbmdl
ZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOiBEaXR0by4gUmVtb3ZlZCByZWR1bmRhbnQgY2hl
Y2sgZm9yIFBMQVRGT1JNKE1BQykuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW06IFJlbW92ZWQgcmVkdW5kYW50IGNoZWNrIGZvciBQTEFURk9STShNQUMp
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oOiBDaGFuZ2VkIFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDKSB0byBQTEFURk9STShDT0NPQSkuCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oOiBDaGFuZ2VkIFBMQVRGT1JN
KE1BQykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
TmV0d29ya2luZ0NvbnRleHQuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25T
cGFjZTo6cmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpjbGVhckF1dGhlbnRpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpzaG91bGRDb250ZW50U25pZmZVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmg6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcDogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0
LmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVh
bUNGTmV0LmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29u
bmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdC5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDogQ2hhbmdlZCBQTEFURk9S
TShNQUMpIHRvIE9TKERBUldJTikgJiYKKyAgICAgICAgIVBMQVRGT1JNKEVGTCkgJiYgIVBMQVRG
T1JNKEdUSykuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHA6IENo
YW5nZWQgUExBVEZPUk0oTUFDKSB0byBQTEFURk9STShDT0NPQSkuCisKIDIwMTQtMDItMDcgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIxNTQzODQg
YW5kIHIxNTQ2NzQgYXMgdGhleSBicm9rZSBzZWxlY3Rpb24gcmVjdCBjb21wdXRhdGlvbnMgZm9y
IHRleHQgd2l0aCBsaWdhdHVyZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL1dlYkNvcmUueGNjb25maWcJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTEx
Miw2ICsxMTIsNiBAQCBKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1Byb2R1CiBK
QVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfZW5naW5lZXJpbmcgPSAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCiBFWENM
VURFRF9TT1VSQ0VfRklMRV9OQU1FUyA9ICQoRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfJChQ
TEFURk9STV9OQU1FKSk7Ci1FWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhvbmVvcyA9ICou
dGlmZiAqQ3Vyc29yLnBuZyBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIEFYT2JqZWN0Q2FjaGVN
YWMubW0gQ2xpcGJvYXJkTWFjLm1tIENvbG9yTWFjLm1tIEN1cnNvci5jcHAgQ3Vyc29yTWFjLm1t
IEVkaXRvck1hYy5tbSBFdmVudEhhbmRsZXJNYWMubW0gRXZlbnRMb29wTWFjLm1tIEdlb2xvY2F0
aW9uU2VydmljZU1hYy5tbSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBJY29uRGF0YWJh
c2UuY3BwIEljb25NYWMubW0gS2V5RXZlbnRNYWMubW0gS2lsbFJpbmdNYWMubW0gTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0Lm1tIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0gTlNTY3JvbGxlckltcERldGFpbHMubW0gTmV0d29ya1N0YXRlTm90aWZp
ZXJNYWMuY3BwIFBhc3RlYm9hcmRNYWMubW0gUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gUGxh
dGZvcm1Nb3VzZUV2ZW50TWFjLm1tIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBQbGF0Zm9ybVNj
cmVlbk1hYy5tbSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIFBsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXIuY3BwIFJ1bkxvb3BNYWMubW0gU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5tbSBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0g
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0gU2Nyb2xsVmlld01hYy5tbSBTY3JvbGxi
YXJUaGVtZU1hYy5tbSBTaGFyZWRUaW1lck1hYy5tbSBTb3VuZE1hYy5tbSBTeXN0ZW1UaW1lTWFj
LmNwcCBUaGVtZU1hYy5tbSBUaHJlYWRDaGVjay5tbSBVc2VyQWdlbnRNYWMubW0gV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBXZWJD
b3JlVVJMUmVzcG9uc2UubW0gV2ViQ29yZVZpZXcubSBXZWJGb250Q2FjaGUubW0gV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyLm1tIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBXaGVlbEV2ZW50TWFjLm1tIFdpZGdldE1hYy5t
bSBtYWMvTGF5ZXJQb29sLm1tIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHA7CitFWENMVURF
RF9TT1VSQ0VfRklMRV9OQU1FU19pcGhvbmVvcyA9ICoudGlmZiAqQ3Vyc29yLnBuZyBBY2Nlc3Np
YmlsaXR5T2JqZWN0TWFjLm1tIEFYT2JqZWN0Q2FjaGVNYWMubW0gQ2xpcGJvYXJkTWFjLm1tIENv
bG9yTWFjLm1tIEN1cnNvci5jcHAgQ3Vyc29yTWFjLm1tIEVkaXRvck1hYy5tbSBFdmVudEhhbmRs
ZXJNYWMubW0gRXZlbnRMb29wTWFjLm1tIEdlb2xvY2F0aW9uU2VydmljZU1hYy5tbSBHcmFwaGlj
c0NvbnRleHQzRE9wZW5HTEVTLmNwcCBJY29uRGF0YWJhc2UuY3BwIEljb25NYWMubW0gS2lsbFJp
bmdNYWMubW0gTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tIE1JTUVUeXBlUmVnaXN0cnlN
YWMubW0gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gTlNTY3JvbGxlckltcERldGFpbHMubW0g
TmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwIFBhc3RlYm9hcmRNYWMubW0gUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMubW0gUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tIFBsYXRmb3JtUGFzdGVib2Fy
ZE1hYy5tbSBQbGF0Zm9ybVNjcmVlbk1hYy5tbSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFj
Lm1tIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIFJ1bkxvb3BNYWMubW0gU1NMS2V5R2Vu
ZXJhdG9yTWFjLmNwcCBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGVNYWMubW0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0gU2Nyb2xs
Vmlld01hYy5tbSBTY3JvbGxiYXJUaGVtZU1hYy5tbSBTaGFyZWRUaW1lck1hYy5tbSBTb3VuZE1h
Yy5tbSBTeXN0ZW1UaW1lTWFjLmNwcCBUaGVtZU1hYy5tbSBUaHJlYWRDaGVjay5tbSBVc2VyQWdl
bnRNYWMubW0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5tbSBXZWJDb3JlVVJMUmVzcG9uc2UubW0gV2ViQ29yZVZpZXcubSBXZWJGb250
Q2FjaGUubW0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBXaWRnZXRNYWMu
bW0gbWFjL0xheWVyUG9vbC5tbSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwOwogRVhDTFVE
RURfU09VUkNFX0ZJTEVfTkFNRVNfaXBob25lc2ltdWxhdG9yID0gJChFWENMVURFRF9TT1VSQ0Vf
RklMRV9OQU1FU19pcGhvbmVvcyk7CiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19tYWNvc3gg
PSAqSU9TLmggKklPUy5jcHAgKklPUy5tbSBKU1RvdWNoKiBKU0dlc3R1cmUqIERPTUdlc3R1cmUq
IERPTVRvdWNoKiBLaWxsUmluZ05vbmUuY3BwIFdBS0FwcEtpdFN0dWJzLmggV0FLQ2xpcFZpZXcu
aCBXQUtSZXNwb25kZXIuaCBXQUtTY3JvbGxWaWV3LmggV0FLVmlldy5oIFdBS1ZpZXdQcml2YXRl
LmggV0FLV2luZG93LmggV0tDb250ZW50T2JzZXJ2YXRpb24uaCBXS0dyYXBoaWNzLmggV0tUeXBl
cy5oIFdLVXRpbGl0aWVzLmggV0tWaWV3LmggV0tWaWV3UHJpdmF0ZS5oIFdlYkNvcmVUaHJlYWQu
aCBXZWJDb3JlVGhyZWFkTWVzc2FnZS5oIFdlYkNvcmVUaHJlYWRSdW4uaCBXZWJDb3JlVGhyZWFk
U3lzdGVtSW50ZXJmYWNlLmg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50
RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZp
bHRlci5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250
ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb25hbC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TTXV0YWJsZURhdGE7CiBPQkpDX0NMQVNTIFdlYkZpbHRl
ckV2YWx1YXRvcjsKICNlbmRpZgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IENvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8
V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3BsYXRmb3JtQ29udGVudEZpbHRlcjsKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBtX3JlcGxhY2VtZW50RGF0YTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZXh0TWVudS5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZWxpZiBQTEFURk9STShXSU4pCiAjaW5jbHVk
ZSA8d2luZG93cy5oPgpAQCAtODcsNyArODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
VVNFKENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMpCiAgICAgICAgIFZlY3RvcjxDb250ZXh0
TWVudUl0ZW0+IG1faXRlbXM7CiAjZWxzZQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAgICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24gdHlwZWRlZgogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19DTEFTUyBOU01lbnVJdGVtOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQpAQCAtMTM3LDcgKzEzNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQsCiAgICAgICAgIENvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodCwKICAgICAgICAgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0LAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5n
QXV0b21hdGljYWxseSwKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01l
bnUsCiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zLApAQCAtMTc3
LDcgKzE3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHR5cGVkZWYgTlNNZW51SXRlbSogUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uOwogI2VsaWYg
UExBVEZPUk0oR1RLKQogICAgIHR5cGVkZWYgR3RrTWVudUl0ZW0qIFBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbjsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgbV9jaGVja2VkOwogICAgICAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBtX3N1
Yk1lbnVJdGVtczsKICNlbHNlCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgICAgICBSZXRhaW5QdHI8TlNNZW51SXRlbT4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOwog
I2Vsc2UKICAgICAgICAgUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIG1fcGxhdGZvcm1EZXNj
cmlwdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAkocmV2aXNpb24gMTYz
NjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc2LDcgKzE3Niw3IEBAIEN1cnNvcjo6Q3Vyc29yKFR5cGUgdHlwZSkKIHsKIH0KIAot
I2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKENPQ09BKQogCiBQbGF0Zm9ybUN1cnNv
ciBDdXJzb3I6OnBsYXRmb3JtQ3Vyc29yKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0N1cnNvci5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
dXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBI
SUNPTl9fKiBISUNPTjsKIHR5cGVkZWYgSElDT04gSENVUlNPUjsKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jZWxpZiBQTEFURk9STShN
QUMpCisjZWxpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
ZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lm
ICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKENPQ09BKQogRHJhZ0RhdGE6OkRyYWdEYXRh
KERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3Qg
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCAKICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJh
dGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQogICAgIDogbV9jbGllbnRQb3Np
dGlvbihjbGllbnRQb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDcgKzIwMSw3IEBAIERyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGb3JJbWFnZShGcmEKICAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJv
bVNuYXBzaG90KHNuYXBzaG90Tm9kZShmcmFtZSwgbm9kZSksICZub2RlKTsKIH0KIAotI2lmICFQ
TEFURk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCisjaWYgIVBMQVRG
T1JNKENPQ09BKSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQogRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiwgRm9udFJlbmRlcmlu
Z01vZGUpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oV0lOKQogI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIApAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHNpemVfdCBpbmRleE9mQmVzdE1hdGNoaW5nTGFuZ3VhZ2VJbkxpc3QKIAogU3RyaW5n
IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGVOYW1lKQog
ewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoQ0YpICYmICFQTEFURk9STShXSU4pCiAgICAg
aWYgKCFsb2NhbGVOYW1lLmlzTnVsbCgpICYmICFsb2NhbGVOYW1lLmlzRW1wdHkoKSkgewogICAg
ICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGN1cnJlbnRMb2NhbGUgPSBhZG9wdENGKENGTG9j
YWxlQ29weUN1cnJlbnQoKSk7CiAgICAgICAgIHJldHVybiBDRkxvY2FsZUNvcHlEaXNwbGF5TmFt
ZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9jYWxlSWRlbnRpZmll
ciwgbG9jYWxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIldl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNlbmRpZgogCkBAIC0xMzMsNyArMTMzLDcgQEAgU3Ry
aW5nIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJEZXRhaWxzIiwgInRleHQgdG8gZGlzcGxheSBpbiA8ZGV0YWlscz4gdGFnIHdoZW4gaXQgaGFz
IG5vIDxzdW1tYXJ5PiBjaGlsZCIpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogU3RyaW5nIGNvcHlJbWFnZVVua25vd25GaWxlTGFiZWwoKQogewogICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HKCJ1bmtub3duIiwgIlVua25vd24gZmlsZW5hbWUiKTsKQEAgLTIy
Niw3ICsyMjYsNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZygpCiAg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxlYXJuIFNwZWxsaW5nIiwgIkxlYXJuIFNwZWxsaW5n
IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKQog
ewogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJTZWFyY2ggaW4gU3BvdGxpZ2h0IiwgIlNlYXJj
aCBpbiBTcG90bGlnaHQgY29udGV4dCBtZW51IGl0ZW0iKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnCiAKIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlYXJjaFByb3ZpZGVyTmFtZSA9
IGFkb3B0Q0Yod2tDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUoKSk7CiAgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJTZWFyY2ggd2l0aCAl
QCIsICJTZWFyY2ggd2l0aCBzZWFyY2ggcHJvdmlkZXIgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBw
cm92aWRlciBuYW1lIGluc2VydGVkIiksIHNlYXJjaFByb3ZpZGVyTmFtZS5nZXQoKSk7CiAjZWxz
ZQpAQCAtMjk1LDcgKzI5NSw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgp
CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkZvbnQiLCAiRm9udCBjb250ZXh0IHN1Yi1tZW51
IGl0ZW0iKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKQogewogICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJTaG93IEZvbnRzIiwgIlNob3cgZm9udHMgY29udGV4dCBtZW51IGl0ZW0iKTsKQEAg
LTMyMiw3ICszMjIsNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCiAgICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoIk91dGxpbmUiLCAiT3V0bGluZSBjb250ZXh0IG1lbnUgaXRl
bSIpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkco
IlN0eWxlcy4uLiIsICJTdHlsZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKQEAgLTM3NCw3ICszNzQs
NyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQogICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51
IGl0ZW0iKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKQog
ewpAQCAtNDQ0LDcgKzQ0NCw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNr
KGNvbnMKICAgICByZXR1cm4gcmVwbGFjZWRTdHJpbmc7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRvdygpCiB7CkBAIC02NTMsNyArNjUzLDcgQEAgU3RyaW5n
IEFYTGlzdEl0ZW1BY3Rpb25WZXJiKCkKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBT
dHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKQogewog
ICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uQWxlcnQiKQpAQCAtNzAwLDcgKzcw
MCw3IEBAIFN0cmluZyBBWEFSSUFDb250ZW50R3JvdXBUZXh0KGNvbnN0IFN0cmkKICAgICAgICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoIm1hdGgiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3Vw
IHRoYXQgY29udGFpbnMgbWF0aGVtYXRpY2FsIHN5bWJvbHMuIik7CiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorI2VuZGlm
IC8vIFBMQVRGT1JNKENPQ09BKQogCiBTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKQogewpAQCAt
NzQ2LDcgKzc0Niw3IEBAIFN0cmluZyBhbGxGaWxlc1RleHQoKQogfQogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgYnVpbHRJblBERlBsdWdp
bk5hbWUoKQogewogICAgIC8vIEFsc28gZXhwb3NlZCB0byBET00uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBmaWxlQnV0
dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwoKTsKICAgICBTdHJpbmcgZGVmYXVsdERldGFpbHNTdW1t
YXJ5VGV4dCgpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFN0cmluZyBjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCk7CiAjZW5kaWYKIApAQCAtMTA1LDcg
KzEwNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnRGVmYXVsdERpcmVjdGlvbigpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWZ0
VG9SaWdodCgpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpOwot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzKCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygp
OwpAQCAtMTc5LDcgKzE3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyB0ZWNobmlj
YWwgc3RhbmRhcmQgMzUsIExvY2FsZSBEYXRhIE1hcmt1cCBMYW5ndWFnZSwgZS5nLiAiJ1dlZWsn
IHd3LCB5eXl5IgogICAgIFN0cmluZyB3ZWVrRm9ybWF0SW5MRE1MKCk7CiAjZW5kaWYKLSNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBT
dHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKTsKICNl
bmRpZgogCkBAIC0xOTYsNyArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmlu
ZyBhbGxGaWxlc1RleHQoKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFN0cmluZyBidWlsdEluUERGUGx1Z2luTmFtZSgpOwogICAgIFN0cmlu
ZyBwZGZEb2N1bWVudFR5cGVEZXNjcmlwdGlvbigpOwogICAgIFN0cmluZyBwb3N0U2NyaXB0RG9j
dW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKQEAgLTI0OSw3ICsyNDksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgU3RyaW5nIHRleHRUcmFja09mZk1lbnVJdGVtVGV4dCgpOwogICAgIFN0cmlu
ZyB0ZXh0VHJhY2tBdXRvbWF0aWNNZW51SXRlbVRleHQoKTsKICAgICBTdHJpbmcgdGV4dFRyYWNr
Tm9MYWJlbFRleHQoKTsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKKyNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgIFN0cmluZyB0ZXh0VHJhY2tDb3Vu
dHJ5QW5kTGFuZ3VhZ2VNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBjb3VudHJ5LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKICAgICBTdHJpbmcgdGV4dFRy
YWNrTGFuZ3VhZ2VNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSk7CiAgICAgU3RyaW5nIGNsb3NlZENhcHRpb25UcmFja01lbnVJdGVtVGV4dChj
b25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDcgKzI4Niw3IEBA
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUUKICAgICBzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKIAogI2lmIFVT
RShDRykKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IHN1cHBvcnRlZFR5cGVzID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRp
b25Db3B5VHlwZUlkZW50aWZpZXJzKCkpOwogICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0
Q291bnQoc3VwcG9ydGVkVHlwZXMuZ2V0KCkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBjaGFu
Z2VDb3VudCgpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE3ICsz
MSwxMyBAQAogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShJT1MpCi0jaWZkZWYgX19PQkpDX18KLUBjbGFzcyBXZWJFdmVudDsK
LSNlbHNlCi1jbGFzcyBXZWJFdmVudDsKLSNlbmRpZgorT0JDSl9DTEFTUyBXZWJFdmVudDsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtMTE5LDcgKzExNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgY3VycmVudENhcHNMb2NrU3RhdGUoKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXks
IGJvb2wmIGN0cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSk7CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAg
ICAgTlNFdmVudCogbWFjRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX21hY0V2ZW50LmdldCgpOyB9
CiAjZWxzZQpAQCAtMTU4LDcgKzE1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2lzS2V5cGFkOwogICAgICAgICBib29sIG1faXNTeXN0ZW1LZXk7CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAg
ICAgUmV0YWluUHRyPE5TRXZlbnQ+IG1fbWFjRXZlbnQ7CiAjZWxzZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oCShyZXZpc2lv
biAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlw
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFBsYXRmb3Jt
TWVudURlc2NyaXB0aW9uX2gKICNkZWZpbmUgUGxhdGZvcm1NZW51RGVzY3JpcHRpb25faAogCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU011dGFi
bGVBcnJheTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0z
Nyw3ICszNyw3IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtNZW51IEd0a01lbnU7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiAhVVNFKENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMpCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHR5cGVkZWYgTlNNdXRhYmxl
QXJyYXkqIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAg
IHR5cGVkZWYgR3RrTWVudSogUGxhdGZvcm1NZW51RGVzY3JpcHRpb247CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCShy
ZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiBPQkpDX0NMQVNTIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI7CiAjZW5kaWYKQEAgLTg2LDcg
Kzg2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdm9pY2VMaXN0SXNJbml0aWFsaXplZDsKICAg
ICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50OwogICAgIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZXRhaW5QdHI8V2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlcj4gbV9wbGF0Zm9ybVNwZWVjaFdyYXBw
ZXI7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdo
ZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKICAg
ICB9OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVudW0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgewogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZU5vbmUgICAgICAgID0gMCwKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbiAg
ICAgICA9IDEgPDwgMCwKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgLCBtX3doZWVsVGlja3NZKDApCiAgICAgICAgICAgICAsIG1fZ3JhbnVsYXJpdHko
U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQpCiAgICAgICAgICAgICAsIG1fZGlyZWN0aW9uSW52ZXJ0
ZWRGcm9tRGV2aWNlKGZhbHNlKQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQogICAg
ICAgICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKICAgICAgICAg
ICAgICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKQEAgLTk2
LDcgKzk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3doZWVsVGlj
a3NZKHdoZWVsVGlja3NZKQogICAgICAgICAgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5
KQogICAgICAgICAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICAsIG1faGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9waGFzZShQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCiAgICAgICAgICAgICAsIG1fbW9tZW50dW1QaGFzZShQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCkBAIC0xNTQsNyArMTU0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBleHBsaWNpdCBQbGF0Zm9ybVdoZWVsRXZlbnQoY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9XaGVlbCopOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsgfQogICAgICAgICB2
b2lkIHNldEhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoYm9vbCBiKSB7IG1faGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhcyA9IGI7IH0KICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhh
c2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CkBAIC0xODUsNyArMTg1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBtX3doZWVsVGlja3NZOwogICAgICAgICBQbGF0
Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OwogICAgICAgICBib29sIG1f
ZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgYm9vbCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7CiAg
ICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fcGhhc2U7CiAgICAgICAgIFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKIAogICAg
IGlmIChsb2NhbFNjaGVtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGxvY2FsU2NoZW1lcy5hZGQo
ImZpbGUiKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAg
IGxvY2FsU2NoZW1lcy5hZGQoImFwcGxld2ViZGF0YSIpOwogI2VuZGlmCiAgICAgfQpAQCAtMTIy
LDcgKzEyMiw3IEBAIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2kKIHsK
ICAgICBpZiAoc2NoZW1lID09ICJmaWxlIikKICAgICAgICAgcmV0dXJuOwotI2lmIFBMQVRGT1JN
KE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoc2NoZW1lID09ICJhcHBsZXdlYmRh
dGEiKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIFNj
aGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDCiAKIGJvb2wgU2NoZW1lUmVnaXN0cnk6
OnNob3VsZENhY2hlUmVzcG9uc2VzRnJvbVVSTFNjaGVtZUluZGVmaW5pdGVseShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNjaGVtZSwgImFwcGxld2ViZGF0YSIpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvT2Zmc2V0V2l0aG8KIAogYm9vbCBTY3JvbGxB
bmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiB7
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEV2ZW50cyBp
biB0aGUgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VNYXlCZWdpbiBwaGFzZSBoYXZlIG5vIGRlbHRh
cywgYW5kIHRoZXJlZm9yZSBuZXZlciBwYXNzZXMgdGhyb3VnaCB0aGUgc2Nyb2xsIGhhbmRsaW5n
IGxvZ2ljIGJlbG93LgogICAgIC8vIFRoaXMgY2F1c2VzIHVzIHRvIHJldHVybiB3aXRoIGFuICd1
bmhhbmRsZWQnIHJldHVybiBzdGF0ZSwgZXZlbiB0aG91Z2ggdGhpcyBldmVudCB3YXMgc3VjY2Vz
c2Z1bGx5IHByb2Nlc3NlZC4KICAgICAvLwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRv
dWNoRXZlbnQmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2UpIHsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5Nyw3ICsxMzk3LDcgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW4oY29uc3QgSQogICAgICAgICB1cGRhdGVTY3Jv
bGxiYXJzKHNjcm9sbE9mZnNldCgpKTsKIH0KIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBM
QVRGT1JNKENPQ09BKQogCiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtQWRkQ2hpbGQoV2lkZ2V0
KikKIHsKQEAgLTE0MDksNyArMTQwOSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1SZW1v
dmVDaGlsZChXaWQKIAogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9S
TShDT0NPQSkKIAogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdXBwcmVz
c2VkKGJvb2wpCiB7CkBAIC0xNDI1LDcgKzE0MjUsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRm
b3JtU2V0U2Nyb2xsYmFyT3ZlCiAKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJN
b2RlcygpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lv
biAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV0FLVmlldzsKICNlbmRpZgogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNf
XworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkIF9fT0JKQ19fCiBAcHJvdG9jb2wgV2Vi
Q29yZUZyYW1lU2Nyb2xsVmlldzsKICNlbmRpZgogCkBAIC00NDYsNyArNDQ2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNhbGN1bGF0ZU92ZXJoYW5nQXJlYXNGb3JQYWludGluZyhJbnRSZWN0JiBo
b3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCk7CiAg
ICAgdm9pZCB1cGRhdGVPdmVyaGFuZ0FyZWFzKCk7CiAKLSNpZiBQTEFURk9STShNQUMpICYmIGRl
ZmluZWQgX19PQkpDX18KKyNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZCBfX09CSkNfXwog
cHVibGljOgogICAgIE5TVmlldyogZG9jdW1lbnRWaWV3KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAkocmV2
aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyVGhlbWUuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKIHR5cGVkZWYgaWQgU2Nyb2xsYmFyUGFpbnRlcjsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFNj
cm9sbGJhclBhaW50ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJHVW5pcXVl
UHRyU291cC5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEZPVU5EQVRJ
T04pCiBPQkpDX0NMQVNTIE5TRGF0YTsKICNlbmRpZgogCkBAIC02Nyw3ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB+U2hhcmVkQnVmZmVyKCk7CiAgICAgCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFVTRShGT1VOREFUSU9OKQogICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIGV4aXN0cyBhcyBh
IHRlbXBvcmFyeSB3b3JrYXJvdW5kIHNvIHRoYXQgY29kZSB0aGF0IGRvZXM6CiAgICAgLy8gW2J1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkgYXV0b3JlbGVhc2VdIHdpbGwgZmFpbCB0byBjb21waWxlLgog
ICAgIC8vIE9uY2UgYm90aCBNYWMgYW5kIGlPUyBidWlsZHMgd2l0aCB0aGlzIGNoYW5nZSB3ZSBj
YW4gY2hhbmdlIHRoZSByZXR1cm4gdHlwZSB0byBiZSBSZXRhaW5QdHI8TlNEYXRhPiwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTC5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5o
IgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEZPVU5EQVRJT04pCiBPQkpD
X0NMQVNTIE5TVVJMOwogI2VuZGlmCiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAg
R1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoRk9VTkRBVElPTikKICAgICBVUkwoTlNVUkwqKTsKICAg
ICBvcGVyYXRvciBOU1VSTCooKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgSW50UG9pbnQg
V2lkZ2V0Ojpjb252ZXJ0VG9Db250YWluaW5nV2luZAogICAgIHJldHVybiBjb252ZXJ0RnJvbVJv
b3RUb0NvbnRhaW5pbmdXaW5kb3codGhpcywgbG9jYWxQb2ludCk7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oTUFDKQorI2lmICFQTEFURk9STShDT0NPQSkKIEludFJlY3QgV2lkZ2V0Ojpjb252ZXJ0RnJv
bVJvb3RUb0NvbnRhaW5pbmdXaW5kb3coY29uc3QgV2lkZ2V0KiwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICByZXR1cm4gcmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dp
ZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCShy
ZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDExIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU1ZpZXc7CiBP
QkpDX0NMQVNTIE5TV2luZG93OwogdHlwZWRlZiBOU1ZpZXcgKlBsYXRmb3JtV2lkZ2V0OwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgZnJhbWUgcmVjdHMgYmUgdGhlIHNh
bWUgbm8gbWF0dGVyIHdoYXQgdHJhbnNmb3JtcyBhcmUgYXBwbGllZC4KICAgICB2aXJ0dWFsIGJv
b2wgdHJhbnNmb3Jtc0FmZmVjdEZyYW1lUmVjdCgpIHsgcmV0dXJuIHRydWU7IH0KIAotI2lmIFBM
QVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU1ZpZXcqIGdldE91dGVyVmll
dygpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVGcm9tU3VwZXJ2aWV3KCk7CkBAIC0yMjAsNyAr
MjIwLDcgQEAgcHJpdmF0ZToKIAogcHJpdmF0ZToKICAgICBTY3JvbGxWaWV3KiBtX3BhcmVudDsK
LSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVdp
ZGdldCBtX3dpZGdldDsKICNlbHNlCiAgICAgUmV0YWluUHRyPE5TVmlldz4gbV93aWRnZXQ7CkBA
IC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0ZToKICNkZWZpbmUgV0lER0VUX1RZUEVfQ0FTVFMoVG9W
YWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKICAgICBUWVBFX0NBU1RTX0JBU0UoVG9WYWx1ZVR5
cGVOYW1lLCBXaWRnZXQsIG9iamVjdCwgb2JqZWN0LT5wcmVkaWNhdGUsIG9iamVjdC5wcmVkaWNh
dGUpCiAKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShDT0NPQSkKIAogaW5saW5l
IFBsYXRmb3JtV2lkZ2V0IFdpZGdldDo6cGxhdGZvcm1XaWRnZXQoKSBjb25zdAogewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCShyZXZp
c2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQXVkaW9TZXNzaW9u
OjplbmRlZEF1ZGlvSW50ZXJydXB0aW8KICAgICAgICAgKCppKS0+ZW5kZWRBdWRpb0ludGVycnVw
dGlvbigpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKE1BQykKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKIH07CiAKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6CiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2Vu
ZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3Qgc2l6ZV90IFJlc3BvbnNlRnJhbWVTaXplID0g
MjU2OwogLy8gVGhlIGltcHVsc2UgcmVzcG9uc2VzIG1heSBiZSByZXNhbXBsZWQgdG8gYSBkaWZm
ZXJlbnQgc2FtcGxlLXJhdGUgKGRlcGVuZGluZyBvbiB0aGUgYXVkaW8gaGFyZHdhcmUpIHdoZW4g
dGhleSBhcmUgbG9hZGVkLgogY29uc3QgZmxvYXQgUmVzcG9uc2VTYW1wbGVSYXRlID0gNDQxMDA7
CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAjZGVmaW5lIFVTRV9DT05D
QVRFTkFURURfSU1QVUxTRV9SRVNQT05TRVMKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkocmV2
aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsCiAgICAgfQogfQogCi0jaWYgIVBMQVRG
T1JNKE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAkocmV2aXNpb24gMTYz
NjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw0ICsxNjQsNCBAQCB2b2lkIEF1ZGlvU2Vzc2lv
bjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6CiAKIH0KIAotI2VuZGlmIC8vIFVTRShBVURJT19TRVNT
SU9OKSAmJiBQTEFURk9STShNQUMpCisjZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pICYmIFBM
QVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIu
aCIKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFV
RElPX1NFU1NJT04pCiAKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0
aWMgY29uc3Qgc2l6ZV90IGtXZWJBdWRpb0J1ZmZlclNpemUgPSAxMjg7CiAKLSNpZiBQTEFURk9S
TShJT1MpIHx8X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisjaWYgUExB
VEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIHN0
YXRpYyBjb25zdCBzaXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0gNDA5NjsKICNlbmRp
ZgogCkBAIC01NCw0ICs1NCw0IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblMKICNlbmRpZgogfQogCi0jZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRG
T1JNKE1BQykKKyNlbmRpZiAvLyBVU0UoQVVESU9fU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAJKHJldmlzaW9uIDE2MzYzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksOSArNDksOSBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRh
dGFSZWYgY2ZECiB7CiB9CiAKLS8vIE1hYyBpcyBhIENGIHBsYXRmb3JtIGJ1dCBoYXMgYW4gZXZl
biBtb3JlIGVmZmljaWVudCB2ZXJzaW9uIG9mIHRoaXMgbWV0aG9kLAotLy8gc28gb25seSB1c2Ug
dGhpcyB2ZXJzaW9uIGZvciBub24tTWFjCi0jaWYgIVBMQVRGT1JNKE1BQykKKy8vIFVzaW5nIEZv
dW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9u
IG9mIHRoaXMgZnVuY3Rpb24sCisvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1G
b3VuZGF0aW9uLgorI2lmICFVU0UoRk9VTkRBVElPTikKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkKIHsKICAgICBpZiAobV9jZkRhdGEpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQCBVUkw6OlVSTChDRlVSTFJlZiB1cmwpCiAgICAgcGFyc2UodXJsQnl0ZXMuZGF0
YSgpKTsKIH0KIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVVTRShGT1VOREFUSU9OKQogUmV0
YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4gZm9yIGludmFsaWQgVVJMcz8KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24g
MTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlU291cmNl
LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShD
RykgfHwgVVNFKEFQUEtJVCkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApA
QCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5TSW1h
Z2UoKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIG92
ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAkocmV2aXNpb24gMTYz
NjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBEaXNwbGF5UmVmcmVz
aE1vbml0b3I6OkRpc3BsYXlSZWZyZXNoTW9uCiAgICAgLCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50
KDApCiAgICAgLCBtX2Rpc3BsYXlJRChkaXNwbGF5SUQpCiAgICAgLCBtX2NsaWVudHNUb0JlTm90
aWZpZWQobnVsbHB0cikKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgLCBtX2Rpc3BsYXlMaW5rKDApCiAjZW5kaWYKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCShy
ZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNw
bGF5UmVmcmVzaE1vbml0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIHN0cnVjdCBfX0NWRGlz
cGxheUxpbmsgKkNWRGlzcGxheUxpbmtSZWY7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAkocmV2aXNpb24gMTYzNjM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzYsMTIgKzEzNiwxMCBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgQ0dQb2lu
dCgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQotI2lmIFBMQVRGT1JNKE1B
QykgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMp
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiAhZGVmaW5lZChOU0dFT01F
VFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKICAgICBGbG9hdFBvaW50KGNvbnN0
IE5TUG9pbnQmKTsKICAgICBvcGVyYXRvciBOU1BvaW50KCkgY29uc3Q7CiAjZW5kaWYKLSNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TKQogCiAgICAgRmxvYXRQb2ludCBtYXRyaXhUcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdDsKICAgICBGbG9hdFBvaW50IG1hdHJpeFRy
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCShyZXZpc2lvbiAxNjM2MzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMTcxLDEyICsxNzEsMTAgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIENHUmVjdCgp
IGNvbnN0OwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQotI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCisj
aWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZ
X1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKICAgICBGbG9hdFJlY3QoY29uc3QgTlNS
ZWN0Jik7CiAgICAgb3BlcmF0b3IgTlNSZWN0KCkgY29uc3Q7CiAjZW5kaWYKLSNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TKQogCiAjaWYgVVNFKENBSVJPKQogICAgIEZsb2F0UmVjdChjb25zdCBjYWly
b19yZWN0YW5nbGVfdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRTaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRTaXplLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTIgKzExMywx
MCBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgQ0dTaXplKCkgY29uc3Q7CiAjZW5kaWYKIAotI2lm
ICFQTEFURk9STShJT1MpCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoTlNHRU9NRVRS
WV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpKQorI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKElPUykgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VP
TUVUUllfVFlQRVMpCiAgICAgZXhwbGljaXQgRmxvYXRTaXplKGNvbnN0IE5TU2l6ZSAmKTsgLy8g
ZG9uJ3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKICAgICBvcGVyYXRvciBO
U1NpemUoKSBjb25zdDsKICNlbmRpZgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk5
LDcgKzM5OSw3IEBAIGZsb2F0IEZvbnQ6OndpZHRoKGNvbnN0IFRleHRSdW4mIHJ1biwgaW4KICAg
ICByZXR1cm4gd2lkdGgocnVuKTsKIH0KIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRG
T1JNKENPQ09BKQogUGFzc093blB0cjxUZXh0TGF5b3V0PiBGb250OjpjcmVhdGVMYXlvdXQoUmVu
ZGVyVGV4dCosIGZsb2F0LCBib29sKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAkocmV2aXNpb24gMTYzNjM1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGds
eXBoRGF0YUFuZFBhZ2VGb3JDaGFyYWN0ZXIoYywgbWlycm9yLCB2YXJpYW50KS5maXJzdDsKICAg
ICB9Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250RGF0YUZvckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0
IFVDaGFyKiwgc2l6ZV90IGxlbmd0aCwgRm9udERhdGFWYXJpYW50KSBjb25zdDsKICNlbmRpZgog
ICAgIHN0ZDo6cGFpcjxHbHlwaERhdGEsIEdseXBoUGFnZSo+IGdseXBoRGF0YUFuZFBhZ2VGb3JD
aGFyYWN0ZXIoVUNoYXIzMiBjLCBib29sIG1pcnJvciwgRm9udERhdGFWYXJpYW50IHZhcmlhbnQp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5jcHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Myw3ICs1NzMsNyBAQCBQ
YXNzUmVmUHRyPEZvbnREYXRhPiBGb250Q2FjaGU6OmdldEZvbnRECiAgICAgaWYgKGZhbWlseUlu
ZGV4ID09IGZhbWlseUNvdW50KQogICAgICAgICBmYW1pbHlJbmRleCA9IGNBbGxGYW1pbGllc1Nj
YW5uZWQ7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYg
KCFyZXN1bHQpIHsKICAgICAgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBmb250LiBUcnkgdG8gZmlu
ZCBhIHNpbWlsYXIgZm9udCB1c2luZyBvdXIgb3duIHNwZWNpZmljIGtub3dsZWRnZSBhYm91dCBv
dXIgcGxhdGZvcm0uCiAgICAgICAgIC8vIEZvciBleGFtcGxlIG9uIE9TIFgsIHdlIGtub3cgdG8g
bWFwIGFueSBmYW1pbGllcyBjb250YWluaW5nIHRoZSB3b3JkcyBBcmFiaWMsIFBhc2h0bywgb3Ig
VXJkdSB0byB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHBy
aXZhdGU6CiAgICAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gZ2V0U3lzdGVtRm9udEZhbGxi
YWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBTaW1wbGVGb250
RGF0YSosIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKTsKICNlbmRpZgogICAg
IFBhc3NPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7Ci0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFBhc3NSZWZQdHI8U2ltcGxlRm9u
dERhdGE+IHNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwog
I2VuZGlmCiAKQEAgLTE5NCwxNCArMTk0LDExIEBAIHByaXZhdGU6CiAgICAgLy8gRG9uJ3QgcHVy
Z2UgaWYgdGhpcyBjb3VudCBpcyA+IDA7CiAgICAgaW50IG1fcHVyZ2VQcmV2ZW50Q291bnQ7CiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZnJpZW5kIGNsYXNz
IENvbXBsZXhUZXh0Q29udHJvbGxlcjsKICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBTaW1wbGVG
b250RGF0YTsgLy8gRm9yIGdldENhY2hlZEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEq
KQogICAgIGZyaWVuZCBjbGFzcyBGb250R2x5cGhzOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBm
cmllbmQgY2xhc3MgQ29tcGxleFRleHRDb250cm9sbGVyOwotI2VuZGlmCiB9OwogCiAvLyBHZXQg
dGhlIGdsb2JhbCBmb250Q2FjaGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250R2x5cGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwNiw3ICszMDYsNyBAQCBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCA9IEJyb2tlbklkZW9ncmFwaFZh
cmlhbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5mb250RGF0YS0+cGxhdGZvcm1EYXRh
KCkuc3ludGhldGljT2JsaXF1ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbHlwaERhdGFBbmRQYWdlRm9yQ0pLQ2hhcmFjdGVyV2l0aG91dFN5bnRoZXRpY0l0YWxpYyhj
LCBkYXRhLCBwYWdlLCBwYWdlTnVtYmVyKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjksNyArMTY5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50ZWQgYnkgdGhl
IHBsYXRmb3JtLgogICAgIGJvb2wgZmlsbCh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCwgVUNoYXIqIGNoYXJhY3RlckJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBT
aW1wbGVGb250RGF0YSopOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBzdGF0aWMgYm9vbCBtYXlVc2VNaXhlZEZvbnREYXRhV2hlbkZpbGxpbmcoY29uc3QgVUNo
YXIqIGNoYXJhY3RlckJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaW1wbGVG
b250RGF0YSopOwogI2Vsc2UKICAgICBzdGF0aWMgYm9vbCBtYXlVc2VNaXhlZEZvbnREYXRhV2hl
bkZpbGxpbmcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCwgY29uc3QgU2ltcGxlRm9udERhdGEqKSB7
IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw3ICs1MCw3IEBACiAjdW5kZWYgVkVSU0lPTgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgUExBVEZPUk0oSU9TKQogI2lu
Y2x1ZGUgPE9wZW5HTEVTL0VTMi9nbC5oPgogI2lmZGVmIF9fT0JKQ19fCkBAIC00ODQsNyArNDg0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
cmVhdGVGb3JDdXJyZW50R0xDb250ZXh0KCk7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZXh0T2JqOyB9CiAgICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBj
b25zdCB7IHJldHVybiBtX2NvbXBvc2l0b3JUZXh0dXJlOyB9CiAgICAgQ0FMYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoQVBQS0lUKQogT0JKQ19DTEFTUyBOU0ltYWdlOwogI2Vu
ZGlmCiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOU0ltYWdlKiBn
ZXROU0ltYWdlKCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2Vu
dGF0aW9uKCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTkz
LDExICsxOTMsOSBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgQ0dSZWN0KCkgY29uc3Q7CiAjZW5k
aWYKIAotI2lmICFQTEFURk9STShJT1MpCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQo
TlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpKQorI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVf
QVNfQ0dHRU9NRVRSWV9UWVBFUykKICAgICBvcGVyYXRvciBOU1JlY3QoKSBjb25zdDsKICNlbmRp
ZgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3Q7CiAKQEAgLTI1MCwxMSArMjQ4LDkgQEAgaW5saW5lIGJvb2wgSW50UmVjdDo6
aXNJbmZpbml0ZSgpIGNvbnN0CiBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgQ0dSZWN0
Jik7CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYg
IWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpKQorI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9U
WVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCiBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3Qo
Y29uc3QgTlNSZWN0Jik7CiAjZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRTaXplLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDEyICsxMjksMTAg
QEAgcHVibGljOgogICAgIG9wZXJhdG9yIENHU2l6ZSgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiAh
UExBVEZPUk0oSU9TKSAgICAKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKE5TR0VPTUVU
UllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKQorI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKElPUykgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VP
TUVUUllfVFlQRVMpCiAgICAgZXhwbGljaXQgSW50U2l6ZShjb25zdCBOU1NpemUgJik7IC8vIGRv
bid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CiAgICAgb3BlcmF0b3IgTlNT
aXplKCkgY29uc3Q7CiAjZW5kaWYKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIEludFNpemUoY29uc3QgU0laRSYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMTYz
NjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBACiAjZGVmaW5lIFBsYXRmb3JtTWVkaWFF
bmdpbmVDbGFzc05hbWUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpZiBQTEFURk9STShJT1MpCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TLmgiCiAjZWxzZQpAQCAtMjEzLDcgKzIxMyw3
IEBAIHN0YXRpYyBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5Kj4mIGluc3QKIAogI2lmIFVTRShB
VkZPVU5EQVRJT04pCiAgICAgaWYgKFNldHRpbmdzOjppc0FWRm91bmRhdGlvbkVuYWJsZWQoKSkg
ewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRp
YUVuZ2luZSk7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKGFkZE1lZGlhRW5n
aW5lKTsKQEAgLTc2OSw3ICs3NjksNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyOjpzCiAgICAgaWYgKCFlbmdpbmUpCiAgICAgICAgIHJldHVybiBJc05vdFN1cHBvcnRl
ZDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBZb3VU
dWJlIHdpbGwgYXNrIGlmIHRoZSBIVE1MTWVkaWFFbGVtZW50IGNhblBsYXlUeXBlIHZpZGVvL3dl
Ym0sIHRoZW4KICAgICAvLyB2aWRlby94LWZsdiwgdGhlbiBmaW5hbGx5IHZpZGVvL21wNCwgYW5k
IHdpbGwgdGhlbiBsb2FkIGEgVVJMIG9mIHRoZSBmaXJzdCB0eXBlCiAgICAgLy8gaW4gdGhhdCBs
aXN0IHdoaWNoIHJldHVybnMgInByb2JhYmx5Ii4gV2hlbiBQZXJpYW4gaXMgaW5zdGFsbGVkLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZv
bnREYXRhLmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2
LDcgQEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gU2ltcGxlRm9udERhdAogICAgICAgICBt
X2Rlcml2ZWRGb250RGF0YSA9IERlcml2ZWRGb250RGF0YTo6Y3JlYXRlKGlzQ3VzdG9tRm9udCgp
KTsKICAgICBpZiAoIW1fZGVyaXZlZEZvbnREYXRhLT5ub25TeW50aGV0aWNJdGFsaWMpIHsKICAg
ICAgICAgRm9udFBsYXRmb3JtRGF0YSBub25TeW50aGV0aWNJdGFsaWNGb250UGxhdGZvcm1EYXRh
KG1fcGxhdGZvcm1EYXRhKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgIG5vblN5bnRoZXRpY0l0YWxpY0ZvbnRQbGF0Zm9ybURhdGEubV9zeW50aGV0aWNP
YmxpcXVlID0gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgbV9kZXJpdmVkRm9udERhdGEtPm5vblN5
bnRoZXRpY0l0YWxpYyA9IGNyZWF0ZShub25TeW50aGV0aWNJdGFsaWNGb250UGxhdGZvcm1EYXRh
LCBpc0N1c3RvbUZvbnQoKSwgZmFsc2UsIHRydWUpOwpAQCAtMjc2LDcgKzI3Niw3IEBAIFNpbXBs
ZUZvbnREYXRhOjpEZXJpdmVkRm9udERhdGE6On5EZXJpdmUKICAgICAgICAgR2x5cGhQYWdlVHJl
ZU5vZGU6OnBydW5lVHJlZUN1c3RvbUZvbnREYXRhKHZlcnRpY2FsUmlnaHRPcmllbnRhdGlvbi5n
ZXQoKSk7CiAgICAgaWYgKHVwcmlnaHRPcmllbnRhdGlvbikKICAgICAgICAgR2x5cGhQYWdlVHJl
ZU5vZGU6OnBydW5lVHJlZUN1c3RvbUZvbnREYXRhKHVwcmlnaHRPcmllbnRhdGlvbi5nZXQoKSk7
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChjb21wb3Np
dGVGb250UmVmZXJlbmNlcykgewogICAgICAgICBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSA9
IENGRGljdGlvbmFyeVJlZihjb21wb3NpdGVGb250UmVmZXJlbmNlcy5nZXQoKSk7CiAgICAgICAg
IENGSW5kZXggY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChkaWN0aW9uYXJ5KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEu
aAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDggQEAKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtMTg5LDExICsxODYsMTEgQEAgcHVi
bGljOgogICAgIENURm9udFJlZiBnZXRDVEZvbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
RGF0YS5mb250KCk7IH0KICAgICBib29sIHNob3VsZE5vdEJlVXNlZEZvckFyYWJpYygpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvdWxkTm90QmVVc2VkRm9yQXJhYmljOyB9OwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIENGRGljdGlvbmFyeVJlZiBnZXRD
RlN0cmluZ0F0dHJpYnV0ZXMoVHlwZXNldHRpbmdGZWF0dXJlcywgRm9udE9yaWVudGF0aW9uKSBj
b25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoSEFSRkJVWlopCisjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShIQVJGQlVaWikKICAgICBib29sIGNhblJlbmRlckNvbWJp
bmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiwgc2l6ZV90KSBjb25zdDsKICNlbmRp
ZgogCkBAIC0yODcsNyArMjg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFNpbXBsZUZv
bnREYXRhPiB2ZXJ0aWNhbFJpZ2h0T3JpZW50YXRpb247CiAgICAgICAgIFJlZlB0cjxTaW1wbGVG
b250RGF0YT4gdXByaWdodE9yaWVudGF0aW9uOwogICAgICAgICBSZWZQdHI8U2ltcGxlRm9udERh
dGE+IG5vblN5bnRoZXRpY0l0YWxpYzsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgICAgIG11dGFibGUgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+
IGNvbXBvc2l0ZUZvbnRSZWZlcmVuY2VzOwogI2VuZGlmCiAKQEAgLTMwNCwxMSArMzAxLDExIEBA
IHByaXZhdGU6CiAgICAgZmxvYXQgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OwogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBIYXNoTWFw
PHVuc2lnbmVkLCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gbV9DRlN0cmluZ0F0dHJpYnV0
ZXM7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKEhBUkZCVVpaKQorI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoSEFSRkJVWlopCiAgICAgbXV0YWJsZSBPd25QdHI8SGFzaE1h
cDxTdHJpbmcsIGJvb2w+PiBtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydDsKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmcuaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAg
c3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZVdpZHRoID0gNTEyOwogc3RhdGljIGNvbnN0IGlu
dCBkZWZhdWx0VGlsZUhlaWdodCA9IDUxMjsKIAogY2xhc3MgSW50UmVjdDsKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAjZW5k
aWYKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFJlY3QgdGls
ZUdyaWRFeHRlbnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGluZ01v
ZGVJbmRpY2F0aW9uKFNjcm9sbGluZ01vZGVJbmRpY2F0aW9uKSA9IDA7CiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIq
IHRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIoKSA9IDA7CiAjZW5kaWYKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcg
KzUwLDcgQEAKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJN
YWMuaCIKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjZW5kaWYKQEAgLTMx
NSw3ICszMTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogYm9vbCBHcmFwaGljc0xheWVyQ0E6OmZpbHRlcnNDYW5C
ZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXll
ck1hYzo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChmaWx0ZXJzKTsKICNlbGlmIFBMQVRGT1JNKFdJ
TikKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyV2luOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVk
KGZpbHRlcnMpOwpAQCAtMzI1LDcgKzMyNSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpmaWx0
ZXJzQ2FuQmVDb21wb3MKICAgICAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7Ci0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJN
YWM6OmNyZWF0ZShsYXllclR5cGUsIG93bmVyKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICBy
ZXR1cm4gUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CkBAIC0z
MzQsNyArMzM0LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZQog
ICAgIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRl
UGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FM
YXllckNsaWVudCogb3duZXIpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNyZWF0ZShwbGF0Zm9ybUxheWVy
LCBvd25lcik7CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXll
cldpbjo6Y3JlYXRlKHBsYXRmb3JtTGF5ZXIsIG93bmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyRmx1c2hTY2hlZHVsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9MYXllckZsdXNoU2NoZWR1bGVy
LmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0xheWVyRmx1c2hTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsKICAgICBMYXllckZsdXNoU2NoZWR1
bGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGUnVuTG9vcE9ic2VydmVyUmVmPiBtX3J1bkxvb3BP
YnNlcnZlcjsKICAgICBzdGF0aWMgdm9pZCBydW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayhDRlJ1bkxv
b3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHksIHZvaWQqIGNvbnRleHQpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUFuaW1hdGlvbi5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
T0JKQ19DTEFTUyBDQVByb3BlcnR5QW5pbWF0aW9uOwogdHlwZWRlZiBDQVByb3BlcnR5QW5pbWF0
aW9uKiBQbGF0Zm9ybUFuaW1hdGlvblJlZjsKICNlbGlmIFBMQVRGT1JNKFdJTikKQEAgLTUxLDcg
KzUxLDcgQEAgY2xhc3MgVGltaW5nRnVuY3Rpb247CiBjbGFzcyBQbGF0Zm9ybUNBQW5pbWF0aW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1DQUFuaW1hdGlvbj4gewogcHVibGljOgogICAg
IGZyaWVuZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJNYWM7CiAjZWxp
ZiBQTEFURk9STShXSU4pCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllcldpbjsKQEAg
LTE1NCw3ICsxNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEFuaW1hdGlvblR5cGUg
bV90eXBlOwogICAgIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBSZXRhaW5QdHI8Q0FQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb247CiAjZWxpZiBQTEFU
Rk9STShXSU4pCiAgICAgUmV0YWluUHRyPENBQ0ZBbmltYXRpb25SZWY+IG1fYW5pbWF0aW9uOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUZpbHRl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBRmlsdGVycy5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBRmlsdGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW50IG51bUFuaW1hdGVkRmlsdGVy
UHJvcGVydGllcyhGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUpOwogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBhbmltYXRlZEZpbHRlclByb3BlcnR5TmFtZShGaWx0ZXJPcGVyYXRpb246Ok9w
ZXJhdGlvblR5cGUsIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOwogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNW
YWx1ZT4gZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50
IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJ
KHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNz
IFBsYXRmb3JtQ0FMYXllcjsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
PiBQbGF0Zm9ybUNBTGF5ZXJMaXN0OwogCiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXI+IHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllck1hYzsKICNlbGlm
IFBMQVRGT1JNKFdJTikKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyV2luOwpAQCAt
MjE4LDcgKzIxOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+IGNyZWF0ZUNvbXBhdGlibGVMYXllcihMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCopIGNvbnN0ID0gMDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4
dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSA9IDA7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5j
cHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0JpdG1hcEltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAj
aW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dFByaXZhdGUuaD4KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lv
biAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBM
QVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCiAjZW5kaWYKIApAQCAtMTYxNSw3ICsxNjE1LDcgQEAgSW50ZXJwb2xhdGlv
blF1YWxpdHkgR3JhcGhpY3NDb250ZXh0OjppbQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFs
bG93c0ZvbnRTbW9vdGhpbmcoYm9vbCBhbGxvd3NGb250U21vb3RoaW5nKQogewogICAgIFVOVVNF
RF9QQVJBTShhbGxvd3NGb250U21vb3RoaW5nKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQo
KTsKICAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQsIGFsbG93c0Zv
bnRTbW9vdGhpbmcpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZUNHLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBk
byBub3RoaW5nIG9uIE1hYy4KICAgICB2b2lkIHNhdmUoKSB7fQogICAgIHZvaWQgcmVzdG9yZSgp
IHt9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckRhdGFDRy5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKQorI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBVU0UoQ0EpCiAjaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCiAjZGVmaW5lIFdU
Rl9VU0VfSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFIDEKICNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TX1NJTVVMQVRPUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQ0cuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0cuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyAr
NTcsNyBAQCBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhCiBib29sIElt
YWdlU291cmNlOjpzX2FjY2VsZXJhdGVkSW1hZ2VEZWNvZGluZzsKICNlbmRpZgogCi0jaWYgIVBM
QVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0
Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24s
IHNpemVfdCBjb3VudCkKIHsKICAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwpAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgSW1h
Z2VTb3VyY2U6OmluaXRpYWxpemVkKCkgY29uc3QKIAogdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAg
ICAgbV9kZWNvZGVyID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKDApOwogICAgIC8v
IE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRs
eSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuICBXZSB1
c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuaAkocmV2aXNpb24gMTYzNjM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25G
b3JJbWFnZVNvdXJjZVQKIAogU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSk7CiAKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShDT0NP
QSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9p
ZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KTsKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHJl
dmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dGhDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgogI2VuZGlmCiAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFBhdGg6OmFkZEFy
Y1RvKGNvbnN0IEZsb2F0UG9pbnQmIHAxCiAKIHZvaWQgUGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9y
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcExl
ZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cykK
IHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBlcXVh
bFdpZHRocyA9ICh0b3BMZWZ0UmFkaXVzLndpZHRoKCkgPT0gdG9wUmlnaHRSYWRpdXMud2lkdGgo
KSAmJiB0b3BSaWdodFJhZGl1cy53aWR0aCgpID09IGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSAm
JiBib3R0b21MZWZ0UmFkaXVzLndpZHRoKCkgPT0gYm90dG9tUmlnaHRSYWRpdXMud2lkdGgoKSk7
CiAgICAgYm9vbCBlcXVhbEhlaWdodHMgPSAodG9wTGVmdFJhZGl1cy5oZWlnaHQoKSA9PSBib3R0
b21MZWZ0UmFkaXVzLmhlaWdodCgpICYmIGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCkgPT0gdG9w
UmlnaHRSYWRpdXMuaGVpZ2h0KCkgJiYgdG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCkgPT0gYm90dG9t
UmlnaHRSYWRpdXMuaGVpZ2h0KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgi
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0Ry
YXdpbmdCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNlbmRpZgogCkBAIC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUcnVlIGlmIG91
ciBjb250ZW50cyBoYXZlIGJlZW4gbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QgcHJlc2VudGF0aW9u
IG9mIHRoaXMgYnVmZmVyLgogICAgIGJvb2wgbV9jb250ZW50c0NoYW5nZWQ7CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+
IG1fcGxhdGZvcm1MYXllcjsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0JKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDMyLDEwICs0MzIsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1v
CiAgICAgbV9xdE1vdmllVmlldyA9IGFkb3B0TlMoW1tRVE1vdmllVmlldyBhbGxvY10gaW5pdF0p
OwogICAgIHNldFNpemUobV9wbGF5ZXItPnNpemUoKSk7CiAgICAgTlNWaWV3KiBwYXJlbnRWaWV3
ID0gMDsKLSNpZiBQTEFURk9STShNQUMpCiAgICAgcGFyZW50VmlldyA9IG1fcGxheWVyLT5mcmFt
ZVZpZXcoKS0+ZG9jdW1lbnRWaWV3KCk7CiAgICAgW3BhcmVudFZpZXcgYWRkU3VidmlldzptX3F0
TW92aWVWaWV3LmdldCgpXTsKLSNlbmRpZgogICAgIFttX3F0TW92aWVWaWV3LmdldCgpIHNldERl
bGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgpXTsKICAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkg
c2V0VmlldzptX3F0TW92aWVWaWV3LmdldCgpXTsKICAgICBbbV9xdE1vdmllVmlldy5nZXQoKSBz
ZXRNb3ZpZTptX3F0TW92aWUuZ2V0KCldOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5j
cHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyAr
MjA0LDcgQEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaQogICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiKTsKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZm
ZXJzIikgewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShJT1MpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl9kcmF3X2J1ZmZlcnMiKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
c3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBp
eGVscyhHQzNEaQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKLSNpZiAhUExBVEZPUk0o
TUFDKQorI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNv
dW50LCBHQzNEc2l6ZWkgcHJpbWNvdW50KQogewogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0JKHJldmlzaW9u
IDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAKICNpbXBvcnQgIktleUV2ZW50Q29jb2Eu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTc4LDQgKzc4LDQgQEAgdm9pZCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNbwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRG
YWN0b3J5TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGxhdGZvcm1LZXlib2FyZEV2
ZW50IGNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICopOwogfTsKIAotI2lmIFBM
QVRGT1JNKE1BQykgJiYgZGVmaW5lZChfX09CSkNfXykKKyNpZiBQTEFURk9STShDT0NPQSkgJiYg
ZGVmaW5lZChfX09CSkNfXykKIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBo
ZXJlLgogSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYgd2luZG93UG9pbnQsIE5T
V2luZG93ICopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDcgKzY1LDcgQEAgdHlwZWRlZiBGTUZvbnQgQVRTVUZvbnRJRDsKIHR5cGVkZWYg
VUludDE2IEFUU0dseXBoUmVmOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIFVTRShD
QSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENBKQogI2lmICFQTEFURk9STShJT1NfU0lN
VUxBVE9SKQogdHlwZWRlZiBzdHJ1Y3QgX19JT1N1cmZhY2UgKklPU3VyZmFjZVJlZjsKICNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKQEAgLTI2MSw3ICsyNjEsNyBAQCBleHRlcm4g
Q1RUeXBlc2V0dGVyUmVmICgqd2tDcmVhdGVDVFR5cGVzCiAKIGV4dGVybiBDR1NpemUgKCp3a0NU
UnVuR2V0SW5pdGlhbEFkdmFuY2UpKENUUnVuUmVmKTsKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYg
VVNFKENBKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyNpZiBQTEFURk9STShDT0NPQSkg
JiYgVVNFKENBKSAmJiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKIGV4dGVybiBDR0NvbnRleHRS
ZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUpKElPU3VyZmFjZVJlZiBzdXJmYWNlLCB1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSk7
CiBleHRlcm4gQ0dJbWFnZVJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKShDR0Nv
bnRleHRSZWYgY29udGV4dCk7CiAjZW5kaWYKQEAgLTI4MCwxMCArMjgwLDggQEAgZXh0ZXJuIE5T
Q3Vyc29yICooKndrQ3Vyc29yKShjb25zdCBjaGFyKgogI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CiAgICAgCiAjaWYgIVBMQVRGT1JNKElPUykKLSNpZiBQTEFURk9STShNQUMpCiBleHRlcm4gTlNB
cnJheSAqKCp3a1NwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpKHZvaWQpOwogZXh0
ZXJuIE5TU3RyaW5nICooKndrU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmll
ckZvckxvY2FsZSkoTlNMb2NhbGUgKik7Ci0jZW5kaWYKIAogZXh0ZXJuIHZvaWQgKCp3a1VucmVn
aXN0ZXJVbmlxdWVJZEZvckVsZW1lbnQpKGlkIGVsZW1lbnQpOwogZXh0ZXJuIHZvaWQgKCp3a0Fj
Y2Vzc2liaWxpdHlIYW5kbGVGb2N1c0NoYW5nZWQpKHZvaWQpOyAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEwICsxNTEsOCBAQCBO
U1VSTCAqKCp3a0FWQXNzZXRSZXNvbHZlZFVSTCkoQVZBc3NldCopCiAKIE5TQ3Vyc29yICooKndr
Q3Vyc29yKShjb25zdCBjaGFyKik7CiAKLSNpZiBQTEFURk9STShNQUMpCiBOU0FycmF5ICooKndr
U3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycykodm9pZCk7CiBOU1N0cmluZyAqKCp3
a1NwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpKE5TTG9j
YWxlICopOwotI2VuZGlmCiAKIHZvaWQgKCp3a1VucmVnaXN0ZXJVbmlxdWVJZEZvckVsZW1lbnQp
KGlkIGVsZW1lbnQpOwogdm9pZCAoKndrQWNjZXNzaWJpbGl0eUhhbmRsZUZvY3VzQ2hhbmdlZCko
dm9pZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWwuaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jZGVmaW5lIENFUlRJRklDQVRFX0NSRURFTlRJ
QUxTX1NVUFBPUlRFRCAoUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpKQorI2RlZmluZSBD
RVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQgKFBMQVRGT1JNKENPQ09BKSkKIAogI2lm
IENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRAogI2luY2x1ZGUgPFNlY3VyaXR5L1Nl
Y0Jhc2UuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLSNpZiAhUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmICFQTEFU
Rk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKEVGTCkKIAogaW5saW5l
IE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpOZXR3b3JrU3RhdGVOb3RpZmllcigpCiAgICAgOiBtX2lz
T25MaW5lKHRydWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShNQUMpIHx8
IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNl
c3Npb25SZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgpAQCAtNDcsMTEgKzQ3LDExIEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIAotI2lmIFBM
QVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQogICAgIGJvb2wgaXNQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc1ByaXZhdGU7IH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihSZXRhaW5QdHI8
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4pOwogICAgIC8vIE1heSBiZSBudWxsLCBpbiB3aGljaCBj
YXNlIGEgRm91bmRhdGlvbiBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLgogICAgIENGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgcGxhdGZvcm1TZXNzaW9uKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVNlc3Npb24u
Z2V0KCk7IH0KQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0j
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBVU0UoQ0ZORVRXT1JLKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIFJldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICNlbGlmIFVT
RShTT1VQKQpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5n
Q29udGV4dD4gbV9jb250ZXh0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShD
Rk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRX
T1JLKSB8fCBVU0UoU09VUCkKICAgICBib29sIG1faXNQcml2YXRlOwogI2VuZGlmCiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0Nv
bnRleHQuaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsMTEg
QEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3
dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKICNlbmRpZgogCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3QgPSAwOwogCi0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNu
aWZmaW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsgLy8gRklYTUU6IFJlY29uY2lsZSB3aXRoIFJlc291
cmNlSGFuZGxlOjpmb3JjZUNvbnRlbnRTbmlmZmluZygpLgogICAgIHZpcnR1YWwgU2NoZWR1bGVQ
YWlySGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3QgeyByZXR1cm4gMDsgfQpA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCA9IDA7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQogICAgIHZpcnR1YWwgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0ID0gMDsKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0
aW9uU3BhY2UuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIK
IAotI2lmIFVTRShDRk5FVFdPUkspICYmICFQTEFURk9STShNQUMpCisjaWYgVVNFKENGTkVUV09S
SykgJiYgIVBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgpAQCAtOTIsNyArOTIsNyBAQCBQcm90ZWN0aW9uU3BhY2VBdXRoZW50
aWNhdGlvblNjaGVtZSBQcm90CiAKIGJvb2wgUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRl
bnRpYWxTZWN1cmVseSgpIGNvbnN0CiB7Ci0jaWYgVVNFKENGTkVUV09SSykgJiYgIVBMQVRGT1JN
KE1BQykKKyNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWlu
UHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBjZlNwYWNlID0gYWRvcHRDRihjcmVhdGVDRigq
dGhpcykpOwogICAgIHJldHVybiBjZlNwYWNlICYmIENGVVJMUHJvdGVjdGlvblNwYWNlUmVjZWl2
ZXNDcmVkZW50aWFsU2VjdXJlbHkoY2ZTcGFjZS5nZXQoKSk7CiAjZWxzZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAJKHJl
dmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6c2V0Q2xpZW50KFJlc291cmNlSAogICAgIGQtPm1fY2xpZW50ID0gY2xpZW50
OwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspICYmICFVU0UoU09V
UCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVAp
CiAvLyBSZXNvdXJjZUhhbmRsZSBuZXZlciB1c2VzIGFzeW5jIGNsaWVudCBjYWxscyBvbiB0aGVz
ZSBwbGF0Zm9ybXMgeWV0Lgogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKIHsKQEAgLTE5OSw3ICsxOTksNyBAQCBib29s
IFJlc291cmNlSGFuZGxlOjpoYXNBdXRoZW50aWNhdGlvbkNoCiAKIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNsZWFyQXV0aGVudGljYXRpb24oKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgPSBuaWw7CiAjZW5kaWYK
ICAgICBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UubnVsbGlmeSgpOwpAQCAtMjEyLDcgKzIxMiw3
IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZigKIAogYm9vbCBSZXNv
dXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKGNvbnN0IFVSTCYgdXJsKQogewotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoc2hvdWxkRm9yY2VD
b250ZW50U25pZmZpbmcpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZp
c2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDExICs1NCwxMSBAQCB0eXBlZGVmIHZvaWQq
IExQVk9JRDsKIHR5cGVkZWYgTFBWT0lEIEhJTlRFUk5FVDsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0NhY2hlZFVSTFJlc3Bv
bnNlOwogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRXJyb3I7CkBAIC03NSw3ICs3
NSw3IEBAIHR5cGVkZWYgaW50IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2wKIHR5cGVkZWYg
c3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZV
UkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZjsKICNlbmRpZgogCkBAIC0x
MDAsNyArMTAwLDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIFRpbWVyOwogCiBjbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFJlc291cmNlSGFuZGxlPgotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwg
VVNFKENVUkwpIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRX
T1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCiAgICAgLCBwdWJsaWMgQXV0aGVudGljYXRp
b25DbGllbnQKICNlbmRpZgogICAgIHsKQEAgLTExMCwxMCArMTEwLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgflJlc291cmNlSGFuZGxlKCk7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVT
RShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMpIHx8IFVT
RShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShTT1VQKQogICAgIGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIHZp
cnR1YWwgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBjb25zdCBDcmVkZW50aWFsJikgb3ZlcnJpZGU7CkBAIC0xMjEsNyArMTIxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSykKICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29u
c3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKQEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6
CiAgICAgLy8gQ2FsbGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKCkuCiAjaWYgVVNFKENGTkVUV09SSykKICAgICB2b2lkIGNvbnRp
bnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0jZWxpZiBQTEFU
Rk9STShNQUMpCisjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGNvbnRpbnVlV2lsbENh
Y2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMzMsNyAr
MjMzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+Ojpy
ZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT46OmRlcmVmOwogCi0jaWYg
UExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZORVRXT1JLKQogICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBzeW5jaHJvbm91c0xvYWRSdW5M
b29wTW9kZSgpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQpA
QCAtMjcwLDcgKzI3MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKLSNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCiAgICAgZW51bSBjbGFzcyBTY2hlZHVsaW5nQmVoYXZpb3IgewogICAgICAgICBB
c3luY2hyb25vdXMsCiAgICAgICAgIFN5bmNocm9ub3VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAko
cmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcAogewogICAgIGhhbmRsZS0+Y29u
dGludWVXaWxsQ2FjaGVSZXNwb25zZShyZXNwb25zZSk7CiB9Ci0jZWxpZiBQTEFURk9STShNQUMp
CisjZWxpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxD
YWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNw
b25zZSAqcmVzcG9uc2UpCiB7CiAgICAgaGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNl
KHJlc3BvbnNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFT
UyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogI2VuZGlmCiAKQEAgLTkyLDcgKzkyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVx
dWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSgpIHdo
ZW4gcmVhZHkuCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxD
YWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
KTsKLSNlbGlmIFBMQVRGT1JNKE1BQykKKyNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKik7CiAjZW5kaWYKIApAQCAtMTIwLDcgKzEyMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSB7IHJldHVybiB0cnVlOyB9CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogCi0jZWxpZiBQTEFURk9STShNQUMpCisjZWxpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2Fj
aGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNl
KSB7IHJldHVybiByZXNwb25zZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCdWZm
ZXJpbmdEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkKSB7IH0KICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSwxMiArNTUsMTIgQEAKIGNsYXNzIEZyYW1lOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBPQkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VT
ZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCiAKQEAgLTExMiw3ICsxMTIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcmVkaXJlY3RDb3VudCgw
KQogICAgICAgICAgICAgLCBtX3ByZXZpb3VzUG9zaXRpb24oMCkKICNlbmRpZgotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICwgbV9zdGFydFdoZW5T
Y2hlZHVsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3Mo
ZmFsc2UpCiAgICAgICAgICAgICAsIG1fY3VycmVudE1hY0NoYWxsZW5nZShuaWwpCkBAIC0xNTAs
MTUgKzE1MCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlc291cmNlUmVxdWVz
dCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZT4gbV9jb25uZWN0aW9uRGVsZWdhdGU7CiAjZW5kaWYKLSNpZiBQTEFU
Rk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNF
KENGTkVUV09SSykKICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7CiAjZW5kaWYKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGJvb2wgbV9zdGFydFdoZW5T
Y2hlZHVsZWQ7CiAgICAgICAgIGJvb2wgbV9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrczsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKICAgICAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Np
b25SZWY+IG1fc3RvcmFnZVNlc3Npb247CiAjZW5kaWYKICNpZiBVU0UoV0lOSU5FVCkKQEAgLTIx
MSw3ICsyMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0gbV9jcmVkZW50aWFs
RGF0YVRvU2F2ZUluUGVyc2lzdGVudFN0b3JlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBhIHJlZmVy
ZW5jZSB0byB0aGUgb3JpZ2luYWwgY2hhbGxlbmdlIHRvIGJlIGFibGUgdG8gY2FuY2VsIGl0Lgog
ICAgICAgICAvLyBJdCBpcyBhbG1vc3QgaWRlbnRpY2FsIHRvIG1fY3VycmVudFdlYkNoYWxsZW5n
ZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCksIGJ1dCBoYXMgYSBkaWZmZXJlbnQgc2Vu
ZGVyLgogICAgICAgICBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptX2N1cnJlbnRNYWND
aGFsbGVuZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYg
IVVTRShTT1VQKSAmJiAoIVBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykpCisjaWYgIVVT
RShTT1VQKSAmJiAoIVBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSkKIGRvdWJsZSBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSBJTlRfTUFYOwog
I2Vsc2UKIC8vIFdpbGwgdXNlIE5TVVJMUmVxdWVzdCBkZWZhdWx0IHRpbWVvdXQgdW5sZXNzIHNl
dCB0byBhIG5vbi16ZXJvIHZhbHVlIHdpdGggc2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpLgpA
QCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUmVzb3Vy
Y2UKICAgICB9CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykgJiYg
IVVTRShTT1VQKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspICYmICFV
U0UoU09VUCkKIHVuc2lnbmVkIGluaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBl
ckhvc3QoKQogewogICAgIC8vIFRoaXMgaXMgdXNlZCBieSB0aGUgbG9hZGVyIHRvIGNvbnRyb2wg
dGhlIG51bWJlciBvZiBpc3N1ZWQgcGFyYWxsZWwgbG9hZCByZXF1ZXN0cy4gCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9u
Q0YuaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9BdXRoZW50aWNhdGlvbkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAg
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dAogQ0ZVUkxDcmVkZW50aWFs
UmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKIENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShDRlVSTEF1
dGhDaGFsbGVuZ2VSZWYpOwogI2VuZGlmCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFs
UmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3Rv
cmFnZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogI2VsaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNG
TmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNl
LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNl
bGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAJKHJldmlzaW9uIDE2
MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAKICNpbmNsdWRlIDxD
b3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShDT0NPQSkKIGV4dGVybiAiQyIgdm9pZCBDRlVSTFJlcXVlc3RTZXRIVFRQ
UmVxdWVzdEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxlSFRUUFJlcXVlc3QsIENG
RGF0YVJlZiBodHRwQm9keSk7CiBleHRlcm4gIkMiIHZvaWQgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhl
YWRlckZpZWxkVmFsdWUoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxlSFRUUFJlcXVlc3Qs
IENGU3RyaW5nUmVmIGh0dHBIZWFkZXJGaWVsZCwgQ0ZTdHJpbmdSZWYgaHR0cEhlYWRlckZpZWxk
VmFsdWUpOwogZXh0ZXJuICJDIiB2b2lkIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0
cmVhbShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcSwgQ0ZSZWFkU3RyZWFtUmVmIGJvZHlTdHJl
YW0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDE2
MzYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjZWxzZQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VAogewogICAgIC8vIFNldCBhIHByaXZhdGUg
c2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29r
aWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Np
b24uCiAgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcgYSBuZXcgc2Vzc2lvbiB3
aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRpbmcgYSByZWZlcmVuY2Ug
dG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMTU3MTQ1MD4gYW5kIDxy
ZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5l
dyBOZXR3b3JrU3RvcmFnZVNlc3Npb24oYWRvcHRDRih3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vz
c2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpKSkpKTsKICNlbHNlCiAgICAgZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbihhZG9wdENGKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2
YXRlIFdlYktpdCBTZXNzaW9uIiksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+cGxh
dGZvcm1TZXNzaW9uKCkpKSkpOwpAQCAtOTMsNyArOTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPiBOCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklk
ZW50aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmllckJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNy
ZWF0ZUNGU3RyaW5nKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+KGFkb3B0Q0Yod2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdl
dCgpKSkpOwogI2Vsc2UKICAgICBhdXRvIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oYWRvcHRDRih3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+cGxhdGZv
cm1TZXNzaW9uKCkpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3aW5kb3dzLmggbXVz
dCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
TUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0Vycm9yOwogI2VuZGlmCiAK
QEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBj
b25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFJlc291cmNlRXJyb3IoTlNFcnJvciAqKTsKICAgICBOU0Vycm9yICpuc0Vycm9yKCkgY29u
c3Q7CiAgICAgb3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3Q7CkBAIC04OCw3ICs4OCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwotI2lmIFBM
QVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBtdXRhYmxlIFJldGFpblB0cjxO
U0Vycm9yPiBtX3BsYXRmb3JtTlNFcnJvcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogI2lmIFVTRShDRk5FVFdPUkspCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHBy
b3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJv
cGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7CiAgICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRp
ZXMpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChj
bGllbnQoKSAmJiBjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCiAgICAgICAgIGQtPm1f
Y29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUodGhpcykpOwogICAgIGVsc2UKQEAgLTU0
Niw3ICs1NDYsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciogcGFpcikKIHsKICAg
ICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IHBhaXItPnJ1bkxvb3AoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24g
MTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNp
bmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5o
CShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIE9C
SkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2Vu
ZGlmCkBAIC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAg
ICAgICAKICNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqKTsKICAgICAg
ICAgdm9pZCB1cGRhdGVOU1VSTFJlcXVlc3QoKTsKICNlbmRpZgpAQCAtODcsNyArODcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgICAgICwgbV9jZlJlcXVlc3QoY2ZS
ZXF1ZXN0KQogICAgICAgICB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgICAgICAgICAgdXBkYXRlTlNVUkxSZXF1ZXN0KCk7CiAjZW5kaWYKICAgICAgICAgfQpA
QCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHVw
ZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAg
dm9pZCBhcHBseVdlYkFyY2hpdmVIYWNrRm9yTWFpbCgpOwogICAgICAgICBOU1VSTFJlcXVlc3Qg
Km5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAjZW5kaWYKQEAgLTEx
NSw3ICsxMTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Q2FjaGVQ
YXJ0aXRpb24oY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikgeyBtX2NhY2hlUGFydGl0aW9u
ID0gcGFydGl0aW9uTmFtZShjYWNoZVBhcnRpdGlvbik7IH0KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQogICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KEhUVFBCb2R5VXBk
YXRlUG9saWN5KSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmKTsKICNlbmRpZgpAQCAtMTIzLDcgKzEyMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgaHR0cFBpcGVsaW5pbmdFbmFibGVkKCk7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sKTsKIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgc3RhdGljIGJvb2wg
dXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzKCk7CiAjZW5kaWYKIApAQCAtMTQ5LDcg
KzE0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBtX2NmUmVxdWVzdDsKICNlbmRpZgotI2lmIFBM
QVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUmV0YWluUHRyPE5TVVJM
UmVxdWVzdD4gbV9uc1JlcXVlc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9O
SU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
cXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJKHJldmlzaW9uIDE2MzYzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1
ZGUgPGRsZmNuLmg+CkBAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RDb3B5Q29u
dGVudERpc3Bvc2l0aW8KIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVl
c3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KEdl
dFByb2NBZGRyZXNzKGZpbmRDRk5ldHdvcmtNb2R1bGUoKSwgIl9DRlVSTFJlcXVlc3RDb3B5Q29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5IikpOwogfQotI2VsaWYgUExBVEZP
Uk0oTUFDKQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgQ0ZVUkxSZXF1ZXN0U2V0Q29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24gZmluZENGVVJMUmVx
dWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkK
IHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RTZXRDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZBVUxU
LCAiX0NGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eSIpKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybVJlCiAjZW5kaWYKIAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3Qp
OwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB1cGRhdGVOU1VS
TFJlcXVlc3QoKTsKICNlbmRpZgogfQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgUmVzb3VyY2VS
ZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFQKICAgICB9CiAKICAgICBtX2NmUmVxdWVzdCA9IGFk
b3B0Q0YoY2ZSZXF1ZXN0KTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdXBkYXRlTlNVUkxSZXF1ZXN0KCk7CiAjZW5kaWYKIH0KQEAgLTMzMiwxMiArMzMyLDEy
IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAgICBDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5
KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKTsKICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihz
dG9yYWdlU2Vzc2lvbiwgY2ZSZXF1ZXN0KTsKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdXBk
YXRlTlNVUkxSZXF1ZXN0KCk7CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShDT0NPQSkKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjphcHBseVdlYkFyY2hpdmVIYWNr
Rm9yTWFpbCgpCiB7CiAjaWYgIVBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lv
biAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOwogICAgIH0KLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3Bv
bnNlICopOwogI2VuZGlmCiAjZWxzZQpAQCAtODgsMTEgKzg4LDExIEBAIHB1YmxpYzoKICNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25zZSgpIGNvbnN0
OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5T
VVJMUmVzcG9uc2UgKm5zVVJMUmVzcG9uc2UoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVDaGFpbihDRkFycmF5UmVmKTsKICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2VydGlmaWNhdGVDaGFpbigpIGNvbnN0OwogI2VuZGlmCkBA
IC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoSW5p
dExldmVsKTsKICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+
IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25z
ZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KICAgICB2b2lkIGRvUGxhdGZvcm1B
ZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBpbml0TlNVUkxS
ZXNwb25zZSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTExNywxMCArMTE3LDEwIEBAIHByaXZhdGU6
CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBtdXRhYmxlIFJldGFpblB0cjxDRlVSTFJlc3BvbnNl
UmVmPiBtX2NmUmVzcG9uc2U7CiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbV9uc1Jlc3Bv
bnNlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIENlcnRpZmljYXRlIGNoYWlu
IGlzIG5vcm1hbGx5IHBhcnQgb2YgTlMvQ0ZVUkxSZXNwb25zZSwgYnV0IHRoZXJlIGlzIG5vIHdh
eSB0byByZS1hZGQgaXQgdG8gYSBkZXNlcmlhbGl6ZWQgcmVzcG9uc2UgYWZ0ZXIgSVBDLgogICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2V4dGVybmFsQ2VydGlmaWNhdGVDaGFpbjsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMTYzNjM1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMCArNDAsMTAg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5j
bHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYkNvcmVVUkxSZXNw
b25zZS5oIgotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShDT0NP
QSkKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCkBAIC0x
MDIsMTQgKzEwMiwxNCBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
CiAgICAgcmV0dXJuIGNmUmVxdWVzdDsKIH0KIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBM
QVRGT1JNKENPQ09BKQogc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENGVVJMUmVzcG9u
c2VSZWYgcmVzcG9uc2UpCiB7CiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlw
ZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwog
ICAgIAogICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShyZXNwb25zZSwgZGVmYXVsdE1JTUVU
eXBlU3RyaW5nKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vICFQTEFU
Rk9STShDT0NPQSkKIAogdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9u
c2UpCiB7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZQogICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gQXZvaWQg
TUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3Qg
TW9kaWZpZWQuCiAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBtc2cgPSB3a0dldENGVVJMUmVzcG9uc2VI
VFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7CiAgICAgaW50IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhU
VFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKG1zZykgOiAwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3Bv
bnNlTWFjLm1tCShyZXZpc2lvbiAxNjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQs
NyArMTc0LDcgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYwogCiAj
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVU
V09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKIAogdm9pZCBSZXNv
dXJjZVJlc3BvbnNlOjpzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYgY2VydGlmaWNhdGVD
aGFpbikKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gUmVzb3Vy
Y2VSZXNwb25zZTo6CiAgICAgcmV0dXJuIGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNwb25zZUNlcnRp
ZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCShyZXZpc2lvbiAx
NjM2MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcgQEAgVmVjdG9yPFN0cmluZz4gbGlz
dERpcmVjdG9yeShjb25zdCBTdHJpbgogfQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oTUFDKQor
I2lmICFPUyhEQVJXSU4pIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQogU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKIHsKICAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAkocmV2aXNpb24g
MTYzNjM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgaW50IHN0YXJ0T2ZMYXN0V29yZEJv
dW5kYXJ5Q29udGV4dChjb25zdAogICAgIHJldHVybiAwOwogfQogCi0jaWYgIVBMQVRGT1JNKE1B
QykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoY29u
c3QgVUNoYXIqIGNoYXJzLCBpbnQgbGVuLCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkKIHsK
QEAgLTEwNCw2ICsxMDQsNiBAQCB2b2lkIGZpbmRFbmRXb3JkQm91bmRhcnkoY29uc3QgVUNoYXIq
IGNoCiAgICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsKIH0KIAotI2VuZGlmIC8vICFQ
TEFURk9STShNQUMpCisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="247543"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>