<?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>104672</bug_id>
          
          <creation_ts>2012-12-11 06:55:10 -0800</creation_ts>
          <short_desc>[GTK] Add accelerated 2D canvas support using cairo-gl</short_desc>
          <delta_ts>2013-04-12 08:20:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104640</dependson>
    
    <dependson>114490</dependson>
          <blocked>112150</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>a.renevier</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>d.nomiyama</cc>
    
    <cc>d-r</cc>
    
    <cc>gen.kim</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>helder.correia</cc>
    
    <cc>joone</cc>
    
    <cc>kalyan.kondapally</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>obzhirov</cc>
    
    <cc>ostap73</cc>
    
    <cc>philn</cc>
    
    <cc>rego+ews</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>788405</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-12-11 06:55:10 -0800</bug_when>
    <thetext>With this bug we will track patches to implement accelerated 2D canvas support using the cairo-gl backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788451</commentid>
    <comment_count>1</comment_count>
      <attachid>178805</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-12-11 07:51:20 -0800</bug_when>
    <thetext>Created attachment 178805
WIP patch

This patch is a work in progress, I&apos;ve updated and fixed some problems with the patch mrobinson implemented some months ago. Tests and comments are welcome, we will be working on it. If you want to test it you need to apply the patch in the bug blocking this one, compile cairo with gl support, enable accelerated2dCanvasEnabled in Settings.in and build with option --enable-accelerated-2d-canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788598</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 10:53:35 -0800</bug_when>
    <thetext>Attachment 178805 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:26:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:107:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:110:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:111:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:209:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:210:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788647</commentid>
    <comment_count>3</comment_count>
      <attachid>178805</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-11 11:56:44 -0800</bug_when>
    <thetext>Comment on attachment 178805
WIP patch

Attachment 178805 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15280182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790404</commentid>
    <comment_count>4</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-12-13 01:27:44 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; With this bug we will track patches to implement accelerated 2D canvas support using the cairo-gl backend.

Do you have any comparisons before and after? That&apos;d be interesting to hear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790408</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-13 01:32:48 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #0)
&gt; &gt; With this bug we will track patches to implement accelerated 2D canvas support using the cairo-gl backend.
&gt; 
&gt; Do you have any comparisons before and after? That&apos;d be interesting to hear.

It&apos;s very much dependent on your hardware. For instance, current mesa-based drivers do not support multisampling, so they will go down the slow cairo path when anti-aliasing is turned on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796573</commentid>
    <comment_count>6</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-21 18:07:38 -0800</bug_when>
    <thetext>Hi,
I tried this patch which looks really interesting.
But there seems to be a problem with putByteArray: the first row is correct. Then all other rows are the same as first row

see this example:
http://renevier.net/misc/webkit_104672.html
and the result:
http://renevier.net/misc/webkit_104672_bug.jpg

Anyway, why not call glReadPixels and glTexSubImage2D directly? That would save many data copies between the gl-surface and the mapped image. And even a glReadPixels which is performed at the start of putByteArray while in theory we don&apos;t need to read previous pixel data when we just upload new data).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796778</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-23 09:32:45 -0800</bug_when>
    <thetext>(In reply to comment #6)

&gt; Anyway, why not call glReadPixels and glTexSubImage2D directly? That would save many data copies between the gl-surface and the mapped image. And even a glReadPixels which is performed at the start of putByteArray while in theory we don&apos;t need to read previous pixel data when we just upload new data).

