<?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>65402</bug_id>
          
          <creation_ts>2011-07-29 17:10:55 -0700</creation_ts>
          <short_desc>[chromium] Accelerated canvas breaks when moving canvases or resources between Pages</short_desc>
          <delta_ts>2011-08-24 11:35:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>apatrick</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tomhudson</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>444184</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-29 17:10:55 -0700</bug_when>
    <thetext>[chromium] Accelerated canvas breaks when moving canvases or resources between Pages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444185</commentid>
    <comment_count>1</comment_count>
      <attachid>102411</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-29 17:13:07 -0700</bug_when>
    <thetext>Created attachment 102411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444187</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-29 17:14:29 -0700</bug_when>
    <thetext>This depends on http://codereview.chromium.org/7488069/, which hasn&apos;t landed yet, so the EWS bots will be grumpy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444192</commentid>
    <comment_count>3</comment_count>
      <attachid>102411</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-29 17:20:29 -0700</bug_when>
    <thetext>Comment on attachment 102411
Patch

Attachment 102411 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9269559</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444193</commentid>
    <comment_count>4</comment_count>
      <attachid>102411</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 17:22:04 -0700</bug_when>
    <thetext>Comment on attachment 102411
Patch

Attachment 102411 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9268565</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444194</commentid>
    <comment_count>5</comment_count>
      <attachid>102411</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-07-29 17:23:17 -0700</bug_when>
    <thetext>Comment on attachment 102411
Patch

Attachment 102411 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9266639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444203</commentid>
    <comment_count>6</comment_count>
      <attachid>102411</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 17:49:48 -0700</bug_when>
    <thetext>Comment on attachment 102411
Patch

Attachment 102411 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9267608</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444213</commentid>
    <comment_count>7</comment_count>
      <attachid>102411</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 18:14:55 -0700</bug_when>
    <thetext>Comment on attachment 102411
Patch

Attachment 102411 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9269566</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444220</commentid>
    <comment_count>8</comment_count>
      <attachid>102411</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 18:34:00 -0700</bug_when>
    <thetext>Comment on attachment 102411
Patch

Attachment 102411 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9268585</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444969</commentid>
    <comment_count>9</comment_count>
      <attachid>102587</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-01 16:11:13 -0700</bug_when>
    <thetext>Created attachment 102587
updated to build on other platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444991</commentid>
    <comment_count>10</comment_count>
      <attachid>102587</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-01 16:46:21 -0700</bug_when>
    <thetext>Comment on attachment 102587
updated to build on other platforms

Attachment 102587 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9283717</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445086</commentid>
    <comment_count>11</comment_count>
      <attachid>102587</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-01 19:16:45 -0700</bug_when>
    <thetext>Comment on attachment 102587
updated to build on other platforms

Attachment 102587 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9288618</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445286</commentid>
    <comment_count>12</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-02 08:34:00 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 102587 [details])
&gt; Attachment 102587 [details] did not pass cr-mac-ews (chromium):
&gt; Output: http://queues.webkit.org/results/9288618

I&apos;m guessing this is a two-sided patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445580</commentid>
    <comment_count>13</comment_count>
      <attachid>102708</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-02 15:51:00 -0700</bug_when>
    <thetext>Created attachment 102708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446124</commentid>
    <comment_count>14</comment_count>
      <attachid>102708</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-03 15:13:57 -0700</bug_when>
    <thetext>Comment on attachment 102708
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        pages and directly draw into contexts in different pages.  Also switches DrawingBufferChromium over to use a
&gt; +        different extension for resource sharing with the compositor.

I think this description might be stale now:  we don&apos;t use an extension at all, AFAICT, just rely on shared resources.

&gt; Source/WebCore/platform/graphics/chromium/Canvas2DLayerChromium.cpp:74
&gt; +    if (m_textureChanged)
&gt; +        m_textureId = m_drawingBuffer-&gt;platformColorBuffer();

Looks like we never set m_textureChanged to false now.  Probably OK, since presumably the texture ID never changes.  But do we still need these member variables at all, actually?  Can we just return m_drawingBuffer-&gt;platformColorBuffer() at the call site?  Or at least just use m_textureId 0 to indicate not-set-yet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446154</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-03 15:45:46 -0700</bug_when>
    <thetext>Whoops, I didn&apos;t mean to remove m_textureChanged = false.  But you&apos;re right, we can just always get the current DrawingBuffer&apos;s color attachment.  I think we still need the textureChanged stuff for WebGL but I can limit it to there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446683</commentid>
    <comment_count>16</comment_count>
      <attachid>102957</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 12:30:07 -0700</bug_when>
    <thetext>Created attachment 102957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446700</commentid>
    <comment_count>17</comment_count>
      <attachid>102957</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-04 12:52:50 -0700</bug_when>
    <thetext>Comment on attachment 102957
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/CanvasLayerChromium.cpp:45
&gt;      , m_textureId(0)

Could this also be pushed down into WebGLLayerChromium, now that Canvas2DLayerChromium doesn&apos;t use it?

&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.h:27
&gt; +#define SharedGraphicsContext3D_h