Cairo&apos;s map-to-image and unmap-image effectively just do a glReadPixels and glTexSubImage2D. In the future the may be optimized further with PBOs as well. There shouldn&apos;t be any extra data copies, as far as I know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796790</commentid>
    <comment_count>8</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-23 11:10:38 -0800</bug_when>
    <thetext>(In reply to comment #7)


&gt; Cairo&apos;s map-to-image and unmap-image effectively just do a glReadPixels and glTexSubImage2D. In the future the may be optimized further with PBOs as well.

In the patch, there is a map at the start of getImageData and an unmap at its end. Same thing for putByteArray.

But getImageData only needs to read pixels from graphic card, and putByteArray only needs to puts pixels to graphic card. So, there may be an extra glTexSubImage2D in getImageData and an extra glReadPixels in putByteArray. 


&gt; There shouldn&apos;t be any extra data copies, as far as I know.

ok, sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796796</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-23 12:08:12 -0800</bug_when>
    <thetext>(In reply to comment #8)

&gt; In the patch, there is a map at the start of getImageData and an unmap at its end. Same thing for putByteArray.
&gt; 
&gt; But getImageData only needs to read pixels from graphic card, and putByteArray only needs to puts pixels to graphic card. So, there may be an extra glTexSubImage2D in getImageData and an extra glReadPixels in putByteArray. 

Ah, I see what you mean now. Yeah, there&apos;s definitely a chance that we can avoid an extra read here. Doing pixel upload is already pretty slow, so we likely won&apos;t be getting great performance here anyway, but your suggestion makes a lot of sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796928</commentid>
    <comment_count>10</comment_count>
      <attachid>180659</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-12-24 02:30:42 -0800</bug_when>
    <thetext>Created attachment 180659
WIP patch

Some minor fix in the sizes and style cleaning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796929</commentid>
    <comment_count>11</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-12-24 02:32:36 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #0)
&gt; &gt; With this bug we will track patches to implement accelerated 2D canvas support using the cairo-gl backend.
&gt; 
&gt; Do you have any comparisons before and after? That&apos;d be interesting to hear.

The idea about uploading the work in progress patch is trying to get those figures and proposals from everyone interested in these solution. We still need to make sure in which situations and how to integrate it the best way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796931</commentid>
    <comment_count>12</comment_count>
      <attachid>180659</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-24 02:45:04 -0800</bug_when>
    <thetext>Comment on attachment 180659
WIP patch

Attachment 180659 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15491480</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796932</commentid>
    <comment_count>13</comment_count>
      <attachid>180659</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-24 02:45:34 -0800</bug_when>
    <thetext>Comment on attachment 180659
WIP patch

Attachment 180659 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15491481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828034</commentid>
    <comment_count>14</comment_count>
    <who name="Kyungjin Kim">gen.kim</who>
    <bug_when>2013-02-07 17:09:03 -0800</bug_when>
    <thetext>*** Bug 108743 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873170</commentid>
    <comment_count>15</comment_count>
      <attachid>197390</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-04-10 13:00:00 -0700</bug_when>
    <thetext>Created attachment 197390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873196</commentid>
    <comment_count>16</comment_count>
      <attachid>197396</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-04-10 13:26:02 -0700</bug_when>
    <thetext>Created attachment 197396
Patch rebased on master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874266</commentid>
    <comment_count>17</comment_count>
      <attachid>197396</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2013-04-11 16:22:32 -0700</bug_when>
    <thetext>Comment on attachment 197396
Patch rebased on master

LGTM. Great, after this time testing let&apos;s add it to the repository and work from that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874281</commentid>
    <comment_count>18</comment_count>
      <attachid>197396</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-04-11 16:38:17 -0700</bug_when>
    <thetext>Comment on attachment 197396
Patch rebased on master

Clearing flags on attachment: 197396

Committed r148247: &lt;http://trac.webkit.org/changeset/148247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874282</commentid>
    <comment_count>19</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-04-11 16:38:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874365</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-11 22:59:44 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 114490</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874369</commentid>
    <comment_count>21</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-04-11 23:06:29 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Re-opened since this is blocked by bug 114490

Rolled it out as Cairo does not build on the builders due to missing EGL headers. I don&apos;t have the permissions to install those dependencies myself so I&apos;ll get someone to do that for me. After that I&apos;ll get the patch landed again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874409</commentid>
    <comment_count>22</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-04-12 00:38:11 -0700</bug_when>
    <thetext>... and rolled back in in r148264. Cairo now compiles. Closing as fixed.
http://trac.webkit.org/changeset/148264</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874410</commentid>
    <comment_count>23</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-04-12 00:39:46 -0700</bug_when>
    <thetext>Oh, and sorry for the noise, the rollout was done with too much haste as it didn&apos;t take long to get someone to install those headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874724</commentid>
    <comment_count>24</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-04-12 07:51:31 -0700</bug_when>
    <thetext>Out of curiosity, is there any improvements performance-wise, when using cairo-gl? Maybe some traces to veify with cairo-perf-trace? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874746</commentid>
    <comment_count>25</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-04-12 08:20:22 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Out of curiosity, is there any improvements performance-wise, when using cairo-gl? Maybe some traces to veify with cairo-perf-trace? :)

It depends quite a bit on the system, but sometimes this does yield a performance boost. Part of making sure that it&apos;s consistently faster though, is being able to easily test CairoGL. :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178805</attachid>
            <date>2012-12-11 07:51:20 -0800</date>
            <delta_ts>2012-12-24 02:30:42 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>2d_acc.patch</filename>
            <type>text/plain</type>
            <size>19892</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNTk0YmRhMC4uZmMxZThlNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCkBAIC0zNDcsNiArMzQ3LDE1IEBAIGZlYXR1cmVfZGVmaW5lc19vdmVycmlkZXMgKz0g
RU5BQkxFX1dFQkdMPTAKIGVuZGlmICAjIEVORCBFTkFCTEVfV0VCR0wKIAogIyAtLS0KKyMgQWNj
ZWxlcmF0ZWQgMkQgY2FudmFzCisjIC0tLQoraWYgRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZB
UworZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyArPSBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTPTEKK2Vsc2UKK2ZlYXR1cmVfZGVmaW5lc19vdmVycmlkZXMgKz0gRU5BQkxFX0FDQ0VMRVJB
VEVEXzJEX0NBTlZBUz0wCitlbmRpZiAgIyBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTCisK
KyMgLS0tCiAjIEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHN1cHBvcnQKICMgLS0tCiBpZiBVU0Vf
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGE1YTE2ZGEuLmRiMWMzMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcApAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybVNob3VsZFNtb290aEZvbnRzKGJvb2wpCiB9CiAjZW5kaWYKIAotI2lmICFVU0UoU0tJQSkg
JiYgIVVTRShDRykKKyNpZiAhVVNFKFNLSUEpICYmICFVU0UoQ0cpICYmICFVU0UoQ0FJUk8pCiBi
b29sIEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAogewogICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcAppbmRleCBmYmNmYjU5Li44YTFiMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogICAgIGdlbmVyaWND
b252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiB9CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmICFVU0UoU0tJQSkKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYm
ICFVU0UoU0tJQSkgJiYgIVVTRShDQUlSTykKIFBsYXRmb3JtTGF5ZXIqIEltYWdlQnVmZmVyOjpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmgKaW5kZXggMWE4ODA3Mi4u
YjZjMDBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR0xDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR0xDb250ZXh0LmgKQEAgLTI5LDYgKzI5LDggQEAKIHR5cGVkZWYgc3RydWN0IF9YRGlzcGxh
eSBEaXNwbGF5OwogI2VuZGlmCiAKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19kZXZpY2UgY2Fpcm9f
ZGV2aWNlX3Q7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0IHsKQEAg
LTQ2LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpID0gMDsK
ICAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpID0gMDsKKyAgICB2
aXJ0dWFsIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpID0gMDsKIAogI2lmIFBMQVRGT1JN
KFgxMSkKICAgICBzdGF0aWMgRGlzcGxheSogc2hhcmVkWDExRGlzcGxheSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDM1MjQ4ODcuLjY2NmU0OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKQEAgLTExNTUsNiArMTE1NSwxMSBAQCBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBHcmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdAog
ICAgIHJldHVybiBwbGF0Zm9ybUNvbnRleHQoKS0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgp
OwogfQogCitib29sIEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25z
dAoreworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF90eXBlKGNhaXJvX2dldF90YXJnZXQo
cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfR0w7Cit9CisK
ICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBHcmFwaGljc0NvbnRleHQ6OmdldDNEVHJhbnNmb3JtKCkgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggYjNkMTNmZC4uOTgzMTA4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgog
I2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
ICJHTENvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC00MCwyOSArNDEs
NzcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0
ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxjYWlyby1nbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZm
ZXJEYXRhKGNvbnN0IEludFNpemUmKQotICAgIDogbV9zdXJmYWNlKDApCitJbWFnZUJ1ZmZlckRh
dGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQorICAgIDogbV9zaXplKHNp
emUpCisgICAgLCBtX3N1cmZhY2UoMCkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KDApCisgICAg
LCBtX3RleHR1cmUoMCkKIHsKIH0KIAotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IElu
dFNpemUmIHNpemUsIGZsb2F0IC8qIHJlc29sdXRpb25TY2FsZSAqLywgQ29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZSwgRGVmZXJyYWxNb2RlLCBib29sJiBzdWNjZXNzKQorI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQordm9pZCBJbWFnZUJ1ZmZl
ckRhdGE6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3sKKyAgICBpZiAo
dGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpICE9IFRleHR1cmVNYXBwZXI6Ok9wZW5H
TE1vZGUpIHsKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBBU1NFUlQobV90ZXh0dXJlKTsK
KworICAgIC8vIENhaXJvIG1heSBjaGFuZ2UgdGhlIGFjdGl2ZSBjb250ZXh0LCBzbyB3ZSBtYWtl
IHN1cmUgdG8gY2hhbmdlIGl0IGJhY2sgYWZ0ZXIgZmx1c2hpbmcuCisgICAgR0xDb250ZXh0KiBw
cmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKKyAgICBjYWly
b19zdXJmYWNlX2ZsdXNoKG1fc3VyZmFjZSk7CisgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBz
dGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKKyAgICBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTdXBwb3J0c0JsZW5kaW5n
OworICAgIHRleG1hcEdMLT5kcmF3VGV4dHVyZShtX3RleHR1cmUsIGZsYWdzLCBtX3NpemUsIHRh
cmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzayk7CisjZW5kaWYKK30KKyNlbmRpZgorCitJ
bWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgLyogcmVz
b2x1dGlvblNjYWxlICovLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IERlZmVycmFsTW9kZSwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fZGF0YShzaXplKQogICAgICwg
bV9zaXplKHNpemUpCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNpemUpCiB7CiAgICAgc3VjY2VzcyA9
IGZhbHNlOyAgLy8gTWFrZSBlYXJseSByZXR1cm4gbWVhbiBlcnJvci4KLSAgICBtX2RhdGEubV9z
dXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS53
aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplLmhlaWdodCgpKTsKKworICAgIGlmIChyZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVk
KSB7CisgICAgICAgIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9kYXRhLm1fdGV4dHVyZSk7Cisg
ICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9kYXRhLm1fdGV4dHVyZSk7Cisg
ICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywg
R0xfQ0xBTVApOworICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9XUkFQX1QsIEdMX0NMQU1QKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFS
KTsKKworICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOworCisg
ICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwIC8qIGxldmVsICovLCBHTF9SR0JB
OCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCAvKiBib3JkZXIgKi8sIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOworCisgICAgICAgIG1fZGF0YS5tX3N1cmZhY2Ug
PSBjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShHTENvbnRleHQ6OnNoYXJpbmdD
b250ZXh0KCktPmNhaXJvRGV2aWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQUlST19DT05URU5UX0NPTE9SX0FMUEhB
LCBtX2RhdGEubV90ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSk7CisKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9kYXRhLm1fc3VyZmFjZSkgIT0g
Q0FJUk9fU1RBVFVTX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybjsgIC8vIGNyZWF0ZSB3aWxsIG5v
dGljZSB3ZSBkaWRuJ3Qgc2V0IG1faW5pdGlhbGl6ZWQgYW5kIGZhaWwuCiAKQEAgLTExMyw3ICsx
NjIsOSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdAogCiB2b2lkIEltYWdlQnVmZmVyOjpwbGF0
Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQog
ewotICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fZGF0YS5tX3N1cmZhY2UpID09
IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CisgICAgLy8gRklYTUU6IERpc2FibGUgY29sb3Ig
c3BhY2UgY29udmVyc2lvbnMgb24gYWNjZWxlcmF0ZWQgY2FudmFzZXMgKGZvciBub3cpLgorICAg
IGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fZGF0YS5tX3N1cmZhY2UpICE9IENBSVJPX1NV
UkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgY2hhciog
ZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7
CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX2RhdGEu
bV9zdXJmYWNlKTsKQEAgLTEzMiwxMyArMTgzLDQ3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRm
b3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiAg
ICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZSAobV9kYXRhLm1fc3VyZmFjZSwg
MCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiB9CiAKK3N0YXRpYyBjYWly
b19zdXJmYWNlX3QqIG1hcFN1cmZhY2VUb0ltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShz
dXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCisgICAgICAgIHJldHVybiBzdXJm
YWNlOworCisgICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2UgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpOworICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShp
bWFnZVN1cmZhY2UpKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIHN1
cmZhY2UsIDAsIDApOworICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKKyAgICByZXR1cm4gaW1h
Z2VTdXJmYWNlOworfQorCitzdGF0aWMgdm9pZCB1bm1hcFN1cmZhY2VGcm9tSW1hZ2UoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlLCBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3VyZmFjZSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0YW5nbGUgPSBJbnRSZWN0KCkpCit7CisgICAgaWYgKHN1cmZhY2Ug
PT0gaW1hZ2VTdXJmYWNlICYmIGRpcnR5UmVjdGFuZ2xlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChkaXJ0eVJlY3RhbmdsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2Fpcm9f
c3VyZmFjZV9kZXN0cm95KGltYWdlU3VyZmFjZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoc3VyZmFjZSA9PSBpbWFnZVN1cmZhY2UpIHsKKyAgICAgICAgY2Fpcm9fc3VyZmFj
ZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpcnR5UmVjdGFuZ2xlLngoKSwgZGlydHlSZWN0YW5nbGUud2lk
dGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eVJl
Y3RhbmdsZS53aWR0aCgpLCBkaXJ0eVJlY3RhbmdsZS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVh
dGUoc3VyZmFjZSkpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgaW1h
Z2VTdXJmYWNlLCAwLCAwKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IuZ2V0KCksIGRpcnR5UmVj
dGFuZ2xlLngoKSwgZGlydHlSZWN0YW5nbGUueSgpLCBkaXJ0eVJlY3RhbmdsZS53aWR0aCgpLCBk
aXJ0eVJlY3RhbmdsZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fZmlsbChjci5nZXQoKSk7CisgICAg
Y2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlU3VyZmFjZSk7Cit9CisKIHRlbXBsYXRlIDxNdWx0
aXBseSBtdWx0aXBsaWVkPgogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShk
YXRhLm1fc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKLQogICAgIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwotICAgIHVuc2ln
bmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGRhdGEubV9z
dXJmYWNlKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3VyZmFjZSA9IG1hcFN1cmZhY2VU
b0ltYWdlKGRhdGEubV9zdXJmYWNlLCBzaXplKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhU3Jj
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UpOwogICAgIHVuc2ln
bmVkIGNoYXIqIGRhdGFEc3QgPSByZXN1bHQtPmRhdGEoKTsKIAogICAgIGlmIChyZWN0LngoKSA8
IDAgfHwgcmVjdC55KCkgPCAwIHx8IChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSkgPiBzaXplLndp
ZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkgPiBzaXplLmhlaWdodCgpKQpAQCAt
MTk5LDYgKzI4NCw3IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlCiAgICAgICAgIGRlc3RSb3dz
ICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAKKyAgICB1bm1hcFN1cmZhY2VGcm9tSW1hZ2Uo
ZGF0YS5tX3N1cmZhY2UsIGltYWdlU3VyZmFjZSk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CiB9CiAKQEAgLTIxNCw5ICszMDAsOCBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZQogCiB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5
c3RlbSkKIHsKLSAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEubV9zdXJm
YWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwotCi0gICAgdW5zaWduZWQgY2hhciog
ZGF0YURzdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7
CisgICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2UgPSBtYXBTdXJmYWNlVG9JbWFnZSht
X2RhdGEubV9zdXJmYWNlLCBzb3VyY2VTaXplKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UpOwogCiAgICAgQVNT
RVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdo
dCgpID4gMCk7CkBAIC0yNDUsNyArMzMwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAg
ICBpbnQgbnVtUm93cyA9IGVuZHkgLSBkZXN0eTsKIAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVy
Um93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKLSAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fZGF0YS5tX3N1cmZhY2UpOworICAgIGludCBzdHJpZGUg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJmYWNlKTsKIAogICAgIHVu
c2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2UtPmRhdGEoKSArIG9yaWdpbnkgKiBzcmNCeXRl
c1BlclJvdyArIG9yaWdpbnggKiA0OwogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbnVtUm93czsg
Kyt5KSB7CkBAIC0yNzMsOSArMzU4LDggQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5
KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICAg
ICAgfQogICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwogICAgIH0KLSAgICBjYWly
b19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fZGF0YS5tX3N1cmZhY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHgsIGRlc3R5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bUNvbHVtbnMsIG51bVJvd3MpOworCisg
ICAgdW5tYXBTdXJmYWNlRnJvbUltYWdlKG1fZGF0YS5tX3N1cmZhY2UsIGltYWdlU3VyZmFjZSwg
SW50UmVjdChkZXN0eCwgZGVzdHksIG51bUNvbHVtbnMsIG51bVJvd3MpKTsKIH0KIAogI2lmICFQ
TEFURk9STShHVEspCkBAIC0zMTAsNCArMzk0LDExIEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSosIENvb3JkaW5hdGVT
CiB9CiAjZW5kaWYKIAorUGxhdGZvcm1MYXllciogSW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIGlmIChtX2RhdGEubV90ZXh0dXJlKQorICAgICAgICByZXR1cm4gY29u
c3RfY2FzdDxJbWFnZUJ1ZmZlckRhdGEqPigmbV9kYXRhKTsKKyAgICByZXR1cm4gMDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgKaW5kZXggNWNh
NzI2Mi4uN2E5M2NkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCkBAIC0yNSwxOCArMjUs
MzMgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyLmgiCisjZW5kaWYKKwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2Ug
Y2Fpcm9fc3VyZmFjZV90OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7
CitjbGFzcyBJbWFnZUJ1ZmZlclBsYXRmb3JtTGF5ZXI7CiAKLWNsYXNzIEltYWdlQnVmZmVyRGF0
YSB7CitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0
IEludFNpemUmKTsKIAorICAgIEludFNpemUgbV9zaXplOwogICAgIGNhaXJvX3N1cmZhY2VfdCog
bV9zdXJmYWNlOwogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvIG1fcGxhdGZvcm1Db250ZXh0Owor
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIp
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB1aW50MzJfdCBtX3RleHR1cmU7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKaW5kZXggYjkz
ODliNC4uY2E0MmE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIyLDYgKzIyLDggQEAKICNpZiBVU0UoRUdM
KQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDxjYWlyby5oPgor
I2luY2x1ZGUgPGNhaXJvLWdsLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiAjaWYgVVNF
KE9QRU5HTF9FU18yKQpAQCAtMjA4LDExICsyMTAsMTUgQEAgR0xDb250ZXh0RUdMOjpHTENvbnRl
eHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VU
eXAKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiAg
ICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKIHsKIH0KIAogR0xDb250
ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKIHsKKyAgICBpZiAobV9jYWlyb0RldmljZSkKKyAgICAg
ICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7CisKICAgICBFR0xEaXNwbGF5
IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CiAgICAgaWYgKG1fY29udGV4dCkgewogICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CkBAIC0yMjQsNiArMjMw
LDE1IEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAgICAgICAgIGVnbERlc3Ryb3lT
dXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CiB9CiAKK2NhaXJvX2RldmljZV90KiBHTENvbnRl
eHRFR0w6OmNhaXJvRGV2aWNlKCkKK3sKKyAgICBpZiAobV9jYWlyb0RldmljZSkKKyAgICAgICAg
cmV0dXJuIG1fY2Fpcm9EZXZpY2U7CisKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2Rl
dmljZV9jcmVhdGUoc2hhcmVkRUdMRGlzcGxheSgpLCBtX2NvbnRleHQpOworICAgIHJldHVybiBt
X2NhaXJvRGV2aWNlOworfQorCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0
RnJhbWVidWZmZXIoKQogewogICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93U3VyZmFjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wu
aAppbmRleCBjNWQ0YmY3Li45MWU3MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC00MSw2ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5S
ZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOwogICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0
RnJhbWVCdWZmZXJTaXplKCk7CisgICAgdmlydHVhbCBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZp
Y2UoKTsKIAogCiAjaWYgRU5BQkxFKFdFQkdMKQpAQCAtNTksNiArNjAsNyBAQCBwcml2YXRlOgog
ICAgIEVHTENvbnRleHQgbV9jb250ZXh0OwogICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOwogICAg
IEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKKyAgICBjYWlyb19kZXZpY2VfdCogbV9jYWlyb0Rldmlj
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggMzFmMzJjZi4u
MjUzZTY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z2x4L0dMQ29udGV4dEdMWC5jcHAKQEAgLTIzLDYgKzIzLDggQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjaW5jbHVkZSA8R0wvZ2x4
Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxjYWlyby1nbC5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY4LDYgKzE3MCw3IEBA
IEdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4dCkKICAgICAsIG1f
cGJ1ZmZlcigwKQogICAgICwgbV9waXhtYXAoMCkKICAgICAsIG1fZ2x4UGl4bWFwKDApCisgICAg
LCBtX2NhaXJvRGV2aWNlKDApCiB7CiB9CiAKQEAgLTE4Miw2ICsxODUsOSBAQCBHTENvbnRleHRH
TFg6OkdMQ29udGV4dEdMWChHTFhDb250ZXh0IGNvbnRleHQsIFBpeG1hcCBwaXhtYXAsIEdMWFBp
eG1hcCBnbHhQaXhtYQogCiBHTENvbnRleHRHTFg6On5HTENvbnRleHRHTFgoKQogeworICAgIGlm
IChtX2NhaXJvRGV2aWNlKQorICAgICAgICBjYWlyb19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2
aWNlKTsKKwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgbmVj
ZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJp
dmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBmcm9tIE1vemlsbGEncyAzRCBjYW52YXMgaW1w
bGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2lsbWFyaS9jYW52YXMzZC8KQEAg
LTI1MSw2ICsyNTcsMTUgQEAgdm9pZCBHTENvbnRleHRHTFg6OndhaXROYXRpdmUoKQogICAgIGds
WFdhaXRYKCk7CiB9CiAKK2NhaXJvX2RldmljZV90KiBHTENvbnRleHRHTFg6OmNhaXJvRGV2aWNl
KCkKK3sKKyAgICBpZiAobV9jYWlyb0RldmljZSkKKyAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZp
Y2U7CisKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoc2hhcmVk
WDExRGlzcGxheSgpLCBtX2NvbnRleHQpOworICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOworfQor
CiAjaWYgVVNFKDNEX0dSQVBISUNTKQogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHTENvbnRl
eHRHTFg6OnBsYXRmb3JtQ29udGV4dCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKaW5kZXggODg4MTQ2Yi4uNTk2ZGU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRl
eHRHTFguaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFs
IGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBjcmVh
dGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwpAQCAtNjMsNiArNjUs
NyBAQCBwcml2YXRlOgogICAgIEdMWFBidWZmZXIgbV9wYnVmZmVyOwogICAgIFBpeG1hcCBtX3Bp
eG1hcDsKICAgICBHTFhQaXhtYXAgbV9nbHhQaXhtYXA7CisgICAgY2Fpcm9fZGV2aWNlX3QqIG1f
Y2Fpcm9EZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3YTQ5ZDcxLi4yYzlmYTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQxMyw2ICs0MTMs
OSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JikKIHsKKyAgICBpZiAoIW1f
bGF5ZXItPnRleHR1cmVNYXBwZXIoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9sYXllci0+
Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHRoaXMsIFRleHR1cmVNYXBwZXJMYXllcjo6VHJhdmVyc2VE
ZXNjZW5kYW50cyk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7CiB9
CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggZjVmNGQ5MC4u
ZjMwZGJkMyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAt
Njg4LDYgKzY4OCwxNCBAQCBBQ19BUkdfRU5BQkxFKGFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nLAog
ICAgICAgICAgICAgXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfYWNjZWxlcmF0ZWRfY29tcG9z
aXRpbmddKQogCisjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIGFjY2VsZXJhdGQgMkQgY2FudmFz
CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIGFjY2VsZXJhdGVkIDJEIGNhbnZh
cyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoYWNlbGVyYXRlZF8yZF9jYW52YXMsCisgICAgICAg
ICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1hY2NlbGVyYXRlZC0yZC1jYW52YXNdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGFjY2VsZXJhdGVkIDJEIGNhbnZh
cyBbZGVmYXVsdD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2VuYWJsZV9hY2NlbGVyYXRlZF8y
ZF9jYW52YXM9InllcyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9hY2NlbGVyYXRlZF8yZF9j
YW52YXNdKQorCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIEdhbWVwYWQgc3VwcG9ydAogQUNf
TVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBHYW1lcGFkIHN1cHBvcnRdKQogQUNfQVJH
X0VOQUJMRShnYW1lcGFkLApAQCAtMTIxMCw2ICsxMjE4LDcgQEAgQU1fQ09ORElUSU9OQUwoW0VO
QUJMRV9ERUJVR10sW3Rlc3QgIiRlbmFibGVfZGVidWdfZmVhdHVyZXMiID0gInllcyJdKQogQU1f
Q09ORElUSU9OQUwoW0VOQUJMRV9VTlNUQUJMRV9GRUFUVVJFU10sW3Rlc3QgIiRlbmFibGVfdW5z
dGFibGVfZmVhdHVyZXMiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9XRUJHTF0s
W3Rlc3QgIiRlbmFibGVfd2ViZ2wiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9H
QU1FUEFEXSxbdGVzdCAiJGVuYWJsZV9nYW1lcGFkIiA9ICJ5ZXMiXSkKK0FNX0NPTkRJVElPTkFM
KFtFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTXSxbdGVzdCAiJGVuYWJsZV9hY2NlbGVyYXRl
ZF8yZF9jYW52YXMiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9YSFJfVElNRU9V
VF0sW3Rlc3QgIiRlbmFibGVfeGhyX3RpbWVvdXQiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwo
W0VOQUJMRV9YU0xUXSxbdGVzdCAiJGVuYWJsZV94c2x0IiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElP
TkFMKFtFTkFCTEVfRklMVEVSU10sW3Rlc3QgIiRlbmFibGVfZmlsdGVycyIgPSAieWVzIl0pCkBA
IC0xMjk5LDYgKzEzMDgsNyBAQCBGZWF0dXJlczoKICBTcGVsbGNoZWNrIHN1cHBvcnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfc3BlbGxjaGVjawogIFdl
YiBBdWRpbyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
JGVuYWJsZV93ZWJfYXVkaW8KICBXZWJHTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfd2ViZ2wKKyBBY2NlbGVyYXRlZCAyRCBjYW52
YXMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfYWNjZWxlcmF0
ZWRfMmRfY2FudmFzCiAgWEhSIHRpbWVvdXQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAkZW5hYmxlX3hocl90aW1lb3V0CiAgWFNMVCBzdXBwb3J0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3hzbHQKIAo=
</data>
<flag name="commit-queue"
          id="195496"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180659</attachid>
            <date>2012-12-24 02:30:42 -0800</date>
            <delta_ts>2013-04-10 12:59:51 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>2d_canvas_accel.patch</filename>
            <type>text/plain</type>
            <size>19496</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggM2E4MjY2NC4uYTc1YTFhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTMwMCw2ICszMDAsMTUgQEAgZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyArPSBF
TkFCTEVfV0VCR0w9MAogZW5kaWYgICMgRU5EIEVOQUJMRV9XRUJHTAogCiAjIC0tLQorIyBBY2Nl
bGVyYXRlZCAyRCBjYW52YXMKKyMgLS0tCitpZiBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFT
CitmZWF0dXJlX2RlZmluZXNfb3ZlcnJpZGVzICs9IEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVM9MQorZWxzZQorZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyArPSBFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTPTAKK2VuZGlmICAjIEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMKKwor
IyAtLS0KICMgQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgc3VwcG9ydAogIyAtLS0KIGlmIFVTRV9B
Q0NFTEVSQVRFRF9DT01QT1NJVElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggMTI2NjMw
Yy4uMmFlOWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC05OCw3ICs5OCw3IEBAIHdl
YkdMRW5hYmxlZCBpbml0aWFsPWZhbHNlCiB3ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQgaW5p
dGlhbD1mYWxzZQogb3BlbkdMTXVsdGlzYW1wbGluZ0VuYWJsZWQgaW5pdGlhbD10cnVlCiBwcml2
aWxlZ2VkV2ViR0xFeHRlbnNpb25zRW5hYmxlZCBpbml0aWFsPWZhbHNlCi1hY2NlbGVyYXRlZDJk
Q2FudmFzRW5hYmxlZCBpbml0aWFsPWZhbHNlCithY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCBp
bml0aWFsPXRydWUKIGRlZmVycmVkMmRDYW52YXNFbmFibGVkIGluaXRpYWw9ZmFsc2UKIGxvYWRE
ZWZlcnJpbmdFbmFibGVkIGluaXRpYWw9dHJ1ZQogd2ViQXVkaW9FbmFibGVkIGluaXRpYWw9ZmFs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IGE1YTE2ZGEuLmRiMWMzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNzM1LDcgKzcz
NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZFNtb290aEZvbnRz
KGJvb2wpCiB9CiAjZW5kaWYKIAotI2lmICFVU0UoU0tJQSkgJiYgIVVTRShDRykKKyNpZiAhVVNF
KFNLSUEpICYmICFVU0UoQ0cpICYmICFVU0UoQ0FJUk8pCiBib29sIEdyYXBoaWNzQ29udGV4dDo6
aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBm
YmNmYjU5Li44YTFiMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmNv
bnZlcnRUb0x1bWluYW5jZU1hc2soKQogICAgIGdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiB9CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmICFVU0UoU0tJQSkK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmICFVU0UoU0tJQSkgJiYgIVVTRShD
QUlSTykKIFBsYXRmb3JtTGF5ZXIqIEltYWdlQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
IHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR0xDb250ZXh0LmgKaW5kZXggMWE4ODA3Mi4uYjZjMDBlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmgKQEAgLTI5
LDYgKzI5LDggQEAKIHR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwogI2VuZGlmCiAK
K3R5cGVkZWYgc3RydWN0IF9jYWlyb19kZXZpY2UgY2Fpcm9fZGV2aWNlX3Q7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0IHsKQEAgLTQ2LDYgKzQ4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBj
YW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpID0gMDsKICAgICB2aXJ0dWFsIEludFNpemUg
ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGNhaXJvX2RldmljZV90
KiBjYWlyb0RldmljZSgpID0gMDsKIAogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBzdGF0aWMgRGlz
cGxheSogc2hhcmVkWDExRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmlu
ZGV4IDM1MjQ4ODcuLjY2NmU0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAg
LTExNTUsNiArMTE1NSwxMSBAQCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBHcmFwaGljc0NvbnRleHQ6
OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdAogICAgIHJldHVybiBwbGF0Zm9ybUNv
bnRleHQoKS0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpOwogfQogCitib29sIEdyYXBoaWNz
Q29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBjYWly
b19zdXJmYWNlX2dldF90eXBlKGNhaXJvX2dldF90YXJnZXQocGxhdGZvcm1Db250ZXh0KCktPmNy
KCkpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfR0w7Cit9CisKICNpZiBFTkFCTEUoM0RfUkVOREVS
SU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBHcmFwaGlj
c0NvbnRleHQ6OmdldDNEVHJhbnNmb3JtKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
aW5kZXggNjk1MzkzMi4uNDE5NTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkNhaXJvVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC0zOSwzMCArNDAsNzcgQEAKICNpbmNsdWRlICJQYXR0
ZXJuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJSZWZQ
dHJDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLWdsLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVm
ZmVyRGF0YShjb25zdCBJbnRTaXplJikKLSAgICA6IG1fc3VyZmFjZSgwKQorSW1hZ2VCdWZmZXJE
YXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKKyAgICA6IG1fc2l6ZShz
aXplKQorICAgICwgbV9zdXJmYWNlKDApCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgwKQorICAg
ICwgbV90ZXh0dXJlKDApCiB7CiB9CiAKLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJ
bnRTaXplJiBzaXplLCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJl
bmRlcmluZ01vZGUsIERlZmVycmFsTW9kZSwgYm9vbCYgc3VjY2VzcykKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKK3ZvaWQgSW1hZ2VCdWZm
ZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVy
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit7CisgICAgaWYg
KHRleHR1cmVNYXBwZXItPmFjY2VsZXJhdGlvbk1vZGUoKSAhPSBUZXh0dXJlTWFwcGVyOjpPcGVu
R0xNb2RlKSB7CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgQVNTRVJUKG1fdGV4dHVyZSk7
CisKKyAgICAvLyBDYWlybyBtYXkgY2hhbmdlIHRoZSBhY3RpdmUgY29udGV4dCwgc28gd2UgbWFr
ZSBzdXJlIHRvIGNoYW5nZSBpdCBiYWNrIGFmdGVyIGZsdXNoaW5nLgorICAgIEdMQ29udGV4dCog
cHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpnZXRDdXJyZW50KCk7CisgICAgY2Fp
cm9fc3VyZmFjZV9mbHVzaChtX3N1cmZhY2UpOworICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0g
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7CisgICAgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQ7Cisg
ICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fdGV4dHVyZSwgZmxhZ3MsIG1fc2l6ZSwgdGFyZ2V0
UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrKTsKKyNlbmRpZgorfQorI2VuZGlmCisKK0ltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCAvKiByZXNvbHV0
aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgRGVm
ZXJyYWxNb2RlLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9kYXRhKHNpemUpCiAgICAgLCBtX3Np
emUoc2l6ZSkKICAgICAsIG1fbG9naWNhbFNpemUoc2l6ZSkKIHsKICAgICBzdWNjZXNzID0gZmFs
c2U7ICAvLyBNYWtlIGVhcmx5IHJldHVybiBtZWFuIGVycm9yLgotICAgIG1fZGF0YS5tX3N1cmZh
Y2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRo
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emUuaGVpZ2h0KCkpOworCisgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gQWNjZWxlcmF0ZWQpIHsK
KyAgICAgICAgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKKworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtX2RhdGEubV90ZXh0dXJlKTsKKyAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2RhdGEubV90ZXh0dXJlKTsKKyAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9D
TEFNUCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X1dSQVBfVCwgR0xfQ0xBTVApOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwor
CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisKKyAgICAg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAgLyogbGV2ZWwgKi8sIEdMX1JHQkE4LCBt
X3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwIC8qIGJvcmRlciAqLywgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgMCk7CisKKyAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNhaXJv
X2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQo
KS0+Y2Fpcm9EZXZpY2UoKSwKKyAgICAgICAgICAgIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEs
IG1fZGF0YS5tX3RleHR1cmUsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZShDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCiAg
ICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKG1fZGF0YS5tX3N1cmZhY2UpICE9IENBSVJPX1NU
QVRVU19TVUNDRVNTKQogICAgICAgICByZXR1cm47ICAvLyBjcmVhdGUgd2lsbCBub3RpY2Ugd2Ug
ZGlkbid0IHNldCBtX2luaXRpYWxpemVkIGFuZCBmYWlsLgogCkBAIC0xMTgsNyArMTY2LDkgQEAg
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QKIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFu
c2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIHsKLSAgICBB
U1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEubV9zdXJmYWNlKSA9PSBDQUlST19T
VVJGQUNFX1RZUEVfSU1BR0UpOworICAgIC8vIEZJWE1FOiBEaXNhYmxlIGNvbG9yIHNwYWNlIGNv
bnZlcnNpb25zIG9uIGFjY2VsZXJhdGVkIGNhbnZhc2VzIChmb3Igbm93KS4KKyAgICBpZiAoY2Fp
cm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEubV9zdXJmYWNlKSAhPSBDQUlST19TVVJGQUNFX1RZ
UEVfSU1BR0UpCisgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fZGF0YS5tX3N1cmZhY2UpOwogICAgIGlu
dCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9kYXRhLm1fc3VyZmFj
ZSk7CkBAIC0xMzcsMTMgKzE4Nyw0NiBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5z
Zm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogICAgIGNhaXJv
X3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUgKG1fZGF0YS5tX3N1cmZhY2UsIDAsIDAsIG1f
c2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwogfQogCitzdGF0aWMgY2Fpcm9fc3VyZmFj
ZV90KiBtYXBTdXJmYWNlVG9JbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IElu
dFNpemUmIHNpemUpCit7CisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSkg
PT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQorICAgICAgICByZXR1cm4gc3VyZmFjZTsKKwor
ICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j
cmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
KyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoaW1hZ2VTdXJm
YWNlKSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLCAw
LCAwKTsKKyAgICBjYWlyb19wYWludChjci5nZXQoKSk7CisgICAgcmV0dXJuIGltYWdlU3VyZmFj
ZTsKK30KKworc3RhdGljIHZvaWQgdW5tYXBTdXJmYWNlRnJvbUltYWdlKGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSwgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2UsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdGFuZ2xlID0gSW50UmVjdCgpKQoreworICAgIGlmIChzdXJmYWNlID09IGltYWdl
U3VyZmFjZSAmJiBkaXJ0eVJlY3RhbmdsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAoZGlydHlSZWN0YW5nbGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGNhaXJvX3N1cmZhY2Vf
ZGVzdHJveShpbWFnZVN1cmZhY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHN1cmZhY2UgPT0gaW1hZ2VTdXJmYWNlKSB7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19k
aXJ0eV9yZWN0YW5nbGUoc3VyZmFjZSwgZGlydHlSZWN0YW5nbGUueCgpLCBkaXJ0eVJlY3Rhbmds
ZS55KCksIGRpcnR5UmVjdGFuZ2xlLndpZHRoKCksCisgICAgICAgICAgICBkaXJ0eVJlY3Rhbmds
ZS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8Y2Fpcm9f
dD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZSkpOworICAgIGNhaXJvX3NldF9z
b3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgaW1hZ2VTdXJmYWNlLCAwLCAwKTsKKyAgICBjYWlyb19y
ZWN0YW5nbGUoY3IuZ2V0KCksIGRpcnR5UmVjdGFuZ2xlLngoKSwgZGlydHlSZWN0YW5nbGUueSgp
LCBkaXJ0eVJlY3RhbmdsZS53aWR0aCgpLCBkaXJ0eVJlY3RhbmdsZS5oZWlnaHQoKSk7CisgICAg
Y2Fpcm9fZmlsbChjci5nZXQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlU3Vy
ZmFjZSk7Cit9CisKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgogUGFzc1JlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBBU1NF
UlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShkYXRhLm1fc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFD
RV9UWVBFX0lNQUdFKTsKLQogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0g
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVj
dC5oZWlnaHQoKSAqIDQpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKGRhdGEubV9zdXJmYWNlKTsKKyAgICBjYWlyb19zdXJmYWNlX3Qq
IGltYWdlU3VyZmFjZSA9IG1hcFN1cmZhY2VUb0ltYWdlKGRhdGEubV9zdXJmYWNlLCBzaXplKTsK
KyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShpbWFnZVN1cmZhY2UpOwogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSByZXN1bHQtPmRh
dGEoKTsKIAogICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IChyZWN0Lngo
KSArIHJlY3Qud2lkdGgoKSkgPiBzaXplLndpZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWln
aHQoKSkgPiBzaXplLmhlaWdodCgpKQpAQCAtMjA0LDYgKzI4Nyw3IEBAIFBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bWFnZUJ1ZmZlCiAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAK
KyAgICB1bm1hcFN1cmZhY2VGcm9tSW1hZ2UoZGF0YS5tX3N1cmZhY2UsIGltYWdlU3VyZmFjZSk7
CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTIxOSw5ICszMDMsOCBAQCBQ
YXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGll
ZEltYWdlRGF0YShjb25zdCBJbnRSZQogCiB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXko
TXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50
U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKIHsKLSAgICBBU1NFUlQoY2Fpcm9fc3Vy
ZmFjZV9nZXRfdHlwZShtX2RhdGEubV9zdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1B
R0UpOwotCi0gICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1
cmZhY2UgPSBtYXBTdXJmYWNlVG9JbWFnZShtX2RhdGEubV9zdXJmYWNlLCBzb3VyY2VTaXplKTsK
KyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShpbWFnZVN1cmZhY2UpOwogCiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwog
ICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CkBAIC0yNTAsNyArMzMzLDcgQEAg
dm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4
Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBkZXN0eTsK
IAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsK
LSAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fZGF0YS5t
X3N1cmZhY2UpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJp
ZGUoaW1hZ2VTdXJmYWNlKTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2Ut
PmRhdGEoKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwogICAgIGZv
ciAoaW50IHkgPSAwOyB5IDwgbnVtUm93czsgKyt5KSB7CkBAIC0yNzgsOSArMzYxLDggQEAgdm9p
ZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xh
bXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICAgICAgfQogICAgICAgICBzcmNSb3dzICs9IHNyY0J5
dGVzUGVyUm93OwogICAgIH0KLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xl
KG1fZGF0YS5tX3N1cmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdHgsIGRlc3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bUNvbHVtbnMsIG51bVJvd3MpOworCisgICAgdW5tYXBTdXJmYWNlRnJvbUltYWdlKG1fZGF0
YS5tX3N1cmZhY2UsIGltYWdlU3VyZmFjZSwgSW50UmVjdChkZXN0eCwgZGVzdHksIG51bUNvbHVt
bnMsIG51bVJvd3MpKTsKIH0KIAogI2lmICFQTEFURk9STShHVEspCkBAIC0zMTUsNCArMzk3LDEx
IEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IGRvdWJsZSosIENvb3JkaW5hdGVTCiB9CiAjZW5kaWYKIAorUGxhdGZvcm1MYXllciog
SW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIGlmIChtX2RhdGEubV90
ZXh0dXJlKQorICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxJbWFnZUJ1ZmZlckRhdGEqPigmbV9k
YXRhKTsKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJE
YXRhQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyRGF0YUNhaXJvLmgKaW5kZXggNWNhNzI2Mi4uN2E5M2NkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckRhdGFDYWlyby5oCkBAIC0yNSwxOCArMjUsMzMgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dENhaXJvLmgiCiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShU
RVhUVVJFX01BUFBFUikKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisjZW5kaWYKKwogdHlw
ZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7CitjbGFzcyBJbWFnZUJ1ZmZlclBsYXRmb3JtTGF5
ZXI7CiAKLWNsYXNzIEltYWdlQnVmZmVyRGF0YSB7CitjbGFzcyBJbWFnZUJ1ZmZlckRhdGEKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyAg
ICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcgorI2VuZGlmCit7CiBwdWJsaWM6
CiAgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKIAorICAgIEludFNpemUgbV9z
aXplOwogICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zdXJmYWNlOwogICAgIFBsYXRmb3JtQ29udGV4
dENhaXJvIG1fcGxhdGZvcm1Db250ZXh0OworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
KTsKKyAgICB1aW50MzJfdCBtX3RleHR1cmU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAKaW5kZXggYjkzODliNC4uMjdiNDc3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAg
LTIyLDYgKzIyLDggQEAKICNpZiBVU0UoRUdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKKyNpbmNsdWRlIDxjYWlyby1nbC5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCiAjaWYgVVNFKE9QRU5HTF9FU18yKQpAQCAtMjA4LDExICsyMTAs
MTUgQEAgR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xT
dXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXAKICAgICA6IG1fY29udGV4dChjb250ZXh0KQog
ICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fY2Fp
cm9EZXZpY2UoMCkKIHsKIH0KIAogR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKIHsKKyAg
ICBpZiAobV9jYWlyb0RldmljZSkKKyAgICAgICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWly
b0RldmljZSk7CisKICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7
CiAgICAgaWYgKG1fY29udGV4dCkgewogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgMCk7CkBAIC0yMjQsNiArMjMwLDE1IEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4
dEVHTCgpCiAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CiB9
CiAKK2NhaXJvX2RldmljZV90KiBHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkKK3sKKyAgICBp
ZiAobV9jYWlyb0RldmljZSkKKyAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CisKKyAgICBt
X2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVkRUdMRGlzcGxheSgp
LCBtX2NvbnRleHQpOworICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOworfQorCiBib29sIEdMQ29u
dGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKQogewogICAgIHJldHVybiBt
X3R5cGUgPT0gV2luZG93U3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCBjNWQ0YmY3Li45MWU3MzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TC5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2
ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOwog
ICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7CisgICAgdmlydHVh
bCBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKTsKIAogCiAjaWYgRU5BQkxFKFdFQkdMKQpA
QCAtNTksNiArNjAsNyBAQCBwcml2YXRlOgogICAgIEVHTENvbnRleHQgbV9jb250ZXh0OwogICAg
IEVHTFN1cmZhY2UgbV9zdXJmYWNlOwogICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKKyAgICBj
YWlyb19kZXZpY2VfdCogbV9jYWlyb0RldmljZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENv
bnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKaW5kZXggMzFmMzJjZi4uMTAxYWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKQEAgLTIzLDYg
KzIzLDggQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIk9wZW5H
TFNoaW1zLmgiCiAjaW5jbHVkZSA8R0wvZ2x4Lmg+CisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKyNp
bmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTY4LDYgKzE3MCw3IEBAIEdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdM
WENvbnRleHQgY29udGV4dCkKICAgICAsIG1fcGJ1ZmZlcigwKQogICAgICwgbV9waXhtYXAoMCkK
ICAgICAsIG1fZ2x4UGl4bWFwKDApCisgICAgLCBtX2NhaXJvRGV2aWNlKDApCiB7CiB9CiAKQEAg
LTE4Miw2ICsxODUsOSBAQCBHTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChHTFhDb250ZXh0IGNv
bnRleHQsIFBpeG1hcCBwaXhtYXAsIEdMWFBpeG1hcCBnbHhQaXhtYQogCiBHTENvbnRleHRHTFg6
On5HTENvbnRleHRHTFgoKQogeworICAgIGlmIChtX2NhaXJvRGV2aWNlKQorICAgICAgICBjYWly
b19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2aWNlKTsKKwogICAgIGlmIChtX2NvbnRleHQpIHsK
ICAgICAgICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRo
IE5WaWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBm
cm9tIE1vemlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNr
ZXQub3JnL2lsbWFyaS9jYW52YXMzZC8KQEAgLTI1MSw2ICsyNTcsMTUgQEAgdm9pZCBHTENvbnRl
eHRHTFg6OndhaXROYXRpdmUoKQogICAgIGdsWFdhaXRYKCk7CiB9CiAKK2NhaXJvX2RldmljZV90
KiBHTENvbnRleHRHTFg6OmNhaXJvRGV2aWNlKCkKK3sKKyAgICBpZiAobV9jYWlyb0RldmljZSkK
KyAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CisKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fp
cm9fZ2x4X2RldmljZV9jcmVhdGUoc2hhcmVkWDExRGlzcGxheSgpLCBtX2NvbnRleHQpOworICAg
IHJldHVybiBtX2NhaXJvRGV2aWNlOworfQorCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCBHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCgpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0
R0xYLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
LmgKaW5kZXggODg4MTQ2Yi4uNTk2ZGU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaApAQCAtNTEsNiArNTEsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4
dCgpOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgp
OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEdMWD4gY3JlYXRl
UGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hh
cmluZ0NvbnRleHQpOwpAQCAtNjMsNiArNjUsNyBAQCBwcml2YXRlOgogICAgIEdMWFBidWZmZXIg
bV9wYnVmZmVyOwogICAgIFBpeG1hcCBtX3BpeG1hcDsKICAgICBHTFhQaXhtYXAgbV9nbHhQaXht
YXA7CisgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5k
ZXggNzU0NGI1Ni4uNzdiZjYzZCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZp
Z3VyZS5hYwpAQCAtNjQ0LDYgKzY0NCwxNCBAQCBBQ19BUkdfRU5BQkxFKGFjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nLAogICAgICAgICAgICAgXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfYWNjZWxl
cmF0ZWRfY29tcG9zaXRpbmddKQogCisjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIGFjY2VsZXJh
dGQgMkQgY2FudmFzCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIGFjY2VsZXJh
dGVkIDJEIGNhbnZhcyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoYWNlbGVyYXRlZF8yZF9jYW52
YXMsCisgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1hY2NlbGVyYXRlZC0y
ZC1jYW52YXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGFjY2VsZXJh
dGVkIDJEIGNhbnZhcyBbZGVmYXVsdD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2VuYWJsZV9h
Y2NlbGVyYXRlZF8yZF9jYW52YXM9InllcyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9hY2Nl
bGVyYXRlZF8yZF9jYW52YXNdKQorCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIEdhbWVwYWQg
c3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBHYW1lcGFkIHN1cHBv
cnRdKQogQUNfQVJHX0VOQUJMRShnYW1lcGFkLApAQCAtMTE1NSw2ICsxMTYzLDcgQEAgQU1fQ09O
RElUSU9OQUwoW0VOQUJMRV9ERUJVR10sW3Rlc3QgIiRlbmFibGVfZGVidWdfZmVhdHVyZXMiID0g
InllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9VTlNUQUJMRV9GRUFUVVJFU10sW3Rlc3Qg
IiRlbmFibGVfdW5zdGFibGVfZmVhdHVyZXMiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VO
QUJMRV9XRUJHTF0sW3Rlc3QgIiRlbmFibGVfd2ViZ2wiID0gInllcyJdKQogQU1fQ09ORElUSU9O
QUwoW0VOQUJMRV9HQU1FUEFEXSxbdGVzdCAiJGVuYWJsZV9nYW1lcGFkIiA9ICJ5ZXMiXSkKK0FN
X0NPTkRJVElPTkFMKFtFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTXSxbdGVzdCAiJGVuYWJs
ZV9hY2NlbGVyYXRlZF8yZF9jYW52YXMiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJM
RV9YU0xUXSxbdGVzdCAiJGVuYWJsZV94c2x0IiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtF
TkFCTEVfR0VPTE9DQVRJT05dLCBbdGVzdCAiJGVuYWJsZV9nZW9sb2NhdGlvbiIgPSAieWVzIl0p
CiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1ZJREVPXSxbdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAi
eWVzIl0pCkBAIC0xMjM1LDYgKzEyNDQsNyBAQCBGZWF0dXJlczoKICBTcGVsbGNoZWNrIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfc3BlbGxj
aGVjawogIFdlYiBBdWRpbyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogJGVuYWJsZV93ZWJfYXVkaW8KICBXZWJHTCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfd2ViZ2wKKyBBY2NlbGVyYXRl
ZCAyRCBjYW52YXMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVf
YWNjZWxlcmF0ZWRfMmRfY2FudmFzCiAgWFNMVCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3hzbHQKIAogV2ViS2l0MiBzdXBwb3J0
Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197390</attachid>
            <date>2013-04-10 13:00:00 -0700</date>
            <delta_ts>2013-04-10 13:25:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104672-20130410125941.patch</filename>
            <type>text/plain</type>
            <size>27567</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEyMGM2YjZlMjEyMWUx
YTFlMDhjNWMxYjk4Nzg0MDNiYWM4YzMzOS4uYzMyZjU2Y2ZjNGMwMDI3ZGUzODgzYTU1ZWM4YjA1
YWQ4NDRiYzQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQg
YWNjZWxlcmF0ZWQgMkQgY2FudmFzIHN1cHBvcnQgdXNpbmcgY2Fpcm8tZ2wKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDY3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gV2UgZG8g
bm90IHlldCBoYXZlIHRoZSBhYmlsaXR5IHRvIHJ1biB0ZXN0cyBhZ2FpbnN0CisgICAgICAgIGFj
Y2VsZXJhdGVkIGNvbnRlbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6IFdlIGRvbid0IHVzZSB0aGUgc3R1YiBp
bXBsZW1lbnRhdGlvbiBvZiBpc0FjY2VsZXJhdGVkQ29udGV4dCBhbnkgbG9uZ2VyLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OiBEaXR0byBmb3IgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0Lmg6CisgICAgICAgIChHTENvbnRleHQpOiBBZGRl
ZCBtZXRob2QgdG8gZ2V0IGEgY2Fpcm9fZGV2aWNlX3QgZnJvbSB0aGUgY29udGV4dC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0KTog
UmV0dXJuIHRydWUgd2hlbiB3ZSBhcmUgYSBDYWlyb0dMIHN1cmZhY2UuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YSk6IEluaXRpYWxpemUgdGhlIHNp
emUgYW5kIHRoZSB0ZXh0dXJlIHRvIDAuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWlyb0dM
U3VyZmFjZSk6IEFkZGVkIHRoaXMgaGVscGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OkltYWdlQnVmZmVyKTogV2hlbiB3ZSBhcmUgaW4gYWNjZWxlcmF0ZWQgcmVuZGVyaW5nIG1v
ZGUsIGNyZWF0ZQorICAgICAgICBhIENhaXJvR0wgc3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOiBEbyBub3QgaW1wbGVt
ZW50IHRoaXMgZm9yIGFjY2VsZXJhdGVkCisgICAgICAgIGNvbnRleHRzIHlldC4KKyAgICAgICAg
KFdlYkNvcmU6Om1hcFN1cmZhY2VUb0ltYWdlKTogQWRkZWQgdGhpcyBoZWxwZXIsIHNpbmNlIHdl
IGRvbid0IHJlcXVpcmUgQ2Fpcm8gMS4xMiB5ZXQsCisgICAgICAgIHdoaWNoIHByb3ZpZGVzIGFu
IGJ1aWx0aW4gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjp1bm1hcFN1cmZhY2VG
cm9tSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6IE1hcCB0
aGUgc3VyZmFjZSB0byBhbiBpbWFnZSBzdXJmYWNlIGZpcnN0LgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6IENvbm5lY3QgdGhlIGFjY2VsZXJh
dGVkIGNhbnZhcyBpbnRvIHRoZQorICAgICAgICBUZXh0dXJlTWFwcGVyIGluZnJhc3RydWN0dXJl
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIpOiBUaGlzIGxl
dHMgdGhlIFRleHR1cmVNYXBwZXIgYXQgdGhlIEltYWdlQnVmZmVyRGF0YS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oOgorICAgICAgICAo
SW1hZ2VCdWZmZXJEYXRhKTogU3ViY2xhc3MgVGV4dHVyTWFwcGVyUGxhdGZvcm1MYXllciB3aGVy
ZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcDogQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgY2Fpcm9EZXZpY2UuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcDogRGl0dG8KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmg6IERpdHRvLgorCiAyMDEzLTA0LTA5
ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEJv
dW5kaW5nIHBhdGhzIHNob3VsZCBiZSBtYWRlIGF2YWlsYWJsZSB0aHJvdWdoIGFjY2Vzc2liaWxp
dHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDc2MmM2MGJlZDEyMDM5YjVjMzYyNzhhYjU5ZjU2MTYwMDJmMTFhNTgu
LmNmOTU2NjExYjIzNmZlY2U1NzRlOWRhNmE5NmFmNmMwOWU3MzM5MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
NzU3LDcgKzc1Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZFNt
b290aEZvbnRzKGJvb2wpCiB9CiAjZW5kaWYKIAotI2lmICFVU0UoU0tJQSkgJiYgIVVTRShDRykK
KyNpZiAhVVNFKFNLSUEpICYmICFVU0UoQ0cpICYmICFVU0UoQ0FJUk8pCiBib29sIEdyYXBoaWNz
Q29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cAppbmRleCBiZmQ1NDdhYzQyMmJkNDZjODI0NzgwMTRhZGM2MmJlYjgyNDk3NmIxLi4yNWU3MzY1
ZjQyN2I1ZDc0NDhjMDRhZmNmZDYzMTY0ZmIyN2ViNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgSW1hZ2VCdWZmZXI6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogICAgIGdlbmVyaWNDb252
ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiB9CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpICYmICFVU0UoU0tJQSkKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmICFV
U0UoU0tJQSkgJiYgIVVTRShDQUlSTykKIFBsYXRmb3JtTGF5ZXIqIEltYWdlQnVmZmVyOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmgKaW5kZXggMWE4ODA3MjIyZjIy
OWFhMzYyYjc3ZDY2Njg4N2ZiNmIxN2NmMzNkNy4uMzhkZjdhNjY5YWQ4MGQyYTVkNmVlZTFkY2Y0
YmQ1MDljZWRhNTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR0xDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR0xDb250ZXh0LmgKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCit0eXBlZGVmIHN0cnVj
dCBfY2Fpcm9fZGV2aWNlIGNhaXJvX2RldmljZV90OworCiAjaWYgUExBVEZPUk0oWDExKQogdHlw
ZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CiAjZW5kaWYKQEAgLTQ2LDYgKzQ4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpID0gMDsKICAgICB2aXJ0dWFsIElu
dFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGNhaXJvX2Rl
dmljZV90KiBjYWlyb0RldmljZSgpID0gMDsKIAogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBzdGF0
aWMgRGlzcGxheSogc2hhcmVkWDExRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCmluZGV4IDA5OTk4YzkxZjNiOGNmNmUwYmM3NGI4OGZjODA2MDg5MzA5Mjg3YWMuLmJmNTNi
ZGU3YTE3MWQyZTYwNWI5NDFkMDE4MWFkNDZkOWUyNWRmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAKQEAgLTExNDIsNiArMTE0MiwxMSBAQCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBH
cmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdAogICAgIHJl
dHVybiBwbGF0Zm9ybUNvbnRleHQoKS0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpOwogfQog
Citib29sIEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAorewor
ICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF90eXBlKGNhaXJvX2dldF90YXJnZXQocGxhdGZv
cm1Db250ZXh0KCktPmNyKCkpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfR0w7Cit9CisKICNpZiBF
TkFCTEUoM0RfUkVOREVSSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBHcmFwaGljc0NvbnRleHQ6OmdldDNEVHJhbnNmb3JtKCkgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAKaW5kZXggOWI0NjlkMDcyOTQxY2MzZjFmNjFhMTc3N2Y0MDU4OTY0YWZk
MjVmZC4uNTFmYmYwZjA4MjdmZDExNGNlMzk0ZTU5Y2Y1ZDkwOGZiZjU3YmQ0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAKQEAgLTQ0LDIyICs0NCw2OCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlICJP
cGVuR0xTaGltcy5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorI2luY2x1ZGUgPGNh
aXJvLWdsLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1JbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXpl
JikKK0ltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgOiBtX3BsYXRmb3JtQ29udGV4dCgwKQorICAgICwgbV9zaXplKHNpemUpCisjaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICAsIG1fdGV4dHVyZSgwKQorI2VuZGlmCiB7
CiB9CiAKLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9h
dCAvKiByZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGJvb2wm
IHN1Y2Nlc3MpCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKK1Bhc3NSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb0dMU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXpl
LCB1aW50MzJfdCYgdGV4dHVyZSkKK3sKKyAgICBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgLy8gV2UgbXVzdCBnZW5lcmF0ZSB0aGUgdGV4
dHVyZSBvdXJzZWx2ZXMsIGJlY2F1c2UgdGhlcmUgaXMgbm8gQ2Fpcm8gQVBJIGZvciBleHRyYWN0
aW5nIGl0CisgICAgLy8gZnJvbSBhIHByZS1leGlzdGluZyBzdXJmYWNlLgorICAgIGdsR2VuVGV4
dHVyZXMoMSwgJnRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9TLCBHTF9DTEFNUCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9ULCBHTF9DTEFNUCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworCisg
ICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKworICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwIC8qIGxldmVsICovLCBHTF9SR0JBOCwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpLCAwIC8qIGJvcmRlciAqLywgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgMCk7CisKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250
ZXh0KCk7CisgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbnRleHQtPmNhaXJvRGV2aWNl
KCk7CisKKyAgICAvLyBUaHJlYWQtYXdhcmVuZXNzIGlzIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQg
b24gbm9uLUludGVsIGRyaXZlcnMuCisgICAgY2Fpcm9fZ2xfZGV2aWNlX3NldF90aHJlYWRfYXdh
cmUoZGV2aWNlLCBGQUxTRSk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFj
ZV9jcmVhdGVfZm9yX3RleHR1cmUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCB0
ZXh0dXJlLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKK30KKyNlbmRpZgorCitJbWFn
ZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgLyogcmVzb2x1
dGlvblNjYWxlICovLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGJv
b2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAg
ICwgbV9sb2dpY2FsU2l6ZShzaXplKQogewogICAgIHN1Y2Nlc3MgPSBmYWxzZTsgIC8vIE1ha2Ug
ZWFybHkgcmV0dXJuIG1lYW4gZXJyb3IuCi0gICAgbV9kYXRhLm1fc3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKKyAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBBY2NlbGVyYXRlZCkKKyAgICAgICAgbV9kYXRh
Lm1fc3VyZmFjZSA9IGNyZWF0ZUNhaXJvR0xTdXJmYWNlKHNpemUsIG1fZGF0YS5tX3RleHR1cmUp
OworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gYWRvcHRSZWYo
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKSk7CisKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9k
YXRhLm1fc3VyZmFjZS5nZXQoKSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCiAgICAgICAgIHJl
dHVybjsgIC8vIGNyZWF0ZSB3aWxsIG5vdGljZSB3ZSBkaWRuJ3Qgc2V0IG1faW5pdGlhbGl6ZWQg
YW5kIGZhaWwuCiAKQEAgLTExNCw3ICsxNjAsOSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdAog
CiB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVj
dG9yPGludD4mIGxvb2tVcFRhYmxlKQogewotICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90
eXBlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7
CisgICAgLy8gRklYTUU6IEVuYWJsZSBjb2xvciBzcGFjZSBjb252ZXJzaW9ucyBvbiBhY2NlbGVy
YXRlZCBjYW52YXNlcy4KKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEubV9z
dXJmYWNlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCisgICAgICAgIHJldHVy
bjsKIAogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9kYXRhKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpOwogICAgIGludCBzdHJpZGUgPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSk7CkBAIC0xMzMs
MTMgKzE4MSw0NiBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3Bh
Y2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogICAgIGNhaXJvX3N1cmZhY2VfbWFy
a19kaXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiB9CiAKK3N0YXRpYyBjYWlyb19zdXJmYWNlX3QqIG1h
cFN1cmZhY2VUb0ltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKK3sKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlKSA9PSBDQUlS
T19TVVJGQUNFX1RZUEVfSU1BR0UpCisgICAgICAgIHJldHVybiBzdXJmYWNlOworCisgICAgY2Fp
cm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShD
QUlST19GT1JNQVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIFJl
ZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShpbWFnZVN1cmZhY2UpKTsK
KyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIHN1cmZhY2UsIDAsIDApOwor
ICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKKyAgICByZXR1cm4gaW1hZ2VTdXJmYWNlOworfQor
CitzdGF0aWMgdm9pZCB1bm1hcFN1cmZhY2VGcm9tSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlLCBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3VyZmFjZSwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0YW5nbGUgPSBJbnRSZWN0KCkpCit7CisgICAgaWYgKHN1cmZhY2UgPT0gaW1hZ2VTdXJmYWNl
ICYmIGRpcnR5UmVjdGFuZ2xlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGRpcnR5UmVjdGFuZ2xlLmlzRW1wdHkoKSkgeworICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ry
b3koaW1hZ2VTdXJmYWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzdXJm
YWNlID09IGltYWdlU3VyZmFjZSkgeworICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlf
cmVjdGFuZ2xlKHN1cmZhY2UsIGRpcnR5UmVjdGFuZ2xlLngoKSwgZGlydHlSZWN0YW5nbGUueSgp
LCBkaXJ0eVJlY3RhbmdsZS53aWR0aCgpLCBkaXJ0eVJlY3RhbmdsZS5oZWlnaHQoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihj
YWlyb19jcmVhdGUoc3VyZmFjZSkpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5n
ZXQoKSwgaW1hZ2VTdXJmYWNlLCAwLCAwKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IuZ2V0KCks
IGRpcnR5UmVjdGFuZ2xlLngoKSwgZGlydHlSZWN0YW5nbGUueSgpLCBkaXJ0eVJlY3RhbmdsZS53
aWR0aCgpLCBkaXJ0eVJlY3RhbmdsZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fZmlsbChjci5nZXQo
KSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlU3VyZmFjZSk7Cit9CisKIHRlbXBs
YXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYg
ZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9n
ZXRfdHlwZShkYXRhLm1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdF
KTsKLQogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAq
IDQpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9kYXRhKGRhdGEubV9zdXJmYWNlLmdldCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdl
U3VyZmFjZSA9IG1hcFN1cmZhY2VUb0ltYWdlKGRhdGEubV9zdXJmYWNlLmdldCgpLCBzaXplKTsK
KyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShpbWFnZVN1cmZhY2UpOwogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSByZXN1bHQtPmRh
dGEoKTsKIAogICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IChyZWN0Lngo
KSArIHJlY3Qud2lkdGgoKSkgPiBzaXplLndpZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWln
aHQoKSkgPiBzaXplLmhlaWdodCgpKQpAQCAtMTY3LDcgKzI0OCw3IEBAIFBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bWFnZUJ1ZmZlCiAgICAgICAgIGVuZHkgPSBzaXplLmhlaWdodCgpOwogICAgIGludCBudW1Sb3dz
ID0gZW5keSAtIG9yaWdpbnk7CiAKLSAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfc3RyaWRlKGRhdGEubV9zdXJmYWNlLmdldCgpKTsKKyAgICBpbnQgc3RyaWRlID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZSk7CiAgICAgdW5zaWduZWQg
ZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKIAogICAgIHVuc2lnbmVkIGNoYXIq
IGRlc3RSb3dzID0gZGF0YURzdCArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHggKiA0
OwpAQCAtMjAwLDYgKzI4MSw3IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlCiAgICAgICAgIGRl
c3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAKKyAgICB1bm1hcFN1cmZhY2VGcm9t
SW1hZ2UoZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGltYWdlU3VyZmFjZSk7CiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTIxNSw5ICsyOTcsOCBAQCBQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25z
dCBJbnRSZQogCiB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlw
bGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwg
Q29vcmRpbmF0ZVN5c3RlbSkKIHsKLSAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZSht
X2RhdGEubV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwotCi0g
ICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
bV9kYXRhLm1fc3VyZmFjZS5nZXQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1cmZh
Y2UgPSBtYXBTdXJmYWNlVG9JbWFnZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCBzb3VyY2VTaXpl
KTsKKyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShpbWFnZVN1cmZhY2UpOwogCiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDAp
OwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CkBAIC0yNDYsNyArMzI3LDcg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVp
bnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBkZXN0
eTsKIAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgo
KTsKLSAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fZGF0
YS5tX3N1cmZhY2UuZ2V0KCkpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9zdHJpZGUoaW1hZ2VTdXJmYWNlKTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3Mg
PSBzb3VyY2UtPmRhdGEoKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0
OwogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbnVtUm93czsgKyt5KSB7CkBAIC0yNzQsNyArMzU1
LDggQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQs
IFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICAgICAgfQogICAgICAgICBzcmNSb3dz
ICs9IHNyY0J5dGVzUGVyUm93OwogICAgIH0KLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlf
cmVjdGFuZ2xlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1u
cywgbnVtUm93cyk7CisKKyAgICB1bm1hcFN1cmZhY2VGcm9tSW1hZ2UobV9kYXRhLm1fc3VyZmFj
ZS5nZXQoKSwgaW1hZ2VTdXJmYWNlLCBJbnRSZWN0KGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1ucywg
bnVtUm93cykpOwogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKQEAgLTMwOSw0ICszOTEsMzIgQEAg
U3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgZG91YmxlKiwgQ29vcmRpbmF0ZVMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKK3ZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7
CisgICAgaWYgKHRleHR1cmVNYXBwZXItPmFjY2VsZXJhdGlvbk1vZGUoKSAhPSBUZXh0dXJlTWFw
cGVyOjpPcGVuR0xNb2RlKSB7CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV90ZXh0dXJlKTsKKworICAgIC8vIENhaXJvIG1h
eSBjaGFuZ2UgdGhlIGFjdGl2ZSBjb250ZXh0LCBzbyB3ZSBtYWtlIHN1cmUgdG8gY2hhbmdlIGl0
IGJhY2sgYWZ0ZXIgZmx1c2hpbmcuCisgICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRl
eHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKKyAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1f
c3VyZmFjZS5nZXQoKSk7CisgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKTsKKworICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBw
ZXIpLT5kcmF3VGV4dHVyZShtX3RleHR1cmUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQs
IG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5KTsKK30KKyNlbmRpZgorCitQbGF0
Zm9ybUxheWVyKiBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisjaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICBpZiAobV9kYXRhLm1fdGV4dHVyZSkKKyAg
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SW1hZ2VCdWZmZXJEYXRhKj4oJm1fZGF0YSk7CisjZW5k
aWYKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRh
Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyRGF0YUNhaXJvLmgKaW5kZXggYzlmYWY4ZGE2MWNkYzhlNDliYTg5NTgzMzdmM2U3MjJkM2U0
NzZmYy4uNzJlYTRjMzRmNWU3YjEwNDVmZTZiNmRhNzhhMDFhMDc2NTg0MGQ3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRh
Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckRhdGFDYWlyby5oCkBAIC0yNiwxNiArMjYsMzEgQEAKICNpbmNsdWRlICJQbGF0Zm9y
bUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAKKyNpZiBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKIAotY2xhc3MgSW1hZ2VCdWZmZXJEYXRhIHsKK2Ns
YXNzIEltYWdlQnVmZmVyRGF0YQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisg
ICAgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIKKyNlbmRpZgorewogcHVibGlj
OgogICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CiAKICAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CiAgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gbV9wbGF0
Zm9ybUNvbnRleHQ7CisgICAgSW50U2l6ZSBtX3NpemU7CisKKyNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CisgICAgdWludDMyX3QgbV90ZXh0dXJlOworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IGI5Mzg5YjQ4M2Y5
M2NjMjRlZDQ1MmFjYmVmZmMwZGEyYzZkODBiYjAuLjhhOWI1OWRlNmVmMzAwZjNhYzZhZWZhZThi
NDc5ZjMxMTM5NWUzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaWYgVVNFKEVH
TCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNpZiBVU0UoT1BFTkdMX0VTXzIpCkBAIC0zMSw2
ICszMiwxMCBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBFR0xEaXNwbGF5IGdTaGFyZWRFR0xEaXNw
bGF5ID0gRUdMX05PX0RJU1BMQVk7CkBAIC0yMDgsMTEgKzIxMywxNSBAQCBHTENvbnRleHRFR0w6
OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdM
U3VyZmFjZVR5cAogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3Vy
ZmFjZSkKICAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9jYWlyb0RldmljZSgwKQogewogfQog
CiBHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQogeworICAgIGlmIChtX2NhaXJvRGV2aWNl
KQorICAgICAgICBjYWlyb19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2aWNlKTsKKwogICAgIEVH
TERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKICAgICBpZiAobV9jb250ZXh0
KSB7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKQEAgLTI2
NCw2ICsyNzMsMTggQEAgdm9pZCBHTENvbnRleHRFR0w6OndhaXROYXRpdmUoKQogICAgIGVnbFdh
aXROYXRpdmUoRUdMX0NPUkVfTkFUSVZFX0VOR0lORSk7CiB9CiAKK2NhaXJvX2RldmljZV90KiBH
TENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkKK3sKKyAgICBpZiAobV9jYWlyb0RldmljZSkKKyAg
ICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CisKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRf
Q0FOVkFTKQorICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShzaGFy
ZWRFR0xEaXNwbGF5KCksIG1fY29udGV4dCk7CisjZW5kaWYKKworICAgIHJldHVybiBtX2NhaXJv
RGV2aWNlOworfQorCiAjaWYgRU5BQkxFKFdFQkdMKQogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBHTENvbnRleHRFR0w6OnBsYXRmb3JtQ29udGV4dCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXggYzVkNGJmNzU2
MTVjN2I3MjM4ZmExYWQyY2I5NmEyMjM5YTU1MjkyZi4uNzUxNmM2OWJkY2FhZjA3ODQ5NDY4NGI4
NzU3ZWI0ZDNiOGY2MWU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdhaXROYXRpdmUoKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9E
ZWZhdWx0RnJhbWVidWZmZXIoKTsKICAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVm
ZmVyU2l6ZSgpOwotCisgICAgdmlydHVhbCBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKTsK
IAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QgcGxhdGZvcm1Db250ZXh0KCk7CkBAIC01OSw2ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgRUdM
Q29udGV4dCBtX2NvbnRleHQ7CiAgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2U7CiAgICAgRUdMU3Vy
ZmFjZVR5cGUgbV90eXBlOworICAgIGNhaXJvX2RldmljZV90KiBtX2NhaXJvRGV2aWNlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAppbmRleCAzMWYzMmNmMGI4MDBjOTAw
ZTUzMThlZTUwNTk5NWUxYjM3Yzk3NjA2Li4xNzZmNzcyMmRjZDI1YzlkMmU5YjVhODVjNmJjMTFi
Zjc3NGI5MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
bHgvR0xDb250ZXh0R0xYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nbHgvR0xDb250ZXh0R0xYLmNwcApAQCAtMjMsOCArMjMsMTMgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjaW5jbHVkZSA8R0wv
Z2x4Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKKyNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2luY2x1ZGUgPGNhaXJvLWdsLmg+Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEdMQ29udGV4dEdMWD4g
R0xDb250ZXh0R0xYOjpjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCog
c2hhcmluZ0NvbnRleHQpCkBAIC0xNjgsNiArMTczLDcgQEAgR0xDb250ZXh0R0xYOjpHTENvbnRl
eHRHTFgoR0xYQ29udGV4dCBjb250ZXh0KQogICAgICwgbV9wYnVmZmVyKDApCiAgICAgLCBtX3Bp
eG1hcCgwKQogICAgICwgbV9nbHhQaXhtYXAoMCkKKyAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKIHsK
IH0KIApAQCAtMTc3LDExICsxODMsMTUgQEAgR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoR0xY
Q29udGV4dCBjb250ZXh0LCBQaXhtYXAgcGl4bWFwLCBHTFhQaXhtYXAgZ2x4UGl4bWEKICAgICAs
IG1fcGJ1ZmZlcigwKQogICAgICwgbV9waXhtYXAocGl4bWFwKQogICAgICwgbV9nbHhQaXhtYXAo
Z2x4UGl4bWFwKQorICAgICwgbV9jYWlyb0RldmljZSgwKQogewogfQogCiBHTENvbnRleHRHTFg6
On5HTENvbnRleHRHTFgoKQogeworICAgIGlmIChtX2NhaXJvRGV2aWNlKQorICAgICAgICBjYWly
b19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2aWNlKTsKKwogICAgIGlmIChtX2NvbnRleHQpIHsK
ICAgICAgICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRo
IE5WaWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBm
cm9tIE1vemlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNr
ZXQub3JnL2lsbWFyaS9jYW52YXMzZC8KQEAgLTI1MSw2ICsyNjEsMTggQEAgdm9pZCBHTENvbnRl
eHRHTFg6OndhaXROYXRpdmUoKQogICAgIGdsWFdhaXRYKCk7CiB9CiAKK2NhaXJvX2RldmljZV90
KiBHTENvbnRleHRHTFg6OmNhaXJvRGV2aWNlKCkKK3sKKyAgICBpZiAobV9jYWlyb0RldmljZSkK
KyAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CisKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKQorICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19nbHhfZGV2aWNlX2NyZWF0ZShz
aGFyZWRYMTFEaXNwbGF5KCksIG1fY29udGV4dCk7CisjZW5kaWYKKworICAgIHJldHVybiBtX2Nh
aXJvRGV2aWNlOworfQorCiAjaWYgVVNFKDNEX0dSQVBISUNTKQogUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCBHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKaW5kZXggODg4
MTQ2YjExZWYzNGU5NDkzYmI4ZDMxZmVlMjk4ZDgwZjA2YTY4Yy4uZWRlZmMwNGMyNjU1NmFhMjli
ZjY2ZGM0NWIyNDQwMDE3ODQ4NjQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdhaXROYXRpdmUoKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVu
ZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsKICAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZy
YW1lQnVmZmVyU2l6ZSgpOworICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNl
KCk7CiAKICNpZiBVU0UoM0RfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpOwpAQCAtNjMsNiArNjQsNyBAQCBwcml2YXRlOgog
ICAgIEdMWFBidWZmZXIgbV9wYnVmZmVyOwogICAgIFBpeG1hcCBtX3BpeG1hcDsKICAgICBHTFhQ
aXhtYXAgbV9nbHhQaXhtYXA7CisgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xz
L0ZpbmREZXBlbmRlbmNpZXMubTQgYi9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMu
bTQKaW5kZXggNzY2MDk4Mzk0ZTNjNzhhMzM5MzQ2MDUxYTUxOTRhMTQ5NzYwMzBiMy4uZTE1ZWE0
YzE5Zjk2ZmM5OGQ0MWVkNTYyMTZiZmI0ZDNjY2EwNDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL2F1
dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvRmluZERl
cGVuZGVuY2llcy5tNApAQCAtMjk4LDYgKzI5OCw3IEBAIGlmIHRlc3QgIiRlbmFibGVfYWNjZWxl
cmF0ZWRfY29tcG9zaXRpbmciID0gImF1dG8iOyB0aGVuCiAgICAgICAgIGVuYWJsZV9hY2NlbGVy
YXRlZF9jb21wb3NpdGluZz0ibm8iOwogICAgIGZpCiBmaQorCiBpZiB0ZXN0ICIkZW5hYmxlX2dh
bWVwYWQiID0gInllcyIgJiYgdGVzdCAiJG9zX2xpbnV4IiA9IG5vOyB0aGVuCiAgICAgQUNfTVNH
X1dBUk4oW0dhbWVwYWQgc3VwcG9ydCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBMaW51eC4gRGlzYWJs
aW5nIEdhbWVwYWQgc3VwcG9ydC5dKQogICAgIGVuYWJsZV9nYW1lcGFkPW5vOwpAQCAtNDY1LDYg
KzQ2NiwyMSBAQCBpZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZCIgPSAib3Blbmds
IjsgdGhlbgogZmkKIEFDX1NVQlNUKFtPUEVOR0xfTElCU10pCiAKK2VuYWJsZV9hY2NlbGVyYXRl
ZF9jYW52YXM9bm8KK2lmIHRlc3QgIiRlbmFibGVfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0g
InllcyIgJiYgdGVzdCAiJHdpdGhfYWNjZWxlcmF0aW9uX2JhY2tlbmQiID0gIm9wZW5nbCI7IHRo
ZW4KKyAgICBDQUlST19HTF9MSUJTPSJjYWlyby1nbCIKKyAgICBpZiB0ZXN0ICIkZW5hYmxlX2ds
eCIgPSAieWVzIjsgdGhlbgorICAgICAgICBDQUlST19HTF9MSUJTKz0iIGNhaXJvLWdseCIKKyAg
ICBmaQorICAgIGlmIHRlc3QgIiRlbmFibGVfZWdsIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIENB
SVJPX0dMX0xJQlMrPSIgY2Fpcm8tZWdsIgorICAgIGZpCisKKyAgICAjIEF0IHRoZSBtb21lbnQg
Q2Fpcm9HTCBkb2VzIG5vdCBhZGQgYW55IGV4dHJhIGNmbGFncyBhbmQgbGlicmFyaWVzLCBzbyB3
ZSBjYW4KKyAgICAjIHNhZmVseSBpZ25vcmUgQ0FJUk9fR0xfTElCUyBhbmQgQ0FJUk9fR0xfQ0ZM
QUdTIGZvciB0aGUgbW9tZW50LgorICAgIFBLR19DSEVDS19NT0RVTEVTKENBSVJPX0dMLCAkQ0FJ
Uk9fR0xfTElCUywgW2VuYWJsZV9hY2NlbGVyYXRlZF9jYW52YXM9eWVzXSwgW2VuYWJsZV9hY2Nl
bGVyYXRlZF9jYW52YXM9bm9dKQorZmkKKwogaWYgdGVzdCAiJGVuYWJsZV9nYW1lcGFkIiA9ICJ5
ZXMiOyB0aGVuCiAgICAgUEtHX0NIRUNLX01PRFVMRVMoW0dBTUVQQURdLCBbZ2lvLXVuaXgtMi4w
IGd1ZGV2LTEuMF0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvUHJpbnRCdWlsZENv
bmZpZ3VyYXRpb24ubTQgYi9Tb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9u
Lm00CmluZGV4IGJlOWM1MjBhMjNhMGI3ZGViY2YxYjg1ZmI3NzIwOGMwMTU1MjA0YjMuLjZhNjBh
NjUzMjRiZTI1MTAwZDYxYTJmMTdlNTRmOGNkYmQ3OWFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9h
dXRvdG9vbHMvUHJpbnRCdWlsZENvbmZpZ3VyYXRpb24ubTQKKysrIGIvU291cmNlL2F1dG90b29s
cy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNApAQCAtMTYsNiArMTYsNyBAQCBGZWF0dXJlczoK
ICBXZWJLaXQxIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICRlbmFibGVfd2Via2l0MQogIFdlYktpdDIgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV93ZWJraXQyCiAgQWNjZWxlcmF0ZWQgQ29t
cG9zaXRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2FjY2Vs
ZXJhdGVkX2NvbXBvc2l0aW5nCisgQWNjZWxlcmF0ZWQgMkQgY2FudmFzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2FjY2VsZXJhdGVkX2NhbnZhcwogIEdhbWVw
YWQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVu
YWJsZV9nYW1lcGFkCiAgR2VvbG9jYXRpb24gc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dlb2xvY2F0aW9uCiAgSFRNTDUgdmlkZW8gZWxlbWVu
dCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3ZpZGVvCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKaW5kZXggNjFlYmQwODgwM2QzZDI5
NmFhOWI4ZGQ3YTM4NzI2YTFjYzI5ODZmYS4uZjlkNTc1M2ZjZjhmYmNmNWMxYjMyYjM3ODAzZDdm
ZDIyMjBhZDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1
cmVzLm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApAQCAt
NzEsNiArNzEsMTIgQEAgZWxzZQogICAgIENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVM9IiRD
T05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIEVOQUJMRV8zRF9SRU5ERVJJTkc9MCIKIGZpCiAK
K2lmIHRlc3QgIiRlbmFibGVfYWNjZWxlcmF0ZWRfY2FudmFzIiA9ICJ5ZXMiOyB0aGVuCisgICAg
Q09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUz0iJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklO
RVMgRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUz0xIgorZWxzZQorICAgIENPTkZJR1VSQUJM
RV9GRUFUVVJFX0RFRklORVM9IiRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVM9MCIKK2ZpCisKIGlmIHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlv
IiA9ICJ5ZXMiOyB0aGVuCiAgICAgQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUz0iJENPTkZJ
R1VSQUJMRV9GRUFUVVJFX0RFRklORVMgRU5BQkxFX1dFQl9BVURJTz0xIgogZWxzZQpAQCAtODIs
NyArODgsNiBAQCBmaQogIyB0aGlzIGNvbW1hbmQgbm93IHJhdGhlciB0aGFuIHVzZSBBQ19DT05G
SUdfQ09NTUFORFMgYmVjYXVzZSBhdXRvbWFrZSBydWxlcyBkZXBlbmQKICMgb24gdGhlIG91dHB1
dCBmaWxlIChXZWJLaXRGZWF0dXJlcy50eHQpLgogJHNyY2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUt
ZmVhdHVyZS1kZWZpbmVzLWZpbGVzICRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIFwKLSAg
ICBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTPTAgXAogICAgIEVOQUJMRV9CQVRURVJZX1NU
QVRVUz0wIFwKICAgICBFTkFCTEVfQkxPQj0xIFwKICAgICBFTkFCTEVfQ0FOVkFTX1BBVEg9MCBc
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmJj
YTU1NzFjMDJlMjQ3YTExODNjZjk1YjQwNjE3ZTQ0ODU2ZTUzOS4uY2M3ZTYwNWYzNjEzYWQ0YjY2
MjAzMzQzZjIxNjlmNjg2Njc4ZWRhNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA0LTEwICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgYWNjZWxl
cmF0ZWQgMkQgY2FudmFzIHN1cHBvcnQgdXNpbmcgY2Fpcm8tZ2wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDY3MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSB2YWx1ZSBvZiBBQ0NFTEVS
QVRFRF8yRF9DQU5WQVMgcmVsaWVzIG9uIHNvbWUgc29tZXdoYXQgdW51c3VhbAorICAgICAgICBk
ZXBlbmRlbmNpZXMsIGRvbid0IG92ZXJyaWRlIHZhbHVlIG9mIHRoZSBzZXR0aW5nIGRldGVybWlu
ZWQgYnkgY29uZmlndXJlLgorICAgICAgICBUaGlzIHdpbGwgbWFrZSBpdCBlYXNpZXIgZm9yIHBl
b3BsZSB1c2luZyBidWlsZC13ZWJraXQsIGJ1dCBub3QgdGhlCisgICAgICAgIFdlYktpdCBKSEJ1
aWxkLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOgorICAgICAgICAoYnVpbGRB
dXRvdG9vbHNQcm9qZWN0KTogQWRkIGEgYmxhY2tsaXN0IGZvciBzZXR0aW5ncyB0byBuZXZlciBv
dmVycmlkZS4KKyAgICAgICAgKiBndGsvamhidWlsZC5tb2R1bGVzOiBCdWlsZCBDYWlyb0dMLgor
CiAyMDEzLTA0LTA5ICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CiAKICAgICAgICAg
W3dlYmtpdHB5XSBSZW1vdmUgY2hyb21pdW0gZGVwcmVjYXRlZCBwb3J0IHN1cHBvcnQuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtp
dGRpcnMucG0KaW5kZXggZGJhNmRkZGNjY2NjNmIzOTgyMzY2NjUyZmMwN2VlN2E4NWRiOWJmOC4u
YWY4ZWVkNjJjYTExZmY4MzIxMTE1MzU0NGI1OWU2NDg4M2FhYTg1YiAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5w
bQpAQCAtMjExOSwxMSArMjExOSwxOCBAQCBzdWIgYnVpbGRBdXRvdG9vbHNQcm9qZWN0KCRAKQog
ICAgICAgICAid2ViLWF1ZGlvIiA9PiAxLAogICAgICAgICAieHNsdCIgPT4gMSwKICAgICApOwor
CisgICAgIyBUaGVzZSBmZWF0dXJlcyBhcmUgb25lcyB3aGljaCBidWlsZC13ZWJraXQgY2Fubm90
IGNvbnRyb2wsIHR5cGljYWxseSBiZWNhdXNlCisgICAgIyB0aGV5IGNhbiBvbmx5IGJlIGFjdGl2
ZSB3aGVuIHdlIGhhdmUgdGhlIHByb3BlciBkZXBlbmRlbmNpZXMuCisgICAgbXkgJXVuc2V0RmVh
dHVyZXMgPSAoCisgICAgICAgICJhY2NlbGVyYXRlZC0yZC1jYW52YXMiID0+IDEsCisgICAgKTsK
KwogICAgIG15IEBvdmVycmlkYWJsZUZlYXR1cmVzID0gKCk7CiAgICAgZm9yZWFjaCAoQGZlYXR1
cmVzKSB7CiAgICAgICAgIGlmICgkY29uZmlndXJhYmxlRmVhdHVyZXN7JF8tPntvcHRpb259fSkg
ewogICAgICAgICAgICAgcHVzaCBAYnVpbGRBcmdzLCBhdXRvdG9vbHNGbGFnKCR7JF8tPnt2YWx1
ZX19LCAkXy0+e29wdGlvbn0pOzsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfSBlbHNpZiAo
ISR1bnNldEZlYXR1cmVzeyRfLT57b3B0aW9ufX0pIHsKICAgICAgICAgICAgIHB1c2ggQG92ZXJy
aWRhYmxlRmVhdHVyZXMsICRfLT57ZGVmaW5lfSAuICI9IiAuICgkeyRfLT57dmFsdWV9fSA/ICIx
IiA6ICIwIik7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWls
ZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCBiZDhkNGNjNTcyZmM0
Yjc4YjBlN2NkNGIzY2Q1ZjY1NjczZWI1ZWI4Li5jMGNhZDJjZmIwMWNjNjZkN2EwMjkwMWRiMzZi
MzFiYTBiMWJiNGFlIDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBi
L1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAgLTYxLDcgKzYxLDggQEAKICAgICA8L2JyYW5j
aD4KICAgPC9hdXRvdG9vbHM+CiAKLSAgPGF1dG90b29scyBpZD0iY2Fpcm8iIGF1dG9nZW4tc2g9
ImNvbmZpZ3VyZSI+CisgIDxhdXRvdG9vbHMgaWQ9ImNhaXJvIiBhdXRvZ2VuLXNoPSJjb25maWd1
cmUiCisgICAgICAgICAgICAgYXV0b2dlbmFyZ3M9Ii0tZW5hYmxlLWdsPXllcyAtLWVuYWJsZS1l
Z2w9eWVzIC0tZW5hYmxlLWdseD15ZXMiPgogICAgIDxkZXBlbmRlbmNpZXM+CiAgICAgICA8ZGVw
IHBhY2thZ2U9ImZvbnRjb25maWciLz4KICAgICAgIDxkZXAgcGFja2FnZT0icGl4bWFuIi8+CmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmIzNTgwNTFiZmRhNjAxYjcw
ZjY0YzkwZTczMTMxY2Q1NjAxMzc1OC4uOTI5ZTBhN2NjNjg0ODIxNmFiNmMwZGNlOTg1ZDdmNmE1
OGIxZWMxZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDEzLTA0LTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBZGQgYWNjZWxlcmF0ZWQgMkQgY2FudmFzIHN1cHBvcnQgdXNp
bmcgY2Fpcm8tZ2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNDY3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERldGVjdCB0aGF0IHdlIGNhbiBhY3RpdmF0ZSBhY2NlbGVyYXRlZCBjYW52YXMgd2hlbiBD
YWlyb0dMIGlzIHByZXNlbnQgYW5kCisgICAgICAgIFRleHR1cmVNYXBwZXJHTCBpcyBlbmFibGVk
LgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00OiBMb29r
IGZvciBDYWlyb0dMLgorICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvUHJpbnRCdWlsZENvbmZp
Z3VyYXRpb24ubTQ6IFByaW50IHRoZSBzdGF0dXMgb2YgYWNjZWxlcmF0ZWQgY2FudmFzIGFjdGl2
YXRpb24uCisgICAgICAgICogU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00
OiBTZXQgdGhlIGZlYXR1cmUuCisKIDIwMTMtMDQtMDkgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gRGVjbGFy
ZSBURVNUX1RIRU1FX0RJUiBpbiBhIHNpbmdsZSBwbGFjZS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197396</attachid>
            <date>2013-04-10 13:26:02 -0700</date>
            <delta_ts>2013-04-11 16:38:17 -0700</delta_ts>
            <desc>Patch rebased on master</desc>
            <filename>bug-104672-20130410132543.patch</filename>
            <type>text/plain</type>
            <size>27542</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI4ZTFkOTI2MmQ0NDFh
MjY5Y2I5ODZkOGJiYzgxNTYyMGFhYzk2ZS4uODRjMTU1NDFkZDE2MTk4NDZhMGJiNWUyOGMxMjVm
OTI0MGZiNGJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA0LTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQg
YWNjZWxlcmF0ZWQgMkQgY2FudmFzIHN1cHBvcnQgdXNpbmcgY2Fpcm8tZ2wKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDY3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gV2UgZG8g
bm90IHlldCBoYXZlIHRoZSBhYmlsaXR5IHRvIHJ1biB0ZXN0cyBhZ2FpbnN0CisgICAgICAgIGFj
Y2VsZXJhdGVkIGNvbnRlbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6IFdlIGRvbid0IHVzZSB0aGUgc3R1YiBp
bXBsZW1lbnRhdGlvbiBvZiBpc0FjY2VsZXJhdGVkQ29udGV4dCBhbnkgbG9uZ2VyLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OiBEaXR0byBmb3IgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0Lmg6CisgICAgICAgIChHTENvbnRleHQpOiBBZGRl
ZCBtZXRob2QgdG8gZ2V0IGEgY2Fpcm9fZGV2aWNlX3QgZnJvbSB0aGUgY29udGV4dC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0KTog
UmV0dXJuIHRydWUgd2hlbiB3ZSBhcmUgYSBDYWlyb0dMIHN1cmZhY2UuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YSk6IEluaXRpYWxpemUgdGhlIHNp
emUgYW5kIHRoZSB0ZXh0dXJlIHRvIDAuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWlyb0dM
U3VyZmFjZSk6IEFkZGVkIHRoaXMgaGVscGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OkltYWdlQnVmZmVyKTogV2hlbiB3ZSBhcmUgaW4gYWNjZWxlcmF0ZWQgcmVuZGVyaW5nIG1v
ZGUsIGNyZWF0ZQorICAgICAgICBhIENhaXJvR0wgc3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOiBEbyBub3QgaW1wbGVt
ZW50IHRoaXMgZm9yIGFjY2VsZXJhdGVkCisgICAgICAgIGNvbnRleHRzIHlldC4KKyAgICAgICAg
KFdlYkNvcmU6Om1hcFN1cmZhY2VUb0ltYWdlKTogQWRkZWQgdGhpcyBoZWxwZXIsIHNpbmNlIHdl
IGRvbid0IHJlcXVpcmUgQ2Fpcm8gMS4xMiB5ZXQsCisgICAgICAgIHdoaWNoIHByb3ZpZGVzIGFu
IGJ1aWx0aW4gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjp1bm1hcFN1cmZhY2VG
cm9tSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6IE1hcCB0
aGUgc3VyZmFjZSB0byBhbiBpbWFnZSBzdXJmYWNlIGZpcnN0LgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6IENvbm5lY3QgdGhlIGFjY2VsZXJh
dGVkIGNhbnZhcyBpbnRvIHRoZQorICAgICAgICBUZXh0dXJlTWFwcGVyIGluZnJhc3RydWN0dXJl
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIpOiBUaGlzIGxl
dHMgdGhlIFRleHR1cmVNYXBwZXIgYXQgdGhlIEltYWdlQnVmZmVyRGF0YS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oOgorICAgICAgICAo
SW1hZ2VCdWZmZXJEYXRhKTogU3ViY2xhc3MgVGV4dHVyTWFwcGVyUGxhdGZvcm1MYXllciB3aGVy
ZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcDogQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgY2Fpcm9EZXZpY2UuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcDogRGl0dG8KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmg6IERpdHRvLgorCiAyMDEzLTA0LTEw
ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBidWlsZGZpeCBhZnRlciByMTQ4MTIzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNzYyYzYwYmVkMTIwMzli
NWMzNjI3OGFiNTlmNTYxNjAwMmYxMWE1OC4uY2Y5NTY2MTFiMjM2ZmVjZTU3NGU5ZGE2YTk2YWY2
YzA5ZTczMzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCkKIH0KICNlbmRpZgogCi0j
aWYgIVVTRShTS0lBKSAmJiAhVVNFKENHKQorI2lmICFVU0UoU0tJQSkgJiYgIVVTRShDRykgJiYg
IVVTRShDQUlSTykKIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGJmZDU0N2FjNDIyYmQ0NmM4MjQ3ODAx
NGFkYzYyYmViODI0OTc2YjEuLjI1ZTczNjVmNDI3YjVkNzQ0OGMwNGFmY2ZkNjMxNjRmYjI3ZWI3
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y29udmVydFRvTHVtaW5h
bmNlTWFzaygpCiAgICAgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIH0KIAotI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgIVVTRShTS0lBKQorI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykgJiYgIVVTRShTS0lBKSAmJiAhVVNFKENBSVJPKQogUGxhdGZv
cm1MYXllciogSW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENv
bnRleHQuaAppbmRleCAxYTg4MDcyMjJmMjI5YWEzNjJiNzdkNjY2ODg3ZmI2YjE3Y2YzM2Q3Li4z
OGRmN2E2NjlhZDgwZDJhNWQ2ZWVlMWRjZjRiZDUwOWNlZGE1NDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuaApAQCAtMjUsNiAr
MjUsOCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19kZXZpY2UgY2Fpcm9fZGV2aWNlX3Q7
CisKICNpZiBQTEFURk9STShYMTEpCiB0eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkgRGlzcGxheTsK
ICNlbmRpZgpAQCAtNDYsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdhaXRO
YXRpdmUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKCkgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkg
PSAwOworICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCkgPSAwOwogCiAj
aWYgUExBVEZPUk0oWDExKQogICAgIHN0YXRpYyBEaXNwbGF5KiBzaGFyZWRYMTFEaXNwbGF5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggMDk5OThjOTFmM2I4Y2Y2ZTBiYzc0
Yjg4ZmM4MDYwODkzMDkyODdhYy4uYmY1M2JkZTdhMTcxZDJlNjA1Yjk0MWQwMTgxYWQ0NmQ5ZTI1
ZGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTE0Miw2ICsxMTQyLDEx
IEBAIEludGVycG9sYXRpb25RdWFsaXR5IEdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXRmb3JtQ29udGV4dCgpLT5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X3R5
cGUoY2Fpcm9fZ2V0X3RhcmdldChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkpID09IENBSVJPX1NV
UkZBQ0VfVFlQRV9HTDsKK30KKwogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpICYmIFVTRShURVhU
VVJFX01BUFBFUikKIFRyYW5zZm9ybWF0aW9uTWF0cml4IEdyYXBoaWNzQ29udGV4dDo6Z2V0M0RU
cmFuc2Zvcm0oKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA5YjQ2OWQwNzI5
NDFjYzNmMWY2MWExNzc3ZjQwNTg5NjRhZmQyNWZkLi41MWZiZjBmMDgyN2ZkMTE0Y2UzOTRlNTlj
ZjVkOTA4ZmJmNTdiZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNDQsMjIgKzQ0LDY4
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2luY2x1ZGUg
IkdMQ29udGV4dC5oIgorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlckdMLmgiCisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltYWdlQnVmZmVyRGF0YTo6SW1h
Z2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKQorSW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZl
ckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fcGxhdGZvcm1Db250ZXh0KDApCisg
ICAgLCBtX3NpemUoc2l6ZSkKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorICAg
ICwgbV90ZXh0dXJlKDApCisjZW5kaWYKIHsKIH0KIAotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVy
KGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IC8qIHJlc29sdXRpb25TY2FsZSAqLywgQ29sb3JT
cGFjZSwgUmVuZGVyaW5nTW9kZSwgYm9vbCYgc3VjY2VzcykKKyNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQorUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvR0xT
dXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90JiB0ZXh0dXJlKQoreworICAgIEdM
Q29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICAv
LyBXZSBtdXN0IGdlbmVyYXRlIHRoZSB0ZXh0dXJlIG91cnNlbHZlcywgYmVjYXVzZSB0aGVyZSBp
cyBubyBDYWlybyBBUEkgZm9yIGV4dHJhY3RpbmcgaXQKKyAgICAvLyBmcm9tIGEgcHJlLWV4aXN0
aW5nIHN1cmZhY2UuCisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7CisgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX0xJTkVBUik7CisKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElH
Tk1FTlQsIDEpOworCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAgLyogbGV2ZWwg
Ki8sIEdMX1JHQkE4LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAgLyogYm9yZGVyICov
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKworICAgIEdMQ29udGV4dCogY29udGV4
dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKTsKKyAgICBjYWlyb19kZXZpY2VfdCogZGV2
aWNlID0gY29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsKKworICAgIC8vIFRocmVhZC1hd2FyZW5lc3Mg
aXMgYSBodWdlIHBlcmZvcm1hbmNlIGhpdCBvbiBub24tSW50ZWwgZHJpdmVycy4KKyAgICBjYWly
b19nbF9kZXZpY2Vfc2V0X3RocmVhZF9hd2FyZShkZXZpY2UsIEZBTFNFKTsKKworICAgIHJldHVy
biBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZpY2UsIENB
SVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIHRleHR1cmUsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkpOworfQorI2VuZGlmCisKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRT
aXplJiBzaXplLCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fZGF0YShzaXpl
KQogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNpemUpCiB7CiAgICAg
c3VjY2VzcyA9IGZhbHNlOyAgLy8gTWFrZSBlYXJseSByZXR1cm4gbWVhbiBlcnJvci4KLSAgICBt
X2RhdGEubV9zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJ
Uk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisKKyNpZiBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorICAgIGlmIChyZW5kZXJpbmdNb2RlID09IEFj
Y2VsZXJhdGVkKQorICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gY3JlYXRlQ2Fpcm9HTFN1cmZh
Y2Uoc2l6ZSwgbV9kYXRhLm1fdGV4dHVyZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIG1f
ZGF0YS5tX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlS
T19GT1JNQVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKwogICAgIGlm
IChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX2RhdGEubV9zdXJmYWNlLmdldCgpKSAhPSBDQUlST19T
VEFUVVNfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuOyAgLy8gY3JlYXRlIHdpbGwgbm90aWNlIHdl
IGRpZG4ndCBzZXQgbV9pbml0aWFsaXplZCBhbmQgZmFpbC4KIApAQCAtMTE0LDcgKzE2MCw5IEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJh
bnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiB7Ci0gICAg
QVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkgPT0g
Q0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKKyAgICAvLyBGSVhNRTogRW5hYmxlIGNvbG9yIHNw
YWNlIGNvbnZlcnNpb25zIG9uIGFjY2VsZXJhdGVkIGNhbnZhc2VzLgorICAgIGlmIChjYWlyb19z
dXJmYWNlX2dldF90eXBlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0Vf
VFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgY2hhciogZGF0YVNy
YyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSk7
CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX2RhdGEu
bV9zdXJmYWNlLmdldCgpKTsKQEAgLTEzMywxMyArMTgxLDQ2IEBAIHZvaWQgSW1hZ2VCdWZmZXI6
OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFi
bGUpCiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShtX2RhdGEubV9zdXJm
YWNlLmdldCgpLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKIH0KIAor
c3RhdGljIGNhaXJvX3N1cmZhY2VfdCogbWFwU3VyZmFjZVRvSW1hZ2UoY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChjYWlyb19zdXJmYWNl
X2dldF90eXBlKHN1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAg
cmV0dXJuIHN1cmZhY2U7CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3VyZmFjZSA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fp
cm9fY3JlYXRlKGltYWdlU3VyZmFjZSkpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShj
ci5nZXQoKSwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOworICAg
IHJldHVybiBpbWFnZVN1cmZhY2U7Cit9CisKK3N0YXRpYyB2b2lkIHVubWFwU3VyZmFjZUZyb21J
bWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJm
YWNlLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3RhbmdsZSA9IEludFJlY3QoKSkKK3sKKyAgICBp
ZiAoc3VyZmFjZSA9PSBpbWFnZVN1cmZhY2UgJiYgZGlydHlSZWN0YW5nbGUuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZGlydHlSZWN0YW5nbGUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShpbWFnZVN1cmZhY2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKHN1cmZhY2UgPT0gaW1hZ2VTdXJmYWNlKSB7CisgICAgICAg
IGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUoc3VyZmFjZSwgZGlydHlSZWN0YW5n
bGUueCgpLCBkaXJ0eVJlY3RhbmdsZS55KCksIGRpcnR5UmVjdGFuZ2xlLndpZHRoKCksIGRpcnR5
UmVjdGFuZ2xlLmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0
cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlKSk7CisgICAgY2Fp
cm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBpbWFnZVN1cmZhY2UsIDAsIDApOworICAg
IGNhaXJvX3JlY3RhbmdsZShjci5nZXQoKSwgZGlydHlSZWN0YW5nbGUueCgpLCBkaXJ0eVJlY3Rh
bmdsZS55KCksIGRpcnR5UmVjdGFuZ2xlLndpZHRoKCksIGRpcnR5UmVjdGFuZ2xlLmhlaWdodCgp
KTsKKyAgICBjYWlyb19maWxsKGNyLmdldCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3ko
aW1hZ2VTdXJmYWNlKTsKK30KKwogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+CiBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewot
ICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKGRhdGEubV9zdXJmYWNlLmdldCgpKSA9
PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwotCiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0
LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YVNy
YyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZGF0YS5tX3N1cmZhY2UuZ2V0KCkpOwor
ICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlID0gbWFwU3VyZmFjZVRvSW1hZ2UoZGF0
YS5tX3N1cmZhY2UuZ2V0KCksIHNpemUpOworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZSk7CiAgICAgdW5zaWduZWQg
Y2hhciogZGF0YURzdCA9IHJlc3VsdC0+ZGF0YSgpOwogCiAgICAgaWYgKHJlY3QueCgpIDwgMCB8
fCByZWN0LnkoKSA8IDAgfHwgKHJlY3QueCgpICsgcmVjdC53aWR0aCgpKSA+IHNpemUud2lkdGgo
KSB8fCAocmVjdC55KCkgKyByZWN0LmhlaWdodCgpKSA+IHNpemUuaGVpZ2h0KCkpCkBAIC0xNjcs
NyArMjQ4LDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmUKICAgICAgICAgZW5keSA9IHNpemUu
aGVpZ2h0KCk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gb3JpZ2lueTsKIAotICAgIGludCBz
dHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoZGF0YS5tX3N1cmZhY2UuZ2V0
KCkpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1h
Z2VTdXJmYWNlKTsKICAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogcmVjdC53aWR0
aCgpOwogCiAgICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBkYXRhRHN0ICsgZGVzdHkgKiBk
ZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7CkBAIC0yMDAsNiArMjgxLDcgQEAgUGFzc1JlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEltYWdlQnVmZmUKICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OwogICAg
IH0KIAorICAgIHVubWFwU3VyZmFjZUZyb21JbWFnZShkYXRhLm1fc3VyZmFjZS5nZXQoKSwgaW1h
Z2VTdXJmYWNlKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIApAQCAtMjE1LDkg
KzI5Nyw4IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQ
cmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1
dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNl
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQogewotICAgIEFTU0VS
VChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpID09IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSk7Ci0KLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2RhdGEubV9zdXJmYWNlLmdldCgpKTsKKyAgICBj
YWlyb19zdXJmYWNlX3QqIGltYWdlU3VyZmFjZSA9IG1hcFN1cmZhY2VUb0ltYWdlKG1fZGF0YS5t
X3N1cmZhY2UuZ2V0KCksIHNvdXJjZVNpemUpOworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3Qg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZSk7CiAKICAgICBBU1NF
UlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0
KCkgPiAwKTsKQEAgLTI0Niw3ICszMjcsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJy
YXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAg
IGludCBudW1Sb3dzID0gZW5keSAtIGRlc3R5OwogCiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJS
b3cgPSA0ICogc291cmNlU2l6ZS53aWR0aCgpOwotICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9zdHJpZGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSk7CisgICAgaW50IHN0
cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFnZVN1cmZhY2UpOwogCiAg
ICAgdW5zaWduZWQgY2hhciogc3JjUm93cyA9IHNvdXJjZS0+ZGF0YSgpICsgb3JpZ2lueSAqIHNy
Y0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1S
b3dzOyArK3kpIHsKQEAgLTI3NCw3ICszNTUsOCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRl
QXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwog
ICAgICAgICB9CiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgfQotICAg
IGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZS5nZXQo
KSwgZGVzdHgsIGRlc3R5LCBudW1Db2x1bW5zLCBudW1Sb3dzKTsKKworICAgIHVubWFwU3VyZmFj
ZUZyb21JbWFnZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVN1cmZhY2UsIEludFJlY3Qo
ZGVzdHgsIGRlc3R5LCBudW1Db2x1bW5zLCBudW1Sb3dzKSk7CiB9CiAKICNpZiAhUExBVEZPUk0o
R1RLKQpAQCAtMzA5LDQgKzM5MSwzMiBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqLCBDb29yZGluYXRlUwogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQordm9pZCBJbWFnZUJ1ZmZl
ckRhdGE6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAodGV4dHVyZU1hcHBlci0+YWNjZWxl
cmF0aW9uTW9kZSgpICE9IFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpIHsKKyAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX3Rl
eHR1cmUpOworCisgICAgLy8gQ2Fpcm8gbWF5IGNoYW5nZSB0aGUgYWN0aXZlIGNvbnRleHQsIHNv
IHdlIG1ha2Ugc3VyZSB0byBjaGFuZ2UgaXQgYmFjayBhZnRlciBmbHVzaGluZy4KKyAgICBHTENv
bnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpOwor
ICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKKyAgICBwcmV2aW91c0Fj
dGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fdGV4dHVyZSwgVGV4
dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgbV9zaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9w
YWNpdHkpOworfQorI2VuZGlmCisKK1BsYXRmb3JtTGF5ZXIqIEltYWdlQnVmZmVyOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorICAg
IGlmIChtX2RhdGEubV90ZXh0dXJlKQorICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxJbWFnZUJ1
ZmZlckRhdGEqPigmbV9kYXRhKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaAppbmRleCBjOWZhZjhkYTYx
Y2RjOGU0OWJhODk1ODMzN2YzZTcyMmQzZTQ3NmZjLi43MmVhNGMzNGY1ZTdiMTA0NWZlNmI2ZGE3
OGEwMWEwNzY1ODQwZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgKQEAgLTI2LDE2ICsy
NiwzMSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiUmVm
UHRyQ2Fpcm8uaCIKIAorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwogCi1j
bGFzcyBJbWFnZUJ1ZmZlckRhdGEgeworY2xhc3MgSW1hZ2VCdWZmZXJEYXRhCisjaWYgRU5BQkxF
KEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IElu
dFNpemUmKTsKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKICAgICBQ
bGF0Zm9ybUNvbnRleHRDYWlybyBtX3BsYXRmb3JtQ29udGV4dDsKKyAgICBJbnRTaXplIG1fc2l6
ZTsKKworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKKyAgICB1
aW50MzJfdCBtX3RleHR1cmU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTC5jcHAKaW5kZXggYjkzODliNDgzZjkzY2MyNGVkNDUyYWNiZWZmYzBkYTJjNmQ4MGJiMC4u
OGE5YjU5ZGU2ZWYzMDBmM2FjNmFlZmFlOGI0NzlmMzExMzk1ZTNkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAg
LTIyLDYgKzIyLDcgQEAKICNpZiBVU0UoRUdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKKyNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogI2lm
IFVTRShPUEVOR0xfRVNfMikKQEAgLTMxLDYgKzMyLDEwIEBACiAjaW5jbHVkZSAiT3BlbkdMU2hp
bXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpbmNs
dWRlIDxjYWlyby1nbC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IEVHTERpc3BsYXkgZ1NoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKQEAgLTIwOCwx
MSArMjEzLDE1IEBAIEdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4
dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwCiAgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogICAgICwgbV90eXBlKHR5cGUpCisgICAg
LCBtX2NhaXJvRGV2aWNlKDApCiB7CiB9CiAKIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgp
CiB7CisgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCisgICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95
KG1fY2Fpcm9EZXZpY2UpOworCiAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlz
cGxheSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIDApOwpAQCAtMjY0LDYgKzI3MywxOCBAQCB2b2lkIEdMQ29udGV4dEVH
TDo6d2FpdE5hdGl2ZSgpCiAgICAgZWdsV2FpdE5hdGl2ZShFR0xfQ09SRV9OQVRJVkVfRU5HSU5F
KTsKIH0KIAorY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UoKQorewor
ICAgIGlmIChtX2NhaXJvRGV2aWNlKQorICAgICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKKwor
I2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgbV9jYWlyb0RldmljZSA9IGNh
aXJvX2VnbF9kZXZpY2VfY3JlYXRlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9jb250ZXh0KTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7Cit9CisKICNpZiBFTkFCTEUoV0VCR0wp
CiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVHTDo6cGxhdGZvcm1Db250ZXh0
KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaAppbmRleCBjNWQ0YmY3NTYxNWM3YjcyMzhmYTFhZDJjYjk2YTIyMzlhNTUyOTJm
Li43NTE2YzY5YmRjYWFmMDc4NDk0Njg0Yjg3NTdlYjRkM2I4ZjYxZTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC00
MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOwogICAg
IHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOwogICAgIHZpcnR1
YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7Ci0KKyAgICB2aXJ0dWFsIGNhaXJv
X2RldmljZV90KiBjYWlyb0RldmljZSgpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1
YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTU5LDYg
KzU5LDcgQEAgcHJpdmF0ZToKICAgICBFR0xDb250ZXh0IG1fY29udGV4dDsKICAgICBFR0xTdXJm
YWNlIG1fc3VyZmFjZTsKICAgICBFR0xTdXJmYWNlVHlwZSBtX3R5cGU7CisgICAgY2Fpcm9fZGV2
aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFgu
Y3BwCmluZGV4IDMxZjMyY2YwYjgwMGM5MDBlNTMxOGVlNTA1OTk1ZTFiMzdjOTc2MDYuLjE3NmY3
NzIyZGNkMjVjOWQyZTliNWE4NWM2YmMxMWJmNzc0YjkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCkBAIC0yMyw4
ICsyMywxMyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiT3Bl
bkdMU2hpbXMuaCIKICNpbmNsdWRlIDxHTC9nbHguaD4KKyNpbmNsdWRlIDxjYWlyby5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBhc3NPd25QdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRl
eHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE2OCw2ICsxNzMs
NyBAQCBHTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChHTFhDb250ZXh0IGNvbnRleHQpCiAgICAg
LCBtX3BidWZmZXIoMCkKICAgICAsIG1fcGl4bWFwKDApCiAgICAgLCBtX2dseFBpeG1hcCgwKQor
ICAgICwgbV9jYWlyb0RldmljZSgwKQogewogfQogCkBAIC0xNzcsMTEgKzE4MywxNSBAQCBHTENv
bnRleHRHTFg6OkdMQ29udGV4dEdMWChHTFhDb250ZXh0IGNvbnRleHQsIFBpeG1hcCBwaXhtYXAs
IEdMWFBpeG1hcCBnbHhQaXhtYQogICAgICwgbV9wYnVmZmVyKDApCiAgICAgLCBtX3BpeG1hcChw
aXhtYXApCiAgICAgLCBtX2dseFBpeG1hcChnbHhQaXhtYXApCisgICAgLCBtX2NhaXJvRGV2aWNl
KDApCiB7CiB9CiAKIEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiB7CisgICAgaWYgKG1f
Y2Fpcm9EZXZpY2UpCisgICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2Up
OworCiAgICAgaWYgKG1fY29udGV4dCkgewogICAgICAgICAvLyBUaGlzIG1heSBiZSBuZWNlc3Nh
cnkgdG8gcHJldmVudCBjcmFzaGVzIHdpdGggTlZpZGlhJ3MgY2xvc2VkIHNvdXJjZSBkcml2ZXJz
LiBPcmlnaW5hbGx5CiAgICAgICAgIC8vIGZyb20gTW96aWxsYSdzIDNEIGNhbnZhcyBpbXBsZW1l
bnRhdGlvbiBhdDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaWxtYXJpL2NhbnZhczNkLwpAQCAtMjUx
LDYgKzI2MSwxOCBAQCB2b2lkIEdMQ29udGV4dEdMWDo6d2FpdE5hdGl2ZSgpCiAgICAgZ2xYV2Fp
dFgoKTsKIH0KIAorY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEdMWDo6Y2Fpcm9EZXZpY2UoKQor
eworICAgIGlmIChtX2NhaXJvRGV2aWNlKQorICAgICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsK
KworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgbV9jYWlyb0RldmljZSA9
IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKHNoYXJlZFgxMURpc3BsYXkoKSwgbV9jb250ZXh0KTsK
KyNlbmRpZgorCisgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7Cit9CisKICNpZiBVU0UoM0RfR1JB
UEhJQ1MpCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1D
b250ZXh0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguaAppbmRleCA4ODgxNDZiMTFlZjM0ZTk0OTNiYjhkMzFmZWUyOThkODBm
MDZhNjhjLi5lZGVmYzA0YzI2NTU2YWEyOWJmNjZkYzQ1YjI0NDAwMTc4NDg2NDljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5o
CkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgp
OwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOwogICAg
IHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7CisgICAgdmlydHVhbCBj
YWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKTsKIAogI2lmIFVTRSgzRF9HUkFQSElDUykKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CkBA
IC02Myw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgR0xYUGJ1ZmZlciBtX3BidWZmZXI7CiAgICAg
UGl4bWFwIG1fcGl4bWFwOwogICAgIEdMWFBpeG1hcCBtX2dseFBpeG1hcDsKKyAgICBjYWlyb19k
ZXZpY2VfdCogbV9jYWlyb0RldmljZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNCBiL1NvdXJjZS9h
dXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNAppbmRleCA3NjYwOTgzOTRlM2M3OGEzMzkzNDYw
NTFhNTE5NGExNDk3NjAzMGIzLi5lMTVlYTRjMTlmOTZmYzk4ZDQxZWQ1NjIxNmJmYjRkM2NjYTA0
N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQKKysr
IGIvU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CkBAIC0yOTgsNiArMjk4LDcg
QEAgaWYgdGVzdCAiJGVuYWJsZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAiYXV0byI7IHRo
ZW4KICAgICAgICAgZW5hYmxlX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nPSJubyI7CiAgICAgZmkK
IGZpCisKIGlmIHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAieWVzIiAmJiB0ZXN0ICIkb3NfbGlu
dXgiID0gbm87IHRoZW4KICAgICBBQ19NU0dfV0FSTihbR2FtZXBhZCBzdXBwb3J0IGlzIG9ubHkg
YXZhaWxhYmxlIG9uIExpbnV4LiBEaXNhYmxpbmcgR2FtZXBhZCBzdXBwb3J0Ll0pCiAgICAgZW5h
YmxlX2dhbWVwYWQ9bm87CkBAIC00NjUsNiArNDY2LDIxIEBAIGlmIHRlc3QgIiR3aXRoX2FjY2Vs
ZXJhdGlvbl9iYWNrZW5kIiA9ICJvcGVuZ2wiOyB0aGVuCiBmaQogQUNfU1VCU1QoW09QRU5HTF9M
SUJTXSkKIAorZW5hYmxlX2FjY2VsZXJhdGVkX2NhbnZhcz1ubworaWYgdGVzdCAiJGVuYWJsZV9h
Y2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAieWVzIiAmJiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRp
b25fYmFja2VuZCIgPSAib3BlbmdsIjsgdGhlbgorICAgIENBSVJPX0dMX0xJQlM9ImNhaXJvLWds
IgorICAgIGlmIHRlc3QgIiRlbmFibGVfZ2x4IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIENBSVJP
X0dMX0xJQlMrPSIgY2Fpcm8tZ2x4IgorICAgIGZpCisgICAgaWYgdGVzdCAiJGVuYWJsZV9lZ2wi
ID0gInllcyI7IHRoZW4KKyAgICAgICAgQ0FJUk9fR0xfTElCUys9IiBjYWlyby1lZ2wiCisgICAg
ZmkKKworICAgICMgQXQgdGhlIG1vbWVudCBDYWlyb0dMIGRvZXMgbm90IGFkZCBhbnkgZXh0cmEg
Y2ZsYWdzIGFuZCBsaWJyYXJpZXMsIHNvIHdlIGNhbgorICAgICMgc2FmZWx5IGlnbm9yZSBDQUlS
T19HTF9MSUJTIGFuZCBDQUlST19HTF9DRkxBR1MgZm9yIHRoZSBtb21lbnQuCisgICAgUEtHX0NI
RUNLX01PRFVMRVMoQ0FJUk9fR0wsICRDQUlST19HTF9MSUJTLCBbZW5hYmxlX2FjY2VsZXJhdGVk
X2NhbnZhcz15ZXNdLCBbZW5hYmxlX2FjY2VsZXJhdGVkX2NhbnZhcz1ub10pCitmaQorCiBpZiB0
ZXN0ICIkZW5hYmxlX2dhbWVwYWQiID0gInllcyI7IHRoZW4KICAgICBQS0dfQ0hFQ0tfTU9EVUxF
UyhbR0FNRVBBRF0sIFtnaW8tdW5peC0yLjAgZ3VkZXYtMS4wXSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL2F1dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNCBiL1NvdXJjZS9hdXRvdG9v
bHMvUHJpbnRCdWlsZENvbmZpZ3VyYXRpb24ubTQKaW5kZXggYmU5YzUyMGEyM2EwYjdkZWJjZjFi
ODVmYjc3MjA4YzAxNTUyMDRiMy4uNmE2MGE2NTMyNGJlMjUxMDBkNjFhMmYxN2U1NGY4Y2RiZDc5
YWIzMSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlv
bi5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00CkBA
IC0xNiw2ICsxNiw3IEBAIEZlYXR1cmVzOgogIFdlYktpdDEgc3VwcG9ydCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV93ZWJraXQxCiAgV2ViS2l0MiBz
dXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxl
X3dlYmtpdDIKICBBY2NlbGVyYXRlZCBDb21wb3NpdGluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICRlbmFibGVfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcKKyBBY2NlbGVyYXRl
ZCAyRCBjYW52YXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVf
YWNjZWxlcmF0ZWRfY2FudmFzCiAgR2FtZXBhZCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dhbWVwYWQKICBHZW9sb2NhdGlvbiBzdXBw
b3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZ2VvbG9j
YXRpb24KICBIVE1MNSB2aWRlbyBlbGVtZW50IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICRlbmFibGVfdmlkZW8KZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0
dXBXZWJLaXRGZWF0dXJlcy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJl
cy5tNAppbmRleCBiMDY4YjMxN2QxMWQwMGRkNGQ1M2M1YmExYWZkOTNmOWRhYWNjZWYxLi5iNWZh
OTIyNzQyYzA3OWYyMzkyYzE4NTc1YjRlMDIwNDY3ZGMwZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
YXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysrIGIvU291cmNlL2F1dG90b29scy9T
ZXR1cFdlYktpdEZlYXR1cmVzLm00CkBAIC03MSw2ICs3MSwxMiBAQCBlbHNlCiAgICAgQ09ORklH
VVJBQkxFX0ZFQVRVUkVfREVGSU5FUz0iJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgRU5B
QkxFXzNEX1JFTkRFUklORz0wIgogZmkKIAoraWYgdGVzdCAiJGVuYWJsZV9hY2NlbGVyYXRlZF9j
YW52YXMiID0gInllcyI7IHRoZW4KKyAgICBDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTPSIk
Q09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFT
PTEiCitlbHNlCisgICAgQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUz0iJENPTkZJR1VSQUJM
RV9GRUFUVVJFX0RFRklORVMgRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUz0wIgorZmkKKwog
aWYgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgICBDT05GSUdVUkFC
TEVfRkVBVFVSRV9ERUZJTkVTPSIkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBFTkFCTEVf
V0VCX0FVRElPPTEiCiBlbHNlCkBAIC04Miw3ICs4OCw2IEBAIGZpCiAjIHRoaXMgY29tbWFuZCBu
b3cgcmF0aGVyIHRoYW4gdXNlIEFDX0NPTkZJR19DT01NQU5EUyBiZWNhdXNlIGF1dG9tYWtlIHJ1
bGVzIGRlcGVuZAogIyBvbiB0aGUgb3V0cHV0IGZpbGUgKFdlYktpdEZlYXR1cmVzLnR4dCkuCiAk
c3JjZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0dXJlLWRlZmluZXMtZmlsZXMgJENPTkZJR1VS
QUJMRV9GRUFUVVJFX0RFRklORVMgXAotICAgIEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVM9
MCBcCiAgICAgRU5BQkxFX0JBVFRFUllfU1RBVFVTPTAgXAogICAgIEVOQUJMRV9CTE9CPTEgXAog
ICAgIEVOQUJMRV9DQU5WQVNfUEFUSD0wIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNzhlNGZhM2FmODIxOTk2NWI4NDU3YWI3NDg5MjM2NGY5
MDQ5NDhlLi44NzU5NWZmN2UzOTNhODM4Y2I0ZDc1NWU2NzE1ZTZkMmYyNzljNDdlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTMtMDQtMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhY2NlbGVyYXRlZCAyRCBjYW52YXMgc3VwcG9ydCB1c2luZyBj
YWlyby1nbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2luY2UgdGhlIHZhbHVlIG9mIEFDQ0VMRVJBVEVEXzJEX0NBTlZBUyByZWxpZXMgb24gc29tZSBz
b21ld2hhdCB1bnVzdWFsCisgICAgICAgIGRlcGVuZGVuY2llcywgZG9uJ3Qgb3ZlcnJpZGUgdmFs
dWUgb2YgdGhlIHNldHRpbmcgZGV0ZXJtaW5lZCBieSBjb25maWd1cmUuCisgICAgICAgIFRoaXMg
d2lsbCBtYWtlIGl0IGVhc2llciBmb3IgcGVvcGxlIHVzaW5nIGJ1aWxkLXdlYmtpdCwgYnV0IG5v
dCB0aGUKKyAgICAgICAgV2ViS2l0IEpIQnVpbGQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dGRpcnMucG06CisgICAgICAgIChidWlsZEF1dG90b29sc1Byb2plY3QpOiBBZGQgYSBibGFja2xp
c3QgZm9yIHNldHRpbmdzIHRvIG5ldmVyIG92ZXJyaWRlLgorICAgICAgICAqIGd0ay9qaGJ1aWxk
Lm1vZHVsZXM6IEJ1aWxkIENhaXJvR0wuCisKIDIwMTMtMDQtMTAgIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiB0ZXN0LXJl
c3VsdHMuYXBwc3BvdC5jb20gdG8gd2Via2l0LXRlc3QtcmVzdWx0cy5hcHBzcG90LmNvbQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRkaXJzLnBtCmluZGV4IGRiYTZkZGRjY2NjYzZiMzk4MjM2NjY1MmZjMDdlZTdhODVkYjliZjgu
LmFmOGVlZDYyY2ExMWZmODMyMTExNTM1NDRiNTllNjQ4ODNhYWE4NWIgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMu
cG0KQEAgLTIxMTksMTEgKzIxMTksMTggQEAgc3ViIGJ1aWxkQXV0b3Rvb2xzUHJvamVjdCgkQCkK
ICAgICAgICAgIndlYi1hdWRpbyIgPT4gMSwKICAgICAgICAgInhzbHQiID0+IDEsCiAgICAgKTsK
KworICAgICMgVGhlc2UgZmVhdHVyZXMgYXJlIG9uZXMgd2hpY2ggYnVpbGQtd2Via2l0IGNhbm5v
dCBjb250cm9sLCB0eXBpY2FsbHkgYmVjYXVzZQorICAgICMgdGhleSBjYW4gb25seSBiZSBhY3Rp
dmUgd2hlbiB3ZSBoYXZlIHRoZSBwcm9wZXIgZGVwZW5kZW5jaWVzLgorICAgIG15ICV1bnNldEZl
YXR1cmVzID0gKAorICAgICAgICAiYWNjZWxlcmF0ZWQtMmQtY2FudmFzIiA9PiAxLAorICAgICk7
CisKICAgICBteSBAb3ZlcnJpZGFibGVGZWF0dXJlcyA9ICgpOwogICAgIGZvcmVhY2ggKEBmZWF0
dXJlcykgewogICAgICAgICBpZiAoJGNvbmZpZ3VyYWJsZUZlYXR1cmVzeyRfLT57b3B0aW9ufX0p
IHsKICAgICAgICAgICAgIHB1c2ggQGJ1aWxkQXJncywgYXV0b3Rvb2xzRmxhZygkeyRfLT57dmFs
dWV9fSwgJF8tPntvcHRpb259KTs7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzaWYg
KCEkdW5zZXRGZWF0dXJlc3skXy0+e29wdGlvbn19KSB7CiAgICAgICAgICAgICBwdXNoIEBvdmVy
cmlkYWJsZUZlYXR1cmVzLCAkXy0+e2RlZmluZX0gLiAiPSIgLiAoJHskXy0+e3ZhbHVlfX0gPyAi
MSIgOiAiMCIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2poYnVp
bGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggNDk2ZTA4ODE0ZWI3
MzQzNDE0MzVkNTE3NWQ3NWI2ZTVmYzhkMWNhYS4uNDhjODdhM2MwMWZkYWNlNGUwY2U3ZmRlNDc4
NThjZmRlMTU1YzE5MCAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcworKysg
Yi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBAIC02MSw3ICs2MSw4IEBACiAgICAgPC9icmFu
Y2g+CiAgIDwvYXV0b3Rvb2xzPgogCi0gIDxhdXRvdG9vbHMgaWQ9ImNhaXJvIiBhdXRvZ2VuLXNo
PSJjb25maWd1cmUiPgorICA8YXV0b3Rvb2xzIGlkPSJjYWlybyIgYXV0b2dlbi1zaD0iY29uZmln
dXJlIgorICAgICAgICAgICAgIGF1dG9nZW5hcmdzPSItLWVuYWJsZS1nbD15ZXMgLS1lbmFibGUt
ZWdsPXllcyAtLWVuYWJsZS1nbHg9eWVzIj4KICAgICA8ZGVwZW5kZW5jaWVzPgogICAgICAgPGRl
cCBwYWNrYWdlPSJmb250Y29uZmlnIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9InBpeG1hbiIvPgpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDNiYTdjNzFlZmRlNTY4Mjkz
ZDllNmVkMjZkMDU4ZGRhMWY3MmUzMDkuLjMwOTJlZjQ5NjlkYTlkOWI5NWIxZjdjYzg1MTM2ODA2
MjY4NGQxYjMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMy0wNC0xMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS10gQWRkIGFjY2VsZXJhdGVkIDJEIGNhbnZhcyBzdXBwb3J0IHVz
aW5nIGNhaXJvLWdsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDQ2NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZXRlY3QgdGhhdCB3ZSBjYW4gYWN0aXZhdGUgYWNjZWxlcmF0ZWQgY2FudmFzIHdoZW4g
Q2Fpcm9HTCBpcyBwcmVzZW50IGFuZAorICAgICAgICBUZXh0dXJlTWFwcGVyR0wgaXMgZW5hYmxl
ZC4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNDogTG9v
ayBmb3IgQ2Fpcm9HTC4KKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25m
aWd1cmF0aW9uLm00OiBQcmludCB0aGUgc3RhdHVzIG9mIGFjY2VsZXJhdGVkIGNhbnZhcyBhY3Rp
dmF0aW9uLgorICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5t
NDogU2V0IHRoZSBmZWF0dXJlLgorCiAyMDEzLTA0LTEwICBBbnRvbiBPYnpoaXJvdiAgPGEub2J6
aGlyb3ZAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIFBhZ2Ug
VmlzaWJpbGl0eQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>