Ahh, the triumphant return of SharedGraphicsContext3D.  (My, you&apos;ve lost a lot of weight.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446740</commentid>
    <comment_count>18</comment_count>
      <attachid>102957</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-04 13:34:30 -0700</bug_when>
    <thetext>Comment on attachment 102957
Patch

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

&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:54
&gt; +    s_sharedContextCount++;

It&apos;d be nice if you didn&apos;t have to roll your own refcount.  I think it could be done as follows:

- derived SharedGraphicsContext3D from RefCounted
- replace s_sharedContext with s_instance, a SharedGraphicsContext3D bare ptr
- make (static) ShareGraphicsContext3D::instance() create s_instance if it&apos;s NULL, and return a RefPtr wrapped around the s_instance bare ptr
- make the SharedGraphicsContext3D constructor create a GraphicsContext3D (m_context)
- make the SharedGraphicsContext3D destructor set s_instance to NULL

Then when the last reference to SGC3D drops, the instance will be set to NULL.
Would that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446806</commentid>
    <comment_count>19</comment_count>
      <attachid>102986</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 14:59:06 -0700</bug_when>
    <thetext>Created attachment 102986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446808</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 15:00:19 -0700</bug_when>
    <thetext>Thanks, I think that does work out much better.  Not marking review? as this triggers a bug in the command buffer, so right now this will make a bunch of canvas tests explode magnificently.  I&apos;ll flip review? as soon as the chromium side is fixed+rolled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446822</commentid>
    <comment_count>21</comment_count>
      <attachid>102986</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-04 15:16:33 -0700</bug_when>
    <thetext>Comment on attachment 102986
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/DrawingBufferChromium.cpp:117
&gt;      if (m_grContext)
&gt;          m_grContext-&gt;flush(0);

Even though we&apos;re no longer doing the copy, I&apos;m wondering if still need to make the context current here.  GrContext::flush() probably expects its context to be current.  (Sorry I didn&apos;t notice this in earlier passes).

&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:39
&gt; +        s_instance-&gt;ref(); // Manually give this caller a reference to the shared instance, adoptRef() does not increase the refcount.
&gt; +        return adoptRef(s_instance);

Maybe I&apos;m being dense, but couldn&apos;t this use the same code as below?  As in:

if (s_instance) {
  RefPtr&lt;SharedGraphicsContext3D&gt; sharedContext = adoptRef(s_instance);
  return sharedContext;  // turning RefPtr into PassRefPtr.
}

It would be a little more verbose, but you&apos;d avoid manually ref&apos;ing (letting the refptr ref for you), and you might be able to refactor it a bit with the else case.  If it doesn&apos;t work, feel free to ignore me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446832</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 15:25:01 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 102986 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102986&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/DrawingBufferChromium.cpp:117
&gt; &gt;      if (m_grContext)
&gt; &gt;          m_grContext-&gt;flush(0);
&gt; 
&gt; Even though we&apos;re no longer doing the copy, I&apos;m wondering if still need to make the context current here.  GrContext::flush() probably expects its context to be current.  (Sorry I didn&apos;t notice this in earlier passes).

Ooh good catch, it probably does require the context to be current.  I&apos;ll fix that.


&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:39
&gt; &gt; +        s_instance-&gt;ref(); // Manually give this caller a reference to the shared instance, adoptRef() does not increase the refcount.
&gt; &gt; +        return adoptRef(s_instance);
&gt; 
&gt; Maybe I&apos;m being dense, but couldn&apos;t this use the same code as below?  As in:
&gt; 
&gt; if (s_instance) {
&gt;   RefPtr&lt;SharedGraphicsContext3D&gt; sharedContext = adoptRef(s_instance);
&gt;   return sharedContext;  // turning RefPtr into PassRefPtr.
&gt; }
&gt; 
&gt; It would be a little more verbose, but you&apos;d avoid manually ref&apos;ing (letting the refptr ref for you), and you might be able to refactor it a bit with the else case.  If it doesn&apos;t work, feel free to ignore me.

Yeah, I wrote it this way as well and it also works.  I think it&apos;s a little less clear, though, that the purpose of the little dance is to increase the refcount on s_instance by one before returning which is why I wrote it out (with a comment, gasp).  I&apos;m happy to change it if you think the local RefPtr&lt;&gt; way is easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446850</commentid>
    <comment_count>23</comment_count>
      <attachid>102986</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-04 15:43:23 -0700</bug_when>
    <thetext>Comment on attachment 102986
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:39
&gt;&gt;&gt; +        return adoptRef(s_instance);
&gt;&gt; 
&gt;&gt; Maybe I&apos;m being dense, but couldn&apos;t this use the same code as below?  As in:
&gt;&gt; 
&gt;&gt; if (s_instance) {
&gt;&gt;   RefPtr&lt;SharedGraphicsContext3D&gt; sharedContext = adoptRef(s_instance);
&gt;&gt;   return sharedContext;  // turning RefPtr into PassRefPtr.
&gt;&gt; }
&gt;&gt; 
&gt;&gt; It would be a little more verbose, but you&apos;d avoid manually ref&apos;ing (letting the refptr ref for you), and you might be able to refactor it a bit with the else case.  If it doesn&apos;t work, feel free to ignore me.
&gt; 
&gt; Yeah, I wrote it this way as well and it also works.  I think it&apos;s a little less clear, though, that the purpose of the little dance is to increase the refcount on s_instance by one before returning which is why I wrote it out (with a comment, gasp).  I&apos;m happy to change it if you think the local RefPtr&lt;&gt; way is easier to understand.

I was thinking you could refactor it like this:

if (!s_instance) {
  ... creation stuff here ..
  s_instance = new SharedGraphicsContext3D(context.release());
}
RefPtr&lt;SharedGraphicsContext3D&gt; sharedContext = adoptRef(s_instance);
return sharedContext;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447049</commentid>
    <comment_count>24</comment_count>
      <attachid>103043</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 22:51:32 -0700</bug_when>
    <thetext>Created attachment 103043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447050</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 22:54:14 -0700</bug_when>
    <thetext>Switched it around, and it looks slightly cleaner but is still pretty subtle.  Ah well, I guess that&apos;s what tests are for?

Also removed the WillPublishCallback stuff since that&apos;s totally unused now, and made sure the set the GrContext&apos;s GraphicsContext3D current before flushing it.

All dependent patches have finally landed, so marking review?  With this on top of ToT WebKit + ToT chromium the wilderness downtown demo seems to work OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447068</commentid>
    <comment_count>26</comment_count>
      <attachid>103043</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 23:29:38 -0700</bug_when>
    <thetext>Comment on attachment 103043
Patch

Whoops, this doesn&apos;t accelerate any canvases :{.  Trying to play directly with the RefPtr&lt;&gt; stuff is very subtle, I think I&apos;ll go back to handling the refs explicitly and clearly.  Will update...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447112</commentid>
    <comment_count>27</comment_count>
      <attachid>103050</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-05 01:21:22 -0700</bug_when>
    <thetext>Created attachment 103050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447215</commentid>
    <comment_count>28</comment_count>
      <attachid>103050</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-05 08:32:45 -0700</bug_when>
    <thetext>Comment on attachment 103050
Patch

Sorry my suggestion led you astray there, and thanks for all the cleanups.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447443</commentid>
    <comment_count>29</comment_count>
      <attachid>103050</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 15:14:51 -0700</bug_when>
    <thetext>Comment on attachment 103050
Patch

Clearing flags on attachment: 103050

Committed r92520: &lt;http://trac.webkit.org/changeset/92520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447444</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 15:14:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456258</commentid>
    <comment_count>31</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-08-24 11:35:30 -0700</bug_when>
    <thetext>*** Bug 65202 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102411</attachid>
            <date>2011-07-29 17:13:07 -0700</date>
            <delta_ts>2011-08-01 16:11:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65402-20110729171306.patch</filename>
            <type>text/plain</type>
            <size>12970</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIwMDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YjJlZjk1MjM3MzA1Yjg1
NGY3YzYwNGM4ZWJhNjk4Nzk5OGVmMWU2Li5iNWE1OTYxMjFmNTUwN2QyNWU2YzQxMWFjMGUyMTkx
N2UyYTA2NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDctMjkgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFj
Y2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3ZpbmcgY2FudmFzZXMgb3IgcmVzb3VyY2Vz
IGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIG9uZSBzaGFyZWQgR3JhcGhpY3NDb250ZXh0M0QgZm9yIHRoZSB3aG9sZSBwcm9j
ZXNzIGluc3RlYWQgb2Ygb25lIHBlciBQYWdlIGFzIGNhbnZhc2VzIGNhbiBtb3ZlIGJldHdlZW4K
KyAgICAgICAgcGFnZXMgYW5kIGRpcmVjdGx5IGRyYXcgaW50byBjb250ZXh0cyBpbiBkaWZmZXJl
bnQgcGFnZXMuICBBbHNvIHN3aXRjaGVzIERyYXdpbmdCdWZmZXJDaHJvbWl1bSBvdmVyIHRvIHVz
ZSBhCisgICAgICAgIGRpZmZlcmVudCBleHRlbnNpb24gZm9yIHJlc291cmNlIHNoYXJpbmcgd2l0
aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZv
cm1MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaDoKKwogMjAxMS0wNy0yOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZGVkIHRoZSByZWdpb25hbCBpbmRpY2F0b3Igc3ltYm9scyB0byB0
aGUgc2V0IG9mIGNvZGVwb2ludHMgdGhhdCBmb3JjZSB1c2Ugb2YgdGhlIGNvbXBsZXggdGV4dCBj
b2RlIHBhdGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzMjQxOWEwYmY1Yjc1MjNmMmU1ODk3M2Q2
Y2Q1ZmQyMDg4MmIwMjYwLi4xOWVjNDI4ZmVhZTk1NzZlMTRkNjIyNzRhNTc3OTc0OWYxYzk1MmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTc1MiwxOCArNzUyLDIwIEBAIHZvaWQgUGFnZTo6c2V0
RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAgICAgICAgIGZyYW1lLT5zY3JpcHQo
KS0+YXR0YWNoRGVidWdnZXIobV9kZWJ1Z2dlcik7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gUGFnZTo6c19zaGFyZWRHcmFwaGljc0NvbnRleHQzRDsKKwogR3JhcGhpY3NDb250ZXh0
M0QqIFBhZ2U6OnNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCkKIHsKICNpZiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQotICAgIGlmICghbV9zaGFyZWRHcmFwaGljc0NvbnRleHQzRCkgewor
ICAgIGlmICghc19zaGFyZWRHcmFwaGljc0NvbnRleHQzRCkgewogICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBhdHRyOwogICAgICAgICBhdHRyLmRlcHRoID0gZmFsc2U7CiAg
ICAgICAgIGF0dHIuc3RlbmNpbCA9IHRydWU7CiAgICAgICAgIGF0dHIuYW50aWFsaWFzID0gZmFs
c2U7CiAgICAgICAgIGF0dHIuY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IGZhbHNlOyAvLyBD
YW52YXMgY29udGV4dHMgY2FuIG5vdCBoYW5kbGUgbG9zdCBjb250ZXh0cy4KLSAgICAgICAgbV9z
aGFyZWRHcmFwaGljc0NvbnRleHQzRCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0ciwg
Y2hyb21lKCkpOworICAgICAgICBzX3NoYXJlZEdyYXBoaWNzQ29udGV4dDNEID0gR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZShhdHRyLCBjaHJvbWUoKSk7CiAgICAgfQotICAgIHJldHVybiBtX3No
YXJlZEdyYXBoaWNzQ29udGV4dDNELmdldCgpOworICAgIHJldHVybiBzX3NoYXJlZEdyYXBoaWNz
Q29udGV4dDNELmdldCgpOwogI2Vsc2UgLy8gIUVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMWUwM2FhZGRkZmMzN2Ix
ZjFiY2MyYjczMGZmZGI3M2IzZWRmMGU1MS4uYmEwMmNmYTc4MDZmMDc5MzQxMWI5YzhiNDZmYzI3
ZGYxOTI3NzAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMyNSw3ICszMjUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIE93blB0cjxEcmFnQ2FyZXRDb250cm9sbGVyPiBtX2RyYWdDYXJl
dENvbnRyb2xsZXI7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgICAg
ICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fc2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q7Cisg
ICAgICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IHNfc2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q7CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdp
bmdCdWZmZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCmluZGV4IGM5MDRmYjRlYTUwNzdlNTNh
MzM1Y2U3NGMxMGZlZjZkMTZiZjUwNjguLjRmN2MwYmRiZGRjM2Q4MDgyZjRmZmRhYTA4ZWZiMzA0
NDU3ODI3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcApAQCAtMzQs
NyArMzQsNyBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgotCisjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiCiAjaWYgVVNFKFNLSUEpCiAjaW5jbHVkZSAiR3JDb250ZXh0LmgiCiAjZW5kaWYKQEAgLTYy
LDcgKzYyLDYgQEAgc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJgogICAgIHJldHVybiBvZmZzY3JlZW5D
b2xvclRleHR1cmU7CiB9CiAKLQogRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SW50U2l6ZSYgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXNh
bXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKQEAgLTgyLDEwICs4MSwxMSBAQCBEcmF3aW5nQnVmZmVy
OjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICwgbV9nckNv
bnRleHQoMCkKICNlbmRpZgogewotICAgIGlmICghbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUiKSkg
eworICAgIGlmICghbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJP
TUlVTV9tYXBfZXh0ZXJuYWxfdGV4dHVyZSIpKSB7CiAgICAgICAgIG1fY29udGV4dC5jbGVhcigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgbV9mYm8gPSBjb250ZXh0LT5jcmVhdGVG
cmFtZWJ1ZmZlcigpOwogICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICBtX2NvbG9yQnVmZmVyID0gZ2VuZXJhdGVD
b2xvclRleHR1cmUoY29udGV4dCwgc2l6ZSk7CkBAIC0xMTksMTcgKzExOSwxNiBAQCB2b2lkIERy
YXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKQogICAgICAgICBtX2NhbGxiYWNr
LT53aWxsUHVibGlzaCgpOwogICAgIGlmIChtdWx0aXNhbXBsZSgpKQogICAgICAgICBjb21taXQo
KTsKLSAgICB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlID0gbV9wbGF0Zm9ybUxheWVyLT50ZXh0dXJl
SWQoKTsKLSAgICAvLyBXZSBkbyB0aGUgY29weSBpbiB0aGUgY2FudmFzJyAoY2hpbGQpIGNvbnRl
eHQgc28gdGhhdCBpdCBleGVjdXRlcyBpbiB0aGUgY29ycmVjdCBvcmRlciByZWxhdGl2ZSB0bwot
ICAgIC8vIG90aGVyIGNvbW1hbmRzIGluIHRoZSBjaGlsZCBjb250ZXh0LiBUaGlzIGVuc3VyZXMg
dGhhdCB0aGUgcGFyZW50IHRleHR1cmUgYWx3YXlzIGNvbnRhaW5zIGEgY29tcGxldGUKLSAgICAv
LyBmcmFtZSBhbmQgbm90IHNvbWUgaW50ZXJtZWRpYXRlIHJlc3VsdC4KLSAgICBtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHVuc2lnbmVkIGNvbXBvc2l0b3JUZXh0dXJlID0g
bV9wbGF0Zm9ybUxheWVyLT50ZXh0dXJlSWQoKTsKICNpZiBVU0UoU0tJQSkKICAgICBpZiAobV9n
ckNvbnRleHQpCiAgICAgICAgIG1fZ3JDb250ZXh0LT5mbHVzaCgwKTsKICNlbmRpZgotICAgIHN0
YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkpLT5jb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKG1fY29sb3JCdWZmZXIsIHBh
cmVudFRleHR1cmUpOwogICAgIG1fY29udGV4dC0+Zmx1c2goKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29tcG9zaXRvckNvbnRleHQgPSBtX3BsYXRmb3JtTGF5ZXItPmxheWVyUmVuZGVyZXIo
KS0+Y29udGV4dCgpOworICAgIGNvbXBvc2l0b3JDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbXBvc2l0b3JDb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT5tYXBFeHRlcm5hbFRleHR1cmVDSFJPTUlVTShtX2NvbG9y
QnVmZmVyLCBtX2NvbnRleHQuZ2V0KCksIGNvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICBjb21wb3Np
dG9yQ29udGV4dC0+Zmx1c2goKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hy
b21pdW0uaAppbmRleCBkNzhmYzFjY2JiYzU5NWQ5NTIxYzgwOWVjN2IwYzZhNTcyNzMxYTk5Li4z
YmY1OGUzMDg3M2E4NWRmOTNiNDcxNGEwZTY2MTAyNzU4N2VlMWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVu
c2lvbnMzRENocm9taXVtLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw7CiAKIGNsYXNzIEV4dGVuc2lvbnMzRENocm9taXVtIDogcHVibGljIEV4dGVuc2lvbnMz
RCB7CkBAIC00MCw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAvLyAgIEdMX0NIUk9NSVVNX3Jlc291
cmNlX3NhZmUgIDogaW5kaWNhdGluZyB0aGF0IHRleHR1cmVzL3JlbmRlcmJ1ZmZlcnMgYXJlIGFs
d2F5cyBpbml0aWFsaXplZCBiZWZvcmUgcmVhZC93cml0ZS4KICAgICAvLyAgIEdMX0NIUk9NSVVN
X3N0cmljdF9hdHRyaWJzIDogaW5kaWNhdGluZyBhIEdMIGVycm9yIGlzIGdlbmVyYXRlZCBmb3Ig
b3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuCiAgICAgLy8gICBHTF9DSFJPTUlVTV9tYXBf
c3ViCi0gICAgLy8gICBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUK
KyAgICAvLyAgIEdMX0NIUk9NSVVNX21hcF9leHRlcm5hbF90ZXh0dXJlCiAgICAgLy8gICBHTF9D
SFJPTUlVTV9zd2FwYnVmZmVyc19jb21wbGV0ZV9jYWxsYmFjawogICAgIC8vICAgR0xfQ0hST01J
VU1fcmF0ZV9saW1pdF9vZmZzY3JlZW5fY29udGV4dAogCkBAIC02OCw4ICs2OSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkKiBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0odW5zaWduZWQgdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHVuc2lnbmVkIGFjY2Vzcyk7CiAgICAg
dm9pZCB1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShjb25zdCB2b2lkKik7CiAKLSAgICAvLyBH
TF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUKLSAgICB2b2lkIGNvcHlU
ZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4dHVyZSwgdW5zaWduZWQg
cGFyZW50VGV4dHVyZSk7CisgICAgLy8gR0xfQ0hST01JVU1fbWFwX2V4dGVybmFsX3RleHR1cmUK
KyAgICB2b2lkIG1hcEV4dGVybmFsVGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHNvdXJjZVRleHR1
cmUsIEdyYXBoaWNzQ29udGV4dDNEKiBzb3VyY2VDb250ZXh0LCB1bnNpZ25lZCBkZXN0aW5hdGlv
blRleHR1cmUpOwogCiAgICAgLy8gR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29tcGxldGVfY2Fs
bGJhY2sKICAgICBjbGFzcyBTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGE3ZTRiM2NmZGVlOTUwZDkzNGU1YzhmNWVkMzIx
MzIyMTQ3ZDdiYjAuLmQwYzg1MGE2Y2E5Y2M4YzUzOWZmZjMwOTE1OTdhMjZkMzQ1MWM4MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDctMjkgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFjY2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3ZpbmcgY2FudmFzZXMgb3IgcmVzb3Vy
Y2VzIGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHBsdW1iaW5nIGZvciBuZXcgbWFwRXh0ZXJuYWxUZXh0dXJlIGV4dGVuc2lv
biB0byBzaGFyZSB0ZXh0dXJlcyBiZXR3ZWVuIHRoZSBzaGFyZWQgY2FudmFzIGNvbnRleHQgYW5k
CisgICAgICAgIGNvbXBvc2l0b3IgY29udGV4dHMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06Om1hcEV4dGVybmFsVGV4
dHVyZUNIUk9NSVVNKToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjptYXBFeHRl
cm5hbFRleHR1cmVDSFJPTUlVTSk6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwuaDoKKwogMjAxMS0wNy0yOSAgU2NvdHQgQnllciAgPHNjb3R0YnllckBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgU2Nyb2xsIGFuaW1hdGlvbiByZWZpbmVtZW50cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4
IDc0ZTM3MTEzNGY1ZTNkMTJmMWQxMDFiOWU1ZjY2ZTBkMzQ3ZTRjYWEuLmU1NTA0NjRmYWEwOTg2
ODc3Y2M1ZjQ0NTQwMjZlMDllNjk4Zjg5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTY3LDggKzE2Nyw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQqIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShXR0Mz
RGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0RpbnQg
eW9mZnNldCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEZW51bSBm
b3JtYXQsIFdHQzNEZW51bSB0eXBlLCBXR0MzRGVudW0gYWNjZXNzKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNvbnN0IHZvaWQqKSA9IDA7CiAKLSAg
ICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUKLSAgICB2aXJ0
dWFsIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTShXZWJHTElkIHRleHR1
cmUsIFdlYkdMSWQgcGFyZW50VGV4dHVyZSkgPSAwOworICAgIC8vIEdMX0NIUk9NSVVNX21hcF9l
eHRlcm5hbF90ZXh0dXJlCisgICAgdmlydHVhbCB2b2lkIG1hcEV4dGVybmFsVGV4dHVyZUNIUk9N
SVVNKFdlYkdMSWQgc291cmNlVGV4dHVyZSwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIHNvdXJjZUNv
bnRleHQsIFdlYkdMSWQgZGVzdGluYXRpb25UZXh0dXJlKSA9IDA7CiAKICAgICAvLyBHTF9DSFJP
TUlVTV9yZXF1ZXN0X2V4dGVuc2lvbgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFJlcXVlc3Rh
YmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCmluZGV4IDJmYjU4ZjM0NzEwZDJiYTBj
NzllZWI3YzEzNGE3MzBjMWJhZWJkYjguLjQzNmI5NjRjZjgzY2VlMzBkYzU1ZDc0YTk0YmQ0ZGM5
NmJmMjllNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lv
bnMzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNp
b25zM0RDaHJvbWl1bS5jcHAKQEAgLTk3LDkgKzk3LDkgQEAgdm9pZCBFeHRlbnNpb25zM0RDaHJv
bWl1bTo6dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCogZGF0YSkKICAgICBt
X2ludGVybmFsLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShkYXRhKTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zM0RDaHJvbWl1bTo6Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh1
bnNpZ25lZCB0ZXh0dXJlLCB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlKQordm9pZCBFeHRlbnNpb25z
M0RDaHJvbWl1bTo6bWFwRXh0ZXJuYWxUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgc291cmNlVGV4
dHVyZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNvdXJjZUNvbnRleHQsIHVuc2lnbmVkIGRlc3RpbmF0
aW9uVGV4dHVyZSkKIHsKLSAgICBtX2ludGVybmFsLT5jb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVy
ZUNIUk9NSVVNKHRleHR1cmUsIHBhcmVudFRleHR1cmUpOworICAgIG1faW50ZXJuYWwtPm1hcEV4
dGVybmFsVGV4dHVyZUNIUk9NSVVNKHNvdXJjZVRleHR1cmUsIHNvdXJjZUNvbnRleHQsIGRlc3Rp
bmF0aW9uVGV4dHVyZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgRXh0ZW5zaW9uczNEQ2hyb21p
dW06OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggYjQ4NjlkZTYx
ZjE1MWU4NzE5YzI1YTZkMWEzZDlmOTQxN2NkYmYwMy4uNjU0NzlkMjFlYjViNzc0OGFmODU5YTA0
OTMxM2Y2MWI2ZmFlYzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTgzMiwxMCArODMyLDkgQEAg
REVMRUdBVEVfVE9fSU1QTF8xKHVubWFwQnVmZmVyU3ViRGF0YUNIUk9NSVVNLCBjb25zdCB2b2lk
KikKIERFTEVHQVRFX1RPX0lNUExfOVIobWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBHQzNEZW51
bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0Rl
bnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIHZvaWQqKQogREVMRUdBVEVfVE9fSU1QTF8xKHVubWFw
VGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBjb25zdCB2b2lkKikKIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZSwgUGxhdGZvcm0zRE9iamVjdCBwYXJlbnRUZXh0dXJlKQordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjptYXBFeHRlcm5hbFRleHR1cmVDSFJPTUlVTShQbGF0
Zm9ybTNET2JqZWN0IHNvdXJjZVRleHR1cmUsIEdyYXBoaWNzQ29udGV4dDNEKiBzb3VyY2VDb250
ZXh0LCBQbGF0Zm9ybTNET2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSkKIHsKLSAgICBtX2ltcGwt
PnNldFBhcmVudENvbnRleHQobV93ZWJWaWV3SW1wbC0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7Ci0g
ICAgbV9pbXBsLT5jb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHRleHR1cmUsIHBh
cmVudFRleHR1cmUpOworICAgIG1faW1wbC0+bWFwRXh0ZXJuYWxUZXh0dXJlQ0hST01JVU0oc291
cmNlVGV4dHVyZSwgZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKHNvdXJjZUNvbnRleHQpLCBk
ZXN0aW5hdGlvblRleHR1cmUpOwogfQogCiBERUxFR0FURV9UT19JTVBMXzEwKGJsaXRGcmFtZWJ1
ZmZlckNIUk9NSVVNLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50
LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEYml0ZmllbGQsIEdDM0RlbnVtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbC5oCmluZGV4IGU1ODQzNjk2M2Y4OWE3MzNkN2Y3MzlhZWNhNmUyYWQ0MTJmYjQ4MjcuLjIw
MTI4YTIyYzYyOGZiNmVhNDgxMDJjZmUxYTRmZGFjMmQ4Yzc1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKQEAg
LTI3Miw5ICsyNzIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCogbWFwVGV4U3ViSW1hZ2UyRENIUk9N
SVVNKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNE
aW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0g
Zm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEZW51bSBhY2Nlc3MpOwogICAgIHZvaWQgdW5tYXBU
ZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCopOwogCi0gICAgLy8gR0xfQ0hST01JVU1f
Y29weV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCi0gICAgYm9vbCBzdXBwb3J0c0NvcHlUZXh0
dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0oKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9QYXJl
bnRUZXh0dXJlQ0hST01JVU0oUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBQbGF0Zm9ybTNET2Jq
ZWN0IHBhcmVudFRleHR1cmUpOworICAgIC8vIEdMX0NIUk9NSVVNX21hcF9leHRlcm5hbF90ZXh0
dXJlCisgICAgYm9vbCBzdXBwb3J0c01hcEV4dGVybmFsVGV4dHVyZUNIUk9NSVVNKCk7CisgICAg
dm9pZCBtYXBFeHRlcm5hbFRleHR1cmVDSFJPTUlVTShQbGF0Zm9ybTNET2JqZWN0IHNvdXJjZVRl
eHR1cmUsIEdyYXBoaWNzQ29udGV4dDNEKiBzb3VyY2VDb250ZXh0LCBQbGF0Zm9ybTNET2JqZWN0
IGRlc3RpbmF0aW9uVGV4dHVyZSk7CiAKICAgICAvLyBHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZQogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQ0hST01JVU0oR0MzRGludCBzcmNY
MCwgR0MzRGludCBzcmNZMCwgR0MzRGludCBzcmNYMSwgR0MzRGludCBzcmNZMSwgR0MzRGludCBk
c3RYMCwgR0MzRGludCBkc3RZMCwgR0MzRGludCBkc3RYMSwgR0MzRGludCBkc3RZMSwgR0MzRGJp
dGZpZWxkIG1hc2ssIEdDM0RlbnVtIGZpbHRlcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102587</attachid>
            <date>2011-08-01 16:11:13 -0700</date>
            <delta_ts>2011-08-02 15:50:56 -0700</delta_ts>
            <desc>updated to build on other platforms</desc>
            <filename>bug-65402-20110801161112.patch</filename>
            <type>text/plain</type>
            <size>12906</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxMzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMWJjOTdkYThmZjNmZjZh
YjA4YWZmOGU3YWRjZTY0ZDcxNTYxMmJmLi5iOTBkMGU4MTdkNDdhZDJkNDViZWNhOGFkZDczMDFl
MDQ1YzEzZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDgtMDEgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFj
Y2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3ZpbmcgY2FudmFzZXMgb3IgcmVzb3VyY2Vz
IGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIG9uZSBzaGFyZWQgR3JhcGhpY3NDb250ZXh0M0QgZm9yIHRoZSB3aG9sZSBwcm9j
ZXNzIGluc3RlYWQgb2Ygb25lIHBlciBQYWdlIGFzIGNhbnZhc2VzIGNhbiBtb3ZlIGJldHdlZW4K
KyAgICAgICAgcGFnZXMgYW5kIGRpcmVjdGx5IGRyYXcgaW50byBjb250ZXh0cyBpbiBkaWZmZXJl
bnQgcGFnZXMuICBBbHNvIHN3aXRjaGVzIERyYXdpbmdCdWZmZXJDaHJvbWl1bSBvdmVyIHRvIHVz
ZSBhCisgICAgICAgIGRpZmZlcmVudCBleHRlbnNpb24gZm9yIHJlc291cmNlIHNoYXJpbmcgd2l0
aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZv
cm1MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaDoKKwogMjAxMS0wOC0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWlu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBPcGVuR0xTaGltcyBkb2VzIG5vdCBidWlsZCBv
biBBUk0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDMyNDE5YTBiZjViNzUyM2YyZTU4OTczZDZjZDVm
ZDIwODgyYjAyNjAuLmZiN2IwNTdiNjRlOTExYmJiYmEwNjcyNTIwMTE2YjJhYWUwNzVkYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtNzU1LDE1ICs3NTUsMTYgQEAgdm9pZCBQYWdlOjpzZXREZWJ1
Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIEdyYXBoaWNzQ29udGV4dDNEKiBQYWdlOjpz
aGFyZWRHcmFwaGljc0NvbnRleHQzRCgpCiB7CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKLSAgICBpZiAoIW1fc2hhcmVkR3JhcGhpY3NDb250ZXh0M0QpIHsKKyAgICBzdGF0aWMg
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBzX3NoYXJlZEdyYXBoaWNzQ29udGV4dDNEOworICAg
IGlmICghc19zaGFyZWRHcmFwaGljc0NvbnRleHQzRCkgewogICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRyOwogICAgICAgICBhdHRyLmRlcHRoID0gZmFsc2U7CiAgICAg
ICAgIGF0dHIuc3RlbmNpbCA9IHRydWU7CiAgICAgICAgIGF0dHIuYW50aWFsaWFzID0gZmFsc2U7
CiAgICAgICAgIGF0dHIuY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IGZhbHNlOyAvLyBDYW52
YXMgY29udGV4dHMgY2FuIG5vdCBoYW5kbGUgbG9zdCBjb250ZXh0cy4KLSAgICAgICAgbV9zaGFy
ZWRHcmFwaGljc0NvbnRleHQzRCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0ciwgY2hy
b21lKCkpOworICAgICAgICBzX3NoYXJlZEdyYXBoaWNzQ29udGV4dDNEID0gR3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZShhdHRyLCBjaHJvbWUoKSk7CiAgICAgfQotICAgIHJldHVybiBtX3NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmdldCgpOworICAgIHJldHVybiBzX3NoYXJlZEdyYXBoaWNzQ29u
dGV4dDNELmdldCgpOwogI2Vsc2UgLy8gIUVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMWUwM2FhZGRkZmMzN2IxZjFi
Y2MyYjczMGZmZGI3M2IzZWRmMGU1MS4uOWM2MTk4YzM4YTNmODA5NjBlYWJlNmJlNzFhMDZlZGYy
NzJmOTcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMyNCwxMCArMzI0LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBPd25QdHI8Q2hyb21lPiBtX2Nocm9tZTsKICAgICAgICAgT3duUHRy
PERyYWdDYXJldENvbnRyb2xsZXI+IG1fZHJhZ0NhcmV0Q29udHJvbGxlcjsKIAotI2lmIEVOQUJM
RShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gbV9zaGFyZWRHcmFwaGljc0NvbnRleHQzRDsKLSNlbmRpZgotICAgICAgICAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogICAgICAgICBPd25QdHI8RHJhZ0NvbnRyb2xsZXI+IG1fZHJhZ0Nv
bnRyb2xsZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCmlu
ZGV4IGM5MDRmYjRlYTUwNzdlNTNhMzM1Y2U3NGMxMGZlZjZkMTZiZjUwNjguLjRmN2MwYmRiZGRj
M2Q4MDgyZjRmZmRhYTA4ZWZiMzA0NDU3ODI3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNE
Q2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotCisjaW5jbHVkZSAi
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaWYgVVNFKFNLSUEpCiAjaW5jbHVkZSAiR3JDb250
ZXh0LmgiCiAjZW5kaWYKQEAgLTYyLDcgKzYyLDYgQEAgc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRl
Q29sb3JUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJgog
ICAgIHJldHVybiBvZmZzY3JlZW5Db2xvclRleHR1cmU7CiB9CiAKLQogRHJhd2luZ0J1ZmZlcjo6
RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKQEAgLTgyLDEwICs4
MSwxMSBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LAogICAgICwgbV9nckNvbnRleHQoMCkKICNlbmRpZgogewotICAgIGlmICghbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVf
dG9fcGFyZW50X3RleHR1cmUiKSkgeworICAgIGlmICghbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9tYXBfZXh0ZXJuYWxfdGV4dHVyZSIpKSB7CiAgICAg
ICAgIG1fY29udGV4dC5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgbV9m
Ym8gPSBjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIGNvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICBtX2Nv
bG9yQnVmZmVyID0gZ2VuZXJhdGVDb2xvclRleHR1cmUoY29udGV4dCwgc2l6ZSk7CkBAIC0xMTks
MTcgKzExOSwxNiBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIo
KQogICAgICAgICBtX2NhbGxiYWNrLT53aWxsUHVibGlzaCgpOwogICAgIGlmIChtdWx0aXNhbXBs
ZSgpKQogICAgICAgICBjb21taXQoKTsKLSAgICB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlID0gbV9w
bGF0Zm9ybUxheWVyLT50ZXh0dXJlSWQoKTsKLSAgICAvLyBXZSBkbyB0aGUgY29weSBpbiB0aGUg
Y2FudmFzJyAoY2hpbGQpIGNvbnRleHQgc28gdGhhdCBpdCBleGVjdXRlcyBpbiB0aGUgY29ycmVj
dCBvcmRlciByZWxhdGl2ZSB0bwotICAgIC8vIG90aGVyIGNvbW1hbmRzIGluIHRoZSBjaGlsZCBj
b250ZXh0LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcGFyZW50IHRleHR1cmUgYWx3YXlzIGNvbnRh
aW5zIGEgY29tcGxldGUKLSAgICAvLyBmcmFtZSBhbmQgbm90IHNvbWUgaW50ZXJtZWRpYXRlIHJl
c3VsdC4KLSAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHVuc2lnbmVk
IGNvbXBvc2l0b3JUZXh0dXJlID0gbV9wbGF0Zm9ybUxheWVyLT50ZXh0dXJlSWQoKTsKICNpZiBV
U0UoU0tJQSkKICAgICBpZiAobV9nckNvbnRleHQpCiAgICAgICAgIG1fZ3JDb250ZXh0LT5mbHVz
aCgwKTsKICNlbmRpZgotICAgIHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT5jb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9N
SVVNKG1fY29sb3JCdWZmZXIsIHBhcmVudFRleHR1cmUpOwogICAgIG1fY29udGV4dC0+Zmx1c2go
KTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29tcG9zaXRvckNvbnRleHQgPSBtX3BsYXRmb3Jt
TGF5ZXItPmxheWVyUmVuZGVyZXIoKS0+Y29udGV4dCgpOworICAgIGNvbXBvc2l0b3JDb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJv
bWl1bSo+KGNvbXBvc2l0b3JDb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT5tYXBFeHRlcm5hbFRl
eHR1cmVDSFJPTUlVTShtX2NvbG9yQnVmZmVyLCBtX2NvbnRleHQuZ2V0KCksIGNvbXBvc2l0b3JU
ZXh0dXJlKTsKKyAgICBjb21wb3NpdG9yQ29udGV4dC0+Zmx1c2goKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCBkNzhmYzFjY2JiYzU5NWQ5NTIxYzgw
OWVjN2IwYzZhNTcyNzMxYTk5Li4zYmY1OGUzMDg3M2E4NWRmOTNiNDcxNGEwZTY2MTAyNzU4N2Vl
MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTMwLDYgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw7CiAKIGNsYXNzIEV4dGVuc2lvbnMzRENocm9taXVt
IDogcHVibGljIEV4dGVuc2lvbnMzRCB7CkBAIC00MCw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAv
LyAgIEdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUgIDogaW5kaWNhdGluZyB0aGF0IHRleHR1cmVz
L3JlbmRlcmJ1ZmZlcnMgYXJlIGFsd2F5cyBpbml0aWFsaXplZCBiZWZvcmUgcmVhZC93cml0ZS4K
ICAgICAvLyAgIEdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJzIDogaW5kaWNhdGluZyBhIEdMIGVy
cm9yIGlzIGdlbmVyYXRlZCBmb3Igb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuCiAgICAg
Ly8gICBHTF9DSFJPTUlVTV9tYXBfc3ViCi0gICAgLy8gICBHTF9DSFJPTUlVTV9jb3B5X3RleHR1
cmVfdG9fcGFyZW50X3RleHR1cmUKKyAgICAvLyAgIEdMX0NIUk9NSVVNX21hcF9leHRlcm5hbF90
ZXh0dXJlCiAgICAgLy8gICBHTF9DSFJPTUlVTV9zd2FwYnVmZmVyc19jb21wbGV0ZV9jYWxsYmFj
awogICAgIC8vICAgR0xfQ0hST01JVU1fcmF0ZV9saW1pdF9vZmZzY3JlZW5fY29udGV4dAogCkBA
IC02OCw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkKiBtYXBUZXhTdWJJbWFnZTJEQ0hST01J
VU0odW5zaWduZWQgdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHVu
c2lnbmVkIGFjY2Vzcyk7CiAgICAgdm9pZCB1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShjb25z
dCB2b2lkKik7CiAKLSAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3Rl
eHR1cmUKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWdu
ZWQgdGV4dHVyZSwgdW5zaWduZWQgcGFyZW50VGV4dHVyZSk7CisgICAgLy8gR0xfQ0hST01JVU1f
bWFwX2V4dGVybmFsX3RleHR1cmUKKyAgICB2b2lkIG1hcEV4dGVybmFsVGV4dHVyZUNIUk9NSVVN
KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUsIEdyYXBoaWNzQ29udGV4dDNEKiBzb3VyY2VDb250ZXh0
LCB1bnNpZ25lZCBkZXN0aW5hdGlvblRleHR1cmUpOwogCiAgICAgLy8gR0xfQ0hST01JVU1fc3dh
cGJ1ZmZlcnNfY29tcGxldGVfY2FsbGJhY2sKICAgICBjbGFzcyBTd2FwQnVmZmVyc0NvbXBsZXRl
Q2FsbGJhY2tDSFJPTUlVTSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDE5OGUwNzZk
MDIxZTA4Mjg1MTIzMWVhYWM0NWMyYjFlNGY3NGZhZDQuLjViZGVlMmFiNDM1MjhlNThmZjE0Mzc5
MTJiNGI5MTU2ZGRmZDIyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTEtMDgtMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIEFjY2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3Zp
bmcgY2FudmFzZXMgb3IgcmVzb3VyY2VzIGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBsdW1iaW5nIGZvciBuZXcgbWFwRXh0
ZXJuYWxUZXh0dXJlIGV4dGVuc2lvbiB0byBzaGFyZSB0ZXh0dXJlcyBiZXR3ZWVuIHRoZSBzaGFy
ZWQgY2FudmFzIGNvbnRleHQgYW5kCisgICAgICAgIGNvbXBvc2l0b3IgY29udGV4dHMuCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvRXh0
ZW5zaW9uczNEQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hy
b21pdW06Om1hcEV4dGVybmFsVGV4dHVyZUNIUk9NSVVNKToKKyAgICAgICAgKiBzcmMvR3JhcGhp
Y3NDb250ZXh0M0RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjptYXBFeHRlcm5hbFRleHR1cmVDSFJPTUlVTSk6CisgICAgICAgICogc3Jj
L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDoKKwogMjAxMS0wOC0wMSAgWXV0YSBLaXRhbXVy
YSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWJTb2NrZXQ6IFJlbmFtZSBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQgbWVtYmVyIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNzRlMzcx
MTM0ZjVlM2QxMmYxZDEwMWI5ZTVmNjZlMGQzNDdlNGNhYS4uZTU1MDQ2NGZhYTA5ODY4NzdjYzVm
NDQ1NDAyNmUwOWU2OThmODk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xNjcsOCArMTY3LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCogbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKFdHQzNEZW51bSB0
YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0
LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwg
V0dDM0RlbnVtIHR5cGUsIFdHQzNEZW51bSBhY2Nlc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCopID0gMDsKIAotICAgIC8vIEdM
X0NIUk9NSVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZQotICAgIHZpcnR1YWwgdm9p
ZCBjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKFdlYkdMSWQgdGV4dHVyZSwgV2Vi
R0xJZCBwYXJlbnRUZXh0dXJlKSA9IDA7CisgICAgLy8gR0xfQ0hST01JVU1fbWFwX2V4dGVybmFs
X3RleHR1cmUKKyAgICB2aXJ0dWFsIHZvaWQgbWFwRXh0ZXJuYWxUZXh0dXJlQ0hST01JVU0oV2Vi
R0xJZCBzb3VyY2VUZXh0dXJlLCBXZWJHcmFwaGljc0NvbnRleHQzRCogc291cmNlQ29udGV4dCwg
V2ViR0xJZCBkZXN0aW5hdGlvblRleHR1cmUpID0gMDsKIAogICAgIC8vIEdMX0NIUk9NSVVNX3Jl
cXVlc3RfZXh0ZW5zaW9uCiAgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0UmVxdWVzdGFibGVFeHRl
bnNpb25zQ0hST01JVU0oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKaW5kZXggMmZiNThmMzQ3MTBkMmJhMGM3OWVlYjdj
MTM0YTczMGMxYmFlYmRiOC4uNDM2Yjk2NGNmODNjZWUzMGRjNTVkNzRhOTRiZDRkYzk2YmYyOWU0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENo
cm9taXVtLmNwcApAQCAtOTcsOSArOTcsOSBAQCB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjp1
bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShjb25zdCB2b2lkKiBkYXRhKQogICAgIG1faW50ZXJu
YWwtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lv
bnMzRENocm9taXVtOjpjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVk
IHRleHR1cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1cmUpCit2b2lkIEV4dGVuc2lvbnMzRENocm9t
aXVtOjptYXBFeHRlcm5hbFRleHR1cmVDSFJPTUlVTSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCBH
cmFwaGljc0NvbnRleHQzRCogc291cmNlQ29udGV4dCwgdW5zaWduZWQgZGVzdGluYXRpb25UZXh0
dXJlKQogewotICAgIG1faW50ZXJuYWwtPmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01J
VU0odGV4dHVyZSwgcGFyZW50VGV4dHVyZSk7CisgICAgbV9pbnRlcm5hbC0+bWFwRXh0ZXJuYWxU
ZXh0dXJlQ0hST01JVU0oc291cmNlVGV4dHVyZSwgc291cmNlQ29udGV4dCwgZGVzdGluYXRpb25U
ZXh0dXJlKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Y3Jl
YXRlVmVydGV4QXJyYXlPRVMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAppbmRleCBiNDg2OWRlNjFmMTUxZTg3
MTljMjVhNmQxYTNkOWY5NDE3Y2RiZjAzLi42NTQ3OWQyMWViNWI3NzQ4YWY4NTlhMDQ5MzEzZjYx
YjZmYWVjNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGlj
c0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9H
cmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApAQCAtODMyLDEwICs4MzIsOSBAQCBERUxFR0FU
RV9UT19JTVBMXzEodW5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0sIGNvbnN0IHZvaWQqKQogREVM
RUdBVEVfVE9fSU1QTF85UihtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIEdDM0RlbnVtLCBHQzNE
aW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgR0MzRGVudW0sIEdD
M0RlbnVtLCBHQzNEZW51bSwgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzEodW5tYXBUZXhTdWJJ
bWFnZTJEQ0hST01JVU0sIGNvbnN0IHZvaWQqKQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0oUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0IHBhcmVudFRleHR1cmUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6Om1hcEV4dGVybmFsVGV4dHVyZUNIUk9NSVVNKFBsYXRmb3JtM0RP
YmplY3Qgc291cmNlVGV4dHVyZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNvdXJjZUNvbnRleHQsIFBs
YXRmb3JtM0RPYmplY3QgZGVzdGluYXRpb25UZXh0dXJlKQogewotICAgIG1faW1wbC0+c2V0UGFy
ZW50Q29udGV4dChtX3dlYlZpZXdJbXBsLT5ncmFwaGljc0NvbnRleHQzRCgpKTsKLSAgICBtX2lt
cGwtPmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odGV4dHVyZSwgcGFyZW50VGV4
dHVyZSk7CisgICAgbV9pbXBsLT5tYXBFeHRlcm5hbFRleHR1cmVDSFJPTUlVTShzb3VyY2VUZXh0
dXJlLCBleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0Qoc291cmNlQ29udGV4dCksIGRlc3RpbmF0
aW9uVGV4dHVyZSk7CiB9CiAKIERFTEVHQVRFX1RPX0lNUExfMTAoYmxpdEZyYW1lYnVmZmVyQ0hS
T01JVU0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rp
bnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RiaXRmaWVsZCwgR0MzRGVudW0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgK
aW5kZXggZTU4NDM2OTYzZjg5YTczM2Q3ZjczOWFlY2E2ZTJhZDQxMmZiNDgyNy4uMjAxMjhhMjJj
NjI4ZmI2ZWE0ODEwMmNmZTFhNGZkYWMyZDhjNzU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApAQCAtMjcyLDkg
KzI3Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkKiBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9m
ZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQs
IEdDM0RlbnVtIHR5cGUsIEdDM0RlbnVtIGFjY2Vzcyk7CiAgICAgdm9pZCB1bm1hcFRleFN1Yklt
YWdlMkRDSFJPTUlVTShjb25zdCB2b2lkKik7CiAKLSAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3Rl
eHR1cmVfdG9fcGFyZW50X3RleHR1cmUKLSAgICBib29sIHN1cHBvcnRzQ29weVRleHR1cmVUb1Bh
cmVudFRleHR1cmVDSFJPTUlVTSgpOwotICAgIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1
cmVDSFJPTUlVTShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIFBsYXRmb3JtM0RPYmplY3QgcGFy
ZW50VGV4dHVyZSk7CisgICAgLy8gR0xfQ0hST01JVU1fbWFwX2V4dGVybmFsX3RleHR1cmUKKyAg
ICBib29sIHN1cHBvcnRzTWFwRXh0ZXJuYWxUZXh0dXJlQ0hST01JVU0oKTsKKyAgICB2b2lkIG1h
cEV4dGVybmFsVGV4dHVyZUNIUk9NSVVNKFBsYXRmb3JtM0RPYmplY3Qgc291cmNlVGV4dHVyZSwg
R3JhcGhpY3NDb250ZXh0M0QqIHNvdXJjZUNvbnRleHQsIFBsYXRmb3JtM0RPYmplY3QgZGVzdGlu
YXRpb25UZXh0dXJlKTsKIAogICAgIC8vIEdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXJDSFJPTUlVTShHQzNEaW50IHNyY1gwLCBHQzNE
aW50IHNyY1kwLCBHQzNEaW50IHNyY1gxLCBHQzNEaW50IHNyY1kxLCBHQzNEaW50IGRzdFgwLCBH
QzNEaW50IGRzdFkwLCBHQzNEaW50IGRzdFgxLCBHQzNEaW50IGRzdFkxLCBHQzNEYml0ZmllbGQg
bWFzaywgR0MzRGVudW0gZmlsdGVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102708</attachid>
            <date>2011-08-02 15:51:00 -0700</date>
            <delta_ts>2011-08-04 12:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65402-20110802155059.patch</filename>
            <type>text/plain</type>
            <size>14343</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyMjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMDlkNTkwNzYwNWQ4N2Jl
ZWZjZTUzYjc0MjJhNTg4MTIyMGU5NWZmLi5hNGQwZjljZjY1YTYxZGRmN2Y5NjZjZDIzNmE1ZTI2
OWY3MDdmYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDgtMDIgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFj
Y2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3ZpbmcgY2FudmFzZXMgb3IgcmVzb3VyY2Vz
IGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIG9uZSBzaGFyZWQgR3JhcGhpY3NDb250ZXh0M0QgZm9yIHRoZSB3aG9sZSBwcm9j
ZXNzIGluc3RlYWQgb2Ygb25lIHBlciBQYWdlIGFzIGNhbnZhc2VzIGNhbiBtb3ZlIGJldHdlZW4K
KyAgICAgICAgcGFnZXMgYW5kIGRpcmVjdGx5IGRyYXcgaW50byBjb250ZXh0cyBpbiBkaWZmZXJl
bnQgcGFnZXMuICBBbHNvIHN3aXRjaGVzIERyYXdpbmdCdWZmZXJDaHJvbWl1bSBvdmVyIHRvIHVz
ZSBhCisgICAgICAgIGRpZmZlcmVudCBleHRlbnNpb24gZm9yIHJlc291cmNlIHNoYXJpbmcgd2l0
aCB0aGUgY29tcG9zaXRvci4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6
fkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmg6CisKIDIwMTEtMDgt
MDIgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgcmVhZGJhY2sgZHVyaW5nIGFjY2VsZXJh
dGVkIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMzI0MTlhMGJmNWI3NTIzZjJlNTg5NzNkNmNkNWZk
MjA4ODJiMDI2MC4uZmI3YjA1N2I2NGU5MTFiYmJiYTA2NzI1MjAxMTZiMmFhZTA3NWRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC03NTUsMTUgKzc1NSwxNiBAQCB2b2lkIFBhZ2U6OnNldERlYnVn
Z2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQogR3JhcGhpY3NDb250ZXh0M0QqIFBhZ2U6OnNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEKCkKIHsKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FO
VkFTKQotICAgIGlmICghbV9zaGFyZWRHcmFwaGljc0NvbnRleHQzRCkgeworICAgIHN0YXRpYyBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IHNfc2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q7CisgICAg
aWYgKCFzX3NoYXJlZEdyYXBoaWNzQ29udGV4dDNEKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHI7CiAgICAgICAgIGF0dHIuZGVwdGggPSBmYWxzZTsKICAgICAg
ICAgYXR0ci5zdGVuY2lsID0gdHJ1ZTsKICAgICAgICAgYXR0ci5hbnRpYWxpYXMgPSBmYWxzZTsK
ICAgICAgICAgYXR0ci5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gZmFsc2U7IC8vIENhbnZh
cyBjb250ZXh0cyBjYW4gbm90IGhhbmRsZSBsb3N0IGNvbnRleHRzLgotICAgICAgICBtX3NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyLCBjaHJv
bWUoKSk7CisgICAgICAgIHNfc2hhcmVkR3JhcGhpY3NDb250ZXh0M0QgPSBHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKGF0dHIsIGNocm9tZSgpKTsKICAgICB9Ci0gICAgcmV0dXJuIG1fc2hhcmVk
R3JhcGhpY3NDb250ZXh0M0QuZ2V0KCk7CisgICAgcmV0dXJuIHNfc2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QuZ2V0KCk7CiAjZWxzZSAvLyAhRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAg
ICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAxZTAzYWFkZGRmYzM3YjFmMWJj
YzJiNzMwZmZkYjczYjNlZGYwZTUxLi45YzYxOThjMzhhM2Y4MDk2MGVhYmU2YmU3MWEwNmVkZjI3
MmY5NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzI0LDEwICszMjQsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgICAgICBPd25QdHI8
RHJhZ0NhcmV0Q29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCi0jaWYgRU5BQkxF
KEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBtX3NoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwotI2VuZGlmCi0gICAgICAgIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgICAgIE93blB0cjxEcmFnQ29udHJvbGxlcj4gbV9kcmFnQ29u
dHJvbGxlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggMmM0NzNhMTAxNDYyNmYwNTA2NzAzNTU1MzY2ODYzMWY2NGYxMWNkMS4uMjFkMDEzYWQ2Mzgz
MTYzNGI5NWIyMTg1ZTk0M2M2ZDk3OWJiOWI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCkBAIC01NCw4ICs1NCw2IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2Fu
dmFzMkRMYXllckNocm9taXVtKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIsIEdyYXBoCiAK
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpCiB7Ci0gICAg
aWYgKG1fdGV4dHVyZUlkKQotICAgICAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5kZWxldGVU
ZXh0dXJlKG1fdGV4dHVyZUlkKTsKICAgICBpZiAobV9kcmF3aW5nQnVmZmVyICYmIGxheWVyUmVu
ZGVyZXIoKSkKICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENvbnRleHQobV9k
cmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpLmdldCgpKTsKIH0KQEAgLTcyLDI3ICs3
MCw4IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkKIHsKICAgICBpZiAoIW1fY29udGVudHNEaXJ0eSB8fCAhZHJhd3NDb250ZW50KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpZiAobV90ZXh0dXJlQ2hhbmdlZCkgeyAvLyBXZSBoYXZlIHRv
IGdlbmVyYXRlIGEgbmV3IGJhY2tpbmcgdGV4dHVyZS4KLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwotICAgICAgICBpZiAobV90ZXh0
dXJlSWQpCi0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVUZXh0dXJlKG1fdGV4dHVyZUlkKTsK
LSAgICAgICAgbV90ZXh0dXJlSWQgPSBjb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgICAg
IGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKLSAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IG1fdGV4dHVyZUlkKTsKLSAgICAgICAgSW50U2l6ZSBzaXplID0gbV9kcmF3aW5nQnVmZmVyLT5z
aXplKCk7Ci0gICAgICAgIGNvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7Ci0gICAgICAgIC8vIFNldCB0aGUgbWluLW1hZyBm
aWx0ZXJzIHRvIGxpbmVhciBhbmQgd3JhcCBtb2RlcyB0byBHcmFwaGljc0NvbnRleHQzRDo6Q0xB
TVBfVE9fRURHRQotICAgICAgICAvLyB0byBnZXQgYXJvdW5kIE5QT1QgdGV4dHVyZSBsaW1pdGF0
aW9ucyBvZiBHTEVTLgotICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVS
LCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICAgICAgY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RP
X0VER0UpOwotICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNz
Q29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICAgICAgbV90ZXh0dXJlQ2hhbmdlZCA9IGZh
bHNlOwotICAgICAgICAvLyBUaGUgZmx1c2goKSBoZXJlIGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2Ug
aGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgdGV4dHVyZSBjcmVhdGVkIGluIHRoaXMKLSAgICAg
ICAgLy8gY29udGV4dCAodGhlIGNvbXBvc2l0b3IgY29udGV4dCkgaXMgYWN0dWFsbHkgY3JlYXRl
ZCBieSB0aGUgc2VydmljZSBzaWRlIGJlZm9yZSB0aGUgY2hpbGQgY29udGV4dAotICAgICAgICAv
LyBhdHRlbXB0cyB0byB1c2UgaXQgKGluIHB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIpLgotICAgICAg
ICBjb250ZXh0LT5mbHVzaCgpOwotICAgIH0KKyAgICBpZiAobV90ZXh0dXJlQ2hhbmdlZCkKKyAg
ICAgICAgbV90ZXh0dXJlSWQgPSBtX2RyYXdpbmdCdWZmZXItPnBsYXRmb3JtQ29sb3JCdWZmZXIo
KTsKICAgICAvLyBVcGRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSB0ZXh0dXJlIHVzZWQgYnkgdGhl
IGNvbXBvc2l0b3IuCiAgICAgaWYgKG1fY29udGVudHNEaXJ0eSkgewogICAgICAgICBtX2RyYXdp
bmdCdWZmZXItPnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwCmluZGV4IGM5MDRmYjRlYTUwNzdlNTNhMzM1Y2U3NGMxMGZlZjZkMTZi
ZjUwNjguLmVlYTNhNWNmMDFlZTBkNjNjZmQwYTcxYjY3NmZmMzc1MjVhM2JlNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZm
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcApAQCAtMzIsOSArMzIsNyBAQAogCiAjaW5j
bHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogCi0jaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotCiAjaWYgVVNFKFNLSUEpCiAjaW5j
bHVkZSAiR3JDb250ZXh0LmgiCiAjZW5kaWYKQEAgLTYyLDcgKzYwLDYgQEAgc3RhdGljIHVuc2ln
bmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBJbnRTaXplJgogICAgIHJldHVybiBvZmZzY3JlZW5Db2xvclRleHR1cmU7CiB9CiAKLQogRHJh
d2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwK
QEAgLTgyLDEwICs3OSw2IEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsCiAgICAgLCBtX2dyQ29udGV4dCgwKQogI2VuZGlmCiB7Ci0gICAg
aWYgKCFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2Nv
cHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZSIpKSB7Ci0gICAgICAgIG1fY29udGV4dC5jbGVh
cigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIG1fZmJvID0gY29udGV4dC0+Y3JlYXRl
RnJhbWVidWZmZXIoKTsKICAgICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgbV9jb2xvckJ1ZmZlciA9IGdlbmVyYXRl
Q29sb3JUZXh0dXJlKGNvbnRleHQsIHNpemUpOwpAQCAtMTE5LDE2ICsxMTIsMTAgQEAgdm9pZCBE
cmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCkKICAgICAgICAgbV9jYWxsYmFj
ay0+d2lsbFB1Ymxpc2goKTsKICAgICBpZiAobXVsdGlzYW1wbGUoKSkKICAgICAgICAgY29tbWl0
KCk7Ci0gICAgdW5zaWduZWQgcGFyZW50VGV4dHVyZSA9IG1fcGxhdGZvcm1MYXllci0+dGV4dHVy
ZUlkKCk7Ci0gICAgLy8gV2UgZG8gdGhlIGNvcHkgaW4gdGhlIGNhbnZhcycgKGNoaWxkKSBjb250
ZXh0IHNvIHRoYXQgaXQgZXhlY3V0ZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgcmVsYXRpdmUgdG8K
LSAgICAvLyBvdGhlciBjb21tYW5kcyBpbiB0aGUgY2hpbGQgY29udGV4dC4gVGhpcyBlbnN1cmVz
IHRoYXQgdGhlIHBhcmVudCB0ZXh0dXJlIGFsd2F5cyBjb250YWlucyBhIGNvbXBsZXRlCi0gICAg
Ly8gZnJhbWUgYW5kIG5vdCBzb21lIGludGVybWVkaWF0ZSByZXN1bHQuCi0gICAgbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICNpZiBVU0UoU0tJQSkKICAgICBpZiAobV9nckNvbnRl
eHQpCiAgICAgICAgIG1fZ3JDb250ZXh0LT5mbHVzaCgwKTsKICNlbmRpZgotICAgIHN0YXRpY19j
YXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT5j
b3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKG1fY29sb3JCdWZmZXIsIHBhcmVudFRl
eHR1cmUpOwogICAgIG1fY29udGV4dC0+Zmx1c2goKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVu
c2lvbnMzRENocm9taXVtLmgKaW5kZXggZDc4ZmMxY2NiYmM1OTVkOTUyMWM4MDllYzdiMGM2YTU3
MjczMWE5OS4uMzc2M2Y3YjU5ODI3YTA1ZGQxNjA0NjM2ZmJjNGFhYzRjMGJmYmU3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCkBAIC00MCw3ICs0MCw2IEBAIHB1YmxpYzoKICAg
ICAvLyAgIEdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUgIDogaW5kaWNhdGluZyB0aGF0IHRleHR1
cmVzL3JlbmRlcmJ1ZmZlcnMgYXJlIGFsd2F5cyBpbml0aWFsaXplZCBiZWZvcmUgcmVhZC93cml0
ZS4KICAgICAvLyAgIEdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJzIDogaW5kaWNhdGluZyBhIEdM
IGVycm9yIGlzIGdlbmVyYXRlZCBmb3Igb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuCiAg
ICAgLy8gICBHTF9DSFJPTUlVTV9tYXBfc3ViCi0gICAgLy8gICBHTF9DSFJPTUlVTV9jb3B5X3Rl
eHR1cmVfdG9fcGFyZW50X3RleHR1cmUKICAgICAvLyAgIEdMX0NIUk9NSVVNX3N3YXBidWZmZXJz
X2NvbXBsZXRlX2NhbGxiYWNrCiAgICAgLy8gICBHTF9DSFJPTUlVTV9yYXRlX2xpbWl0X29mZnNj
cmVlbl9jb250ZXh0CiAKQEAgLTY4LDkgKzY3LDYgQEAgcHVibGljOgogICAgIHZvaWQqIG1hcFRl
eFN1YkltYWdlMkRDSFJPTUlVTSh1bnNpZ25lZCB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZz
ZXQsIGludCB5b2Zmc2V0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1hdCwg
dW5zaWduZWQgdHlwZSwgdW5zaWduZWQgYWNjZXNzKTsKICAgICB2b2lkIHVubWFwVGV4U3ViSW1h
Z2UyRENIUk9NSVVNKGNvbnN0IHZvaWQqKTsKIAotICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4
dHVyZV90b19wYXJlbnRfdGV4dHVyZQotICAgIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1
cmVDSFJPTUlVTSh1bnNpZ25lZCB0ZXh0dXJlLCB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlKTsKLQog
ICAgIC8vIEdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrCiAgICAgY2xh
c3MgU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewogICAgIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTI4M2UyNTBjYmJmMDUxMjc0NmVlNjg1MGY5ODNh
MzZhMzYwZTJmMy4uNTkwNWM1OTA5NGE0NmE0ZDMyOWFmMGI3NzYxMzMxYzMwNjI0MjdkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wOC0wMiAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
QWNjZWxlcmF0ZWQgY2FudmFzIGJyZWFrcyB3aGVuIG1vdmluZyBjYW52YXNlcyBvciByZXNvdXJj
ZXMgYmV0d2VlbiBQYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgcGx1bWJpbmcgZm9yIGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlIGV4
dGVuc2lvbiwgaXQncyBubyBsb25nZXIgdXNlZCBvciBuZWVkZWQuCisKKyAgICAgICAgKiBwdWJs
aWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvRXh0ZW5zaW9uczNEQ2hy
b21pdW0uY3BwOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoK
KyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorCiAyMDExLTA4LTAy
ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgbWFy
ayBTZWxlY3RQb3B1cE1lbnVUZXN0LlNlbGVjdEl0ZW1LZXlFdmVudCBhcyBmbGFreSwgZ2FyZGVu
ZXIgc3R1ZmYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJH
cmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaAppbmRleCA3NGUzNzExMzRmNWUzZDEyZjFkMTAxYjllNWY2NmUwZDM0
N2U0Y2FhLi44MWE4YmQ1ZWEyYzkyMzk2NGJiOGE2NWI4YzE2ZGM1ZTBiYTVkM2YwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgKQEAgLTE2Nyw5ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkKiBtYXBUZXhT
dWJJbWFnZTJEQ0hST01JVU0oV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNE
aW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6
ZWkgaGVpZ2h0LCBXR0MzRGVudW0gZm9ybWF0LCBXR0MzRGVudW0gdHlwZSwgV0dDM0RlbnVtIGFj
Y2VzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShj
b25zdCB2b2lkKikgPSAwOwogCi0gICAgLy8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlX3RvX3Bh
cmVudF90ZXh0dXJlCi0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJl
Q0hST01JVU0oV2ViR0xJZCB0ZXh0dXJlLCBXZWJHTElkIHBhcmVudFRleHR1cmUpID0gMDsKLQog
ICAgIC8vIEdMX0NIUk9NSVVNX3JlcXVlc3RfZXh0ZW5zaW9uCiAgICAgdmlydHVhbCBXZWJTdHJp
bmcgZ2V0UmVxdWVzdGFibGVFeHRlbnNpb25zQ0hST01JVU0oKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RFeHRlbnNpb25DSFJPTUlVTShjb25zdCBjaGFyKikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCmluZGV4
IDJmYjU4ZjM0NzEwZDJiYTBjNzllZWI3YzEzNGE3MzBjMWJhZWJkYjguLjI2OGYzYzY1NjIzMjQ0
MTZmOWExZmYzM2IyZDY5Y2RhNzhjYTk2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKQEAgLTk3LDExICs5Nyw2IEBAIHZv
aWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNvbnN0
IHZvaWQqIGRhdGEpCiAgICAgbV9pbnRlcm5hbC0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0o
ZGF0YSk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9QYXJl
bnRUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4dHVyZSwgdW5zaWduZWQgcGFyZW50VGV4dHVy
ZSkKLXsKLSAgICBtX2ludGVybmFsLT5jb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVN
KHRleHR1cmUsIHBhcmVudFRleHR1cmUpOwotfQotCiBQbGF0Zm9ybTNET2JqZWN0IEV4dGVuc2lv
bnMzRENocm9taXVtOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwCmluZGV4IGEzMDk2NTZjMWZmMWY2NGM1ZjEzMTZlZTIzZTgzMGVjMGRmMzFh
NDguLmJhNmU3MDBlOWUyY2QyYTJhMDI2ZWQ4MDIzOTAyMmQ3MmY5NWExNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwCkBAIC04MzIsMTIgKzgzMiw2IEBAIERFTEVHQVRFX1RPX0lNUExfMSh1bm1hcEJ1ZmZl
clN1YkRhdGFDSFJPTUlVTSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzlSKG1hcFRl
eFN1YkltYWdlMkRDSFJPTUlVTSwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQs
IEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCB2b2lk
KikKIERFTEVHQVRFX1RPX0lNUExfMSh1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSwgY29uc3Qg
dm9pZCopCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29weVRleHR1cmVUb1Bh
cmVudFRleHR1cmVDSFJPTUlVTShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIFBsYXRmb3JtM0RP
YmplY3QgcGFyZW50VGV4dHVyZSkKLXsKLSAgICBtX2ltcGwtPnNldFBhcmVudENvbnRleHQobV93
ZWJWaWV3SW1wbC0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7Ci0gICAgbV9pbXBsLT5jb3B5VGV4dHVy
ZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHRleHR1cmUsIHBhcmVudFRleHR1cmUpOwotfQotCiBE
RUxFR0FURV9UT19JTVBMXzEwKGJsaXRGcmFtZWJ1ZmZlckNIUk9NSVVNLCBHQzNEaW50LCBHQzNE
aW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50
LCBHQzNEYml0ZmllbGQsIEdDM0RlbnVtKQogREVMRUdBVEVfVE9fSU1QTF81KHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEZW51
bSwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAppbmRleCBlNTg0MzY5NjNmODlh
NzMzZDdmNzM5YWVjYTZlMmFkNDEyZmI0ODI3Li4xNmE2OWQ1MTJkZmRlY2FjMDQwNGNlZGYzYWU0
ZTM0NjFjMTg4YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCkBAIC0yNzIsMTAgKzI3Miw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkKiBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdD
M0RlbnVtIGFjY2Vzcyk7CiAgICAgdm9pZCB1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShjb25z
dCB2b2lkKik7CiAKLSAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3Rl
eHR1cmUKLSAgICBib29sIHN1cHBvcnRzQ29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlV
TSgpOwotICAgIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTShQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmUsIFBsYXRmb3JtM0RPYmplY3QgcGFyZW50VGV4dHVyZSk7Ci0KICAg
ICAvLyBHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQogICAgIHZvaWQgYmxpdEZy
YW1lYnVmZmVyQ0hST01JVU0oR0MzRGludCBzcmNYMCwgR0MzRGludCBzcmNZMCwgR0MzRGludCBz
cmNYMSwgR0MzRGludCBzcmNZMSwgR0MzRGludCBkc3RYMCwgR0MzRGludCBkc3RZMCwgR0MzRGlu
dCBkc3RYMSwgR0MzRGludCBkc3RZMSwgR0MzRGJpdGZpZWxkIG1hc2ssIEdDM0RlbnVtIGZpbHRl
cik7CiAgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVDSFJPTUlVTShHQzNE
ZW51bSB0YXJnZXQsIEdDM0RzaXplaSBzYW1wbGVzLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102957</attachid>
            <date>2011-08-04 12:30:07 -0700</date>
            <delta_ts>2011-08-04 14:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65402-20110804123005.patch</filename>
            <type>text/plain</type>
            <size>32776</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzMTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZmZjOGFlNjlkMjZiMmM1
M2QwYzU1MTRlYTlhOWRmZDU1NzEyOTkzLi4wNDNhM2VlMGNkZTU2NzlhYjdiMjYxZThlZWJkYjEy
MGRiMWM2ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMDMgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFj
Y2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3ZpbmcgY2FudmFzZXMgb3IgcmVzb3VyY2Vz
IGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIG9uZSBzaGFyZWQgR3JhcGhpY3NDb250ZXh0M0QgZm9yIHRoZSB3aG9sZSBwcm9j
ZXNzIGluc3RlYWQgb2Ygb25lIHBlciBQYWdlIGFzIGNhbnZhc2VzIGNhbiBtb3ZlIGJldHdlZW4K
KyAgICAgICAgcGFnZXMgYW5kIGRpcmVjdGx5IGRyYXcgaW50byBjb250ZXh0cyBpbiBkaWZmZXJl
bnQgcGFnZXMuICBBbHNvIHN3aXRjaGVzIERyYXdpbmdCdWZmZXJDaHJvbWl1bSBvdmVyIHRvIHVz
ZSBhCisgICAgICAgIGRpcmVjdGx5IHNoYXJlZCB0aGUgY29sb3IgYXR0YWNobWVudCBpbnN0ZWFk
IG9mIGNvcHlpbmcgaXQgdG8gYSBzZXBhcmF0ZSB0ZXh0dXJlIGFuZCByZW1vdmVzIHRoZSBub3ct
dW5uZWNlc3NhcnkKKyAgICAgICAgRHJhd2luZ0J1ZmZlcjo6ZGlkUmVzZXQoKSBjYWxsLgorCisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp+Q2FudmFzMkRMYXllckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06
OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnNl
dERyYXdpbmdCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJDaHJv
bWl1bTo6Q2FudmFzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdp
bmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKwogMjAx
MS0wOC0wMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IHdlYmFyY2hpdmUvbG9hZGluZy9taXNzaW5nLWRhdGEuaHRtbCBpcyBmYWlsaW5nIG9uIE1hYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDA4MzYxYjY0ZTQ2Y2M2MmQxMzNkMWRjOWI4ODJmYWJmZDgyODg5
ZGQuLmJkMmY4OWE0NzkyZmIxYmE1OWQxODVhOWY3NzljNzMwYjVmNDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTM2NDcsNiArMzY0Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1NoYWRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFk
ZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNz
Q29udGV4dDNELmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9UZXh0dXJlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCmluZGV4IDRlZTk2MzU4MDU3NGQ4OWQ3NDg3MzhjMTlmYzYyYjI2ODUx
Y2M3NzUuLjZlZGI4MzgyYjUyZGZmNGY3OTYzYTQzODM1YjdkMWNlMjVlNDI3OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2VuZGlmCkBAIC0xNDIsOSArMTQzLDYg
QEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoSFRN
TENhbnZhc0VsZW1lbnQqIGNhbnZhcywgYm8KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
CiAgICAgLCBtX3VzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSh1c2VzRGFzaGJvYXJkQ29t
cGF0aWJpbGl0eU1vZGUpCiAjZW5kaWYKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQotICAgICwgbV9jb250ZXh0M0QoMCkKLSNlbmRpZgogewogI2lmICFFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpCiAgICAgQVNTRVJUX1VOVVNFRCh1c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1v
ZGUsICF1c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUpOwpAQCAtMTk1LDcgKzE5Myw3IEBA
IGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkg
Y29uc3QKIHsKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQogICAgIGlmIChtX2Nv
bnRleHQzRCkKLSAgICAgICAgcmV0dXJuIG1fY29udGV4dDNELT5wYWludHNJbnRvQ2FudmFzQnVm
ZmVyKCk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQzRC0+Y29udGV4dCgpLT5wYWludHNJbnRv
Q2FudmFzQnVmZmVyKCk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwNTAsNyAr
MjA0OCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNldEFjY2VsZXJhdGlv
bigpCiAKICAgICBpZiAoIW1fY29udGV4dDNEKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBjYW52
YXMoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgICAgICBtX2NvbnRleHQzRCA9IHBhZ2UtPnNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgICAgIG1fY29udGV4dDNEID0gU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShwYWdlLT5jaHJvbWUoKSk7CiAgICAgICAgIGlmICghbV9j
b250ZXh0M0QpIHsKICAgICAgICAgICAgIGNsZWFyQWNjZWxlcmF0aW9uKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yMDYzLDE0ICsyMDYxLDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpyZXNldEFjY2VsZXJhdGlvbigpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewotICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBtX2NvbnRleHQzRC0+
Y3JlYXRlRHJhd2luZ0J1ZmZlcihjYW52YXMoKS0+c2l6ZSgpKTsKKyAgICAgICAgbV9kcmF3aW5n
QnVmZmVyID0gbV9jb250ZXh0M0QtPmNvbnRleHQoKS0+Y3JlYXRlRHJhd2luZ0J1ZmZlcihjYW52
YXMoKS0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFtX2RyYXdpbmdCdWZmZXIpIHsKICAgICAgICAg
ICAgIGNsZWFyQWNjZWxlcmF0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBjdHgtPnNldEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4dDNELmdldCgp
LCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIGNhbnZhcygpLT5zaXplKCkpOworICAgIGN0eC0+c2V0
R3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0M0QtPmNvbnRleHQoKSwgbV9kcmF3aW5nQnVmZmVy
LmdldCgpLCBjYW52YXMoKS0+c2l6ZSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IGRk
YjgwYTdhNWNiNmIwNmI5MmU5YjU3ZDI5MjIxZWRlMjk4YmI2MDEuLmFmNjJiM2M0NmI5ZmVkNmVm
NGYwZmM1YjQ1NDVkMjFhZDJiYjMzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0zNiw3ICszNiw2IEBACiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLQog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJHcmFwaGljc0xheWVy
LmgiCiAjZW5kaWYKQEAgLTU2LDcgKzU1LDcgQEAgY2xhc3MgVGV4dE1ldHJpY3M7CiAKICNpZiBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQogY2xhc3MgRHJhd2luZ0J1ZmZlcjsKLWNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q7CiAjZW5k
aWYKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKQEAgLTMwOCw3ICszMDcsNyBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICBSZWZQdHI8RHJh
d2luZ0J1ZmZlcj4gbV9kcmF3aW5nQnVmZmVyOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gbV9jb250ZXh0M0Q7CisgICAgT3duUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBtX2Nv
bnRleHQzRDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMzI0MTlhMGJmNWI3
NTIzZjJlNTg5NzNkNmNkNWZkMjA4ODJiMDI2MC4uZGQ4ZDc2ZjQzNzg5YTNlZDk5NmNhNWNmMDBh
NTMyOWQ1OTBkZGNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC03NSwxMCArNzUsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICNpbmNs
dWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKQEAgLTc1
MiwyMyArNzQ4LDYgQEAgdm9pZCBQYWdlOjpzZXREZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1
Z2dlcikKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5hdHRhY2hEZWJ1Z2dlcihtX2RlYnVnZ2Vy
KTsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0QqIFBhZ2U6OnNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
KCkKLXsKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIGlmICghbV9zaGFy
ZWRHcmFwaGljc0NvbnRleHQzRCkgewotICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXRlcyBhdHRyOwotICAgICAgICBhdHRyLmRlcHRoID0gZmFsc2U7Ci0gICAgICAgIGF0dHIuc3Rl
bmNpbCA9IHRydWU7Ci0gICAgICAgIGF0dHIuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgICAgIGF0
dHIuY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IGZhbHNlOyAvLyBDYW52YXMgY29udGV4dHMg
Y2FuIG5vdCBoYW5kbGUgbG9zdCBjb250ZXh0cy4KLSAgICAgICAgbV9zaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0ciwgY2hyb21lKCkpOwotICAg
IH0KLSAgICByZXR1cm4gbV9zaGFyZWRHcmFwaGljc0NvbnRleHQzRC5nZXQoKTsKLSNlbHNlIC8v
ICFFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIHJldHVybiAwOwotI2VuZGlmCi19
Ci0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiBTdG9yYWdlTmFtZXNwYWNlKiBQYWdlOjpzZXNz
aW9uU3RvcmFnZShib29sIG9wdGlvbmFsQ3JlYXRlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAxZTAz
YWFkZGRmYzM3YjFmMWJjYzJiNzMwZmZkYjczYjNlZGYwZTUxLi42MTE2Zjg4ZmNhODJmN2VjMzc4
YzdkNjA1MTgyOTUxODc0YzBhNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODEsNyArODEsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKICAgICBjbGFz
cyBTY3JvbGxhYmxlQXJlYTsKICAgICBjbGFzcyBTZXR0aW5nczsKLSAgICBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKICAgICBjbGFzcyBTcGVlY2hJbnB1dDsKICAgICBjbGFzcyBTcGVlY2hJbnB1
dENsaWVudDsKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCkBAIC0yNjYsOCArMjY1LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCBhbGxWaXNpdGVkU3RhdGVDaGFu
Z2VkKFBhZ2VHcm91cCopOwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdGVkU3RhdGVDaGFuZ2Vk
KFBhZ2VHcm91cCosIExpbmtIYXNoIHZpc2l0ZWRIYXNoKTsKIAotICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRCogc2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoKTsKLQogI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKICAgICAgICAgU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2UoYm9vbCBvcHRp
b25hbENyZWF0ZSA9IHRydWUpOwogICAgICAgICB2b2lkIHNldFNlc3Npb25TdG9yYWdlKFBhc3NS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4pOwpAQCAtMzI0LDEwICszMjEsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgICAgICBPd25Q
dHI8RHJhZ0NhcmV0Q29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCi0jaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBtX3NoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwotI2VuZGlmCi0gICAgICAgIAogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiAgICAgICAgIE93blB0cjxEcmFnQ29udHJvbGxlcj4gbV9kcmFn
Q29udHJvbGxlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggMmM0NzNhMTAxNDYyNmYwNTA2NzAzNTU1MzY2ODYzMWY2NGYxMWNkMS4uN2E4ZTBiZmE3
YTJjYzBiMTU4MjI4YzczYjk0ZTVlZmI5MmY4MzJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwCkBAIC01NCw4ICs1NCw2IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6
Q2FudmFzMkRMYXllckNocm9taXVtKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIsIEdyYXBo
CiAKIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpCiB7Ci0g
ICAgaWYgKG1fdGV4dHVyZUlkKQotICAgICAgICBsYXllclJlbmRlcmVyQ29udGV4dCgpLT5kZWxl
dGVUZXh0dXJlKG1fdGV4dHVyZUlkKTsKICAgICBpZiAobV9kcmF3aW5nQnVmZmVyICYmIGxheWVy
UmVuZGVyZXIoKSkKICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENvbnRleHQo
bV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpLmdldCgpKTsKIH0KQEAgLTcyLDI3
ICs3MCw2IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKCkKIHsKICAgICBpZiAoIW1fY29udGVudHNEaXJ0eSB8fCAhZHJhd3NDb250ZW50KCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobV90ZXh0dXJlQ2hhbmdlZCkgeyAvLyBXZSBoYXZl
IHRvIGdlbmVyYXRlIGEgbmV3IGJhY2tpbmcgdGV4dHVyZS4KLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwotICAgICAgICBpZiAobV90
ZXh0dXJlSWQpCi0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVUZXh0dXJlKG1fdGV4dHVyZUlk
KTsKLSAgICAgICAgbV90ZXh0dXJlSWQgPSBjb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Ci0gICAg
ICAgIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsK
LSAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIG1fdGV4dHVyZUlkKTsKLSAgICAgICAgSW50U2l6ZSBzaXplID0gbV9kcmF3aW5nQnVmZmVy
LT5zaXplKCk7Ci0gICAgICAgIGNvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7Ci0gICAgICAgIC8vIFNldCB0aGUgbWluLW1h
ZyBmaWx0ZXJzIHRvIGxpbmVhciBhbmQgd3JhcCBtb2RlcyB0byBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRQotICAgICAgICAvLyB0byBnZXQgYXJvdW5kIE5QT1QgdGV4dHVyZSBsaW1p
dGF0aW9ucyBvZiBHTEVTLgotICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklM
VEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICAgICAgY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAg
IGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1Q
X1RPX0VER0UpOwotICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBo
aWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICAgICAgbV90ZXh0dXJlQ2hhbmdlZCA9
IGZhbHNlOwotICAgICAgICAvLyBUaGUgZmx1c2goKSBoZXJlIGlzIHJlcXVpcmVkIGJlY2F1c2Ug
d2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgdGV4dHVyZSBjcmVhdGVkIGluIHRoaXMKLSAg
ICAgICAgLy8gY29udGV4dCAodGhlIGNvbXBvc2l0b3IgY29udGV4dCkgaXMgYWN0dWFsbHkgY3Jl
YXRlZCBieSB0aGUgc2VydmljZSBzaWRlIGJlZm9yZSB0aGUgY2hpbGQgY29udGV4dAotICAgICAg
ICAvLyBhdHRlbXB0cyB0byB1c2UgaXQgKGluIHB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIpLgotICAg
ICAgICBjb250ZXh0LT5mbHVzaCgpOwotICAgIH0KICAgICAvLyBVcGRhdGUgdGhlIGNvbnRlbnRz
IG9mIHRoZSB0ZXh0dXJlIHVzZWQgYnkgdGhlIGNvbXBvc2l0b3IuCiAgICAgaWYgKG1fY29udGVu
dHNEaXJ0eSkgewogICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnB1Ymxpc2hUb1BsYXRmb3JtTGF5
ZXIoKTsKQEAgLTEwMCwxNCArNzcsOSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygpCiAgICAgfQogfQogCi12b2lkIENhbnZhczJETGF5ZXJD
aHJvbWl1bTo6c2V0VGV4dHVyZUNoYW5nZWQoKQotewotICAgIG1fdGV4dHVyZUNoYW5nZWQgPSB0
cnVlOwotfQotCiB1bnNpZ25lZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnRleHR1cmVJZCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fdGV4dHVyZUlkOworICAgIHJldHVybiBtX2RyYXdpbmdCdWZm
ZXIgPyBtX2RyYXdpbmdCdWZmZXItPnBsYXRmb3JtQ29sb3JCdWZmZXIoKSA6IDA7CiB9CiAKIHZv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXREcmF3aW5nQnVmZmVyKERyYXdpbmdCdWZmZXIq
IGRyYXdpbmdCdWZmZXIpCkBAIC0xMTcsNyArODksNiBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6c2V0RHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQogICAg
ICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENvbnRleHQobV9kcmF3aW5nQnVm
ZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpLmdldCgpKTsKIAogICAgICAgICBtX2RyYXdpbmdCdWZm
ZXIgPSBkcmF3aW5nQnVmZmVyOwotICAgICAgICBtX3RleHR1cmVDaGFuZ2VkID0gdHJ1ZTsKIAog
ICAgICAgICBpZiAoZHJhd2luZ0J1ZmZlciAmJiBsYXllclJlbmRlcmVyKCkpCiAgICAgICAgICAg
ICBsYXllclJlbmRlcmVyKCktPmFkZENoaWxkQ29udGV4dChtX2RyYXdpbmdCdWZmZXItPmdyYXBo
aWNzQ29udGV4dDNEKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApp
bmRleCBkZGVlZWY1YjExNzE5YTdjNGI0ODQwYzEwMjNlYTU2YjdkOTBjMjI4Li43Mjg2Nzk2MzY1
MjRlNTgyZDkxMTU2YjUzZWVjNmI0ZDNmMzRiOTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKIAogICAgIHZvaWQgc2V0VGV4dHVyZUNoYW5nZWQo
KTsKLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IHRleHR1cmVJZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVm
ZmVyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVy
Q2hyb21pdW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWM0Yjlm
MjA5MjhkZjNhMWY1MjVhMmYxNGM1YzIxYWVlNDcwYzVmOC4uYzQ5Njg1ZjAzY2IzNjJmYTk0NTk4
MDU4Mjc5ZjE0YjRhMDYzZTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQyLDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYW52YXNMYXllckNocm9t
aXVtOjpDYW52YXNMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiAg
ICAgOiBMYXllckNocm9taXVtKG93bmVyKQotICAgICwgbV90ZXh0dXJlQ2hhbmdlZCh0cnVlKQog
ICAgICwgbV90ZXh0dXJlSWQoMCkKICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKICAgICAsIG1fcHJl
bXVsdGlwbGllZEFscGhhKHRydWUpCkBAIC01OCwxMiArNTcsMTcgQEAgUGFzc1JlZlB0cjxDQ0xh
eWVySW1wbD4gQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogICAgIHJl
dHVybiBDQ0NhbnZhc0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiB9CiAKK3Vuc2lnbmVk
IENhbnZhc0xheWVyQ2hyb21pdW06OnRleHR1cmVJZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dGV4dHVyZUlkOworfQorCiB2b2lkIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXIpOwogCiAgICAgQ0NDYW52YXNMYXllckltcGwqIGNhbnZhc0xheWVyID0gc3Rh
dGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllcik7Ci0gICAgY2FudmFzTGF5ZXItPnNl
dFRleHR1cmVJZChtX3RleHR1cmVJZCk7CisgICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZCh0
ZXh0dXJlSWQoKSk7CiAgICAgY2FudmFzTGF5ZXItPnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwog
ICAgIGNhbnZhc0xheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEobV9wcmVtdWx0aXBsaWVkQWxw
aGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDIzMjMwYWMzYWQ5MDg3
MWI4NTQ1YmM2NTUzZDZiNTQ0NDI5NTJhZWYuLmY4MzYxMDQ1MDM5MDc0YmI0ZWFjMzg5YjVmZTJm
YTUzZDk5NTU2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKQEAgLTUxLDggKzUx
LDggQEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENhbnZhc0xheWVyQ2hyb21pdW0oR3JhcGhp
Y3NMYXllckNocm9taXVtKiBvd25lcik7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVy
VHlwZUFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gIkNhbnZhc0xheWVyIjsgfQorICAgIHZpcnR1
YWwgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Q7CiAKLSAgICBib29sIG1fdGV4dHVyZUNoYW5n
ZWQ7CiAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CiAgICAgYm9vbCBtX2hhc0FscGhhOwogICAg
IGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9t
aXVtLmNwcAppbmRleCBjOTA0ZmI0ZWE1MDc3ZTUzYTMzNWNlNzRjMTBmZWY2ZDE2YmY1MDY4Li5m
NzAzOTdlMjBjZmMzZWI3YTI5Mzg3YmUyZTNhY2Q5ZjFiNjgyN2MwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTMyLDkgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkRy
YXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLQogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkdy
Q29udGV4dC5oIgogI2VuZGlmCkBAIC02Miw3ICs2MCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBnZW5l
cmF0ZUNvbG9yVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6
ZSYKICAgICByZXR1cm4gb2Zmc2NyZWVuQ29sb3JUZXh0dXJlOwogfQogCi0KIERyYXdpbmdCdWZm
ZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQsCkBAIC04Miwx
MCArNzksNiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LAogICAgICwgbV9nckNvbnRleHQoMCkKICNlbmRpZgogewotICAgIGlmICghbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1
cmVfdG9fcGFyZW50X3RleHR1cmUiKSkgewotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KICAgICBtX2ZibyA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVm
ZmVyKCk7CiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIG1fY29sb3JCdWZmZXIgPSBnZW5lcmF0ZUNvbG9yVGV4
dHVyZShjb250ZXh0LCBzaXplKTsKQEAgLTExOSwyOCArMTEyLDE0IEBAIHZvaWQgRHJhd2luZ0J1
ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpCiAgICAgICAgIG1fY2FsbGJhY2stPndpbGxQ
dWJsaXNoKCk7CiAgICAgaWYgKG11bHRpc2FtcGxlKCkpCiAgICAgICAgIGNvbW1pdCgpOwotICAg
IHVuc2lnbmVkIHBhcmVudFRleHR1cmUgPSBtX3BsYXRmb3JtTGF5ZXItPnRleHR1cmVJZCgpOwot
ICAgIC8vIFdlIGRvIHRoZSBjb3B5IGluIHRoZSBjYW52YXMnIChjaGlsZCkgY29udGV4dCBzbyB0
aGF0IGl0IGV4ZWN1dGVzIGluIHRoZSBjb3JyZWN0IG9yZGVyIHJlbGF0aXZlIHRvCi0gICAgLy8g
b3RoZXIgY29tbWFuZHMgaW4gdGhlIGNoaWxkIGNvbnRleHQuIFRoaXMgZW5zdXJlcyB0aGF0IHRo
ZSBwYXJlbnQgdGV4dHVyZSBhbHdheXMgY29udGFpbnMgYSBjb21wbGV0ZQotICAgIC8vIGZyYW1l
IGFuZCBub3Qgc29tZSBpbnRlcm1lZGlhdGUgcmVzdWx0LgotICAgIG1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgaWYgKG1fZ3JDb250ZXh0KQogICAg
ICAgICBtX2dyQ29udGV4dC0+Zmx1c2goMCk7CiAjZW5kaWYKLSAgICBzdGF0aWNfY2FzdDxFeHRl
bnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKS0+Y29weVRleHR1
cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTShtX2NvbG9yQnVmZmVyLCBwYXJlbnRUZXh0dXJlKTsK
ICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBEcmF3aW5nQnVmZmVy
OjpkaWRSZXNldCgpCi17Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlm
IChtX3BsYXRmb3JtTGF5ZXIpCi0gICAgICAgIG1fcGxhdGZvcm1MYXllci0+c2V0VGV4dHVyZUNo
YW5nZWQoKTsKLSNlbmRpZgotfQotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
UGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25z
M0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCBkNzhmYzFjY2JiYzU5NWQ5NTIxYzgwOWVjN2Iw
YzZhNTcyNzMxYTk5Li4zNzYzZjdiNTk4MjdhMDVkZDE2MDQ2MzZmYmM0YWFjNGMwYmZiZTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRl
bnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTQwLDcgKzQwLDYgQEAgcHVibGlj
OgogICAgIC8vICAgR0xfQ0hST01JVU1fcmVzb3VyY2Vfc2FmZSAgOiBpbmRpY2F0aW5nIHRoYXQg
dGV4dHVyZXMvcmVuZGVyYnVmZmVycyBhcmUgYWx3YXlzIGluaXRpYWxpemVkIGJlZm9yZSByZWFk
L3dyaXRlLgogICAgIC8vICAgR0xfQ0hST01JVU1fc3RyaWN0X2F0dHJpYnMgOiBpbmRpY2F0aW5n
IGEgR0wgZXJyb3IgaXMgZ2VuZXJhdGVkIGZvciBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nl
cy4KICAgICAvLyAgIEdMX0NIUk9NSVVNX21hcF9zdWIKLSAgICAvLyAgIEdMX0NIUk9NSVVNX2Nv
cHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZQogICAgIC8vICAgR0xfQ0hST01JVU1fc3dhcGJ1
ZmZlcnNfY29tcGxldGVfY2FsbGJhY2sKICAgICAvLyAgIEdMX0NIUk9NSVVNX3JhdGVfbGltaXRf
b2Zmc2NyZWVuX2NvbnRleHQKIApAQCAtNjgsOSArNjcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCog
bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHVuc2lnbmVkIHRhcmdldCwgaW50IGxldmVsLCBpbnQg
eG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgZm9y
bWF0LCB1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBhY2Nlc3MpOwogICAgIHZvaWQgdW5tYXBUZXhT
dWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCopOwogCi0gICAgLy8gR0xfQ0hST01JVU1fY29w
eV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCi0gICAgdm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50
VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1cmUp
OwotCiAgICAgLy8gR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29tcGxldGVfY2FsbGJhY2sKICAg
ICBjbGFzcyBTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSB7CiAgICAgcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYmQ1MDY0MWI5Mjg2MzIwNjJh
MDNiNjlkMjgzNWU3NTJmYzA3ZGExNy4uM2ZhMDUzYTVlNzc4MjBhODI2Nzg5MmVhNTEzODI1ZmU1
MjY4ZTNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC00OSw2ICs0OSw3
IEBAIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNy
ZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qCiBXZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5
ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAgIDogQ2FudmFzTGF5
ZXJDaHJvbWl1bShvd25lcikKICAgICAsIG1fY29udGV4dCgwKQorICAgICwgbV90ZXh0dXJlQ2hh
bmdlZCh0cnVlKQogICAgICwgbV9jb250ZXh0U3VwcG9ydHNSYXRlTGltaXRpbmdFeHRlbnNpb24o
ZmFsc2UpCiAgICAgLCBtX3JhdGVMaW1pdGluZ1RpbWVyKHRoaXMsICZXZWJHTExheWVyQ2hyb21p
dW06OnJhdGVMaW1pdENvbnRleHQpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCAxODZlNWMxMzk4YjlhNjVkNDMxZmNhNDRlNDQz
N2JiNDMyYmQ5NjBjLi4xZTc1OGZiMWMxOWM5MTkzMDBkNTRlZDJjZDA2NGQ1NTgxOWUyMGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNzEsNiArNzEsNyBAQCBwcml2YXRlOgog
ICAgIC8vIHRvIHRoZSBsYXllci4gQmVjYXVzZSBvZiB0aGF0IEdyYXBoaWNzQ29udGV4dDNEJ3Mg
ZGVzdHJ1Y3RvciB3aWxsIHJlc2V0CiAgICAgLy8gbGF5ZXIncyBjb250ZXh0IHRvIDAuCiAgICAg
R3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICBib29sIG1fdGV4dHVyZUNoYW5nZWQ7
CiAgICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c1JhdGVMaW1pdGluZ0V4dGVuc2lvbjsKICAgICBU
aW1lcjxXZWJHTExheWVyQ2hyb21pdW0+IG1fcmF0ZUxpbWl0aW5nVGltZXI7CiAgICAgYm9vbCBt
X3RleHR1cmVVcGRhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCmluZGV4IDFkOGFjYWZmZmJkZGFmMzVmMGI1Njgy
MTdiODFmZWExY2I3ZTIxMTYuLjhiNTE1MDNjMTlmMjlhYWFlN2UwMjNkNWNhNDYzM2UxZjA3ZWFk
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3
aW5nQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
RHJhd2luZ0J1ZmZlci5jcHAKQEAgLTI2NCw4ICsyNjQsNiBAQCBib29sIERyYXdpbmdCdWZmZXI6
OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKICAgICBjbGVhckZyYW1lYnVmZmVyKCk7
CiAKLSAgICBkaWRSZXNldCgpOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCmluZGV4
IDYzN2RmMzdkYjJhOWY2YTQ1Y2NhN2QyNmMyNzViYTYwOGMwMTVmMjEuLjI5OTk5OTVmY2Y3ZDY2
ZWUzYzU5Njc4ODI5NmE4YWI3ZGQ3MmZiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaApAQCAtMTE1LDkgKzExNSw2IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgRHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IEludFNpemUmLCBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLCBib29sIHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCk7CiAgICAgCi0gICAgLy8gUGxhdGZv
cm0gc3BlY2lmaWMgZnVuY3Rpb24gY2FsbGVkIGFmdGVyIHJlc2V0KCkgc28gZWFjaCBwbGF0Zm9y
bSBjYW4gZG8gZXh0cmEgd29yayBpZiBuZWVkZWQKLSAgICB2b2lkIGRpZFJlc2V0KCk7Ci0KICAg
ICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICBJbnRTaXplIG1fc2l6
ZTsKICAgICBib29sIG1fbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdy
YXBoaWNzQ29udGV4dDNELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTg0NjI3MmUxNzFiNjllNjY5NDNlZWNk
ZTFiNWE3ZTFlNTE0MWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTaGFyZWRHcmFw
aGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2ludCBTaGFyZWRHcmFw
aGljc0NvbnRleHQzRDo6c19zaGFyZWRDb250ZXh0Q291bnQgPSAwOworUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6c19zaGFyZWRDb250ZXh0OworCitQ
YXNzT3duUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBTaGFyZWRHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlKEhvc3RXaW5kb3cqIHdpbmRvdykKK3sKKyAgICBpZiAoIXNfc2hhcmVkQ29udGV4
dCkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwor
ICAgICAgICBhdHRyaWJ1dGVzLmRlcHRoID0gZmFsc2U7CisgICAgICAgIGF0dHJpYnV0ZXMuc3Rl
bmNpbCA9IHRydWU7CisgICAgICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CisgICAg
ICAgIGF0dHJpYnV0ZXMuY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IGZhbHNlOyAvLyBDYW52
YXMgY29udGV4dHMgY2FuIG5vdCBoYW5kbGUgbG9zdCBjb250ZXh0cy4KKyAgICAgICAgc19zaGFy
ZWRDb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCB3aW5kb3cp
OworICAgIH0KKyAgICBpZiAoIXNfc2hhcmVkQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRChzX3No
YXJlZENvbnRleHQpKTsKK30KKworU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OlNoYXJlZEdyYXBo
aWNzQ29udGV4dDNEKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKK3sKKyAgICBzX3NoYXJlZENvbnRleHRDb3VudCsrOworfQor
CitTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6flNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCkKK3sK
KyAgICBzX3NoYXJlZENvbnRleHRDb3VudC0tOworICAgIGlmICghc19zaGFyZWRDb250ZXh0Q291
bnQpCisgICAgICAgIHNfc2hhcmVkQ29udGV4dC5jbGVhcigpOworfQorCit9CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0Nv
bnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdy
YXBoaWNzQ29udGV4dDNELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI4NzgzOGNlODE4ZWM3YmNmODdjNTI3MDBl
ZWJkNmZmMGYyZDAxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEX2gKKyNkZWZpbmUgU2hhcmVk
R3JhcGhpY3NDb250ZXh0M0RfaAorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QpOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGUoSG9z
dFdpbmRvdyopOworICAgIH5TaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpOworCisgICAgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRChQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IG1fY29udGV4dDsKKyAgICBzdGF0aWMgaW50IHNfc2hhcmVkQ29udGV4dENvdW50OworICAgIHN0
YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IHNfc2hhcmVkQ29udGV4dDsKK307CisKK30K
KworI2VuZGlmIC8vIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEX2gKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVy
TWFjLm1tCmluZGV4IDVjYzYxZmNjMTc4MjY4ZjgwYjU0YmJiOThmYjU1MzBkYTZhOGVkNWEuLjQ1
MGE3YzcwNzgzNTNlODE1ZWQ1NDE2MWY4NGVlODI0OTdlYWY0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZm
ZXJNYWMubW0KQEAgLTg0LDEwICs4NCw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVy
KCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERyYXdpbmdCdWZmZXI6OmRpZFJlc2V0KCkKLXsK
LX0KLQogUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCiB7CiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAKaW5k
ZXggNjhkY2I1NTIyOGE1NWJjNWJlNGEzZjNlZTU1NmMyMzBlMjExOTViNS4uNDM1Nzc2NTEzNDc3
NmE5OTE4ODZmZjhhZmU4N2E3ZDAxNGZjNjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAKQEAg
LTcxLDEwICs3MSw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVh
cigpOwogfQogCi12b2lkIERyYXdpbmdCdWZmZXI6OmRpZFJlc2V0KCkKLXsKLX0KLQogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6
OnBsYXRmb3JtTGF5ZXIoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0RyYXdpbmdCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0RyYXdpbmdCdWZmZXJHdGsuY3BwCmluZGV4IDUxMjBhM2M2ZGJjZTBl
MGExZDIzOGMwZjE2NTczMDc5NTc1NzA3N2IuLjI2ZDVkOTJkMGIzM2Q3NTgzMzgzNDlhNmQzNDVm
NDg2MGMwMTdiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9EcmF3aW5nQnVmZmVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvRHJhd2luZ0J1ZmZlckd0ay5jcHAKQEAgLTcxLDEwICs3MSw2IEBAIERyYXdp
bmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERyYXdp
bmdCdWZmZXI6OmRpZFJlc2V0KCkKLXsKLX0KLQogUGxhdGZvcm0zRE9iamVjdCBEcmF3aW5nQnVm
ZmVyOjpwbGF0Zm9ybUNvbG9yQnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb2xvckJ1
ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTkzNzRiMzI5YmZmZGIzZmZhNjJm
Y2YxNDM5Njk2YjRjY2M2Njk4Mi4uZjhjMTc5MmRlNzBlMWMzNGY4ZWM4ZDk1N2JlMTIwM2E4ZGRl
YTYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0w
OC0wMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gQWNjZWxlcmF0ZWQgY2FudmFzIGJyZWFrcyB3aGVuIG1vdmluZyBjYW52YXNlcyBv
ciByZXNvdXJjZXMgYmV0d2VlbiBQYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjU0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgcGx1bWJpbmcgZm9yIGNvcHlUZXh0dXJlVG9QYXJlbnRU
ZXh0dXJlIGV4dGVuc2lvbiwgaXQncyBubyBsb25nZXIgdXNlZCBvciBuZWVkZWQuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvRXh0ZW5z
aW9uczNEQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9t
aXVtLmNwcDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorCiAy
MDExLTA4LTAzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBbVGltZWxpbmVdIEhvdmVyIG9uIHBhaW50IGV2ZW50cyBhbmQgc2Vl
IHJlY3Qgb3V0bGluZSBhcm91bmQgdGhhdCBhcmVhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNzRlMzcxMTM0ZjVl
M2QxMmYxZDEwMWI5ZTVmNjZlMGQzNDdlNGNhYS4uODFhOGJkNWVhMmM5MjM5NjRiYjhhNjViOGMx
NmRjNWUwYmE1ZDNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xNjcsOSArMTY3LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCogbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKFdHQzNEZW51bSB0YXJnZXQs
IFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0Mz
RHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0Rl
bnVtIHR5cGUsIFdHQzNEZW51bSBhY2Nlc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXBU
ZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCopID0gMDsKIAotICAgIC8vIEdMX0NIUk9N
SVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZQotICAgIHZpcnR1YWwgdm9pZCBjb3B5
VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKFdlYkdMSWQgdGV4dHVyZSwgV2ViR0xJZCBw
YXJlbnRUZXh0dXJlKSA9IDA7Ci0KICAgICAvLyBHTF9DSFJPTUlVTV9yZXF1ZXN0X2V4dGVuc2lv
bgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uc0NIUk9NSVVN
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXh0ZW5zaW9uQ0hST01JVU0oY29uc3Qg
Y2hhciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVu
c2lvbnMzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lv
bnMzRENocm9taXVtLmNwcAppbmRleCAyZmI1OGYzNDcxMGQyYmEwYzc5ZWViN2MxMzRhNzMwYzFi
YWViZGI4Li4yNjhmM2M2NTYyMzI0NDE2ZjlhMWZmMzNiMmQ2OWNkYTc4Y2E5NmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3Bw
CkBAIC05NywxMSArOTcsNiBAQCB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjp1bm1hcFRleFN1
YkltYWdlMkRDSFJPTUlVTShjb25zdCB2b2lkKiBkYXRhKQogICAgIG1faW50ZXJuYWwtPnVubWFw
VGV4U3ViSW1hZ2UyRENIUk9NSVVNKGRhdGEpOwogfQogCi12b2lkIEV4dGVuc2lvbnMzRENocm9t
aXVtOjpjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1cmUs
IHVuc2lnbmVkIHBhcmVudFRleHR1cmUpCi17Ci0gICAgbV9pbnRlcm5hbC0+Y29weVRleHR1cmVU
b1BhcmVudFRleHR1cmVDSFJPTUlVTSh0ZXh0dXJlLCBwYXJlbnRUZXh0dXJlKTsKLX0KLQogUGxh
dGZvcm0zRE9iamVjdCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMo
KQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAppbmRleCBhMzA5NjU2YzFmZjFmNjRj
NWYxMzE2ZWUyM2U4MzBlYzBkZjMxYTQ4Li5iYTZlNzAwZTllMmNkMmEyYTAyNmVkODAyMzkwMjJk
NzJmOTVhMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGlj
c0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9H
cmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApAQCAtODMyLDEyICs4MzIsNiBAQCBERUxFR0FU
RV9UT19JTVBMXzEodW5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0sIGNvbnN0IHZvaWQqKQogREVM
RUdBVEVfVE9fSU1QTF85UihtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIEdDM0RlbnVtLCBHQzNE
aW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgR0MzRGVudW0sIEdD
M0RlbnVtLCBHQzNEZW51bSwgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzEodW5tYXBUZXhTdWJJ
bWFnZTJEQ0hST01JVU0sIGNvbnN0IHZvaWQqKQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0oUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0IHBhcmVudFRleHR1cmUpCi17Ci0gICAgbV9pbXBs
LT5zZXRQYXJlbnRDb250ZXh0KG1fd2ViVmlld0ltcGwtPmdyYXBoaWNzQ29udGV4dDNEKCkpOwot
ICAgIG1faW1wbC0+Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh0ZXh0dXJlLCBw
YXJlbnRUZXh0dXJlKTsKLX0KLQogREVMRUdBVEVfVE9fSU1QTF8xMChibGl0RnJhbWVidWZmZXJD
SFJPTUlVTSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0Mz
RGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGJpdGZpZWxkLCBHQzNEZW51bSkKIERFTEVHQVRF
X1RPX0lNUExfNShyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVDSFJPTUlVTSwgR0MzRGVu
dW0sIEdDM0RzaXplaSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRHNpemVpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFs
LmgKaW5kZXggZTU4NDM2OTYzZjg5YTczM2Q3ZjczOWFlY2E2ZTJhZDQxMmZiNDgyNy4uMTZhNjlk
NTEyZGZkZWNhYzA0MDRjZWRmM2FlNGUzNDYxYzE4OGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApAQCAtMjcy
LDEwICsyNzIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCogbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVN
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEZW51bSBhY2Nlc3MpOwogICAgIHZvaWQgdW5tYXBUZXhT
dWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCopOwogCi0gICAgLy8gR0xfQ0hST01JVU1fY29w
eV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCi0gICAgYm9vbCBzdXBwb3J0c0NvcHlUZXh0dXJl
VG9QYXJlbnRUZXh0dXJlQ0hST01JVU0oKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRU
ZXh0dXJlQ0hST01JVU0oUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0
IHBhcmVudFRleHR1cmUpOwotCiAgICAgLy8gR0xfQ0hST01JVU1fZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUKICAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckNIUk9NSVVNKEdDM0RpbnQgc3JjWDAsIEdD
M0RpbnQgc3JjWTAsIEdDM0RpbnQgc3JjWDEsIEdDM0RpbnQgc3JjWTEsIEdDM0RpbnQgZHN0WDAs
IEdDM0RpbnQgZHN0WTAsIEdDM0RpbnQgZHN0WDEsIEdDM0RpbnQgZHN0WTEsIEdDM0RiaXRmaWVs
ZCBtYXNrLCBHQzNEZW51bSBmaWx0ZXIpOwogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQ0hST01JVU0oR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWkgc2FtcGxlcywgR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102986</attachid>
            <date>2011-08-04 14:59:06 -0700</date>
            <delta_ts>2011-08-04 22:51:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65402-20110804145904.patch</filename>
            <type>text/plain</type>
            <size>33082</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjA5OWQ5MTYxZjgzYjU0
NWU0ZDgwYzBhZGEyYzU3M2EyN2VjNGJhLi4zMjUyZjdhZWFhOGEyMTE2YzU5Njg4YTQwNTczMzc4
YzEwZmY2NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMDQgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFj
Y2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3ZpbmcgY2FudmFzZXMgb3IgcmVzb3VyY2Vz
IGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIG9uZSBzaGFyZWQgR3JhcGhpY3NDb250ZXh0M0QgZm9yIHRoZSB3aG9sZSBwcm9j
ZXNzIGluc3RlYWQgb2Ygb25lIHBlciBQYWdlIGFzIGNhbnZhc2VzIGNhbiBtb3ZlIGJldHdlZW4K
KyAgICAgICAgcGFnZXMgYW5kIGRpcmVjdGx5IGRyYXcgaW50byBjb250ZXh0cyBpbiBkaWZmZXJl
bnQgcGFnZXMuICBBbHNvIHN3aXRjaGVzIERyYXdpbmdCdWZmZXJDaHJvbWl1bSBvdmVyIHRvIHVz
ZSBhCisgICAgICAgIGRpcmVjdGx5IHNoYXJlZCB0aGUgY29sb3IgYXR0YWNobWVudCBpbnN0ZWFk
IG9mIGNvcHlpbmcgaXQgdG8gYSBzZXBhcmF0ZSB0ZXh0dXJlIGFuZCByZW1vdmVzIHRoZSBub3ct
dW5uZWNlc3NhcnkKKyAgICAgICAgRHJhd2luZ0J1ZmZlcjo6ZGlkUmVzZXQoKSBjYWxsLgorCisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp+Q2FudmFzMkRMYXllckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06
OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnNl
dERyYXdpbmdCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJDaHJv
bWl1bTo6Q2FudmFzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdp
bmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKwogMjAx
MS0wOC0wNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzk4ODI1ODE+LCA8cmRhcjovL3Byb2JsZW0vOTg2ODAxNT4sIGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MTIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA0MjIyMjExYjMyNjc3N2U1NmEzZjVlMTVlZGNlMDE4Njk3ZjBlMGJkLi4wNzkyZGJjMGVi
YzBmZTU5NDc3N2VjMDY5Nzg0MmIyNzllMWU0M2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjQ5
LDYgKzM2NDksOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5n
QnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFkZXIuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhZGVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRl
eHQzRC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAppbmRleCA0ZWU5NjM1ODA1NzRkODlkNzQ4NzM4YzE5ZmM2MmIyNjg1MWNjNzc1Li42ZWRiODM4
MmI1MmRmZjRmNzk2M2E0MzgzNWI3ZDFjZTI1ZTQyNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTY2
LDYgKzY2LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEcmF3aW5n
QnVmZmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKICNlbmRpZgpAQCAtMTQyLDkgKzE0Myw2IEBAIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMsIGJvCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICwgbV91c2Vz
RGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2Rl
KQogI2VuZGlmCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICAsIG1fY29u
dGV4dDNEKDApCi0jZW5kaWYKIHsKICNpZiAhRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAg
IEFTU0VSVF9VTlVTRUQodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlLCAhdXNlc0Rhc2hi
b2FyZENvbXBhdGliaWxpdHlNb2RlKTsKQEAgLTE5NSw3ICsxOTMsNyBAQCBib29sIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0CiB7CiAjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICBpZiAobV9jb250ZXh0M0QpCi0gICAg
ICAgIHJldHVybiBtX2NvbnRleHQzRC0+cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpOworICAgICAg
ICByZXR1cm4gbV9jb250ZXh0M0QtPmNvbnRleHQoKS0+cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigp
OwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDUwLDcgKzIwNDgsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRBY2NlbGVyYXRpb24oKQogCiAgICAgaWYg
KCFtX2NvbnRleHQzRCkgewogICAgICAgICBQYWdlKiBwYWdlID0gY2FudmFzKCktPmRvY3VtZW50
KCktPnBhZ2UoKTsKLSAgICAgICAgbV9jb250ZXh0M0QgPSBwYWdlLT5zaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCgpOworICAgICAgICBtX2NvbnRleHQzRCA9IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUocGFnZS0+Y2hyb21lKCkpOwogICAgICAgICBpZiAoIW1fY29udGV4dDNEKSB7CiAg
ICAgICAgICAgICBjbGVhckFjY2VsZXJhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjA2MywxNCArMjA2MSwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRB
Y2NlbGVyYXRpb24oKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmNyZWF0ZURyYXdpbmdC
dWZmZXIoY2FudmFzKCktPnNpemUoKSk7CisgICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9IG1fY29u
dGV4dDNELT5jb250ZXh0KCktPmNyZWF0ZURyYXdpbmdCdWZmZXIoY2FudmFzKCktPnNpemUoKSk7
CiAgICAgICAgIGlmICghbV9kcmF3aW5nQnVmZmVyKSB7CiAgICAgICAgICAgICBjbGVhckFjY2Vs
ZXJhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
Y3R4LT5zZXRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9kcmF3aW5nQnVm
ZmVyLmdldCgpLCBjYW52YXMoKS0+c2l6ZSgpKTsKKyAgICBjdHgtPnNldEdyYXBoaWNzQ29udGV4
dDNEKG1fY29udGV4dDNELT5jb250ZXh0KCksIG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgY2FudmFz
KCktPnNpemUoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBkZGI4MGE3YTVjYjZiMDZi
OTJlOWI1N2QyOTIyMWVkZTI5OGJiNjAxLi41Yjg2MjNjYzU0OWY5ZjMwNDJjY2U3MmVhZDBkZjQy
MjNiOTEyMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0KICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2VuZGlmCkBA
IC01Niw3ICs1NSw3IEBAIGNsYXNzIFRleHRNZXRyaWNzOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKIGNsYXNzIERyYXdpbmdCdWZmZXI7Ci1jbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKK2NsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwogI2VuZGlmCiAKIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CkBAIC0zMDgsNyArMzA3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAgICAgUmVmUHRyPERyYXdpbmdCdWZmZXI+IG1f
ZHJhd2luZ0J1ZmZlcjsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDNE
OworICAgIFJlZlB0cjxTaGFyZWRHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0M0Q7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDMyNDE5YTBiZjViNzUyM2YyZTU4OTczZDZj
ZDVmZDIwODgyYjAyNjAuLmRkOGQ3NmY0Mzc4OWEzZWQ5OTZjYTVjZjAwYTUzMjlkNTkwZGRjZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNzUsMTAgKzc1LDYgQEAKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgotI2VuZGlmCi0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC03NTIsMjMgKzc0OCw2IEBA
IHZvaWQgUGFnZTo6c2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAgICAgICAg
IGZyYW1lLT5zY3JpcHQoKS0+YXR0YWNoRGVidWdnZXIobV9kZWJ1Z2dlcik7CiB9CiAKLUdyYXBo
aWNzQ29udGV4dDNEKiBQYWdlOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpCi17Ci0jaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBpZiAoIW1fc2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cjsKLSAg
ICAgICAgYXR0ci5kZXB0aCA9IGZhbHNlOwotICAgICAgICBhdHRyLnN0ZW5jaWwgPSB0cnVlOwot
ICAgICAgICBhdHRyLmFudGlhbGlhcyA9IGZhbHNlOwotICAgICAgICBhdHRyLmNhblJlY292ZXJG
cm9tQ29udGV4dExvc3MgPSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRleHRzIGNhbiBub3QgaGFuZGxl
IGxvc3QgY29udGV4dHMuCi0gICAgICAgIG1fc2hhcmVkR3JhcGhpY3NDb250ZXh0M0QgPSBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHIsIGNocm9tZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJu
IG1fc2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuZ2V0KCk7Ci0jZWxzZSAvLyAhRU5BQkxFKEFDQ0VM
RVJBVEVEXzJEX0NBTlZBUykKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQogU3RvcmFnZU5hbWVzcGFjZSogUGFnZTo6c2Vzc2lvblN0b3JhZ2UoYm9v
bCBvcHRpb25hbENyZWF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMWUwM2FhZGRkZmMzN2IxZjFi
Y2MyYjczMGZmZGI3M2IzZWRmMGU1MS4uNjExNmY4OGZjYTgyZjdlYzM3OGM3ZDYwNTE4Mjk1MTg3
NGMwYTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTgxLDcgKzgxLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAgICAgY2xhc3MgU2Nyb2xsYWJsZUFy
ZWE7CiAgICAgY2xhc3MgU2V0dGluZ3M7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAg
ICAgY2xhc3MgU3BlZWNoSW5wdXQ7CiAgICAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnQ7CiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQpAQCAtMjY2LDggKzI2NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgc3RhdGljIHZvaWQgYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAq
KTsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqLCBM
aW5rSGFzaCB2aXNpdGVkSGFzaCk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEKCk7Ci0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAg
IFN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0
cnVlKTsKICAgICAgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShQYXNzUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+KTsKQEAgLTMyNCwxMCArMzIxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBPd25QdHI8Q2hyb21lPiBtX2Nocm9tZTsKICAgICAgICAgT3duUHRyPERyYWdDYXJldENv
bnRyb2xsZXI+IG1fZHJhZ0NhcmV0Q29udHJvbGxlcjsKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpCi0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9zaGFyZWRH
cmFwaGljc0NvbnRleHQzRDsKLSNlbmRpZgotICAgICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgICAgICBPd25QdHI8RHJhZ0NvbnRyb2xsZXI+IG1fZHJhZ0NvbnRyb2xsZXI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDJjNDczYTEw
MTQ2MjZmMDUwNjcwMzU1NTM2Njg2MzFmNjRmMTFjZDEuLjdhOGUwYmZhN2EyY2MwYjE1ODIyOGM3
M2I5NGU1ZWZiOTJmODMyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNw
cApAQCAtNTQsOCArNTQsNiBAQCBDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJD
aHJvbWl1bShEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyLCBHcmFwaAogCiBDYW52YXMyRExh
eWVyQ2hyb21pdW06On5DYW52YXMyRExheWVyQ2hyb21pdW0oKQogewotICAgIGlmIChtX3RleHR1
cmVJZCkKLSAgICAgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+ZGVsZXRlVGV4dHVyZShtX3Rl
eHR1cmVJZCk7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAmJiBsYXllclJlbmRlcmVyKCkpCiAg
ICAgICAgIGxheWVyUmVuZGVyZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZl
ci0+Z3JhcGhpY3NDb250ZXh0M0QoKS5nZXQoKSk7CiB9CkBAIC03MiwyNyArNzAsNiBAQCB2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiB7CiAg
ICAgaWYgKCFtX2NvbnRlbnRzRGlydHkgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG1fdGV4dHVyZUNoYW5nZWQpIHsgLy8gV2UgaGF2ZSB0byBnZW5lcmF0ZSBh
IG5ldyBiYWNraW5nIHRleHR1cmUuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICAgICAgaWYgKG1fdGV4dHVyZUlkKQotICAg
ICAgICAgICAgY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX3RleHR1cmVJZCk7Ci0gICAgICAgIG1f
dGV4dHVyZUlkID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBjb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgICAgIGNvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJ
ZCk7Ci0gICAgICAgIEludFNpemUgc2l6ZSA9IG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgpOwotICAg
ICAgICBjb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUpOwotICAgICAgICAvLyBTZXQgdGhlIG1pbi1tYWcgZmlsdGVycyB0byBs
aW5lYXIgYW5kIHdyYXAgbW9kZXMgdG8gR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UK
LSAgICAgICAgLy8gdG8gZ2V0IGFyb3VuZCBOUE9UIHRleHR1cmUgbGltaXRhdGlvbnMgb2YgR0xF
Uy4KLSAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgICAgICBjb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAg
ICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIG1fdGV4dHVyZUNoYW5nZWQgPSBmYWxzZTsKLSAgICAg
ICAgLy8gVGhlIGZsdXNoKCkgaGVyZSBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIGhhdmUgdG8gbWFr
ZSBzdXJlIHRoYXQgdGhlIHRleHR1cmUgY3JlYXRlZCBpbiB0aGlzCi0gICAgICAgIC8vIGNvbnRl
eHQgKHRoZSBjb21wb3NpdG9yIGNvbnRleHQpIGlzIGFjdHVhbGx5IGNyZWF0ZWQgYnkgdGhlIHNl
cnZpY2Ugc2lkZSBiZWZvcmUgdGhlIGNoaWxkIGNvbnRleHQKLSAgICAgICAgLy8gYXR0ZW1wdHMg
dG8gdXNlIGl0IChpbiBwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKS4KLSAgICAgICAgY29udGV4dC0+
Zmx1c2goKTsKLSAgICB9CiAgICAgLy8gVXBkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgdGV4dHVy
ZSB1c2VkIGJ5IHRoZSBjb21wb3NpdG9yLgogICAgIGlmIChtX2NvbnRlbnRzRGlydHkpIHsKICAg
ICAgICAgbV9kcmF3aW5nQnVmZmVyLT5wdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CkBAIC0xMDAs
MTQgKzc3LDkgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoKQogICAgIH0KIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNldFRl
eHR1cmVDaGFuZ2VkKCkKLXsKLSAgICBtX3RleHR1cmVDaGFuZ2VkID0gdHJ1ZTsKLX0KLQogdW5z
aWduZWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp0ZXh0dXJlSWQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3RleHR1cmVJZDsKKyAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyID8gbV9kcmF3aW5n
QnVmZmVyLT5wbGF0Zm9ybUNvbG9yQnVmZmVyKCkgOiAwOwogfQogCiB2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6c2V0RHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVy
KQpAQCAtMTE3LDcgKzg5LDYgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNldERyYXdp
bmdCdWZmZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKICAgICAgICAgICAgIGxheWVy
UmVuZGVyZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3ND
b250ZXh0M0QoKS5nZXQoKSk7CiAKICAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gZHJhd2luZ0J1
ZmZlcjsKLSAgICAgICAgbV90ZXh0dXJlQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAgaWYgKGRy
YXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQogICAgICAgICAgICAgbGF5ZXJSZW5kZXJl
cigpLT5hZGRDaGlsZENvbnRleHQobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgp
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggZGRlZWVmNWIx
MTcxOWE3YzRiNDg0MGMxMDIzZWE1NmI3ZDkwYzIyOC4uNzI4Njc5NjM2NTI0ZTU4MmQ5MTE1NmI1
M2VlYzZiNGQzZjM0Yjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKCk7CiAKICAgICB2b2lkIHNldFRleHR1cmVDaGFuZ2VkKCk7Ci0gICAgdW5zaWdu
ZWQgdGV4dHVyZUlkKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBj
b25zdDsKICAgICB2b2lkIHNldERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFjNGI5ZjIwOTI4ZGYzYTFmNTI1
YTJmMTRjNWMyMWFlZTQ3MGM1ZjguLmY5ZDE2NmY4YWM4YWQzZTdhYzJjMmYyN2M2YjMwNzVmYTEy
M2U4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00Miw4ICs0Miw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Q2FudmFzTGF5
ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAgIDogTGF5ZXJDaHJv
bWl1bShvd25lcikKLSAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1ZSkKLSAgICAsIG1fdGV4dHVy
ZUlkKDApCiAgICAgLCBtX2hhc0FscGhhKHRydWUpCiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBo
YSh0cnVlKQogewpAQCAtNjMsNyArNjEsNyBAQCB2b2lkIENhbnZhc0xheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIExheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwogCiAgICAgQ0NDYW52YXNMYXllckltcGwqIGNhbnZhc0xh
eWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllcik7Ci0gICAgY2FudmFz
TGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7CisgICAgY2FudmFzTGF5ZXItPnNldFRl
eHR1cmVJZCh0ZXh0dXJlSWQoKSk7CiAgICAgY2FudmFzTGF5ZXItPnNldEhhc0FscGhhKG1faGFz
QWxwaGEpOwogICAgIGNhbnZhc0xheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEobV9wcmVtdWx0
aXBsaWVkQWxwaGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDIzMjMw
YWMzYWQ5MDg3MWI4NTQ1YmM2NTUzZDZiNTQ0NDI5NTJhZWYuLmY4NzFhZWUyOTJlODg2MjRiZDc3
NTgwYzc3NjNiZDNiOGI1Nzc0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKQEAg
LTUwLDEwICs1MCw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDYW52YXNM
YXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwogCisgICAgdmlydHVh
bCB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJDYW52YXNMYXllciI7IH0KIAot
ICAgIGJvb2wgbV90ZXh0dXJlQ2hhbmdlZDsKLSAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKICAg
ICBib29sIG1faGFzQWxwaGE7CiAgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3
aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAppbmRleCBjOTA0ZmI0ZWE1MDc3ZTUz
YTMzNWNlNzRjMTBmZWY2ZDE2YmY1MDY4Li5mNzAzOTdlMjBjZmMzZWI3YTI5Mzg3YmUyZTNhY2Q5
ZjFiNjgyN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTMy
LDkgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLQog
I2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkdyQ29udGV4dC5oIgogI2VuZGlmCkBAIC02Miw3ICs2
MCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYKICAgICByZXR1cm4gb2Zmc2NyZWVuQ29sb3JU
ZXh0dXJlOwogfQogCi0KIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNp
emUmIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVsdGlzYW1wbGVF
eHRlbnNpb25TdXBwb3J0ZWQsCkBAIC04MiwxMCArNzksNiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3
aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICwgbV9nckNvbnRleHQo
MCkKICNlbmRpZgogewotICAgIGlmICghbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUiKSkgewotICAg
ICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBtX2Zi
byA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgY29udGV4dC0+YmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIG1fY29s
b3JCdWZmZXIgPSBnZW5lcmF0ZUNvbG9yVGV4dHVyZShjb250ZXh0LCBzaXplKTsKQEAgLTExOSwy
OCArMTEyLDE0IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigp
CiAgICAgICAgIG1fY2FsbGJhY2stPndpbGxQdWJsaXNoKCk7CiAgICAgaWYgKG11bHRpc2FtcGxl
KCkpCiAgICAgICAgIGNvbW1pdCgpOwotICAgIHVuc2lnbmVkIHBhcmVudFRleHR1cmUgPSBtX3Bs
YXRmb3JtTGF5ZXItPnRleHR1cmVJZCgpOwotICAgIC8vIFdlIGRvIHRoZSBjb3B5IGluIHRoZSBj
YW52YXMnIChjaGlsZCkgY29udGV4dCBzbyB0aGF0IGl0IGV4ZWN1dGVzIGluIHRoZSBjb3JyZWN0
IG9yZGVyIHJlbGF0aXZlIHRvCi0gICAgLy8gb3RoZXIgY29tbWFuZHMgaW4gdGhlIGNoaWxkIGNv
bnRleHQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBwYXJlbnQgdGV4dHVyZSBhbHdheXMgY29udGFp
bnMgYSBjb21wbGV0ZQotICAgIC8vIGZyYW1lIGFuZCBub3Qgc29tZSBpbnRlcm1lZGlhdGUgcmVz
dWx0LgotICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAjaWYgVVNFKFNLSUEp
CiAgICAgaWYgKG1fZ3JDb250ZXh0KQogICAgICAgICBtX2dyQ29udGV4dC0+Zmx1c2goMCk7CiAj
ZW5kaWYKLSAgICBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpKS0+Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTShtX2Nv
bG9yQnVmZmVyLCBwYXJlbnRUZXh0dXJlKTsKICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiB9CiAj
ZW5kaWYKIAotdm9pZCBEcmF3aW5nQnVmZmVyOjpkaWRSZXNldCgpCi17Ci0jaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChtX3BsYXRmb3JtTGF5ZXIpCi0gICAgICAgIG1f
cGxhdGZvcm1MYXllci0+c2V0VGV4dHVyZUNoYW5nZWQoKTsKLSNlbmRpZgotfQotCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6
cGxhdGZvcm1MYXllcigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCBk
NzhmYzFjY2JiYzU5NWQ5NTIxYzgwOWVjN2IwYzZhNTcyNzMxYTk5Li4zNzYzZjdiNTk4MjdhMDVk
ZDE2MDQ2MzZmYmM0YWFjNGMwYmZiZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVt
LmgKQEAgLTQwLDcgKzQwLDYgQEAgcHVibGljOgogICAgIC8vICAgR0xfQ0hST01JVU1fcmVzb3Vy
Y2Vfc2FmZSAgOiBpbmRpY2F0aW5nIHRoYXQgdGV4dHVyZXMvcmVuZGVyYnVmZmVycyBhcmUgYWx3
YXlzIGluaXRpYWxpemVkIGJlZm9yZSByZWFkL3dyaXRlLgogICAgIC8vICAgR0xfQ0hST01JVU1f
c3RyaWN0X2F0dHJpYnMgOiBpbmRpY2F0aW5nIGEgR0wgZXJyb3IgaXMgZ2VuZXJhdGVkIGZvciBv
dXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3Nlcy4KICAgICAvLyAgIEdMX0NIUk9NSVVNX21hcF9z
dWIKLSAgICAvLyAgIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZQog
ICAgIC8vICAgR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29tcGxldGVfY2FsbGJhY2sKICAgICAv
LyAgIEdMX0NIUk9NSVVNX3JhdGVfbGltaXRfb2Zmc2NyZWVuX2NvbnRleHQKIApAQCAtNjgsOSAr
NjcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCogbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHVuc2ln
bmVkIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB3aWR0
aCwgaW50IGhlaWdodCwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBh
Y2Nlc3MpOwogICAgIHZvaWQgdW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCop
OwogCi0gICAgLy8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCi0g
ICAgdm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1
cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1cmUpOwotCiAgICAgLy8gR0xfQ0hST01JVU1fc3dhcGJ1
ZmZlcnNfY29tcGxldGVfY2FsbGJhY2sKICAgICBjbGFzcyBTd2FwQnVmZmVyc0NvbXBsZXRlQ2Fs
bGJhY2tDSFJPTUlVTSB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggYmQ1MDY0MWI5Mjg2MzIwNjJhMDNiNjlkMjgzNWU3NTJmYzA3ZGExNy4uNzYyMTdi
NGI5ZTZjOTVhZjJkMDhiNDI1ZDNhYWNhMjdjZGY2ZWZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwCkBAIC00OSw2ICs0OSw4IEBAIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9t
aXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qCiBX
ZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21p
dW0qIG93bmVyKQogICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bShvd25lcikKICAgICAsIG1fY29u
dGV4dCgwKQorICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1
ZSkKICAgICAsIG1fY29udGV4dFN1cHBvcnRzUmF0ZUxpbWl0aW5nRXh0ZW5zaW9uKGZhbHNlKQog
ICAgICwgbV9yYXRlTGltaXRpbmdUaW1lcih0aGlzLCAmV2ViR0xMYXllckNocm9taXVtOjpyYXRl
TGltaXRDb250ZXh0KQogICAgICwgbV90ZXh0dXJlVXBkYXRlZChmYWxzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmgKaW5kZXggMTg2ZTVjMTM5OGI5YTY1ZDQzMWZjYTQ0ZTQ0MzdiYjQzMmJk
OTYwYy4uYzQzNDQwZDk3OTUwZDE3ZWZhYTQxMWNlYTNjMWE4YjNjNzUxNjFjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmgKQEAgLTY1LDEyICs2NSwxNSBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFdlYkdMTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsK
ICAgICBmcmllbmQgY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIAorICAg
IHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7
IH0KICAgICB2b2lkIHJhdGVMaW1pdENvbnRleHQoVGltZXI8V2ViR0xMYXllckNocm9taXVtPiop
OwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIgaGFzIGEgc2lkZS1l
ZmZlY3Qgb2YgYXNzaWduaW5nIGl0c2VsZgogICAgIC8vIHRvIHRoZSBsYXllci4gQmVjYXVzZSBv
ZiB0aGF0IEdyYXBoaWNzQ29udGV4dDNEJ3MgZGVzdHJ1Y3RvciB3aWxsIHJlc2V0CiAgICAgLy8g
bGF5ZXIncyBjb250ZXh0IHRvIDAuCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsK
KyAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICBib29sIG1fdGV4dHVyZUNoYW5nZWQ7CiAg
ICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c1JhdGVMaW1pdGluZ0V4dGVuc2lvbjsKICAgICBUaW1l
cjxXZWJHTExheWVyQ2hyb21pdW0+IG1fcmF0ZUxpbWl0aW5nVGltZXI7CiAgICAgYm9vbCBtX3Rl
eHR1cmVVcGRhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCmluZGV4IDFkOGFjYWZmZmJkZGFmMzVmMGI1NjgyMTdi
ODFmZWExY2I3ZTIxMTYuLjhiNTE1MDNjMTlmMjlhYWFlN2UwMjNkNWNhNDYzM2UxZjA3ZWFkYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5n
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJh
d2luZ0J1ZmZlci5jcHAKQEAgLTI2NCw4ICsyNjQsNiBAQCBib29sIERyYXdpbmdCdWZmZXI6OnJl
c2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKICAgICBjbGVhckZyYW1lYnVmZmVyKCk7CiAK
LSAgICBkaWRSZXNldCgpOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCmluZGV4IDYz
N2RmMzdkYjJhOWY2YTQ1Y2NhN2QyNmMyNzViYTYwOGMwMTVmMjEuLjI5OTk5OTVmY2Y3ZDY2ZWUz
YzU5Njc4ODI5NmE4YWI3ZGQ3MmZiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaApAQCAtMTE1LDkgKzExNSw2IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgRHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0
IEludFNpemUmLCBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLCBib29sIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCk7CiAgICAgCi0gICAgLy8gUGxhdGZvcm0g
c3BlY2lmaWMgZnVuY3Rpb24gY2FsbGVkIGFmdGVyIHJlc2V0KCkgc28gZWFjaCBwbGF0Zm9ybSBj
YW4gZG8gZXh0cmEgd29yayBpZiBuZWVkZWQKLSAgICB2b2lkIGRpZFJlc2V0KCk7Ci0KICAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICBJbnRTaXplIG1fc2l6ZTsK
ICAgICBib29sIG1fbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBo
aWNzQ29udGV4dDNELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjQ2NGM5ZWEwZDY5NjA0OGUxM2RjOTRiNDYz
MGQ4NzY0MTEyYjFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTaGFyZWRHcmFwaGlj
c0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZEdyYXBoaWNzQ29u
dGV4dDNEKiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6c19pbnN0YW5jZSA9IDA7CisKK1Bhc3NS
ZWZQdHI8U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q+IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGUoSG9zdFdpbmRvdyogd2luZG93KQoreworICAgIGlmIChzX2luc3RhbmNlKSB7CisgICAg
ICAgIHNfaW5zdGFuY2UtPnJlZigpOyAvLyBNYW51YWxseSBnaXZlIHRoaXMgY2FsbGVyIGEgcmVm
ZXJlbmNlIHRvIHRoZSBzaGFyZWQgaW5zdGFuY2UsIGFkb3B0UmVmKCkgZG9lcyBub3QgaW5jcmVh
c2UgdGhlIHJlZmNvdW50LgorICAgICAgICByZXR1cm4gYWRvcHRSZWYoc19pbnN0YW5jZSk7Cisg
ICAgfQorICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAg
YXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOworICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IHRydWU7
CisgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKKyAgICBhdHRyaWJ1dGVzLmNhblJl
Y292ZXJGcm9tQ29udGV4dExvc3MgPSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRleHRzIGNhbiBub3Qg
aGFuZGxlIGxvc3QgY29udGV4dHMuCisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCB3aW5kb3cpOworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8U2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q+KCk7CisgICAgUmVmUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBzaGFyZWRD
b250ZXh0ID0gYWRvcHRSZWYobmV3IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQucmVs
ZWFzZSgpKSk7CisgICAgc19pbnN0YW5jZSA9IHNoYXJlZENvbnRleHQuZ2V0KCk7CisgICAgcmV0
dXJuIHNoYXJlZENvbnRleHQ7Cit9CisKK1NoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpTaGFyZWRH
cmFwaGljc0NvbnRleHQzRChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQor
ICAgIDogbV9jb250ZXh0KGNvbnRleHQpCit7Cit9CisKK1NoYXJlZEdyYXBoaWNzQ29udGV4dDNE
Ojp+U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoKQoreworICAgIHNfaW5zdGFuY2UgPSAwOworfQor
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9T
aGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlY2U3YWNhMzVh
NzVlMDI3MmQ2NzEyYWY4NTcwNGZiZDA3MTNkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEX2gK
KyNkZWZpbmUgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0RfaAorCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q+IGNy
ZWF0ZShIb3N0V2luZG93Kik7CisgICAgflNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7CisKKyAg
ICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKworICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gbV9jb250ZXh0OworICAgIHN0YXRpYyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCog
c19pbnN0YW5jZTsKK307CisKK30KKworI2VuZGlmIC8vIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21h
Yy9EcmF3aW5nQnVmZmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCmluZGV4IDVjYzYxZmNjMTc4MjY4ZjgwYjU0YmJi
OThmYjU1MzBkYTZhOGVkNWEuLjQ1MGE3YzcwNzgzNTNlODE1ZWQ1NDE2MWY4NGVlODI0OTdlYWY0
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMv
RHJhd2luZ0J1ZmZlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KQEAgLTg0LDEwICs4NCw2IEBAIERyYXdpbmdC
dWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERyYXdpbmdC
dWZmZXI6OmRpZFJlc2V0KCkKLXsKLX0KLQogUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6
cGxhdGZvcm1MYXllcigpCiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5n
QnVmZmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKaW5kZXggNjhkY2I1NTIyOGE1NWJjNWJlNGEzZjNlZTU1NmMyMzBl
MjExOTViNS4uNDM1Nzc2NTEzNDc3NmE5OTE4ODZmZjhhZmU4N2E3ZDAxNGZjNjdmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZm
ZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKQEAgLTcxLDEwICs3MSw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3
aW5nQnVmZmVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERyYXdpbmdCdWZmZXI6OmRpZFJl
c2V0KCkKLXsKLX0KLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3Jt
TGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RyYXdpbmdCdWZmZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RyYXdpbmdCdWZmZXJHdGsuY3Bw
CmluZGV4IDUxMjBhM2M2ZGJjZTBlMGExZDIzOGMwZjE2NTczMDc5NTc1NzA3N2IuLjI2ZDVkOTJk
MGIzM2Q3NTgzMzgzNDlhNmQzNDVmNDg2MGMwMTdiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EcmF3aW5nQnVmZmVyR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRHJhd2luZ0J1ZmZlckd0ay5jcHAKQEAg
LTcxLDEwICs3MSw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVh
cigpOwogfQogCi12b2lkIERyYXdpbmdCdWZmZXI6OmRpZFJlc2V0KCkKLXsKLX0KLQogUGxhdGZv
cm0zRE9iamVjdCBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUNvbG9yQnVmZmVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jb2xvckJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
M2E5ZWNhYjU4M2VmMWFlZjhkNmQ1YmVkN2RjY2YzOGY3Y2MxNmFhNS4uNDRlMDZkYzc2MGNlZjI2
NDhjZDBjNDgwNzY1ZTBiNTdmMGY5OTEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxMS0wOC0wNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWNjZWxlcmF0ZWQgY2FudmFzIGJyZWFrcyB3
aGVuIG1vdmluZyBjYW52YXNlcyBvciByZXNvdXJjZXMgYmV0d2VlbiBQYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU0MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgcGx1bWJpbmcgZm9y
IGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlIGV4dGVuc2lvbiwgaXQncyBubyBsb25nZXIgdXNl
ZCBvciBuZWVkZWQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoK
KyAgICAgICAgKiBzcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHNyYy9H
cmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbC5oOgorCiAyMDExLTA4LTA0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdldCByaWQgb2YgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
bV90YXJnZXRUeXBlLiBNb3ZlIGl0IHRvIGNocm9taXVtJ3MgUmVzb3VyY2VSZXF1ZXN0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0
M0QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgKaW5kZXggNzRlMzcxMTM0ZjVlM2QxMmYxZDEwMWI5ZTVmNjZlMGQzNDdlNGNhYS4uODFhOGJk
NWVhMmM5MjM5NjRiYjhhNjViOGMxNmRjNWUwYmE1ZDNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xNjcsOSAr
MTY3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCogbWFwVGV4U3ViSW1hZ2UyRENIUk9N
SVVNKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBX
R0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dD
M0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIFdHQzNEZW51bSBhY2Nlc3MpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCopID0g
MDsKIAotICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZQot
ICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKFdlYkdM
SWQgdGV4dHVyZSwgV2ViR0xJZCBwYXJlbnRUZXh0dXJlKSA9IDA7Ci0KICAgICAvLyBHTF9DSFJP
TUlVTV9yZXF1ZXN0X2V4dGVuc2lvbgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFJlcXVlc3Rh
YmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXh0
ZW5zaW9uQ0hST01JVU0oY29uc3QgY2hhciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAppbmRleCAyZmI1OGYzNDcxMGQy
YmEwYzc5ZWViN2MxMzRhNzMwYzFiYWViZGI4Li4yNjhmM2M2NTYyMzI0NDE2ZjlhMWZmMzNiMmQ2
OWNkYTc4Y2E5NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRl
bnNpb25zM0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0
ZW5zaW9uczNEQ2hyb21pdW0uY3BwCkBAIC05NywxMSArOTcsNiBAQCB2b2lkIEV4dGVuc2lvbnMz
RENocm9taXVtOjp1bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShjb25zdCB2b2lkKiBkYXRhKQog
ICAgIG1faW50ZXJuYWwtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGRhdGEpOwogfQogCi12
b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9N
SVVNKHVuc2lnbmVkIHRleHR1cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1cmUpCi17Ci0gICAgbV9p
bnRlcm5hbC0+Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh0ZXh0dXJlLCBwYXJl
bnRUZXh0dXJlKTsKLX0KLQogUGxhdGZvcm0zRE9iamVjdCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApp
bmRleCBhMzA5NjU2YzFmZjFmNjRjNWYxMzE2ZWUyM2U4MzBlYzBkZjMxYTQ4Li5iYTZlNzAwZTll
MmNkMmEyYTAyNmVkODAyMzkwMjJkNzJmOTVhMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApAQCAtODMy
LDEyICs4MzIsNiBAQCBERUxFR0FURV9UT19JTVBMXzEodW5tYXBCdWZmZXJTdWJEYXRhQ0hST01J
VU0sIGNvbnN0IHZvaWQqKQogREVMRUdBVEVfVE9fSU1QTF85UihtYXBUZXhTdWJJbWFnZTJEQ0hS
T01JVU0sIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgdm9pZCopCiBERUxFR0FURV9U
T19JTVBMXzEodW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIGNvbnN0IHZvaWQqKQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hS
T01JVU0oUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBQbGF0Zm9ybTNET2JqZWN0IHBhcmVudFRl
eHR1cmUpCi17Ci0gICAgbV9pbXBsLT5zZXRQYXJlbnRDb250ZXh0KG1fd2ViVmlld0ltcGwtPmdy
YXBoaWNzQ29udGV4dDNEKCkpOwotICAgIG1faW1wbC0+Y29weVRleHR1cmVUb1BhcmVudFRleHR1
cmVDSFJPTUlVTSh0ZXh0dXJlLCBwYXJlbnRUZXh0dXJlKTsKLX0KLQogREVMRUdBVEVfVE9fSU1Q
TF8xMChibGl0RnJhbWVidWZmZXJDSFJPTUlVTSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwg
R0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGJpdGZpZWxk
LCBHQzNEZW51bSkKIERFTEVHQVRFX1RPX0lNUExfNShyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVDSFJPTUlVTSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRGVudW0sIEdDM0RzaXplaSwg
R0MzRHNpemVpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmgKaW5kZXggZTU4NDM2OTYzZjg5YTczM2Q3ZjczOWFlY2E2
ZTJhZDQxMmZiNDgyNy4uMTZhNjlkNTEyZGZkZWNhYzA0MDRjZWRmM2FlNGUzNDYxYzE4OGM0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwuaApAQCAtMjcyLDEwICsyNzIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCogbWFw
VGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEZW51bSBhY2Nlc3Mp
OwogICAgIHZvaWQgdW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCopOwogCi0g
ICAgLy8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCi0gICAgYm9v
bCBzdXBwb3J0c0NvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0oKTsKLSAgICB2b2lk
IGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0oUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlLCBQbGF0Zm9ybTNET2JqZWN0IHBhcmVudFRleHR1cmUpOwotCiAgICAgLy8gR0xfQ0hST01J
VU1fZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKICAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckNIUk9N
SVVNKEdDM0RpbnQgc3JjWDAsIEdDM0RpbnQgc3JjWTAsIEdDM0RpbnQgc3JjWDEsIEdDM0RpbnQg
c3JjWTEsIEdDM0RpbnQgZHN0WDAsIEdDM0RpbnQgZHN0WTAsIEdDM0RpbnQgZHN0WDEsIEdDM0Rp
bnQgZHN0WTEsIEdDM0RiaXRmaWVsZCBtYXNrLCBHQzNEZW51bSBmaWx0ZXIpOwogICAgIHZvaWQg
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQ0hST01JVU0oR0MzRGVudW0gdGFyZ2V0LCBH
QzNEc2l6ZWkgc2FtcGxlcywgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103043</attachid>
            <date>2011-08-04 22:51:32 -0700</date>
            <delta_ts>2011-08-05 01:21:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65402-20110804225131.patch</filename>
            <type>text/plain</type>
            <size>33770</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNDk2ZjM1MWNjNGU1NzQz
YzZjYTY0MjI3MWI3MzhmMGNkYmQ1YzY0Li40ODczNDcxMWNhNmM4MGEzMjFhZTZiNmRiODAyZmZi
Nzg4ZGFjYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMDQgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFj
Y2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3ZpbmcgY2FudmFzZXMgb3IgcmVzb3VyY2Vz
IGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIG9uZSBzaGFyZWQgR3JhcGhpY3NDb250ZXh0M0QgZm9yIHRoZSB3aG9sZSBwcm9j
ZXNzIGluc3RlYWQgb2Ygb25lIHBlciBQYWdlIGFzIGNhbnZhc2VzIGNhbiBtb3ZlIGJldHdlZW4K
KyAgICAgICAgcGFnZXMgYW5kIGRpcmVjdGx5IGRyYXcgaW50byBjb250ZXh0cyBpbiBkaWZmZXJl
bnQgcGFnZXMuICBBbHNvIHN3aXRjaGVzIERyYXdpbmdCdWZmZXJDaHJvbWl1bSBvdmVyIHRvIHVz
ZSBhCisgICAgICAgIGRpcmVjdGx5IHNoYXJlZCB0aGUgY29sb3IgYXR0YWNobWVudCBpbnN0ZWFk
IG9mIGNvcHlpbmcgaXQgdG8gYSBzZXBhcmF0ZSB0ZXh0dXJlIGFuZCByZW1vdmVzIHRoZSBub3ct
dW5uZWNlc3NhcnkKKyAgICAgICAgRHJhd2luZ0J1ZmZlcjo6ZGlkUmVzZXQoKSBjYWxsIGFuZCBX
aWxsUHVibGlzaENhbGxiYWNrIG1lY2hhbmlzbS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5
ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp0ZXh0dXJlSWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpzZXREcmF3aW5nQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21p
dW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2lu
Z0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0
Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNp
b25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21p
dW06OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisKIDIwMTEtMDgtMDQgIE1hcmsgUGlsZ3JpbSAg
PHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBMZWdhY3lEZWZhdWx0T3B0
aW9uYWxBcmd1bWVudHMgZmxhZyBmcm9tIGNhbnZhcyBJREwgZmlsZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA2OTMyZWY5ZjJmNTg5NjdhYTU0ODIxZmFjNzIwYjg0YjUzNGFiOTM3Li45ZTdmZmYzNjU5
MjY1MTRkZWI2OTBlZjM3Y2E4ZGU2Yzg4MDE5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjQ5
LDYgKzM2NDksOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5n
QnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFkZXIuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhZGVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRl
eHQzRC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAppbmRleCA0ZWU5NjM1ODA1NzRkODlkNzQ4NzM4YzE5ZmM2MmIyNjg1MWNjNzc1Li42ZWRiODM4
MmI1MmRmZjRmNzk2M2E0MzgzNWI3ZDFjZTI1ZTQyNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTY2
LDYgKzY2LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEcmF3aW5n
QnVmZmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKICNlbmRpZgpAQCAtMTQyLDkgKzE0Myw2IEBAIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMsIGJvCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICwgbV91c2Vz
RGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2Rl
KQogI2VuZGlmCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICAsIG1fY29u
dGV4dDNEKDApCi0jZW5kaWYKIHsKICNpZiAhRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAg
IEFTU0VSVF9VTlVTRUQodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlLCAhdXNlc0Rhc2hi
b2FyZENvbXBhdGliaWxpdHlNb2RlKTsKQEAgLTE5NSw3ICsxOTMsNyBAQCBib29sIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0CiB7CiAjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICBpZiAobV9jb250ZXh0M0QpCi0gICAg
ICAgIHJldHVybiBtX2NvbnRleHQzRC0+cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpOworICAgICAg
ICByZXR1cm4gbV9jb250ZXh0M0QtPmNvbnRleHQoKS0+cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigp
OwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDUwLDcgKzIwNDgsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRBY2NlbGVyYXRpb24oKQogCiAgICAgaWYg
KCFtX2NvbnRleHQzRCkgewogICAgICAgICBQYWdlKiBwYWdlID0gY2FudmFzKCktPmRvY3VtZW50
KCktPnBhZ2UoKTsKLSAgICAgICAgbV9jb250ZXh0M0QgPSBwYWdlLT5zaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCgpOworICAgICAgICBtX2NvbnRleHQzRCA9IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUocGFnZS0+Y2hyb21lKCkpOwogICAgICAgICBpZiAoIW1fY29udGV4dDNEKSB7CiAg
ICAgICAgICAgICBjbGVhckFjY2VsZXJhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjA2MywxNCArMjA2MSwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRB
Y2NlbGVyYXRpb24oKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmNyZWF0ZURyYXdpbmdC
dWZmZXIoY2FudmFzKCktPnNpemUoKSk7CisgICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9IG1fY29u
dGV4dDNELT5jb250ZXh0KCktPmNyZWF0ZURyYXdpbmdCdWZmZXIoY2FudmFzKCktPnNpemUoKSk7
CiAgICAgICAgIGlmICghbV9kcmF3aW5nQnVmZmVyKSB7CiAgICAgICAgICAgICBjbGVhckFjY2Vs
ZXJhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
Y3R4LT5zZXRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9kcmF3aW5nQnVm
ZmVyLmdldCgpLCBjYW52YXMoKS0+c2l6ZSgpKTsKKyAgICBjdHgtPnNldEdyYXBoaWNzQ29udGV4
dDNEKG1fY29udGV4dDNELT5jb250ZXh0KCksIG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgY2FudmFz
KCktPnNpemUoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBkZGI4MGE3YTVjYjZiMDZi
OTJlOWI1N2QyOTIyMWVkZTI5OGJiNjAxLi41Yjg2MjNjYzU0OWY5ZjMwNDJjY2U3MmVhZDBkZjQy
MjNiOTEyMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0KICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2VuZGlmCkBA
IC01Niw3ICs1NSw3IEBAIGNsYXNzIFRleHRNZXRyaWNzOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKIGNsYXNzIERyYXdpbmdCdWZmZXI7Ci1jbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKK2NsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwogI2VuZGlmCiAKIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CkBAIC0zMDgsNyArMzA3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAgICAgUmVmUHRyPERyYXdpbmdCdWZmZXI+IG1f
ZHJhd2luZ0J1ZmZlcjsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDNE
OworICAgIFJlZlB0cjxTaGFyZWRHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0M0Q7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDMyNDE5YTBiZjViNzUyM2YyZTU4OTczZDZj
ZDVmZDIwODgyYjAyNjAuLmRkOGQ3NmY0Mzc4OWEzZWQ5OTZjYTVjZjAwYTUzMjlkNTkwZGRjZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNzUsMTAgKzc1LDYgQEAKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgotI2VuZGlmCi0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC03NTIsMjMgKzc0OCw2IEBA
IHZvaWQgUGFnZTo6c2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAgICAgICAg
IGZyYW1lLT5zY3JpcHQoKS0+YXR0YWNoRGVidWdnZXIobV9kZWJ1Z2dlcik7CiB9CiAKLUdyYXBo
aWNzQ29udGV4dDNEKiBQYWdlOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpCi17Ci0jaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBpZiAoIW1fc2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cjsKLSAg
ICAgICAgYXR0ci5kZXB0aCA9IGZhbHNlOwotICAgICAgICBhdHRyLnN0ZW5jaWwgPSB0cnVlOwot
ICAgICAgICBhdHRyLmFudGlhbGlhcyA9IGZhbHNlOwotICAgICAgICBhdHRyLmNhblJlY292ZXJG
cm9tQ29udGV4dExvc3MgPSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRleHRzIGNhbiBub3QgaGFuZGxl
IGxvc3QgY29udGV4dHMuCi0gICAgICAgIG1fc2hhcmVkR3JhcGhpY3NDb250ZXh0M0QgPSBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHIsIGNocm9tZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJu
IG1fc2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuZ2V0KCk7Ci0jZWxzZSAvLyAhRU5BQkxFKEFDQ0VM
RVJBVEVEXzJEX0NBTlZBUykKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQogU3RvcmFnZU5hbWVzcGFjZSogUGFnZTo6c2Vzc2lvblN0b3JhZ2UoYm9v
bCBvcHRpb25hbENyZWF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMWUwM2FhZGRkZmMzN2IxZjFi
Y2MyYjczMGZmZGI3M2IzZWRmMGU1MS4uNjExNmY4OGZjYTgyZjdlYzM3OGM3ZDYwNTE4Mjk1MTg3
NGMwYTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTgxLDcgKzgxLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAgICAgY2xhc3MgU2Nyb2xsYWJsZUFy
ZWE7CiAgICAgY2xhc3MgU2V0dGluZ3M7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAg
ICAgY2xhc3MgU3BlZWNoSW5wdXQ7CiAgICAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnQ7CiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQpAQCAtMjY2LDggKzI2NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgc3RhdGljIHZvaWQgYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAq
KTsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqLCBM
aW5rSGFzaCB2aXNpdGVkSGFzaCk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEKCk7Ci0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAg
IFN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0
cnVlKTsKICAgICAgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShQYXNzUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+KTsKQEAgLTMyNCwxMCArMzIxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBPd25QdHI8Q2hyb21lPiBtX2Nocm9tZTsKICAgICAgICAgT3duUHRyPERyYWdDYXJldENv
bnRyb2xsZXI+IG1fZHJhZ0NhcmV0Q29udHJvbGxlcjsKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpCi0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9zaGFyZWRH
cmFwaGljc0NvbnRleHQzRDsKLSNlbmRpZgotICAgICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgICAgICBPd25QdHI8RHJhZ0NvbnRyb2xsZXI+IG1fZHJhZ0NvbnRyb2xsZXI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDJjNDczYTEw
MTQ2MjZmMDUwNjcwMzU1NTM2Njg2MzFmNjRmMTFjZDEuLjdhOGUwYmZhN2EyY2MwYjE1ODIyOGM3
M2I5NGU1ZWZiOTJmODMyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNw
cApAQCAtNTQsOCArNTQsNiBAQCBDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJD
aHJvbWl1bShEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyLCBHcmFwaAogCiBDYW52YXMyRExh
eWVyQ2hyb21pdW06On5DYW52YXMyRExheWVyQ2hyb21pdW0oKQogewotICAgIGlmIChtX3RleHR1
cmVJZCkKLSAgICAgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+ZGVsZXRlVGV4dHVyZShtX3Rl
eHR1cmVJZCk7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAmJiBsYXllclJlbmRlcmVyKCkpCiAg
ICAgICAgIGxheWVyUmVuZGVyZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZl
ci0+Z3JhcGhpY3NDb250ZXh0M0QoKS5nZXQoKSk7CiB9CkBAIC03MiwyNyArNzAsNiBAQCB2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiB7CiAg
ICAgaWYgKCFtX2NvbnRlbnRzRGlydHkgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG1fdGV4dHVyZUNoYW5nZWQpIHsgLy8gV2UgaGF2ZSB0byBnZW5lcmF0ZSBh
IG5ldyBiYWNraW5nIHRleHR1cmUuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICAgICAgaWYgKG1fdGV4dHVyZUlkKQotICAg
ICAgICAgICAgY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX3RleHR1cmVJZCk7Ci0gICAgICAgIG1f
dGV4dHVyZUlkID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBjb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgICAgIGNvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJ
ZCk7Ci0gICAgICAgIEludFNpemUgc2l6ZSA9IG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgpOwotICAg
ICAgICBjb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUpOwotICAgICAgICAvLyBTZXQgdGhlIG1pbi1tYWcgZmlsdGVycyB0byBs
aW5lYXIgYW5kIHdyYXAgbW9kZXMgdG8gR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UK
LSAgICAgICAgLy8gdG8gZ2V0IGFyb3VuZCBOUE9UIHRleHR1cmUgbGltaXRhdGlvbnMgb2YgR0xF
Uy4KLSAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgICAgICBjb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAg
ICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIG1fdGV4dHVyZUNoYW5nZWQgPSBmYWxzZTsKLSAgICAg
ICAgLy8gVGhlIGZsdXNoKCkgaGVyZSBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIGhhdmUgdG8gbWFr
ZSBzdXJlIHRoYXQgdGhlIHRleHR1cmUgY3JlYXRlZCBpbiB0aGlzCi0gICAgICAgIC8vIGNvbnRl
eHQgKHRoZSBjb21wb3NpdG9yIGNvbnRleHQpIGlzIGFjdHVhbGx5IGNyZWF0ZWQgYnkgdGhlIHNl
cnZpY2Ugc2lkZSBiZWZvcmUgdGhlIGNoaWxkIGNvbnRleHQKLSAgICAgICAgLy8gYXR0ZW1wdHMg
dG8gdXNlIGl0IChpbiBwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKS4KLSAgICAgICAgY29udGV4dC0+
Zmx1c2goKTsKLSAgICB9CiAgICAgLy8gVXBkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgdGV4dHVy
ZSB1c2VkIGJ5IHRoZSBjb21wb3NpdG9yLgogICAgIGlmIChtX2NvbnRlbnRzRGlydHkpIHsKICAg
ICAgICAgbV9kcmF3aW5nQnVmZmVyLT5wdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CkBAIC0xMDAs
MTQgKzc3LDkgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoKQogICAgIH0KIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNldFRl
eHR1cmVDaGFuZ2VkKCkKLXsKLSAgICBtX3RleHR1cmVDaGFuZ2VkID0gdHJ1ZTsKLX0KLQogdW5z
aWduZWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp0ZXh0dXJlSWQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3RleHR1cmVJZDsKKyAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyID8gbV9kcmF3aW5n
QnVmZmVyLT5wbGF0Zm9ybUNvbG9yQnVmZmVyKCkgOiAwOwogfQogCiB2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6c2V0RHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVy
KQpAQCAtMTE3LDcgKzg5LDYgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNldERyYXdp
bmdCdWZmZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKICAgICAgICAgICAgIGxheWVy
UmVuZGVyZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3ND
b250ZXh0M0QoKS5nZXQoKSk7CiAKICAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gZHJhd2luZ0J1
ZmZlcjsKLSAgICAgICAgbV90ZXh0dXJlQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAgaWYgKGRy
YXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQogICAgICAgICAgICAgbGF5ZXJSZW5kZXJl
cigpLT5hZGRDaGlsZENvbnRleHQobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgp
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggZGRlZWVmNWIx
MTcxOWE3YzRiNDg0MGMxMDIzZWE1NmI3ZDkwYzIyOC4uNzI4Njc5NjM2NTI0ZTU4MmQ5MTE1NmI1
M2VlYzZiNGQzZjM0Yjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKCk7CiAKICAgICB2b2lkIHNldFRleHR1cmVDaGFuZ2VkKCk7Ci0gICAgdW5zaWdu
ZWQgdGV4dHVyZUlkKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBj
b25zdDsKICAgICB2b2lkIHNldERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFjNGI5ZjIwOTI4ZGYzYTFmNTI1
YTJmMTRjNWMyMWFlZTQ3MGM1ZjguLmY5ZDE2NmY4YWM4YWQzZTdhYzJjMmYyN2M2YjMwNzVmYTEy
M2U4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00Miw4ICs0Miw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Q2FudmFzTGF5
ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAgIDogTGF5ZXJDaHJv
bWl1bShvd25lcikKLSAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1ZSkKLSAgICAsIG1fdGV4dHVy
ZUlkKDApCiAgICAgLCBtX2hhc0FscGhhKHRydWUpCiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBo
YSh0cnVlKQogewpAQCAtNjMsNyArNjEsNyBAQCB2b2lkIENhbnZhc0xheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIExheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwogCiAgICAgQ0NDYW52YXNMYXllckltcGwqIGNhbnZhc0xh
eWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllcik7Ci0gICAgY2FudmFz
TGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7CisgICAgY2FudmFzTGF5ZXItPnNldFRl
eHR1cmVJZCh0ZXh0dXJlSWQoKSk7CiAgICAgY2FudmFzTGF5ZXItPnNldEhhc0FscGhhKG1faGFz
QWxwaGEpOwogICAgIGNhbnZhc0xheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEobV9wcmVtdWx0
aXBsaWVkQWxwaGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDIzMjMw
YWMzYWQ5MDg3MWI4NTQ1YmM2NTUzZDZiNTQ0NDI5NTJhZWYuLmY4NzFhZWUyOTJlODg2MjRiZDc3
NTgwYzc3NjNiZDNiOGI1Nzc0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKQEAg
LTUwLDEwICs1MCw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDYW52YXNM
YXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwogCisgICAgdmlydHVh
bCB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJDYW52YXNMYXllciI7IH0KIAot
ICAgIGJvb2wgbV90ZXh0dXJlQ2hhbmdlZDsKLSAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKICAg
ICBib29sIG1faGFzQWxwaGE7CiAgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3
aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAppbmRleCBjOTA0ZmI0ZWE1MDc3ZTUz
YTMzNWNlNzRjMTBmZWY2ZDE2YmY1MDY4Li5iYTM4NTQ2ZGExY2QxZGFhMWZhM2M4ZmI5NDRiMTY4
MWZmMWIwZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTMy
LDkgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLQog
I2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkdyQ29udGV4dC5oIgogI2VuZGlmCkBAIC02Miw3ICs2
MCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYKICAgICByZXR1cm4gb2Zmc2NyZWVuQ29sb3JU
ZXh0dXJlOwogfQogCi0KIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNp
emUmIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVsdGlzYW1wbGVF
eHRlbnNpb25TdXBwb3J0ZWQsCkBAIC04MiwxMCArNzksNiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3
aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICwgbV9nckNvbnRleHQo
MCkKICNlbmRpZgogewotICAgIGlmICghbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUiKSkgewotICAg
ICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBtX2Zi
byA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgY29udGV4dC0+YmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIG1fY29s
b3JCdWZmZXIgPSBnZW5lcmF0ZUNvbG9yVGV4dHVyZShjb250ZXh0LCBzaXplKTsKQEAgLTExNSwz
MiArMTA4LDE3IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigp
CiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2NhbGxi
YWNrKQotICAgICAgICBtX2NhbGxiYWNrLT53aWxsUHVibGlzaCgpOwogICAgIGlmIChtdWx0aXNh
bXBsZSgpKQogICAgICAgICBjb21taXQoKTsKLSAgICB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlID0g
bV9wbGF0Zm9ybUxheWVyLT50ZXh0dXJlSWQoKTsKLSAgICAvLyBXZSBkbyB0aGUgY29weSBpbiB0
aGUgY2FudmFzJyAoY2hpbGQpIGNvbnRleHQgc28gdGhhdCBpdCBleGVjdXRlcyBpbiB0aGUgY29y
cmVjdCBvcmRlciByZWxhdGl2ZSB0bwotICAgIC8vIG90aGVyIGNvbW1hbmRzIGluIHRoZSBjaGls
ZCBjb250ZXh0LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcGFyZW50IHRleHR1cmUgYWx3YXlzIGNv
bnRhaW5zIGEgY29tcGxldGUKLSAgICAvLyBmcmFtZSBhbmQgbm90IHNvbWUgaW50ZXJtZWRpYXRl
IHJlc3VsdC4KICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogI2lmIFVTRShT
S0lBKQogICAgIGlmIChtX2dyQ29udGV4dCkKICAgICAgICAgbV9nckNvbnRleHQtPmZsdXNoKDAp
OwogI2VuZGlmCi0gICAgc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKSktPmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0o
bV9jb2xvckJ1ZmZlciwgcGFyZW50VGV4dHVyZSk7CiAgICAgbV9jb250ZXh0LT5mbHVzaCgpOwog
fQogI2VuZGlmCiAKLXZvaWQgRHJhd2luZ0J1ZmZlcjo6ZGlkUmVzZXQoKQotewotI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAobV9wbGF0Zm9ybUxheWVyKQotICAgICAg
ICBtX3BsYXRmb3JtTGF5ZXItPnNldFRleHR1cmVDaGFuZ2VkKCk7Ci0jZW5kaWYKLX0KLQogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZm
ZXI6OnBsYXRmb3JtTGF5ZXIoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKaW5k
ZXggZDc4ZmMxY2NiYmM1OTVkOTUyMWM4MDllYzdiMGM2YTU3MjczMWE5OS4uMzc2M2Y3YjU5ODI3
YTA1ZGQxNjA0NjM2ZmJjNGFhYzRjMGJmYmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJv
bWl1bS5oCkBAIC00MCw3ICs0MCw2IEBAIHB1YmxpYzoKICAgICAvLyAgIEdMX0NIUk9NSVVNX3Jl
c291cmNlX3NhZmUgIDogaW5kaWNhdGluZyB0aGF0IHRleHR1cmVzL3JlbmRlcmJ1ZmZlcnMgYXJl
IGFsd2F5cyBpbml0aWFsaXplZCBiZWZvcmUgcmVhZC93cml0ZS4KICAgICAvLyAgIEdMX0NIUk9N
SVVNX3N0cmljdF9hdHRyaWJzIDogaW5kaWNhdGluZyBhIEdMIGVycm9yIGlzIGdlbmVyYXRlZCBm
b3Igb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuCiAgICAgLy8gICBHTF9DSFJPTUlVTV9t
YXBfc3ViCi0gICAgLy8gICBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1
cmUKICAgICAvLyAgIEdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrCiAg
ICAgLy8gICBHTF9DSFJPTUlVTV9yYXRlX2xpbWl0X29mZnNjcmVlbl9jb250ZXh0CiAKQEAgLTY4
LDkgKzY3LDYgQEAgcHVibGljOgogICAgIHZvaWQqIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSh1
bnNpZ25lZCB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQg
d2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdW5zaWdu
ZWQgYWNjZXNzKTsKICAgICB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNvbnN0IHZv
aWQqKTsKIAotICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVy
ZQotICAgIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh1bnNpZ25lZCB0
ZXh0dXJlLCB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlKTsKLQogICAgIC8vIEdMX0NIUk9NSVVNX3N3
YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrCiAgICAgY2xhc3MgU3dhcEJ1ZmZlcnNDb21wbGV0
ZUNhbGxiYWNrQ0hST01JVU0gewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGJkNTA2NDFiOTI4NjMyMDYyYTAzYjY5ZDI4MzVlNzUyZmMwN2RhMTcuLjc2
MjE3YjRiOWU2Yzk1YWYyZDA4YjQyNWQzYWFjYTI3Y2RmNmVmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcApAQCAtNDksNiArNDksOCBAQCBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJD
aHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVt
KgogV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lcikKICAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0ob3duZXIpCiAgICAgLCBt
X2NvbnRleHQoMCkKKyAgICAsIG1fdGV4dHVyZUlkKDApCisgICAgLCBtX3RleHR1cmVDaGFuZ2Vk
KHRydWUpCiAgICAgLCBtX2NvbnRleHRTdXBwb3J0c1JhdGVMaW1pdGluZ0V4dGVuc2lvbihmYWxz
ZSkKICAgICAsIG1fcmF0ZUxpbWl0aW5nVGltZXIodGhpcywgJldlYkdMTGF5ZXJDaHJvbWl1bTo6
cmF0ZUxpbWl0Q29udGV4dCkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDE4NmU1YzEzOThiOWE2NWQ0MzFmY2E0NGU0NDM3YmI0
MzJiZDk2MGMuLmM0MzQ0MGQ5Nzk1MGQxN2VmYWE0MTFjZWEzYzFhOGIzYzc1MTYxY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC02NSwxMiArNjUsMTUgQEAgcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJHTExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25l
cik7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVy
ZUlkOyB9CiAgICAgdm9pZCByYXRlTGltaXRDb250ZXh0KFRpbWVyPFdlYkdMTGF5ZXJDaHJvbWl1
bT4qKTsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyIGhhcyBhIHNp
ZGUtZWZmZWN0IG9mIGFzc2lnbmluZyBpdHNlbGYKICAgICAvLyB0byB0aGUgbGF5ZXIuIEJlY2F1
c2Ugb2YgdGhhdCBHcmFwaGljc0NvbnRleHQzRCdzIGRlc3RydWN0b3Igd2lsbCByZXNldAogICAg
IC8vIGxheWVyJ3MgY29udGV4dCB0byAwLgogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRl
eHQ7CisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgYm9vbCBtX3RleHR1cmVDaGFuZ2Vk
OwogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNSYXRlTGltaXRpbmdFeHRlbnNpb247CiAgICAg
VGltZXI8V2ViR0xMYXllckNocm9taXVtPiBtX3JhdGVMaW1pdGluZ1RpbWVyOwogICAgIGJvb2wg
bV90ZXh0dXJlVXBkYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAppbmRleCA5YWJlYTgyYWZjYTFmZGE0MmViMjQx
YzBkMDA4NWE0NDJlNjg3YzhmLi43ODEzMDkwYWFhNTIxMzVlNmU5NDA2MWExMTEwMDEzOTYyYjg0
MjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJh
d2luZ0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuY3BwCkBAIC0yODYsOCArMjg2LDYgQEAgYm9vbCBEcmF3aW5nQnVmZmVy
OjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogCiAgICAgY2xlYXJGcmFtZWJ1ZmZlcigp
OwogCi0gICAgZGlkUmVzZXQoKTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAppbmRl
eCAwMTlhYjY1YWY5YTA3OTZmY2M4ZWQ5Y2IzMWM4NzdlYWVjZWIzOGYwLi5jYmUwMzE3M2JhZWY5
MGZmNTdmMTc2YTkyZDJlYjA3ZTI4ZjU4MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKQEAgLTkwLDE5ICs5MCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgY2xhc3MgV2lsbFB1Ymxpc2hDYWxsYmFjayB7Ci0g
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbGxQdWJsaXNoQ2FsbGJhY2spOwotICAgIHB1
YmxpYzoKLSAgICAgICAgV2lsbFB1Ymxpc2hDYWxsYmFjaygpIHsgfQotICAgICAgICB2aXJ0dWFs
IH5XaWxsUHVibGlzaENhbGxiYWNrKCkgeyB9Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFB1Ymxpc2goKSA9IDA7Ci0gICAgfTsKLQotICAgIHZvaWQgc2V0V2lsbFB1Ymxpc2hD
YWxsYmFjayhQYXNzT3duUHRyPFdpbGxQdWJsaXNoQ2FsbGJhY2s+IGNhbGxiYWNrKSB7IG1fY2Fs
bGJhY2sgPSBjYWxsYmFjazsgfQotI2VuZGlmCi0KICNpZiBVU0UoU0tJQSkKICAgICB2b2lkIHNl
dEdyQ29udGV4dChHckNvbnRleHQqIGN0eCk7CiAgICAgdm9pZCBnZXRHclBsYXRmb3JtU3VyZmFj
ZURlc2MoR3JQbGF0Zm9ybVN1cmZhY2VEZXNjKik7CkBAIC0xMTUsOSArMTAyLDYgQEAgcHJpdmF0
ZToKICAgICAKICAgICBEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50
U2l6ZSYsIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQsIGJvb2wgcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKTsKIAotICAgIC8vIFBsYXRmb3JtIHNwZWNpZmlj
IGZ1bmN0aW9uIGNhbGxlZCBhZnRlciByZXNldCgpIHNvIGVhY2ggcGxhdGZvcm0gY2FuIGRvIGV4
dHJhIHdvcmsgaWYgbmVlZGVkCi0gICAgdm9pZCBkaWRSZXNldCgpOwotCiAgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgYm9v
bCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkOwpAQCAtMTM3LDcgKzEyMSw2IEBAIHBy
aXZhdGU6CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXI7CiAK
ICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICBPd25QdHI8V2lsbFB1Ymxpc2hDYWxsYmFjaz4g
bV9jYWxsYmFjazsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgUmVmUHRy
PENhbnZhczJETGF5ZXJDaHJvbWl1bT4gbV9wbGF0Zm9ybUxheWVyOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2VlMTcxMWFiZTk2Y2E3NGRhMzQ4
YmY4MGNiYzMwMzMyMTg0NDIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTaGFyZWRH
cmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZEdyYXBo
aWNzQ29udGV4dDNEKiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6c19pbnN0YW5jZSA9IDA7CisK
K1Bhc3NSZWZQdHI8U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q+IFNoYXJlZEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGUoSG9zdFdpbmRvdyogd2luZG93KQoreworICAgIFJlZlB0cjxTaGFyZWRHcmFw
aGljc0NvbnRleHQzRD4gc2hhcmVkQ29udGV4dDsKKyAgICBpZiAoIXNfaW5zdGFuY2UpIHsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICAgICAg
YXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOworICAgICAgICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSB0
cnVlOworICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOworICAgICAgICBhdHRy
aWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3MgPSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRl
eHRzIGNhbiBub3QgaGFuZGxlIGxvc3QgY29udGV4dHMuCisgICAgICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRl
cywgd2luZG93KTsKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBzX2luc3RhbmNl
ID0gYWRvcHRSZWYobmV3IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQucmVsZWFzZSgp
KSkuZ2V0KCk7CisgICAgfQorICAgIGlmIChzX2luc3RhbmNlKQorICAgICAgICBzaGFyZWRDb250
ZXh0ID0gYWRvcHRSZWYoc19pbnN0YW5jZSk7CisgICAgcmV0dXJuIHNoYXJlZENvbnRleHQ7Cit9
CisKK1NoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRChQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRl
eHQpCit7Cit9CisKK1NoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjp+U2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QoKQoreworICAgIHNfaW5zdGFuY2UgPSAwOworfQorCit9CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQz
RC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNz
Q29udGV4dDNELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlY2U3YWNhMzVhNzVlMDI3MmQ2NzEyYWY4NTcwNGZi
ZDA3MTNkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEX2gKKyNkZWZpbmUgU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0RfaAorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShIb3N0V2luZG93Kik7Cisg
ICAgflNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+KTsKKworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0Owor
ICAgIHN0YXRpYyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogc19pbnN0YW5jZTsKK307CisKK30K
KworI2VuZGlmIC8vIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEX2gKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVy
TWFjLm1tCmluZGV4IDVjYzYxZmNjMTc4MjY4ZjgwYjU0YmJiOThmYjU1MzBkYTZhOGVkNWEuLjQ1
MGE3YzcwNzgzNTNlODE1ZWQ1NDE2MWY4NGVlODI0OTdlYWY0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZm
ZXJNYWMubW0KQEAgLTg0LDEwICs4NCw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVy
KCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERyYXdpbmdCdWZmZXI6OmRpZFJlc2V0KCkKLXsK
LX0KLQogUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCiB7CiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAKaW5k
ZXggNjhkY2I1NTIyOGE1NWJjNWJlNGEzZjNlZTU1NmMyMzBlMjExOTViNS4uNDM1Nzc2NTEzNDc3
NmE5OTE4ODZmZjhhZmU4N2E3ZDAxNGZjNjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAKQEAg
LTcxLDEwICs3MSw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVh
cigpOwogfQogCi12b2lkIERyYXdpbmdCdWZmZXI6OmRpZFJlc2V0KCkKLXsKLX0KLQogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6
OnBsYXRmb3JtTGF5ZXIoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0RyYXdpbmdCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0RyYXdpbmdCdWZmZXJHdGsuY3BwCmluZGV4IDUxMjBhM2M2ZGJjZTBl
MGExZDIzOGMwZjE2NTczMDc5NTc1NzA3N2IuLjI2ZDVkOTJkMGIzM2Q3NTgzMzgzNDlhNmQzNDVm
NDg2MGMwMTdiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9EcmF3aW5nQnVmZmVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvRHJhd2luZ0J1ZmZlckd0ay5jcHAKQEAgLTcxLDEwICs3MSw2IEBAIERyYXdp
bmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERyYXdp
bmdCdWZmZXI6OmRpZFJlc2V0KCkKLXsKLX0KLQogUGxhdGZvcm0zRE9iamVjdCBEcmF3aW5nQnVm
ZmVyOjpwbGF0Zm9ybUNvbG9yQnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb2xvckJ1
ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGY3ZDNlMTJjYTMyNmZlMTI3ZmUx
NmVkY2M5ZTAyMjYxNjQ0Yjk0YS4uOTMxNTFhNjQ1ZTk4ZGZiYmQ3MDhlMGZjODlhYmVlMjRjMmE2
OTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0w
OC0wNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gQWNjZWxlcmF0ZWQgY2FudmFzIGJyZWFrcyB3aGVuIG1vdmluZyBjYW52YXNlcyBv
ciByZXNvdXJjZXMgYmV0d2VlbiBQYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjU0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgcGx1bWJpbmcgZm9yIGNvcHlUZXh0dXJlVG9QYXJlbnRU
ZXh0dXJlIGV4dGVuc2lvbiwgaXQncyBubyBsb25nZXIgdXNlZCBvciBuZWVkZWQuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvRXh0ZW5z
aW9uczNEQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9t
aXVtLmNwcDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorCiAy
MDExLTA4LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBD
U3RyaW5nQnVmZmVyIHNob3VsZCBoYXZlIHRocmVhZCBzYWZldHkgY2hlY2tzIHR1cm5lZCBvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRl
eHQzRC5oCmluZGV4IDc0ZTM3MTEzNGY1ZTNkMTJmMWQxMDFiOWU1ZjY2ZTBkMzQ3ZTRjYWEuLjgx
YThiZDVlYTJjOTIzOTY0YmI4YTY1YjhjMTZkYzVlMGJhNWQzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTY3
LDkgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQqIG1hcFRleFN1YkltYWdlMkRD
SFJPTUlVTShXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNl
dCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQs
IFdHQzNEZW51bSBmb3JtYXQsIFdHQzNEZW51bSB0eXBlLCBXR0MzRGVudW0gYWNjZXNzKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNvbnN0IHZvaWQq
KSA9IDA7CiAKLSAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1
cmUKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTShX
ZWJHTElkIHRleHR1cmUsIFdlYkdMSWQgcGFyZW50VGV4dHVyZSkgPSAwOwotCiAgICAgLy8gR0xf
Q0hST01JVU1fcmVxdWVzdF9leHRlbnNpb24KICAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRSZXF1
ZXN0YWJsZUV4dGVuc2lvbnNDSFJPTUlVTSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dEV4dGVuc2lvbkNIUk9NSVVNKGNvbnN0IGNoYXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKaW5kZXggMmZiNThmMzQ3
MTBkMmJhMGM3OWVlYjdjMTM0YTczMGMxYmFlYmRiOC4uMjY4ZjNjNjU2MjMyNDQxNmY5YTFmZjMz
YjJkNjljZGE3OGNhOTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0V4dGVuc2lvbnMzRENocm9taXVtLmNwcApAQCAtOTcsMTEgKzk3LDYgQEAgdm9pZCBFeHRlbnNp
b25zM0RDaHJvbWl1bTo6dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9pZCogZGF0
YSkKICAgICBtX2ludGVybmFsLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShkYXRhKTsKIH0K
IAotdm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVD
SFJPTUlVTSh1bnNpZ25lZCB0ZXh0dXJlLCB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlKQotewotICAg
IG1faW50ZXJuYWwtPmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odGV4dHVyZSwg
cGFyZW50VGV4dHVyZSk7Ci19Ci0KIFBsYXRmb3JtM0RPYmplY3QgRXh0ZW5zaW9uczNEQ2hyb21p
dW06OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAKaW5kZXggYTMwOTY1NmMxZmYxZjY0YzVmMTMxNmVlMjNlODMwZWMwZGYzMWE0OC4uYmE2ZTcw
MGU5ZTJjZDJhMmEwMjZlZDgwMjM5MDIyZDcyZjk1YTE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAg
LTgzMiwxMiArODMyLDYgQEAgREVMRUdBVEVfVE9fSU1QTF8xKHVubWFwQnVmZmVyU3ViRGF0YUNI
Uk9NSVVNLCBjb25zdCB2b2lkKikKIERFTEVHQVRFX1RPX0lNUExfOVIobWFwVGV4U3ViSW1hZ2Uy
RENIUk9NSVVNLCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVp
LCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIHZvaWQqKQogREVMRUdB
VEVfVE9fSU1QTF8xKHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBjb25zdCB2b2lkKikKIAot
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVy
ZUNIUk9NSVVNKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgUGxhdGZvcm0zRE9iamVjdCBwYXJl
bnRUZXh0dXJlKQotewotICAgIG1faW1wbC0+c2V0UGFyZW50Q29udGV4dChtX3dlYlZpZXdJbXBs
LT5ncmFwaGljc0NvbnRleHQzRCgpKTsKLSAgICBtX2ltcGwtPmNvcHlUZXh0dXJlVG9QYXJlbnRU
ZXh0dXJlQ0hST01JVU0odGV4dHVyZSwgcGFyZW50VGV4dHVyZSk7Ci19Ci0KIERFTEVHQVRFX1RP
X0lNUExfMTAoYmxpdEZyYW1lYnVmZmVyQ0hST01JVU0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rp
bnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RiaXRm
aWVsZCwgR0MzRGVudW0pCiBERUxFR0FURV9UT19JTVBMXzUocmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQ0hST01JVU0sIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEc2l6
ZWksIEdDM0RzaXplaSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCmluZGV4IGU1ODQzNjk2M2Y4OWE3MzNkN2Y3Mzlh
ZWNhNmUyYWQ0MTJmYjQ4MjcuLjE2YTY5ZDUxMmRmZGVjYWMwNDA0Y2VkZjNhZTRlMzQ2MWMxODhj
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzREludGVybmFsLmgKQEAgLTI3MiwxMCArMjcyLDYgQEAgcHVibGljOgogICAgIHZvaWQq
IG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGVudW0gYWNj
ZXNzKTsKICAgICB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNvbnN0IHZvaWQqKTsK
IAotICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRfdGV4dHVyZQotICAg
IGJvb2wgc3VwcG9ydHNDb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKCk7Ci0gICAg
dm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSwgUGxhdGZvcm0zRE9iamVjdCBwYXJlbnRUZXh0dXJlKTsKLQogICAgIC8vIEdMX0NI
Uk9NSVVNX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXJD
SFJPTUlVTShHQzNEaW50IHNyY1gwLCBHQzNEaW50IHNyY1kwLCBHQzNEaW50IHNyY1gxLCBHQzNE
aW50IHNyY1kxLCBHQzNEaW50IGRzdFgwLCBHQzNEaW50IGRzdFkwLCBHQzNEaW50IGRzdFgxLCBH
QzNEaW50IGRzdFkxLCBHQzNEYml0ZmllbGQgbWFzaywgR0MzRGVudW0gZmlsdGVyKTsKICAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRHNpemVpIHNhbXBsZXMsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103050</attachid>
            <date>2011-08-05 01:21:22 -0700</date>
            <delta_ts>2011-08-05 15:14:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65402-20110805012121.patch</filename>
            <type>text/plain</type>
            <size>34010</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZmM4MjlhNWFjMDUwYzY2
ZjE3YmZjZTQwMjkxNDIwOWRiYjVkYzc4Li4zMjVlZmE1MGJiZDNiMWEyMTQzMDQ2NjU5ODlkNWY4
YzFhMDVkMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTEtMDgtMDQgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIEFj
Y2VsZXJhdGVkIGNhbnZhcyBicmVha3Mgd2hlbiBtb3ZpbmcgY2FudmFzZXMgb3IgcmVzb3VyY2Vz
IGJldHdlZW4gUGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIG9uZSBzaGFyZWQgR3JhcGhpY3NDb250ZXh0M0QgZm9yIHRoZSB3aG9sZSBwcm9j
ZXNzIGluc3RlYWQgb2Ygb25lIHBlciBQYWdlIGFzIGNhbnZhc2VzIGNhbiBtb3ZlIGJldHdlZW4K
KyAgICAgICAgcGFnZXMgYW5kIGRpcmVjdGx5IGRyYXcgaW50byBjb250ZXh0cyBpbiBkaWZmZXJl
bnQgcGFnZXMuICBBbHNvIHN3aXRjaGVzIERyYXdpbmdCdWZmZXJDaHJvbWl1bSBvdmVyIHRvIHVz
ZSBhCisgICAgICAgIGRpcmVjdGx5IHNoYXJlZCB0aGUgY29sb3IgYXR0YWNobWVudCBpbnN0ZWFk
IG9mIGNvcHlpbmcgaXQgdG8gYSBzZXBhcmF0ZSB0ZXh0dXJlIGFuZCByZW1vdmVzIHRoZSBub3ct
dW5uZWNlc3NhcnkKKyAgICAgICAgRHJhd2luZ0J1ZmZlcjo6ZGlkUmVzZXQoKSBjYWxsIGFuZCBX
aWxsUHVibGlzaENhbGxiYWNrIG1lY2hhbmlzbS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5
ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp0ZXh0dXJlSWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpzZXREcmF3aW5nQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21p
dW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2lu
Z0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0
Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNp
b25zM0RDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21p
dW06OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisKKzIwMTEtMDgtMDQgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4g
IGdjYyA0LjUgY2FuJ3QgZmlndXJlIG91dCB0aGF0IHRoZSAnZGF0YScgdmFyaWFibGVzIGFyZSBh
bHdheXMgaW5pdGlhbGl6ZWQgaW4gdGhlc2UgZnVuY3Rpb25zLgogCiAgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA2OTMyZWY5ZjJmNTg5NjdhYTU0ODIxZmFjNzIwYjg0YjUzNGFiOTM3Li45ZTdm
ZmYzNjU5MjY1MTRkZWI2OTBlZjM3Y2E4ZGU2Yzg4MDE5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zNjQ5LDYgKzM2NDksOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9E
cmF3aW5nQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFk
ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhZGVyLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQz
RC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGlj
c0NvbnRleHQzRC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAppbmRleCA0ZWU5NjM1ODA1NzRkODlkNzQ4NzM4YzE5ZmM2MmIyNjg1MWNjNzc1Li42
ZWRiODM4MmI1MmRmZjRmNzk2M2E0MzgzNWI3ZDFjZTI1ZTQyNzhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
QEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJE
cmF3aW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiU2hhcmVk
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNlbmRpZgpAQCAtMTQyLDkgKzE0Myw2IEBAIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNF
bGVtZW50KiBjYW52YXMsIGJvCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICwg
bV91c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUodXNlc0Rhc2hib2FyZENvbXBhdGliaWxp
dHlNb2RlKQogI2VuZGlmCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICAs
IG1fY29udGV4dDNEKDApCi0jZW5kaWYKIHsKICNpZiAhRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQogICAgIEFTU0VSVF9VTlVTRUQodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlLCAhdXNl
c0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKTsKQEAgLTE5NSw3ICsxOTMsNyBAQCBib29sIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0CiB7
CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICBpZiAobV9jb250ZXh0M0Qp
Ci0gICAgICAgIHJldHVybiBtX2NvbnRleHQzRC0+cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpOwor
ICAgICAgICByZXR1cm4gbV9jb250ZXh0M0QtPmNvbnRleHQoKS0+cGFpbnRzSW50b0NhbnZhc0J1
ZmZlcigpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDUwLDcgKzIwNDgsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRBY2NlbGVyYXRpb24oKQogCiAg
ICAgaWYgKCFtX2NvbnRleHQzRCkgewogICAgICAgICBQYWdlKiBwYWdlID0gY2FudmFzKCktPmRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICAgICAgbV9jb250ZXh0M0QgPSBwYWdlLT5zaGFyZWRHcmFw
aGljc0NvbnRleHQzRCgpOworICAgICAgICBtX2NvbnRleHQzRCA9IFNoYXJlZEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGUocGFnZS0+Y2hyb21lKCkpOwogICAgICAgICBpZiAoIW1fY29udGV4dDNE
KSB7CiAgICAgICAgICAgICBjbGVhckFjY2VsZXJhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMjA2MywxNCArMjA2MSwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
cmVzZXRBY2NlbGVyYXRpb24oKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmNyZWF0ZURy
YXdpbmdCdWZmZXIoY2FudmFzKCktPnNpemUoKSk7CisgICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9
IG1fY29udGV4dDNELT5jb250ZXh0KCktPmNyZWF0ZURyYXdpbmdCdWZmZXIoY2FudmFzKCktPnNp
emUoKSk7CiAgICAgICAgIGlmICghbV9kcmF3aW5nQnVmZmVyKSB7CiAgICAgICAgICAgICBjbGVh
ckFjY2VsZXJhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgY3R4LT5zZXRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9kcmF3
aW5nQnVmZmVyLmdldCgpLCBjYW52YXMoKS0+c2l6ZSgpKTsKKyAgICBjdHgtPnNldEdyYXBoaWNz
Q29udGV4dDNEKG1fY29udGV4dDNELT5jb250ZXh0KCksIG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwg
Y2FudmFzKCktPnNpemUoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBkZGI4MGE3YTVj
YjZiMDZiOTJlOWI1N2QyOTIyMWVkZTI5OGJiNjAxLi41Yjg2MjNjYzU0OWY5ZjMwNDJjY2U3MmVh
ZDBkZjQyMjNiOTEyMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0KICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2Vu
ZGlmCkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFRleHRNZXRyaWNzOwogCiAjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKIGNsYXNzIERyYXdpbmdCdWZmZXI7Ci1jbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKK2NsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwogI2VuZGlmCiAKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBAIC0zMDgsNyArMzA3LDcgQEAgcHJpdmF0ZToKIAog
I2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAgICAgUmVmUHRyPERyYXdpbmdCdWZm
ZXI+IG1fZHJhd2luZ0J1ZmZlcjsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29u
dGV4dDNEOworICAgIFJlZlB0cjxTaGFyZWRHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0M0Q7
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDMyNDE5YTBiZjViNzUyM2YyZTU4
OTczZDZjZDVmZDIwODgyYjAyNjAuLmRkOGQ3NmY0Mzc4OWEzZWQ5OTZjYTVjZjAwYTUzMjlkNTkw
ZGRjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNzUsMTAgKzc1LDYgQEAKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0j
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAjaW5jbHVkZSAiU3Rv
cmFnZUFyZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC03NTIsMjMgKzc0
OCw2IEBAIHZvaWQgUGFnZTo6c2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAg
ICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+YXR0YWNoRGVidWdnZXIobV9kZWJ1Z2dlcik7CiB9CiAK
LUdyYXBoaWNzQ29udGV4dDNEKiBQYWdlOjpzaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpCi17Ci0j
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBpZiAoIW1fc2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0QpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0
cjsKLSAgICAgICAgYXR0ci5kZXB0aCA9IGZhbHNlOwotICAgICAgICBhdHRyLnN0ZW5jaWwgPSB0
cnVlOwotICAgICAgICBhdHRyLmFudGlhbGlhcyA9IGZhbHNlOwotICAgICAgICBhdHRyLmNhblJl
Y292ZXJGcm9tQ29udGV4dExvc3MgPSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRleHRzIGNhbiBub3Qg
aGFuZGxlIGxvc3QgY29udGV4dHMuCi0gICAgICAgIG1fc2hhcmVkR3JhcGhpY3NDb250ZXh0M0Qg
PSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHIsIGNocm9tZSgpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG1fc2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuZ2V0KCk7Ci0jZWxzZSAvLyAhRU5BQkxF
KEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQogU3RvcmFnZU5hbWVzcGFjZSogUGFnZTo6c2Vzc2lvblN0b3Jh
Z2UoYm9vbCBvcHRpb25hbENyZWF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMWUwM2FhZGRkZmMz
N2IxZjFiY2MyYjczMGZmZGI3M2IzZWRmMGU1MS4uNjExNmY4OGZjYTgyZjdlYzM3OGM3ZDYwNTE4
Mjk1MTg3NGMwYTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTgxLDcgKzgxLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAgICAgY2xhc3MgU2Nyb2xs
YWJsZUFyZWE7CiAgICAgY2xhc3MgU2V0dGluZ3M7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CiAgICAgY2xhc3MgU3BlZWNoSW5wdXQ7CiAgICAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnQ7
CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQpAQCAtMjY2LDggKzI2NSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHZvaWQgYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdl
R3JvdXAqKTsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3Jv
dXAqLCBMaW5rSGFzaCB2aXNpdGVkSGFzaCk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IHNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7Ci0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAg
ICAgICAgIFN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVh
dGUgPSB0cnVlKTsKICAgICAgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShQYXNzUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+KTsKQEAgLTMyNCwxMCArMzIxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBPd25QdHI8Q2hyb21lPiBtX2Nocm9tZTsKICAgICAgICAgT3duUHRyPERyYWdD
YXJldENvbnRyb2xsZXI+IG1fZHJhZ0NhcmV0Q29udHJvbGxlcjsKIAotI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9z
aGFyZWRHcmFwaGljc0NvbnRleHQzRDsKLSNlbmRpZgotICAgICAgICAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogICAgICAgICBPd25QdHI8RHJhZ0NvbnRyb2xsZXI+IG1fZHJhZ0NvbnRyb2xs
ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDJj
NDczYTEwMTQ2MjZmMDUwNjcwMzU1NTM2Njg2MzFmNjRmMTFjZDEuLjdhOGUwYmZhN2EyY2MwYjE1
ODIyOGM3M2I5NGU1ZWZiOTJmODMyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmNwcApAQCAtNTQsOCArNTQsNiBAQCBDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJE
TGF5ZXJDaHJvbWl1bShEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyLCBHcmFwaAogCiBDYW52
YXMyRExheWVyQ2hyb21pdW06On5DYW52YXMyRExheWVyQ2hyb21pdW0oKQogewotICAgIGlmICht
X3RleHR1cmVJZCkKLSAgICAgICAgbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+ZGVsZXRlVGV4dHVy
ZShtX3RleHR1cmVJZCk7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAmJiBsYXllclJlbmRlcmVy
KCkpCiAgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2lu
Z0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKS5nZXQoKSk7CiB9CkBAIC03MiwyNyArNzAsNiBA
QCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygp
CiB7CiAgICAgaWYgKCFtX2NvbnRlbnRzRGlydHkgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKG1fdGV4dHVyZUNoYW5nZWQpIHsgLy8gV2UgaGF2ZSB0byBnZW5l
cmF0ZSBhIG5ldyBiYWNraW5nIHRleHR1cmUuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICAgICAgaWYgKG1fdGV4dHVyZUlk
KQotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX3RleHR1cmVJZCk7Ci0gICAg
ICAgIG1fdGV4dHVyZUlkID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBjb250
ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgICAg
IGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3Rl
eHR1cmVJZCk7Ci0gICAgICAgIEludFNpemUgc2l6ZSA9IG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgp
OwotICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOwotICAgICAgICAvLyBTZXQgdGhlIG1pbi1tYWcgZmlsdGVy
cyB0byBsaW5lYXIgYW5kIHdyYXAgbW9kZXMgdG8gR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RP
X0VER0UKLSAgICAgICAgLy8gdG8gZ2V0IGFyb3VuZCBOUE9UIHRleHR1cmUgbGltaXRhdGlvbnMg
b2YgR0xFUy4KLSAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgICAgICBjb250ZXh0
LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdF
KTsKLSAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRl
eHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIG1fdGV4dHVyZUNoYW5nZWQgPSBmYWxzZTsK
LSAgICAgICAgLy8gVGhlIGZsdXNoKCkgaGVyZSBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIGhhdmUg
dG8gbWFrZSBzdXJlIHRoYXQgdGhlIHRleHR1cmUgY3JlYXRlZCBpbiB0aGlzCi0gICAgICAgIC8v
IGNvbnRleHQgKHRoZSBjb21wb3NpdG9yIGNvbnRleHQpIGlzIGFjdHVhbGx5IGNyZWF0ZWQgYnkg
dGhlIHNlcnZpY2Ugc2lkZSBiZWZvcmUgdGhlIGNoaWxkIGNvbnRleHQKLSAgICAgICAgLy8gYXR0
ZW1wdHMgdG8gdXNlIGl0IChpbiBwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKS4KLSAgICAgICAgY29u
dGV4dC0+Zmx1c2goKTsKLSAgICB9CiAgICAgLy8gVXBkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUg
dGV4dHVyZSB1c2VkIGJ5IHRoZSBjb21wb3NpdG9yLgogICAgIGlmIChtX2NvbnRlbnRzRGlydHkp
IHsKICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5wdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CkBA
IC0xMDAsMTQgKzc3LDkgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoKQogICAgIH0KIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06
OnNldFRleHR1cmVDaGFuZ2VkKCkKLXsKLSAgICBtX3RleHR1cmVDaGFuZ2VkID0gdHJ1ZTsKLX0K
LQogdW5zaWduZWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp0ZXh0dXJlSWQoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3RleHR1cmVJZDsKKyAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyID8gbV9k
cmF3aW5nQnVmZmVyLT5wbGF0Zm9ybUNvbG9yQnVmZmVyKCkgOiAwOwogfQogCiB2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6c2V0RHJhd2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5n
QnVmZmVyKQpAQCAtMTE3LDcgKzg5LDYgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNl
dERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKICAgICAgICAgICAg
IGxheWVyUmVuZGVyZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZlci0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS5nZXQoKSk7CiAKICAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gZHJh
d2luZ0J1ZmZlcjsKLSAgICAgICAgbV90ZXh0dXJlQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAg
aWYgKGRyYXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQogICAgICAgICAgICAgbGF5ZXJS
ZW5kZXJlcigpLT5hZGRDaGlsZENvbnRleHQobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRl
eHQzRCgpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggZGRl
ZWVmNWIxMTcxOWE3YzRiNDg0MGMxMDIzZWE1NmI3ZDkwYzIyOC4uNzI4Njc5NjM2NTI0ZTU4MmQ5
MTE1NmI1M2VlYzZiNGQzZjM0Yjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVt
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKCk7CiAKICAgICB2b2lkIHNldFRleHR1cmVDaGFuZ2VkKCk7Ci0gICAg
dW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0dXJl
SWQoKSBjb25zdDsKICAgICB2b2lkIHNldERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVt
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXNMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFjNGI5ZjIwOTI4ZGYz
YTFmNTI1YTJmMTRjNWMyMWFlZTQ3MGM1ZjguLmY5ZDE2NmY4YWM4YWQzZTdhYzJjMmYyN2M2YjMw
NzVmYTEyM2U4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00Miw4
ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Q2Fu
dmFzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAgIDogTGF5
ZXJDaHJvbWl1bShvd25lcikKLSAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1ZSkKLSAgICAsIG1f
dGV4dHVyZUlkKDApCiAgICAgLCBtX2hhc0FscGhhKHRydWUpCiAgICAgLCBtX3ByZW11bHRpcGxp
ZWRBbHBoYSh0cnVlKQogewpAQCAtNjMsNyArNjEsNyBAQCB2b2lkIENhbnZhc0xheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIExheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwogCiAgICAgQ0NDYW52YXNMYXllckltcGwqIGNh
bnZhc0xheWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllcik7Ci0gICAg
Y2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7CisgICAgY2FudmFzTGF5ZXIt
PnNldFRleHR1cmVJZCh0ZXh0dXJlSWQoKSk7CiAgICAgY2FudmFzTGF5ZXItPnNldEhhc0FscGhh
KG1faGFzQWxwaGEpOwogICAgIGNhbnZhc0xheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEobV9w
cmVtdWx0aXBsaWVkQWxwaGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDIzMjMwYWMzYWQ5MDg3MWI4NTQ1YmM2NTUzZDZiNTQ0NDI5NTJhZWYuLmY4NzFhZWUyOTJlODg2
MjRiZDc3NTgwYzc3NjNiZDNiOGI1Nzc0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVt
LmgKQEAgLTUwLDEwICs1MCw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBD
YW52YXNMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwogCisgICAg
dmlydHVhbCB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJDYW52YXNMYXllciI7
IH0KIAotICAgIGJvb2wgbV90ZXh0dXJlQ2hhbmdlZDsKLSAgICB1bnNpZ25lZCBtX3RleHR1cmVJ
ZDsKICAgICBib29sIG1faGFzQWxwaGE7CiAgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAppbmRleCBjOTA0ZmI0ZWE1
MDc3ZTUzYTMzNWNlNzRjMTBmZWY2ZDE2YmY1MDY4Li5iYTM4NTQ2ZGExY2QxZGFhMWZhM2M4ZmI5
NDRiMTY4MWZmMWIwZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAK
QEAgLTMyLDkgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKIAotI2luY2x1
ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKLQogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkdyQ29udGV4dC5oIgogI2VuZGlmCkBAIC02
Miw3ICs2MCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBnZW5lcmF0ZUNvbG9yVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYKICAgICByZXR1cm4gb2Zmc2NyZWVu
Q29sb3JUZXh0dXJlOwogfQogCi0KIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEludFNpemUmIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVsdGlz
YW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQsCkBAIC04MiwxMCArNzksNiBAQCBEcmF3aW5nQnVmZmVy
OjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICwgbV9nckNv
bnRleHQoMCkKICNlbmRpZgogewotICAgIGlmICghbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUiKSkg
ewotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAg
ICBtX2ZibyA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
IG1fY29sb3JCdWZmZXIgPSBnZW5lcmF0ZUNvbG9yVGV4dHVyZShjb250ZXh0LCBzaXplKTsKQEAg
LTExNSwzMiArMTA4LDE3IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1M
YXllcigpCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICht
X2NhbGxiYWNrKQotICAgICAgICBtX2NhbGxiYWNrLT53aWxsUHVibGlzaCgpOwogICAgIGlmICht
dWx0aXNhbXBsZSgpKQogICAgICAgICBjb21taXQoKTsKLSAgICB1bnNpZ25lZCBwYXJlbnRUZXh0
dXJlID0gbV9wbGF0Zm9ybUxheWVyLT50ZXh0dXJlSWQoKTsKLSAgICAvLyBXZSBkbyB0aGUgY29w
eSBpbiB0aGUgY2FudmFzJyAoY2hpbGQpIGNvbnRleHQgc28gdGhhdCBpdCBleGVjdXRlcyBpbiB0
aGUgY29ycmVjdCBvcmRlciByZWxhdGl2ZSB0bwotICAgIC8vIG90aGVyIGNvbW1hbmRzIGluIHRo
ZSBjaGlsZCBjb250ZXh0LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcGFyZW50IHRleHR1cmUgYWx3
YXlzIGNvbnRhaW5zIGEgY29tcGxldGUKLSAgICAvLyBmcmFtZSBhbmQgbm90IHNvbWUgaW50ZXJt
ZWRpYXRlIHJlc3VsdC4KICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogI2lm
IFVTRShTS0lBKQogICAgIGlmIChtX2dyQ29udGV4dCkKICAgICAgICAgbV9nckNvbnRleHQtPmZs
dXNoKDApOwogI2VuZGlmCi0gICAgc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPiht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSktPmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hS
T01JVU0obV9jb2xvckJ1ZmZlciwgcGFyZW50VGV4dHVyZSk7CiAgICAgbV9jb250ZXh0LT5mbHVz
aCgpOwogfQogI2VuZGlmCiAKLXZvaWQgRHJhd2luZ0J1ZmZlcjo6ZGlkUmVzZXQoKQotewotI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAobV9wbGF0Zm9ybUxheWVyKQot
ICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNldFRleHR1cmVDaGFuZ2VkKCk7Ci0jZW5kaWYKLX0K
LQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIERyYXdp
bmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVt
LmgKaW5kZXggZDc4ZmMxY2NiYmM1OTVkOTUyMWM4MDllYzdiMGM2YTU3MjczMWE5OS4uMzc2M2Y3
YjU5ODI3YTA1ZGQxNjA0NjM2ZmJjNGFhYzRjMGJmYmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25z
M0RDaHJvbWl1bS5oCkBAIC00MCw3ICs0MCw2IEBAIHB1YmxpYzoKICAgICAvLyAgIEdMX0NIUk9N
SVVNX3Jlc291cmNlX3NhZmUgIDogaW5kaWNhdGluZyB0aGF0IHRleHR1cmVzL3JlbmRlcmJ1ZmZl
cnMgYXJlIGFsd2F5cyBpbml0aWFsaXplZCBiZWZvcmUgcmVhZC93cml0ZS4KICAgICAvLyAgIEdM
X0NIUk9NSVVNX3N0cmljdF9hdHRyaWJzIDogaW5kaWNhdGluZyBhIEdMIGVycm9yIGlzIGdlbmVy
YXRlZCBmb3Igb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzZXMuCiAgICAgLy8gICBHTF9DSFJP
TUlVTV9tYXBfc3ViCi0gICAgLy8gICBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50
X3RleHR1cmUKICAgICAvLyAgIEdMX0NIUk9NSVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxi
YWNrCiAgICAgLy8gICBHTF9DSFJPTUlVTV9yYXRlX2xpbWl0X29mZnNjcmVlbl9jb250ZXh0CiAK
QEAgLTY4LDkgKzY3LDYgQEAgcHVibGljOgogICAgIHZvaWQqIG1hcFRleFN1YkltYWdlMkRDSFJP
TUlVTSh1bnNpZ25lZCB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwg
dW5zaWduZWQgYWNjZXNzKTsKICAgICB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNv
bnN0IHZvaWQqKTsKIAotICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRf
dGV4dHVyZQotICAgIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh1bnNp
Z25lZCB0ZXh0dXJlLCB1bnNpZ25lZCBwYXJlbnRUZXh0dXJlKTsKLQogICAgIC8vIEdMX0NIUk9N
SVVNX3N3YXBidWZmZXJzX2NvbXBsZXRlX2NhbGxiYWNrCiAgICAgY2xhc3MgU3dhcEJ1ZmZlcnND
b21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IGJkNTA2NDFiOTI4NjMyMDYyYTAzYjY5ZDI4MzVlNzUyZmMwN2Rh
MTcuLjc2MjE3YjRiOWU2Yzk1YWYyZDA4YjQyNWQzYWFjYTI3Y2RmNmVmZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtNDksNiArNDksOCBAQCBQYXNzUmVmUHRyPFdlYkdM
TGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNo
cm9taXVtKgogV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oR3JhcGhpY3NM
YXllckNocm9taXVtKiBvd25lcikKICAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0ob3duZXIpCiAg
ICAgLCBtX2NvbnRleHQoMCkKKyAgICAsIG1fdGV4dHVyZUlkKDApCisgICAgLCBtX3RleHR1cmVD
aGFuZ2VkKHRydWUpCiAgICAgLCBtX2NvbnRleHRTdXBwb3J0c1JhdGVMaW1pdGluZ0V4dGVuc2lv
bihmYWxzZSkKICAgICAsIG1fcmF0ZUxpbWl0aW5nVGltZXIodGhpcywgJldlYkdMTGF5ZXJDaHJv
bWl1bTo6cmF0ZUxpbWl0Q29udGV4dCkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDE4NmU1YzEzOThiOWE2NWQ0MzFmY2E0NGU0
NDM3YmI0MzJiZDk2MGMuLmM0MzQ0MGQ5Nzk1MGQxN2VmYWE0MTFjZWEzYzFhOGIzYzc1MTYxY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC02NSwxMiArNjUsMTUgQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJHTExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVt
KiBvd25lcik7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRh
c2s7CiAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZUlkOyB9CiAgICAgdm9pZCByYXRlTGltaXRDb250ZXh0KFRpbWVyPFdlYkdMTGF5ZXJD
aHJvbWl1bT4qKTsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyIGhh
cyBhIHNpZGUtZWZmZWN0IG9mIGFzc2lnbmluZyBpdHNlbGYKICAgICAvLyB0byB0aGUgbGF5ZXIu
IEJlY2F1c2Ugb2YgdGhhdCBHcmFwaGljc0NvbnRleHQzRCdzIGRlc3RydWN0b3Igd2lsbCByZXNl
dAogICAgIC8vIGxheWVyJ3MgY29udGV4dCB0byAwLgogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7CisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgYm9vbCBtX3RleHR1cmVD
aGFuZ2VkOwogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNSYXRlTGltaXRpbmdFeHRlbnNpb247
CiAgICAgVGltZXI8V2ViR0xMYXllckNocm9taXVtPiBtX3JhdGVMaW1pdGluZ1RpbWVyOwogICAg
IGJvb2wgbV90ZXh0dXJlVXBkYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAppbmRleCA5YWJlYTgyYWZjYTFmZGE0
MmViMjQxYzBkMDA4NWE0NDJlNjg3YzhmLi43ODEzMDkwYWFhNTIxMzVlNmU5NDA2MWExMTEwMDEz
OTYyYjg0MjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvRHJhd2luZ0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCkBAIC0yODYsOCArMjg2LDYgQEAgYm9vbCBEcmF3aW5n
QnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogCiAgICAgY2xlYXJGcmFtZWJ1
ZmZlcigpOwogCi0gICAgZGlkUmVzZXQoKTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIu
aAppbmRleCAwMTlhYjY1YWY5YTA3OTZmY2M4ZWQ5Y2IzMWM4NzdlYWVjZWIzOGYwLi5jYmUwMzE3
M2JhZWY5MGZmNTdmMTc2YTkyZDJlYjA3ZTI4ZjU4MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKQEAgLTkwLDE5ICs5
MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKTsKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgY2xhc3MgV2lsbFB1Ymxpc2hDYWxsYmFj
ayB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbGxQdWJsaXNoQ2FsbGJhY2spOwot
ICAgIHB1YmxpYzoKLSAgICAgICAgV2lsbFB1Ymxpc2hDYWxsYmFjaygpIHsgfQotICAgICAgICB2
aXJ0dWFsIH5XaWxsUHVibGlzaENhbGxiYWNrKCkgeyB9Ci0gICAgICAgIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFB1Ymxpc2goKSA9IDA7Ci0gICAgfTsKLQotICAgIHZvaWQgc2V0V2lsbFB1
Ymxpc2hDYWxsYmFjayhQYXNzT3duUHRyPFdpbGxQdWJsaXNoQ2FsbGJhY2s+IGNhbGxiYWNrKSB7
IG1fY2FsbGJhY2sgPSBjYWxsYmFjazsgfQotI2VuZGlmCi0KICNpZiBVU0UoU0tJQSkKICAgICB2
b2lkIHNldEdyQ29udGV4dChHckNvbnRleHQqIGN0eCk7CiAgICAgdm9pZCBnZXRHclBsYXRmb3Jt
U3VyZmFjZURlc2MoR3JQbGF0Zm9ybVN1cmZhY2VEZXNjKik7CkBAIC0xMTUsOSArMTAyLDYgQEAg
cHJpdmF0ZToKICAgICAKICAgICBEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29u
c3QgSW50U2l6ZSYsIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQsIGJvb2wgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKTsKIAotICAgIC8vIFBsYXRmb3JtIHNw
ZWNpZmljIGZ1bmN0aW9uIGNhbGxlZCBhZnRlciByZXNldCgpIHNvIGVhY2ggcGxhdGZvcm0gY2Fu
IGRvIGV4dHJhIHdvcmsgaWYgbmVlZGVkCi0gICAgdm9pZCBkaWRSZXNldCgpOwotCiAgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAg
ICAgYm9vbCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkOwpAQCAtMTM3LDcgKzEyMSw2
IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX211bHRpc2FtcGxlQ29sb3JCdWZm
ZXI7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICBPd25QdHI8V2lsbFB1Ymxpc2hDYWxs
YmFjaz4gbV9jYWxsYmFjazsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
UmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gbV9wbGF0Zm9ybUxheWVyOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2YyYjc0MTJlYTJiNTBj
Zjc5MTNiNzMwODQ0ZjA5NGM4YTkxZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcApAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJT
aGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEKiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6c19pbnN0YW5jZSA9
IDA7CisKK1Bhc3NSZWZQdHI8U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q+IFNoYXJlZEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUoSG9zdFdpbmRvdyogd2luZG93KQoreworICAgIGlmIChzX2luc3Rh
bmNlKSB7CisgICAgICAgIHNfaW5zdGFuY2UtPnJlZigpOyAvLyBNYW51YWxseSBpbmNyZW1lbnQg
cmVmY291bnQgZm9yIHRoaXMgY2FsbGVyIHNpbmNlIGFkb3B0UmVmKCkgZG9lcyBub3QgaW5jcmVh
c2UgdGhlIHJlZmNvdW50LgorICAgICAgICByZXR1cm4gYWRvcHRSZWYoc19pbnN0YW5jZSk7Cisg
ICAgfQorICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAg
YXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOworICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IHRydWU7
CisgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKKyAgICBhdHRyaWJ1dGVzLmNhblJl
Y292ZXJGcm9tQ29udGV4dExvc3MgPSBmYWxzZTsgLy8gQ2FudmFzIGNvbnRleHRzIGNhbiBub3Qg
aGFuZGxlIGxvc3QgY29udGV4dHMuCisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCB3aW5kb3cpOworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8U2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q+KCk7CisgICAgUmVmUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBzaGFyZWRD
b250ZXh0ID0gYWRvcHRSZWYobmV3IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQucmVs
ZWFzZSgpKSk7CisgICAgc19pbnN0YW5jZSA9IHNoYXJlZENvbnRleHQuZ2V0KCk7CisgICAgcmV0
dXJuIHNoYXJlZENvbnRleHQ7Cit9CisKK1NoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpTaGFyZWRH
cmFwaGljc0NvbnRleHQzRChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQor
ICAgIDogbV9jb250ZXh0KGNvbnRleHQpCit7Cit9CisKK1NoYXJlZEdyYXBoaWNzQ29udGV4dDNE
Ojp+U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoKQoreworICAgIHNfaW5zdGFuY2UgPSAwOworfQor
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9T
aGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlY2U3YWNhMzVh
NzVlMDI3MmQ2NzEyYWY4NTcwNGZiZDA3MTNkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEX2gK
KyNkZWZpbmUgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0RfaAorCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q+IGNy
ZWF0ZShIb3N0V2luZG93Kik7CisgICAgflNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7CisKKyAg
ICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKworICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gbV9jb250ZXh0OworICAgIHN0YXRpYyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCog
c19pbnN0YW5jZTsKK307CisKK30KKworI2VuZGlmIC8vIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21h
Yy9EcmF3aW5nQnVmZmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCmluZGV4IDVjYzYxZmNjMTc4MjY4ZjgwYjU0YmJi
OThmYjU1MzBkYTZhOGVkNWEuLjQ1MGE3YzcwNzgzNTNlODE1ZWQ1NDE2MWY4NGVlODI0OTdlYWY0
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMv
RHJhd2luZ0J1ZmZlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KQEAgLTg0LDEwICs4NCw2IEBAIERyYXdpbmdC
dWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERyYXdpbmdC
dWZmZXI6OmRpZFJlc2V0KCkKLXsKLX0KLQogUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6
cGxhdGZvcm1MYXllcigpCiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5n
QnVmZmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKaW5kZXggNjhkY2I1NTIyOGE1NWJjNWJlNGEzZjNlZTU1NmMyMzBl
MjExOTViNS4uNDM1Nzc2NTEzNDc3NmE5OTE4ODZmZjhhZmU4N2E3ZDAxNGZjNjdmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZm
ZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKQEAgLTcxLDEwICs3MSw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3
aW5nQnVmZmVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIERyYXdpbmdCdWZmZXI6OmRpZFJl
c2V0KCkKLXsKLX0KLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3Jt
TGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RyYXdpbmdCdWZmZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RyYXdpbmdCdWZmZXJHdGsuY3Bw
CmluZGV4IDUxMjBhM2M2ZGJjZTBlMGExZDIzOGMwZjE2NTczMDc5NTc1NzA3N2IuLjI2ZDVkOTJk
MGIzM2Q3NTgzMzgzNDlhNmQzNDVmNDg2MGMwMTdiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EcmF3aW5nQnVmZmVyR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRHJhd2luZ0J1ZmZlckd0ay5jcHAKQEAg
LTcxLDEwICs3MSw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVh
cigpOwogfQogCi12b2lkIERyYXdpbmdCdWZmZXI6OmRpZFJlc2V0KCkKLXsKLX0KLQogUGxhdGZv
cm0zRE9iamVjdCBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUNvbG9yQnVmZmVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jb2xvckJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NDIxYzFmZTEwZTE0NmQ2YzRhMDE4YmRlMTI0MDU2NDhiMmI0ZjhjNi4uYTU4MzZjNmRlMjFhOGUz
MDVjNTEzNGJlYjhiZjY4NTk0NmYyYWQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwxOSBAQAogMjAxMS0wOC0wNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQWNjZWxlcmF0ZWQgY2FudmFzIGJyZWFrcyB3
aGVuIG1vdmluZyBjYW52YXNlcyBvciByZXNvdXJjZXMgYmV0d2VlbiBQYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU0MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgcGx1bWJpbmcgZm9y
IGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlIGV4dGVuc2lvbiwgaXQncyBubyBsb25nZXIgdXNl
ZCBvciBuZWVkZWQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoK
KyAgICAgICAgKiBzcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHNyYy9H
cmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbC5oOgorCisyMDExLTA4LTA0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgogCiAgICAg
ICAgICogREVQUzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJH
cmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDc0ZTM3MTEzNGY1ZTNkMTJmMWQxMDFiOWU1ZjY2ZTBk
MzQ3ZTRjYWEuLjgxYThiZDVlYTJjOTIzOTY0YmI4YTY1YjhjMTZkYzVlMGJhNWQzZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtMTY3LDkgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQqIG1hcFRl
eFN1YkltYWdlMkRDSFJPTUlVTShXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dD
M0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0Rz
aXplaSBoZWlnaHQsIFdHQzNEZW51bSBmb3JtYXQsIFdHQzNEZW51bSB0eXBlLCBXR0MzRGVudW0g
YWNjZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVN
KGNvbnN0IHZvaWQqKSA9IDA7CiAKLSAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9f
cGFyZW50X3RleHR1cmUKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmVUb1BhcmVudFRleHR1
cmVDSFJPTUlVTShXZWJHTElkIHRleHR1cmUsIFdlYkdMSWQgcGFyZW50VGV4dHVyZSkgPSAwOwot
CiAgICAgLy8gR0xfQ0hST01JVU1fcmVxdWVzdF9leHRlbnNpb24KICAgICB2aXJ0dWFsIFdlYlN0
cmluZyBnZXRSZXF1ZXN0YWJsZUV4dGVuc2lvbnNDSFJPTUlVTSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdEV4dGVuc2lvbkNIUk9NSVVNKGNvbnN0IGNoYXIqKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKaW5k
ZXggMmZiNThmMzQ3MTBkMmJhMGM3OWVlYjdjMTM0YTczMGMxYmFlYmRiOC4uMjY4ZjNjNjU2MjMy
NDQxNmY5YTFmZjMzYjJkNjljZGE3OGNhOTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcApAQCAtOTcsMTEgKzk3LDYgQEAg
dm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oY29u
c3Qgdm9pZCogZGF0YSkKICAgICBtX2ludGVybmFsLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlV
TShkYXRhKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Y29weVRleHR1cmVUb1Bh
cmVudFRleHR1cmVDSFJPTUlVTSh1bnNpZ25lZCB0ZXh0dXJlLCB1bnNpZ25lZCBwYXJlbnRUZXh0
dXJlKQotewotICAgIG1faW50ZXJuYWwtPmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01J
VU0odGV4dHVyZSwgcGFyZW50VGV4dHVyZSk7Ci19Ci0KIFBsYXRmb3JtM0RPYmplY3QgRXh0ZW5z
aW9uczNEQ2hyb21pdW06OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0RDaHJvbWl1bS5jcHAKaW5kZXggYTMwOTY1NmMxZmYxZjY0YzVmMTMxNmVlMjNlODMwZWMwZGYz
MWE0OC4uYmE2ZTcwMGU5ZTJjZDJhMmEwMjZlZDgwMjM5MDIyZDcyZjk1YTE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJv
bWl1bS5jcHAKQEAgLTgzMiwxMiArODMyLDYgQEAgREVMRUdBVEVfVE9fSU1QTF8xKHVubWFwQnVm
ZmVyU3ViRGF0YUNIUk9NSVVNLCBjb25zdCB2b2lkKikKIERFTEVHQVRFX1RPX0lNUExfOVIobWFw
VGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIHZv
aWQqKQogREVMRUdBVEVfVE9fSU1QTF8xKHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBjb25z
dCB2b2lkKikKIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4dHVyZVRv
UGFyZW50VGV4dHVyZUNIUk9NSVVNKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgUGxhdGZvcm0z
RE9iamVjdCBwYXJlbnRUZXh0dXJlKQotewotICAgIG1faW1wbC0+c2V0UGFyZW50Q29udGV4dCht
X3dlYlZpZXdJbXBsLT5ncmFwaGljc0NvbnRleHQzRCgpKTsKLSAgICBtX2ltcGwtPmNvcHlUZXh0
dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odGV4dHVyZSwgcGFyZW50VGV4dHVyZSk7Ci19Ci0K
IERFTEVHQVRFX1RPX0lNUExfMTAoYmxpdEZyYW1lYnVmZmVyQ0hST01JVU0sIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rp
bnQsIEdDM0RiaXRmaWVsZCwgR0MzRGVudW0pCiBERUxFR0FURV9UT19JTVBMXzUocmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQ0hST01JVU0sIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0Rl
bnVtLCBHQzNEc2l6ZWksIEdDM0RzaXplaSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCmluZGV4IGU1ODQzNjk2M2Y4
OWE3MzNkN2Y3MzlhZWNhNmUyYWQ0MTJmYjQ4MjcuLjE2YTY5ZDUxMmRmZGVjYWMwNDA0Y2VkZjNh
ZTRlMzQ2MWMxODhjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKQEAgLTI3MiwxMCArMjcyLDYgQEAgcHVibGlj
OgogICAgIHZvaWQqIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwg
R0MzRGVudW0gYWNjZXNzKTsKICAgICB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNv
bnN0IHZvaWQqKTsKIAotICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZV90b19wYXJlbnRf
dGV4dHVyZQotICAgIGJvb2wgc3VwcG9ydHNDb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9N
SVVNKCk7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZSwgUGxhdGZvcm0zRE9iamVjdCBwYXJlbnRUZXh0dXJlKTsKLQog
ICAgIC8vIEdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCiAgICAgdm9pZCBibGl0
RnJhbWVidWZmZXJDSFJPTUlVTShHQzNEaW50IHNyY1gwLCBHQzNEaW50IHNyY1kwLCBHQzNEaW50
IHNyY1gxLCBHQzNEaW50IHNyY1kxLCBHQzNEaW50IGRzdFgwLCBHQzNEaW50IGRzdFkwLCBHQzNE
aW50IGRzdFgxLCBHQzNEaW50IGRzdFkxLCBHQzNEYml0ZmllbGQgbWFzaywgR0MzRGVudW0gZmls
dGVyKTsKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNKEdD
M0RlbnVtIHRhcmdldCwgR0MzRHNpemVpIHNhbXBsZXMsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>