<?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>68535</bug_id>
          
          <creation_ts>2011-09-21 07:48:37 -0700</creation_ts>
          <short_desc>[chromium] Revise zoom animator backend to use full transform instead of just scale.</short_desc>
          <delta_ts>2011-09-26 13:30:25 -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="W. James MacLean">wjmaclean</reporter>
          <assigned_to name="W. James MacLean">wjmaclean</assigned_to>
          <cc>backer</cc>
    
    <cc>fsamuel</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>rjkroege</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>470796</commentid>
    <comment_count>0</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 07:48:37 -0700</bug_when>
    <thetext>[chromium] Revise zoom animator backend to use full transform instead of just scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470804</commentid>
    <comment_count>1</comment_count>
      <attachid>108160</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 08:02:09 -0700</bug_when>
    <thetext>Created attachment 108160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470805</commentid>
    <comment_count>2</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 08:07:28 -0700</bug_when>
    <thetext>A couple of comments questions:

1) LINEAR interpolation is turned on for GESTURE_EVENTS to prevent text from looking overly pixelated while zooming.

2) The pixel test changes slightly with LINEAR vs NEAREST ... will this be a problem? Currently features.gypi has &apos;ENABLE_GESTURE_EVENTS=1&apos; but does anyone test with it off?

3) I assume I can do mac/mac-cg baselines once the patch is approved? Perhaps take new baselines off the bots ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470824</commentid>
    <comment_count>3</comment_count>
      <attachid>108160</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-21 08:28:31 -0700</bug_when>
    <thetext>Comment on attachment 108160
Patch

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

nits I think.

&gt; Source/WebCore/page/Settings.h:611
&gt; +        double m_zoomAnimatorPosX;

shouldn&apos;t these get a default value somewhere? Just to be safe.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:295
&gt; +        // TODO(wjmaclean): Render some interesting texture in unrendered regions.

FIXME: in WebKit

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:202
&gt; +            const GC3Dint filter = GraphicsContext3D::LINEAR;

Do we want to be smarter about this? I am not entirely sure of the implications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470829</commentid>
    <comment_count>4</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 08:34:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 108160 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108160&amp;action=review
&gt; 
&gt; nits I think.
&gt; 
&gt; &gt; Source/WebCore/page/Settings.h:611
&gt; &gt; +        double m_zoomAnimatorPosX;

Good point. I&apos;ve added initialisers that will show up when I load the next version of the patch.

&gt; shouldn&apos;t these get a default value somewhere? Just to be safe.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:295
&gt; &gt; +        // TODO(wjmaclean): Render some interesting texture in unrendered regions.
&gt; 
&gt; FIXME: in WebKit

Fixed.

&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:202
&gt; &gt; +            const GC3Dint filter = GraphicsContext3D::LINEAR;
&gt; 
&gt; Do we want to be smarter about this? I am not entirely sure of the implications.

I was wondering this too ... I&apos;m not sure if the interpolation settings are allowed to change from one display of the texture to the next. If it is, this perhaps could be added to the TiledLayerChromium interface?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470836</commentid>
    <comment_count>5</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 08:43:35 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:202
&gt; &gt; &gt; +            const GC3Dint filter = GraphicsContext3D::LINEAR;
&gt; &gt; 
&gt; &gt; Do we want to be smarter about this? I am not entirely sure of the implications.
&gt; 
&gt; I was wondering this too ... I&apos;m not sure if the interpolation settings are allowed to change from one display of the texture to the next. If it is, this perhaps could be added to the TiledLayerChromium interface?

To expand on this a bit more:

- it causes very subtle changes to about 14 existing gpu layout tests (rebaselining should suffice)
- on most hardware I think the performance impact should be low or even negligible (although I may be wrong) ... and I don&apos;t know how big the fraction &quot;1 - most&quot; is.

Certainly turning it on/off as needed would be nice, if possible. Not sure yet how hard this would be to plumb.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470840</commentid>
    <comment_count>6</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 08:49:57 -0700</bug_when>
    <thetext>&gt; Certainly turning it on/off as needed would be nice, if possible. Not sure yet how hard this would be to plumb.

OK, TiledLayerChromium could ask it&apos;s LayerTreeHost if the current zoom transform isIdentity() ... will experiment with this ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470847</commentid>
    <comment_count>7</comment_count>
      <attachid>108168</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 09:03:00 -0700</bug_when>
    <thetext>Created attachment 108168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470850</commentid>
    <comment_count>8</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 09:08:07 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=108168) [details]
&gt; Patch

This patch plumbs from TiledLayerChromium to LayerTreeHost. The latter stores a boolean to indicate if the zoom transform is an identity, since presumably we test far more often than this value changes and the TransformationMatrix::isIdentity() function involves a lot of comparisons.

This *seems* (prima facie) to work OK on my EGL stack, but not sure if all GL implementions will like it. It reduces number of broken layout tests, but some other *seemingly unrelated* stuff is present ... need to investigate some more ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470894</commentid>
    <comment_count>9</comment_count>
      <attachid>108173</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 10:04:15 -0700</bug_when>
    <thetext>Created attachment 108173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470895</commentid>
    <comment_count>10</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 10:04:57 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=108173) [details]
&gt; Patch

Added missing chromium-gpu-linux test image expected output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470991</commentid>
    <comment_count>11</comment_count>
      <attachid>108173</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-21 11:41:26 -0700</bug_when>
    <thetext>Comment on attachment 108173
Patch

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

&gt; Source/WebCore/page/Settings.h:612
&gt; +        double m_zoomAnimatorPosX;
&gt; +        double m_zoomAnimatorPosY;

do you really need double precision? could this be an IntPoint (or FloatPoint if you need floating point values)

it&apos;s also unfortunate that this is growing into a bag of properties. Is there any reasonable way to consolidate these?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:201
&gt; +            const GC3Dint filter = (m_tiler-&gt;hasBorderTexels() || !layerTreeHost()-&gt;isZoomTransformIdentity()) ? GraphicsContext3D::LINEAR : GraphicsContext3D::NEAREST;

This seems very wrong.  If we are going to filter and apply a scale to tiled content then we have to have border texels or we&apos;ll generate rendering artifacts. It looks like this logic is attempting to apply filtering without uploading border texels which will not work.

It seems like in order for this to work you need to decide ahead of time whether you want to apply this animation and provide border texels for the root, or perhaps just always apply border texels on the root layer tiles and change the other logic that keys off of &quot;do I have border texels?&quot; as a proxy for &quot;am I the root layer?&quot; to be more explicit.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2580
&gt; +        zoomMatrix.translate3d(m_page-&gt;settings()-&gt;zoomAnimatorPosX(), m_page-&gt;settings()-&gt;zoomAnimatorPosY(), 0);

if you are doing a 2d translation then use translate(), don&apos;t use translate3d(..., ..., 0). the latter is less clear a the callsight and will do extra unnecessary math

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2581
&gt; +        zoomMatrix.scale3d(m_page-&gt;settings()-&gt;zoomAnimatorScale(), m_page-&gt;settings()-&gt;zoomAnimatorScale(), 1);

you want .scale() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471008</commentid>
    <comment_count>12</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 12:00:14 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 108173 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108173&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Settings.h:612
&gt; &gt; +        double m_zoomAnimatorPosX;
&gt; &gt; +        double m_zoomAnimatorPosY;
&gt; 
&gt; do you really need double precision? could this be an IntPoint (or FloatPoint if you need floating point values)

We could use float here, although I figured since we were eventually targetting a TransformationMatrix double might make sense. I don&apos;t think IntPoint would make sense, and may cause the animation to be less smooth.

&gt; it&apos;s also unfortunate that this is growing into a bag of properties. Is there any reasonable way to consolidate these?

Ultimately once the zoom front end code is in place I&apos;d like to bypass Settings altogether if there&apos;s a better way to pass the values from FrameView down to WebViewImpl.

I&apos;ve avoided putting more complex types into Settings as I think this will be a temporary pathway, although we could just make it a TransformationMatrix if it stays.

Let me know which route is preferred.

&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:201
&gt; &gt; +            const GC3Dint filter = (m_tiler-&gt;hasBorderTexels() || !layerTreeHost()-&gt;isZoomTransformIdentity()) ? GraphicsContext3D::LINEAR : GraphicsContext3D::NEAREST;
&gt; 
&gt; This seems very wrong.  If we are going to filter and apply a scale to tiled content then we have to have border texels or we&apos;ll generate rendering artifacts. It looks like this logic is attempting to apply filtering without uploading border texels which will not work.
&gt; 
&gt; It seems like in order for this to work you need to decide ahead of time whether you want to apply this animation and provide border texels for the root, or perhaps just always apply border texels on the root layer tiles and change the other logic that keys off of &quot;do I have border texels?&quot; as a proxy for &quot;am I the root layer?&quot; to be more explicit.

I guess we could always apply border texels to the root layer. Let me read through to see where to turn that on.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2580
&gt; &gt; +        zoomMatrix.translate3d(m_page-&gt;settings()-&gt;zoomAnimatorPosX(), m_page-&gt;settings()-&gt;zoomAnimatorPosY(), 0);
&gt; 
&gt; if you are doing a 2d translation then use translate(), don&apos;t use translate3d(..., ..., 0). the latter is less clear a the callsight and will do extra unnecessary math

Fixed.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2581
&gt; &gt; +        zoomMatrix.scale3d(m_page-&gt;settings()-&gt;zoomAnimatorScale(), m_page-&gt;settings()-&gt;zoomAnimatorScale(), 1);
&gt; 
&gt; you want .scale() here.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471114</commentid>
    <comment_count>13</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-21 13:28:22 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; 
&gt; It seems like in order for this to work you need to decide ahead of time whether you want to apply this animation and provide border texels for the root, or perhaps just always apply border texels on the root layer tiles and change the other logic that keys off of &quot;do I have border texels?&quot; as a proxy for &quot;am I the root layer?&quot; to be more explicit.

Two questions:

Do all non-root layers at present get border texels?

Who needs to know the difference between a root layer and a non-root layer? (I&apos;ve looked at the code, but it&apos;s not very clear when we need to be able to distinguish if a layer is the root layer.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471535</commentid>
    <comment_count>14</comment_count>
      <attachid>108327</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-22 06:51:52 -0700</bug_when>
    <thetext>Created attachment 108327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471536</commentid>
    <comment_count>15</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-22 06:55:15 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=108327) [details]
&gt; Patch

I have removed the border texels &amp; linear interpolation stuff and will submit it in another patch.

I have changed the parameter types in Settings from double to float, but not used FloatPoint as (1) this is only temporary, and (2) I don&apos;t know if we want to add FloatPoint.h just for this case (I will change this if it is deemed desirable).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472774</commentid>
    <comment_count>16</comment_count>
      <attachid>108584</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-24 10:24:15 -0700</bug_when>
    <thetext>Created attachment 108584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472775</commentid>
    <comment_count>17</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-09-24 10:26:09 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=108584) [details]
&gt; Patch

Remove unused function from CCLayerTreeHost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473194</commentid>
    <comment_count>18</comment_count>
      <attachid>108584</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-26 10:42:38 -0700</bug_when>
    <thetext>Comment on attachment 108584
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:296
&gt; +        m_context-&gt;clearColor(0.25, 0.25, 0.25, 1);

It&apos;s okay to use braces here because the arms (including comments) aren&apos;t single-line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473195</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-26 10:43:11 -0700</bug_when>
    <thetext>Looks fine overall. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473340</commentid>
    <comment_count>20</comment_count>
      <attachid>108584</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 13:30:20 -0700</bug_when>
    <thetext>Comment on attachment 108584
Patch

Clearing flags on attachment: 108584

Committed r95988: &lt;http://trac.webkit.org/changeset/95988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473341</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 13:30:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108160</attachid>
            <date>2011-09-21 08:02:09 -0700</date>
            <delta_ts>2011-09-21 09:02:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68535-20110921105741.patch</filename>
            <type>text/plain</type>
            <size>19523</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2MjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Zjk4YjExNDQ1NTUzYzhhOGExMjA1
NzFiNDJkNzI5ZDI2M2VhZTg5Li43ZTM3NWQwNTdiYTZiN2JiMzJjMzg1MzI0ZmYzZjBhMzg5ZTUy
MWIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMjEgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmV2aXNlIHpv
b20gYW5pbWF0b3IgYmFja2VuZCB0byB1c2UgZnVsbCB0cmFuc2Zvcm0gaW5zdGVhZCBvZiBqdXN0
IHNjYWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5o
dG1sOgorCiAyMDExLTA5LTIxICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBiYXNlbGluZXMgZm9yIGNyb3NzLW9yaWdpbi14
c2wtcmVkaXJlY3QtQkxPQ0tFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRl
c3QuaHRtbAppbmRleCAzMDA3NGIyNjAxMDg1MDEyNjY3OGY4ZTFjY2Y3Yzc5NjVmYTkzNGQ3Li5l
MWJhYzllYjczNGQ5ZTg3Y2M3MjhiNjhkMGExZDQ5ZjA0ZDNlZTk0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxl
LXRlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbApAQCAtMyw3ICszLDcgQEAKICAgICA8c2Ny
aXB0PgogICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewogICAgICAgICAgICAgd2luZG93
LmludGVybmFscy5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShkb2N1bWVudCwgdHJ1ZSk7Ci0gICAg
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFpvb21BbmltYXRvclNjYWxlKGRvY3VtZW50LCAx
LjI1KTsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Wm9vbUFuaW1hdG9yVHJhbnNm
b3JtKGRvY3VtZW50LCAxLjI1LCAtMjUuMCwgLTI1LjApOwogICAgICAgICB9CiAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFmM2NjNzhh
OGQ1NmEzOTlkN2Q1ZjdhYjllY2E1YTExZjM2MmNhODQuLjI1NDU0NmM5MDRlOTQ1MDcyOTg5NDYw
NjIwZGQ3NzczOTc1MWI4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wOS0y
MSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBSZXZpc2Ugem9vbSBhbmltYXRvciBiYWNrZW5kIHRvIHVzZSBmdWxsIHRyYW5z
Zm9ybSBpbnN0ZWFkIG9mIGp1c3Qgc2NhbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldFpvb21BbmltYXRvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjp6b29tQW5pbWF0b3JQb3NYKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjp6
b29tQW5pbWF0b3JQb3NZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAxMS0wOS0yMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcGFpbnQgYm94IG1vZGVsIGNvbG9ycyBpbiBN
ZXRyaWNzIHNpZGViYXIgYXQgYWxsIHRpbWVzLCBkbyBub3QgZHJhdyBib3ggb3V0bGluZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggMDAxYjE4NGZhYzFkMTNhNDBiYjQ2ZDM3NTAzY2M2ZGM4
MTMwMGU4Ny4uMzA2YzJkMjcyMzlmZTQ1MWY4NWMyMGVmOTdlNzk5NGRhZTU1ZTE2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaApAQCAtNDM1LDYgKzQzNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlIHNjYWxlKSB7IG1fem9v
bUFuaW1hdG9yU2NhbGUgPSBzY2FsZTsgfQogICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9yU2Nh
bGUoKSB7IHJldHVybiBtX3pvb21BbmltYXRvclNjYWxlOyB9CiAKKyAgICAgICAgdm9pZCBzZXRa
b29tQW5pbWF0b3JQb3NpdGlvbihkb3VibGUgeCwgZG91YmxlIHkpIHsgbV96b29tQW5pbWF0b3JQ
b3NYID0geDsgbV96b29tQW5pbWF0b3JQb3NZID0geTsgfQorICAgICAgICBkb3VibGUgem9vbUFu
aW1hdG9yUG9zWCgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWDsgfQorICAgICAgICBkb3Vi
bGUgem9vbUFuaW1hdG9yUG9zWSgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWTsgfQorCiAg
ICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3Vt
ZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlE
b2N1bWVudCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBzaG91bGRJbmplY3RVc2VyU2NyaXB0c0lu
SW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRz
SW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQogCkBAIC02MDQsNiArNjA4LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBnTW9ja1Njcm9sbGJhcnNFbmFibGVkOwog
CiAgICAgICAgIGRvdWJsZSBtX3pvb21BbmltYXRvclNjYWxlOworICAgICAgICBkb3VibGUgbV96
b29tQW5pbWF0b3JQb3NYOworICAgICAgICBkb3VibGUgbV96b29tQW5pbWF0b3JQb3NZOwogCiAj
aWYgVVNFKFNBRkFSSV9USEVNRSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0
aXZlQ29udHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA0
ZGFlNjEzNTc5MGFhZTdlZWRiMzgwNmUyZmY0YTMxZjA5MDU5YzI3Li40NzUwNTRlN2I5OTY2NDJk
YTVmN2Y0Mzc1NzlkYTkzYWI1M2Y0OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKQEAgLTE0Nyw3ICsxNDcsNiBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVy
UmVuZGVyZXJDaHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwKICAgICA6IG1fb3du
ZXIob3duZXIpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX29mZnNj
cmVlbkZyYW1lYnVmZmVySWQoMCkKLSAgICAsIG1fem9vbUFuaW1hdG9yU2NhbGUoMSkKICAgICAs
IG1fY29udGVudHNUZXh0dXJlTWVtb3J5VXNlQnl0ZXMoMCkKICAgICAsIG1fY29udGV4dChjb250
ZXh0KQogICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQpAQCAtMjY3LDE0ICsyNjYsMTIg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAgICAg
Q0NMYXllckxpc3QgcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LmFwcGVuZChyb290RHJhd0xheWVyKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHpvb21NYXRyaXg7Ci0gICAgem9vbU1hdHJpeC5zY2FsZTNkKG1fem9vbUFuaW1hdG9yU2NhbGUs
IG1fem9vbUFuaW1hdG9yU2NhbGUsIDEpOwogICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgPSBy
b290RHJhd0xheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFj
ZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsOjpjYWxjRHJhd0V0YyIsIHRoaXMs
IDApOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShyb290RHJhd0xheWVyLCByb290RHJhd0xheWVyLCB6b29tTWF0cml4
LCB6b29tTWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBtX2RlZmF1bHRSZW5kZXJTdXJm
YWNlLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIsIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1
cmVTaXplKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJh
bnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdERyYXdMYXllciwgcm9vdERyYXdMYXllciwgbV96b29t
QW5pbWF0b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJT
b3J0ZXIsIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKICAgICAvLyBU
aGUgR0wgdmlld3BvcnQgY292ZXJzIHRoZSBlbnRpcmUgdmlzaWJsZSBhcmVhLCBpbmNsdWRpbmcg
dGhlIHNjcm9sbGJhcnMuCkBAIC0yOTAsOCArMjg3LDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwoKQogCiAgICAgdXNlUmVuZGVyU3VyZmFjZShtX2Rl
ZmF1bHRSZW5kZXJTdXJmYWNlKTsKIAotICAgIC8vIENsZWFyIHRvIGJsdWUgdG8gbWFrZSBpdCBl
YXNpZXIgdG8gc3BvdCB1bnJlbmRlcmVkIHJlZ2lvbnMuCi0gICAgbV9jb250ZXh0LT5jbGVhckNv
bG9yKDAsIDAsIDEsIDEpOworICAgIGlmIChtX3pvb21BbmltYXRvclRyYW5zZm9ybS5pc0lkZW50
aXR5KCkpCisgICAgICAgIC8vIENsZWFyIHRvIGJsdWUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3Bv
dCB1bnJlbmRlcmVkIHJlZ2lvbnMuCisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAw
LCAxLCAxKTsKKyAgICBlbHNlCisgICAgICAgIC8vIENsZWFyIHRvIGdyZXksIGFzIHpvb20gYW5p
bWF0aW9uIG1heSBsZWF2ZSB1bnJlbmRlcmVkIHJlZ2lvbnMuCisgICAgICAgIC8vIFRPRE8od2pt
YWNsZWFuKTogUmVuZGVyIHNvbWUgaW50ZXJlc3RpbmcgdGV4dHVyZSBpbiB1bnJlbmRlcmVkIHJl
Z2lvbnMuCisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLjI1LCAwLjI1LCAwLjI1LCAx
KTsKICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKICAg
ICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBkYmViODRlYmU3MGYwNGM4
YmM5MTQ5NjQ1ZjA3OTEwMTMwMTYyZDBhLi41OTg0YzEzOWUzZGZmYjcxNGQzODYyYmMyNDM1Mjlk
NTI5ZWZiNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTAzLDcg
KzEwMyw3IEBAIHB1YmxpYzoKICAgICAvLyBwdXRzIGJhY2tidWZmZXIgb25zY3JlZW4KICAgICB2
b2lkIHByZXNlbnQoKTsKIAotICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlIGZh
Y3RvcikgeyBtX3pvb21BbmltYXRvclNjYWxlID0gZmFjdG9yOyB9CisgICAgdm9pZCBzZXRab29t
QW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpIHsgbV96b29t
QW5pbWF0b3JUcmFuc2Zvcm0gPSB0OyB9CiAKICAgICB1bnNpZ25lZCBjcmVhdGVMYXllclRleHR1
cmUoKTsKICAgICB2b2lkIGRlbGV0ZUxheWVyVGV4dHVyZSh1bnNpZ25lZCk7CkBAIC0xOTEsNyAr
MTkxLDcgQEAgcHJpdmF0ZToKIAogICAgIENDUmVuZGVyU3VyZmFjZSogbV9jdXJyZW50UmVuZGVy
U3VyZmFjZTsKICAgICB1bnNpZ25lZCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQ7Ci0gICAgZG91
YmxlIG1fem9vbUFuaW1hdG9yU2NhbGU7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV96b29t
QW5pbWF0b3JUcmFuc2Zvcm07CiAKICAgICAvLyBTdG9yZSB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVk
IGJldHdlZW4gaW5zdGFuY2VzIG9mIGVhY2ggbGF5ZXIgdHlwZQogICAgIC8vIGFzc29jaWF0ZWQg
d2l0aCB0aGlzIGluc3RhbmNlIG9mIHRoZSBjb21wb3NpdG9yLiBTaW5jZSB0aGVyZSBjYW4gYmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDQyNjkzZWFjZjhiMTBjOGYzZWRm
ODIxMzUyMzkwYTVmZGFiNTlmZTMuLjQ1NDhiNmRlNWIyZTgyNTVlNWEwNjExYzFmODZiMmRlNTI4
NzlmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTk4LDcgKzE5OCwx
MSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCiAg
ICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQpOworI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICAgICAgICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0g
R3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUjsKKyNlbHNlCiAgICAgICAgICAgICBjb25zdCBHQzNE
aW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0
M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOworI2VuZGlmCiAgICAgICAg
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmls
dGVyKSk7CiAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUFHX0ZJTFRFUiwgZmlsdGVyKSk7CiAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGEyNTdiNDExYWI5ZjRjNGQ2YWNlYmZlN2E3NTNi
ZjE5ZGFiODMyYzguLjY4M2RjN2NlNDM0YTFjZTYxNTkzYTY0NDc3NjhhYWI5Y2U0MDY1NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNTMsNyArNTMsNiBAQCBDQ0xheWVy
VHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwg
UGFzc1JlZlB0cjxMYXllcgogICAgICwgbV9mcmFtZU51bWJlcigwKQogICAgICwgbV9yb290TGF5
ZXIocm9vdExheWVyKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKLSAgICAsIG1fem9vbUFu
aW1hdG9yU2NhbGUoMSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQogewogfQpAQCAtMTIzLDcgKzEy
Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRUbyhDQ0xheWVyVHJlZUhvc3RJbXBs
KiBob3N0SW1wbCkKICAgICBjbGVhclBlbmRpbmdVcGRhdGUoKTsKIAogICAgIGhvc3RJbXBsLT5z
ZXRWaXNpYmxlKG1fdmlzaWJsZSk7Ci0gICAgaG9zdEltcGwtPnNldFpvb21BbmltYXRvclNjYWxl
KG1fem9vbUFuaW1hdG9yU2NhbGUpOworICAgIGhvc3RJbXBsLT5zZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0obV96b29tQW5pbWF0b3JUcmFuc2Zvcm0pOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9y
dCh2aWV3cG9ydFNpemUoKSk7CiAKICAgICBob3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT5zZXRD
b250ZW50c1RleHR1cmVNZW1vcnlVc2VCeXRlcyhtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1
cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKQEAgLTE5MSwxMSArMTkwLDExIEBAIGNvbnN0IExheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMmIENDTGF5ZXJUcmVlSG9zdDo6bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpIGNvCiAgICAgcmV0dXJuIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFpvb21BbmltYXRvclNjYWxlKGRv
dWJsZSB6b29tKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFpvb21BbmltYXRvclRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgem9vbSkKIHsKLSAgICBib29sIHpvb21DaGFu
Z2VkID0gbV96b29tQW5pbWF0b3JTY2FsZSAhPSB6b29tOworICAgIGJvb2wgem9vbUNoYW5nZWQg
PSBtX3pvb21BbmltYXRvclRyYW5zZm9ybSAhPSB6b29tOwogCi0gICAgbV96b29tQW5pbWF0b3JT
Y2FsZSA9IHpvb207CisgICAgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0gPSB6b29tOwogCiAgICAg
aWYgKHpvb21DaGFuZ2VkKQogICAgICAgICBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwpAQCAt
Mjg3LDExICsyODYsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVy
Q2hyb21pdW0qIHJvb3RMYXllcikKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5k
ZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1
cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29t
TWF0cml4OwotICAgIHpvb21NYXRyaXguc2NhbGUzZChtX3pvb21BbmltYXRvclNjYWxlLCBtX3pv
b21BbmltYXRvclNjYWxlLCAxKTsKICAgICB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVy
VHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAg
Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxp
dHkocm9vdExheWVyLCByb290TGF5ZXIsIHpvb21NYXRyaXgsIHpvb21NYXRyaXgsIG1fdXBkYXRl
TGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXll
ciwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3Vw
ZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKICAgICBwYWludExheWVyQ29u
dGVudHMobV91cGRhdGVMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZmVl
Mjk1NjEyYjkyMTI3OTBkMGJlYzEwNjg3ZDA1YmQxMTc4YmYxNy4uYjE2Mjg1YTk4Nzk3YmE1ZTAx
NzkwNGQ4ODU3OTg4YjU5ZmJlZThhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUg
ImNjL0NDUHJveHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0xMjYsNyAr
MTI3LDcgQEAgcHVibGljOgogCiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZU51bWJlcjsgfQogCi0gICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShkb3VibGUp
OworICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7CiAKICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CiAKQEAgLTE4MSw3ICsxODIsNyBAQCBwcml2YXRl
OgogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIAogICAgIEludFNpemUgbV92aWV3cG9ydFNp
emU7Ci0gICAgZG91YmxlIG1fem9vbUFuaW1hdG9yU2NhbGU7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbV96b29tQW5pbWF0b3JUcmFuc2Zvcm07CiAgICAgYm9vbCBtX3Zpc2libGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGIzMDQ4MzY4ZGFh
MjA3NmZhNDlkYmExNGJiOWM5MzY5OGI2NzZlMWQuLmFlMWM1ZGI0ZmM3NGU1ZGU5YmZkYmJiYTZh
NGUxMTRjZGNmMjdjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CkBAIC0xNTEsOSArMTUxLDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaWV3cG9y
dChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+
dmlld3BvcnRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Wm9v
bUFuaW1hdG9yU2NhbGUoZG91YmxlIHpvb20pCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNl
dFpvb21BbmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgem9vbSkK
IHsKLSAgICBtX2xheWVyUmVuZGVyZXItPnNldFpvb21BbmltYXRvclNjYWxlKHpvb20pOworICAg
IG1fbGF5ZXJSZW5kZXJlci0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb20pOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYTM3ZTlmMzNiZTllNzRm
ZWU2Yjc5NTVjNDA3YTliZjNlMDQ0Y2U1OS4uMTljZmNlMjA2MzBkMGZlZjE1OTU1NDQ2YzgxYTBk
NDE0NGUyZDE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMzgs
NiArMzgsNyBAQCBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXM7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogLy8gQ0NMYXllclRyZWVIb3N0
SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5k
ZXJpbmcgc3RhdGUKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGwgewpAQCAtNzUsNyArNzYsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSk7CiAgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1cm4g
bV92aWV3cG9ydFNpemU7IH0KLSAgICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKGRvdWJsZSk7
CisgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKTsKIAogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5nczsgfQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IDA0ZWM5ZWY1Mzc0OGI5YWQ3NGZlZTgwNjY2Y2YxNTBkYjE4MGVhM2IuLjJmZDRj
NzNkNjYyODE5NDdkNWEwZTA3NWNjYTM3NzVkMzIyMzkxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEludGVybmFsczo6c2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2Vw
dAogICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShlbmFi
bGVkKTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclNjYWxlKERvY3VtZW50
ICpkb2N1bWVudCwgZG91YmxlIHNjYWxlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSW50ZXJu
YWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1lbnQgKmRvY3VtZW50LCBkb3VibGUg
c2NhbGUsIGRvdWJsZSB0eCwgZG91YmxlIHR5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2V0dGluZ3MoKSkgewogICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKQEAgLTI1MSw2ICsyNTEsNyBAQCB2b2lkIEludGVybmFsczo6c2V0
Wm9vbUFuaW1hdG9yU2NhbGUoRG9jdW1lbnQgKmRvY3VtZW50LCBkb3VibGUgc2NhbGUsIEV4Y2Vw
dGlvbgogICAgIH0KIAogICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRab29tQW5pbWF0b3JT
Y2FsZShzY2FsZSk7CisgICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldFpvb21BbmltYXRvclBv
c2l0aW9uKHR4LCB0eSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQYXNzd29yZEVjaG9FbmFi
bGVkKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDEzNDM3ZTFlZGE0MDU3OTQ4MmVhZTg3
Yzc0ODcxNjdmNGQ3MGY2NTIuLjFhMjYzZDJjNzgxNThhNTk4NDMxZDhkNDg3NjczZDM0NGYzNzAz
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCB1bnNp
Z25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9k
ZShEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0
Wm9vbUFuaW1hdG9yU2NhbGUoRG9jdW1lbnQqLCBkb3VibGUgc2NhbGUsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVudCosIGRvdWJsZSBz
Y2FsZSwgZG91YmxlIHR4LCBkb3VibGUgdHksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQg
c2V0UGFzc3dvcmRFY2hvRW5hYmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgc2V0UGFzc3dvcmRFY2hvRHVyYXRpb25JblNlY29uZHMoRG9jdW1l
bnQqLCBkb3VibGUgZHVyYXRpb25JblNlY29uZHMsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA1ZTIzMWNjZDUzMTg5NTk0ZWFkNGM2ZjA4Y2I3
MzA5ZDQyYmU3MzY4Li40NWUxYzhjMDYwYzQ0ZTRkMjU0YjhkNjkyMjFmMDY0OGMxMWEyYzliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01MSw3ICs1MSw3IEBAIG1vZHVs
ZSB3aW5kb3cgewogICAgICAgICBSYW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2Rl
LCBpbiB1bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAg
ICB2b2lkIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBi
b29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICB2b2lkIHNldFpv
b21BbmltYXRvclNjYWxlKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgc2NhbGUpIHJh
aXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9y
bShpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gZG91YmxlIHNjYWxlLCBpbiBkb3VibGUgdHgsIGlu
IGRvdWJsZSB0eSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCBzZXRQYXNz
d29yZEVjaG9FbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVuYWJsZWQp
IHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0
aW9uSW5TZWNvbmRzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgZHVyYXRpb25JblNl
Y29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCBhYTM5OWE5YjhjZTEwOWFmODllMjM0ZmNlZTQ5ZDExYjFhMDY5NzI2Li44OWEwNjJhYTI3OWFj
MDllYzNhMTJiMjIwMjYxNTMwOTljNWQ3ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDExLTA5LTIxICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJldmlzZSB6b29tIGFuaW1hdG9y
IGJhY2tlbmQgdG8gdXNlIGZ1bGwgdHJhbnNmb3JtIGluc3RlYWQgb2YganVzdCBzY2FsZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NTM1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSk6
CisKIDIwMTEtMDktMjAgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFRoaXMgQ0wgbWFrZXMgaXQgcG9zc2libGUgdG8gY3JlYXRlIGEgYmxvYiBmcm9tIENo
cm9taXVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IDYwMDc0NjY3NWI0NGRiNzNhYmIxOGRmOWYwMmMwMjM4M2M5OTk3NDEuLmZkOGUyYjE3ZDJmYTUw
MmFlMGVjMGUzMDE0Y2Q3N2EzZjU4NjQyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE4NDEsNyArMTg0MSw3IEBAIGRvdWJsZSBXZWJWaWV3SW1w
bDo6em9vbUxldmVsKCkKIGRvdWJsZSBXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKGJvb2wgdGV4
dE9ubHksIGRvdWJsZSB6b29tTGV2ZWwpCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JTY2FsZSgxKTsKKyAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSk7CiAKICAgICBpZiAoem9vbUxldmVsIDwgbV9taW5pbXVtWm9vbUxldmVsKQogICAg
ICAgICBtX3pvb21MZXZlbCA9IG1fbWluaW11bVpvb21MZXZlbDsKQEAgLTI1NzUsOCArMjU3NSwx
MiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVy
KiBsYXllcikKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCkK
IHsKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFpvb21BbmltYXRvclNjYWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yU2NhbGUo
KSk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB6b29tTWF0cml4OworICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0ZTNkKG1fcGFnZS0+
c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yUG9zWCgpLCBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21B
bmltYXRvclBvc1koKSwgMCk7CisgICAgICAgIHpvb21NYXRyaXguc2NhbGUzZChtX3BhZ2UtPnNl
dHRpbmdzKCktPnpvb21BbmltYXRvclNjYWxlKCksIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFu
aW1hdG9yU2NhbGUoKSwgMSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Wm9vbUFuaW1h
dG9yVHJhbnNmb3JtKHpvb21NYXRyaXgpOworICAgIH0KICNpZiBVU0UoVEhSRUFERURfQ09NUE9T
SVRJTkcpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108168</attachid>
            <date>2011-09-21 09:03:00 -0700</date>
            <delta_ts>2011-09-21 10:04:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68535-20110921115831.patch</filename>
            <type>text/plain</type>
            <size>20675</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2MjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Zjk4YjExNDQ1NTUzYzhhOGExMjA1
NzFiNDJkNzI5ZDI2M2VhZTg5Li43ZTM3NWQwNTdiYTZiN2JiMzJjMzg1MzI0ZmYzZjBhMzg5ZTUy
MWIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMjEgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmV2aXNlIHpv
b20gYW5pbWF0b3IgYmFja2VuZCB0byB1c2UgZnVsbCB0cmFuc2Zvcm0gaW5zdGVhZCBvZiBqdXN0
IHNjYWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC5o
dG1sOgorCiAyMDExLTA5LTIxICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBiYXNlbGluZXMgZm9yIGNyb3NzLW9yaWdpbi14
c2wtcmVkaXJlY3QtQkxPQ0tFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRl
c3QuaHRtbAppbmRleCAzMDA3NGIyNjAxMDg1MDEyNjY3OGY4ZTFjY2Y3Yzc5NjVmYTkzNGQ3Li5l
MWJhYzllYjczNGQ5ZTg3Y2M3MjhiNjhkMGExZDQ5ZjA0ZDNlZTk0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxl
LXRlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbApAQCAtMyw3ICszLDcgQEAKICAgICA8c2Ny
aXB0PgogICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewogICAgICAgICAgICAgd2luZG93
LmludGVybmFscy5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShkb2N1bWVudCwgdHJ1ZSk7Ci0gICAg
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFpvb21BbmltYXRvclNjYWxlKGRvY3VtZW50LCAx
LjI1KTsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Wm9vbUFuaW1hdG9yVHJhbnNm
b3JtKGRvY3VtZW50LCAxLjI1LCAtMjUuMCwgLTI1LjApOwogICAgICAgICB9CiAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFmM2NjNzhh
OGQ1NmEzOTlkN2Q1ZjdhYjllY2E1YTExZjM2MmNhODQuLmVhODg1OWUzYTdhMzYwNDBkNDk3MzQ0
ZjRhNGZhNmFmYmUwZDc5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wOS0y
MSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBSZXZpc2Ugem9vbSBhbmltYXRvciBiYWNrZW5kIHRvIHVzZSBmdWxsIHRyYW5z
Zm9ybSBpbnN0ZWFkIG9mIGp1c3Qgc2NhbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRab29tQW5pbWF0b3JQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6em9vbUFuaW1hdG9yUG9zWCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6em9vbUFuaW1hdG9yUG9zWSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Wm9vbUFuaW1h
dG9yVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojpjb21taXRUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnNldFpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmlzWm9vbVRyYW5zZm9ybUlkZW50aXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMS0wOS0yMSAg
UGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcGFpbnQgYm94IG1vZGVsIGNvbG9ycyBpbiBNZXRyaWNzIHNpZGViYXIgYXQgYWxsIHRp
bWVzLCBkbyBub3QgZHJhdyBib3ggb3V0bGluZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmlu
ZGV4IDBmY2U3YjM2NDA0YmZjNDFmNTY4ODBjNTQxMjVhMDUwMmEzYWEyZTkuLmQ3ZTAwZDFjN2Rh
NjI3ZDFhN2ZhNWI0YWJlMjZlYTBiYjkwMDliMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CkBAIC0yMTksNiArMjE5LDggQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAg
LCBtX3Bhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21h
dGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGlt
ZXJGaXJlZCkKICAgICAsIG1fem9vbUFuaW1hdG9yU2NhbGUoMSkKKyAgICAsIG1fem9vbUFuaW1h
dG9yUG9zWCgwKQorICAgICwgbV96b29tQW5pbWF0b3JQb3NZKDApCiB7CiAgICAgLy8gQSBGcmFt
ZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRv
bWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgKaW5kZXggMDAxYjE4NGZhYzFkMTNhNDBiYjQ2ZDM3NTAzY2M2ZGM4MTMwMGU4
Ny4uMzA2YzJkMjcyMzlmZTQ1MWY4NWMyMGVmOTdlNzk5NGRhZTU1ZTE2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaApAQCAtNDM1LDYgKzQzNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlIHNjYWxlKSB7IG1fem9vbUFuaW1h
dG9yU2NhbGUgPSBzY2FsZTsgfQogICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9yU2NhbGUoKSB7
IHJldHVybiBtX3pvb21BbmltYXRvclNjYWxlOyB9CiAKKyAgICAgICAgdm9pZCBzZXRab29tQW5p
bWF0b3JQb3NpdGlvbihkb3VibGUgeCwgZG91YmxlIHkpIHsgbV96b29tQW5pbWF0b3JQb3NYID0g
eDsgbV96b29tQW5pbWF0b3JQb3NZID0geTsgfQorICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9y
UG9zWCgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWDsgfQorICAgICAgICBkb3VibGUgem9v
bUFuaW1hdG9yUG9zWSgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9yUG9zWTsgfQorCiAgICAgICAg
IHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGJv
b2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVu
dCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBzaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlh
bEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0
aWFsRW1wdHlEb2N1bWVudDsgfQogCkBAIC02MDQsNiArNjA4LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBzdGF0aWMgYm9vbCBnTW9ja1Njcm9sbGJhcnNFbmFibGVkOwogCiAgICAg
ICAgIGRvdWJsZSBtX3pvb21BbmltYXRvclNjYWxlOworICAgICAgICBkb3VibGUgbV96b29tQW5p
bWF0b3JQb3NYOworICAgICAgICBkb3VibGUgbV96b29tQW5pbWF0b3JQb3NZOwogCiAjaWYgVVNF
KFNBRkFSSV9USEVNRSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29u
dHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA0ZGFlNjEz
NTc5MGFhZTdlZWRiMzgwNmUyZmY0YTMxZjA5MDU5YzI3Li5lYTEzOWQ0NjhmMzFkOTdmMGYzMzJi
MTAxMTIzZDdjODljMDIyNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKQEAgLTE0Nyw3ICsxNDcsNiBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwKICAgICA6IG1fb3duZXIob3du
ZXIpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX29mZnNjcmVlbkZy
YW1lYnVmZmVySWQoMCkKLSAgICAsIG1fem9vbUFuaW1hdG9yU2NhbGUoMSkKICAgICAsIG1fY29u
dGVudHNUZXh0dXJlTWVtb3J5VXNlQnl0ZXMoMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQog
ICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQpAQCAtMjY3LDE0ICsyNjYsMTIgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAgICAgQ0NMYXll
ckxpc3QgcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LmFwcGVuZChyb290RHJhd0xheWVyKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHpvb21N
YXRyaXg7Ci0gICAgem9vbU1hdHJpeC5zY2FsZTNkKG1fem9vbUFuaW1hdG9yU2NhbGUsIG1fem9v
bUFuaW1hdG9yU2NhbGUsIDEpOwogICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgPSByb290RHJh
d0xheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y2xl
YXJMYXllckxpc3QoKTsKIAogICAgIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwot
ICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShyb290RHJhd0xheWVyLCByb290RHJhd0xheWVyLCB6b29tTWF0cml4LCB6b29t
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5s
YXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIsIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXpl
KTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkocm9vdERyYXdMYXllciwgcm9vdERyYXdMYXllciwgbV96b29tQW5pbWF0
b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIs
IG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKICAgICAvLyBUaGUgR0wg
dmlld3BvcnQgY292ZXJzIHRoZSBlbnRpcmUgdmlzaWJsZSBhcmVhLCBpbmNsdWRpbmcgdGhlIHNj
cm9sbGJhcnMuCkBAIC0yOTAsOCArMjg3LDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3TGF5ZXJzSW50ZXJuYWwoKQogCiAgICAgdXNlUmVuZGVyU3VyZmFjZShtX2RlZmF1bHRS
ZW5kZXJTdXJmYWNlKTsKIAotICAgIC8vIENsZWFyIHRvIGJsdWUgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gc3BvdCB1bnJlbmRlcmVkIHJlZ2lvbnMuCi0gICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAs
IDAsIDEsIDEpOworICAgIGlmIChtX3pvb21BbmltYXRvclRyYW5zZm9ybS5pc0lkZW50aXR5KCkp
CisgICAgICAgIC8vIENsZWFyIHRvIGJsdWUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3BvdCB1bnJl
bmRlcmVkIHJlZ2lvbnMuCisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAxLCAx
KTsKKyAgICBlbHNlCisgICAgICAgIC8vIENsZWFyIHRvIGdyZXksIGFzIHpvb20gYW5pbWF0aW9u
IG1heSBsZWF2ZSB1bnJlbmRlcmVkIHJlZ2lvbnMuCisgICAgICAgIC8vIEZJWE1FKHdqbWFjbGVh
bik6IFJlbmRlciBzb21lIGludGVyZXN0aW5nIHRleHR1cmUgaW4gdW5yZW5kZXJlZCByZWdpb25z
LgorICAgICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IoMC4yNSwgMC4yNSwgMC4yNSwgMSk7CiAg
ICAgbV9jb250ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgbV9j
b250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggZGJlYjg0ZWJlNzBmMDRjOGJjOTE0
OTY0NWYwNzkxMDEzMDE2MmQwYS4uNTk4NGMxMzllM2RmZmI3MTRkMzg2MmJjMjQzNTI5ZDUyOWVm
YjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEwMyw3ICsxMDMs
NyBAQCBwdWJsaWM6CiAgICAgLy8gcHV0cyBiYWNrYnVmZmVyIG9uc2NyZWVuCiAgICAgdm9pZCBw
cmVzZW50KCk7CiAKLSAgICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKGRvdWJsZSBmYWN0b3Ip
IHsgbV96b29tQW5pbWF0b3JTY2FsZSA9IGZhY3RvcjsgfQorICAgIHZvaWQgc2V0Wm9vbUFuaW1h
dG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KSB7IG1fem9vbUFuaW1h
dG9yVHJhbnNmb3JtID0gdDsgfQogCiAgICAgdW5zaWduZWQgY3JlYXRlTGF5ZXJUZXh0dXJlKCk7
CiAgICAgdm9pZCBkZWxldGVMYXllclRleHR1cmUodW5zaWduZWQpOwpAQCAtMTkxLDcgKzE5MSw3
IEBAIHByaXZhdGU6CiAKICAgICBDQ1JlbmRlclN1cmZhY2UqIG1fY3VycmVudFJlbmRlclN1cmZh
Y2U7CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkOwotICAgIGRvdWJsZSBt
X3pvb21BbmltYXRvclNjYWxlOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fem9vbUFuaW1h
dG9yVHJhbnNmb3JtOwogCiAgICAgLy8gU3RvcmUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3
ZWVuIGluc3RhbmNlcyBvZiBlYWNoIGxheWVyIHR5cGUKICAgICAvLyBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBpbnN0YW5jZSBvZiB0aGUgY29tcG9zaXRvci4gU2luY2UgdGhlcmUgY2FuIGJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCA0MjY5M2VhY2Y4YjEwYzhmM2VkZjgyMTM1
MjM5MGE1ZmRhYjU5ZmUzLi5jYTQ3N2IzMTBkNjczMjc3N2JmOTRkODEzNGVkOTM5MDEwYTFjZDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCiAgICAgICAg
ICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQpOwotICAgICAgICAgICAg
Y29uc3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKKyAgICAg
ICAgICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0gKG1fdGlsZXItPmhhc0JvcmRlclRleGVscygp
IHx8ICFsYXllclRyZWVIb3N0KCktPmlzWm9vbVRyYW5zZm9ybUlkZW50aXR5KCkpID8gR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwogICAgICAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZp
bHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01BR19GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBhMjU3YjQxMWFiOWY0YzRkNmFjZWJmZTdhNzUz
YmYxOWRhYjgzMmM4Li43OGE5MjFhMTRhMDA3ZWMyY2ZmMmUwNTdjOWQwMzhjYjExOWYyMzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTUzLDcgKzUzLDYgQEAgQ0NMYXll
clRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQs
IFBhc3NSZWZQdHI8TGF5ZXIKICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKICAgICAsIG1fcm9vdExh
eWVyKHJvb3RMYXllcikKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCi0gICAgLCBtX3pvb21B
bmltYXRvclNjYWxlKDEpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKIHsKIH0KQEAgLTEyMyw3ICsx
MjIsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8oQ0NMYXllclRyZWVIb3N0SW1w
bCogaG9zdEltcGwpCiAgICAgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKICAgICBob3N0SW1wbC0+
c2V0VmlzaWJsZShtX3Zpc2libGUpOwotICAgIGhvc3RJbXBsLT5zZXRab29tQW5pbWF0b3JTY2Fs
ZShtX3pvb21BbmltYXRvclNjYWxlKTsKKyAgICBob3N0SW1wbC0+c2V0Wm9vbUFuaW1hdG9yVHJh
bnNmb3JtKG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtKTsKICAgICBob3N0SW1wbC0+c2V0Vmlld3Bv
cnQodmlld3BvcnRTaXplKCkpOwogCiAgICAgaG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+c2V0
Q29udGVudHNUZXh0dXJlTWVtb3J5VXNlQnl0ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5j
dXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7CkBAIC0xOTEsMTEgKzE5MCwxMiBAQCBjb25zdCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKSBjbwogICAgIHJldHVybiBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JTY2FsZShk
b3VibGUgem9vbSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHpvb20pCiB7Ci0gICAgYm9vbCB6b29tQ2hh
bmdlZCA9IG1fem9vbUFuaW1hdG9yU2NhbGUgIT0gem9vbTsKKyAgICBib29sIHpvb21DaGFuZ2Vk
ID0gbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0gIT0gem9vbTsKIAotICAgIG1fem9vbUFuaW1hdG9y
U2NhbGUgPSB6b29tOworICAgIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtID0gem9vbTsKKyAgICBt
X3pvb21UcmFuc2Zvcm1Jc0lkZW50aXR5ID0gbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0uaXNJZGVu
dGl0eSgpOwogCiAgICAgaWYgKHpvb21DaGFuZ2VkKQogICAgICAgICBzZXROZWVkc0NvbW1pdEFu
ZFJlZHJhdygpOwpAQCAtMjg3LDExICsyODcsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAg
ICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB6b29tTWF0cml4OwotICAgIHpvb21NYXRyaXguc2NhbGUzZChtX3pvb21Bbmlt
YXRvclNjYWxlLCBtX3pvb21BbmltYXRvclNjYWxlLCAxKTsKICAgICB7CiAgICAgICAgIFRSQUNF
X0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlz
LCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIHpvb21NYXRyaXgsIHpvb21N
YXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBDQ0xheWVy
VHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290
TGF5ZXIsIHJvb3RMYXllciwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9y
VHJhbnNmb3JtLCBtX3VwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwg
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKICAg
ICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggZmVlMjk1NjEyYjkyMTI3OTBkMGJlYzEwNjg3ZDA1YmQxMTc4YmYxNy4uMDc4
YWU4ZjdiOGZhYmU2N2M2ODYwNzg4OWFjZTQ5MjdhMzk0YjU0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMz
RC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CkBAIC0xMjYsNyArMTI3LDggQEAgcHVibGljOgogCiAgICAgaW50IGZyYW1lTnVtYmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQogCi0gICAgdm9pZCBzZXRab29tQW5pbWF0
b3JTY2FsZShkb3VibGUpOworICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgYm9vbCBpc1pvb21UcmFuc2Zvcm1JZGVudGl0
eSgpIHsgcmV0dXJuIG1fem9vbVRyYW5zZm9ybUlzSWRlbnRpdHk7IH0KIAogICAgIGNvbnN0IExh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25z
dDsKIApAQCAtMTgxLDcgKzE4Myw4IEBAIHByaXZhdGU6CiAgICAgQ0NTZXR0aW5ncyBtX3NldHRp
bmdzOwogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKLSAgICBkb3VibGUgbV96b29tQW5p
bWF0b3JTY2FsZTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3pvb21BbmltYXRvclRyYW5z
Zm9ybTsKKyAgICBib29sIG1fem9vbVRyYW5zZm9ybUlzSWRlbnRpdHk7CiAgICAgYm9vbCBtX3Zp
c2libGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4
IGIzMDQ4MzY4ZGFhMjA3NmZhNDlkYmExNGJiOWM5MzY5OGI2NzZlMWQuLmFlMWM1ZGI0ZmM3NGU1
ZGU5YmZkYmJiYTZhNGUxMTRjZGNmMjdjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCkBAIC0xNTEsOSArMTUxLDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgICAgIG1fbGF5
ZXJSZW5kZXJlci0+dmlld3BvcnRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6c2V0Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlIHpvb20pCit2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgem9vbSkKIHsKLSAgICBtX2xheWVyUmVuZGVyZXItPnNldFpvb21BbmltYXRvclNjYWxl
KHpvb20pOworICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpv
b20pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYTM3
ZTlmMzNiZTllNzRmZWU2Yjc5NTVjNDA3YTliZjNlMDQ0Y2U1OS4uMTljZmNlMjA2MzBkMGZlZjE1
OTU1NDQ2YzgxYTBkNDE0NGUyZDE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIEND
TGF5ZXJJbXBsOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogc3RydWN0IExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXM7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogLy8gQ0NM
YXllclRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNz
b2NpYXRlZCByZW5kZXJpbmcgc3RhdGUKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGwgewpAQCAt
NzUsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSk7CiAgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KLSAgICB2b2lkIHNldFpvb21BbmltYXRvclNj
YWxlKGRvdWJsZSk7CisgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmKTsKIAogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IDA0ZWM5ZWY1Mzc0OGI5YWQ3NGZlZTgwNjY2Y2YxNTBkYjE4
MGVhM2IuLjJmZDRjNzNkNjYyODE5NDdkNWEwZTA3NWNjYTM3NzVkMzIyMzkxMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEludGVy
bmFsczo6c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVu
YWJsZWQsIEV4Y2VwdAogICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZShlbmFibGVkKTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclNj
YWxlKERvY3VtZW50ICpkb2N1bWVudCwgZG91YmxlIHNjYWxlLCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9jdW1lbnQgKmRvY3Vt
ZW50LCBkb3VibGUgc2NhbGUsIGRvdWJsZSB0eCwgZG91YmxlIHR5LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c2V0dGluZ3MoKSkgewogICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKQEAgLTI1MSw2ICsyNTEsNyBAQCB2b2lkIElu
dGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yU2NhbGUoRG9jdW1lbnQgKmRvY3VtZW50LCBkb3VibGUg
c2NhbGUsIEV4Y2VwdGlvbgogICAgIH0KIAogICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRa
b29tQW5pbWF0b3JTY2FsZShzY2FsZSk7CisgICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldFpv
b21BbmltYXRvclBvc2l0aW9uKHR4LCB0eSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQYXNz
d29yZEVjaG9FbmFibGVkKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDEzNDM3ZTFlZGE0
MDU3OTQ4MmVhZTg3Yzc0ODcxNjdmNGQ3MGY2NTIuLjFhMjYzZDJjNzgxNThhNTk4NDMxZDhkNDg3
NjczZDM0NGYzNzAzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNzcsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2Rl
KE5vZGUqLCB1bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRGb3JjZUNv
bXBvc2l0aW5nTW9kZShEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoRG9jdW1lbnQqLCBkb3VibGUgc2NhbGUsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVu
dCosIGRvdWJsZSBzY2FsZSwgZG91YmxlIHR4LCBkb3VibGUgdHksIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIHZvaWQgc2V0UGFzc3dvcmRFY2hvRW5hYmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxl
ZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0UGFzc3dvcmRFY2hvRHVyYXRpb25JblNl
Y29uZHMoRG9jdW1lbnQqLCBkb3VibGUgZHVyYXRpb25JblNlY29uZHMsIEV4Y2VwdGlvbkNvZGUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA1ZTIzMWNjZDUzMTg5NTk0
ZWFkNGM2ZjA4Y2I3MzA5ZDQyYmU3MzY4Li40NWUxYzhjMDYwYzQ0ZTRkMjU0YjhkNjkyMjFmMDY0
OGMxMWEyYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01MSw3ICs1
MSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBSYW5nZSBtYXJrZXJSYW5nZUZvck5vZGUo
aW4gTm9kZSBub2RlLCBpbiB1bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKIAogICAgICAgICB2b2lkIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGluIERvY3VtZW50IGRv
Y3VtZW50LCBpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAg
ICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3Vi
bGUgc2NhbGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybShpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gZG91YmxlIHNjYWxlLCBpbiBk
b3VibGUgdHgsIGluIGRvdWJsZSB0eSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAg
dm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29s
ZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhc3N3
b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUg
ZHVyYXRpb25JblNlY29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBhYTM5OWE5YjhjZTEwOWFmODllMjM0ZmNlZTQ5ZDExYjFhMDY5NzI2Li44
OWEwNjJhYTI3OWFjMDllYzNhMTJiMjIwMjYxNTMwOTljNWQ3ZTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA5LTIxICBXLiBKYW1lcyBNYWNMZWFu
ICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJldmlzZSB6
b29tIGFuaW1hdG9yIGJhY2tlbmQgdG8gdXNlIGZ1bGwgdHJhbnNmb3JtIGluc3RlYWQgb2YganVz
dCBzY2FsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY4NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0
Wm9vbUxldmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5l
ZWRzRGlzcGxheSk6CisKIDIwMTEtMDktMjAgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFRoaXMgQ0wgbWFrZXMgaXQgcG9zc2libGUgdG8gY3JlYXRlIGEg
YmxvYiBmcm9tIENocm9taXVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDYwMDc0NjY3NWI0NGRiNzNhYmIxOGRmOWYwMmMwMjM4M2M5OTk3NDEuLmZk
OGUyYjE3ZDJmYTUwMmFlMGVjMGUzMDE0Y2Q3N2EzZjU4NjQyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE4NDEsNyArMTg0MSw3IEBAIGRvdWJs
ZSBXZWJWaWV3SW1wbDo6em9vbUxldmVsKCkKIGRvdWJsZSBXZWJWaWV3SW1wbDo6c2V0Wm9vbUxl
dmVsKGJvb2wgdGV4dE9ubHksIGRvdWJsZSB6b29tTGV2ZWwpCiB7CiAgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JTY2FsZSgx
KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICBpZiAoem9vbUxldmVsIDwgbV9taW5pbXVtWm9v
bUxldmVsKQogICAgICAgICBtX3pvb21MZXZlbCA9IG1fbWluaW11bVpvb21MZXZlbDsKQEAgLTI1
NzUsOCArMjU3NSwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihH
cmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVl
ZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFpvb21BbmltYXRvclNjYWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFu
aW1hdG9yU2NhbGUoKSk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCB6b29tTWF0cml4OworICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0
ZTNkKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yUG9zWCgpLCBtX3BhZ2UtPnNldHRp
bmdzKCktPnpvb21BbmltYXRvclBvc1koKSwgMCk7CisgICAgICAgIHpvb21NYXRyaXguc2NhbGUz
ZChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21BbmltYXRvclNjYWxlKCksIG1fcGFnZS0+c2V0dGlu
Z3MoKS0+em9vbUFuaW1hdG9yU2NhbGUoKSwgMSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb21NYXRyaXgpOworICAgIH0KICNpZiBVU0UoVEhS
RUFERURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108173</attachid>
            <date>2011-09-21 10:04:15 -0700</date>
            <delta_ts>2011-09-22 06:51:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68535-20110921125947.patch</filename>
            <type>text/plain</type>
            <size>21671</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2MjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Zjk4YjExNDQ1NTUzYzhhOGExMjA1
NzFiNDJkNzI5ZDI2M2VhZTg5Li43Yjk3NDM5MTQ5ZWJlZjIwOTA5Nzk0YzlmYzIzOGIwMzk5ZTI4
ODQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMjEgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmV2aXNlIHpv
b20gYW5pbWF0b3IgYmFja2VuZCB0byB1c2UgZnVsbCB0cmFuc2Zvcm0gaW5zdGVhZCBvZiBqdXN0
IHNjYWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3Qu
aHRtbDoKKwogMjAxMS0wOS0yMSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYmFzZWxpbmVzIGZvciBjcm9zcy1vcmlnaW4t
eHNsLXJlZGlyZWN0LUJMT0NLRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1h
dG9yLXNjYWxlLXRlc3QtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3It
c2NhbGUtdGVzdC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkyYjM1NTU4MDNiZjdiZTJjMDZk
OGM1NzViMmJmNGM1MTY3ZTk3YgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjk3NQp6Y21lQVNA
Tj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG4x
eSkKekJ0enBBJVZmaDhiS0BsQUJ1akhrT0c5JiRXSjUhZk04Z3lkJVZkSyk3Nko/bSs9aVltanYq
Q3Utcm1+aWAjT1E0CnpIODNmN3FTPlZNQj0lI34pJkBjZkpEcnpvS0ZqNnVZZXteaVdxTU98LUJE
WkY7fiFaVjlNWXcxODVrYmFEe28rNgp6Tk1objxQKjU5WDQ0RlZVem5KfF9AN28qS1VoakpVYC1O
aEU+YTFtX1BwOF9RVUVJIWFmUzJXM3tNemVaenV0ZCsKentycSoxb1RkS3p7UCg5VEMyZCg0QClT
MXclZXVZJntRVUYlQEIxJTAlYm9zTWxKbmNGaWswRWNHNHwwRUZxI2JyCno2Iz9MNlMyPTY/WFFR
ZzRoYT1DT3dtR3t2b1omI08tfEBucGRqO35fbEIzdFotaj1fKC1EWDxsRVBlZ3lLYkxHfAp6KnI1
KDhUQW5xdEc2KURxRmZiVDRqeHQ2QVZLZ08tPTdQfiZGcSNWbkRpezFfalZVJTs2fGlFPDZrdjsr
IVBDe3gKSld0fiQoNjlEOE1fX3FLNgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRv
ci1zY2FsZS10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbAppbmRleCAzMDA3NGIyNjAxMDg1MDEy
NjY3OGY4ZTFjY2Y3Yzc5NjVmYTkzNGQ3Li5lMWJhYzllYjczNGQ5ZTg3Y2M3MjhiNjhkMGExZDQ5
ZjA0ZDNlZTk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRt
bApAQCAtMyw3ICszLDcgQEAKICAgICA8c2NyaXB0PgogICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgewogICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZShkb2N1bWVudCwgdHJ1ZSk7Ci0gICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFpv
b21BbmltYXRvclNjYWxlKGRvY3VtZW50LCAxLjI1KTsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGRvY3VtZW50LCAxLjI1LCAtMjUuMCwgLTI1
LjApOwogICAgICAgICB9CiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDFmM2NjNzhhOGQ1NmEzOTlkN2Q1ZjdhYjllY2E1YTExZjM2MmNh
ODQuLmVhODg1OWUzYTdhMzYwNDBkNDk3MzQ0ZjRhNGZhNmFmYmUwZDc5NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzOCBAQAorMjAxMS0wOS0yMSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZXZpc2Ugem9vbSBhbmltYXRv
ciBiYWNrZW5kIHRvIHVzZSBmdWxsIHRyYW5zZm9ybSBpbnN0ZWFkIG9mIGp1c3Qgc2NhbGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODUzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRab29t
QW5pbWF0b3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbUFuaW1h
dG9yUG9zWCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbUFuaW1hdG9yUG9zWSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd0xheWVyc0ludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpjb21taXRUbyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmlzWm9vbVRyYW5zZm9ybUlkZW50aXR5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFpvb21B
bmltYXRvclRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3Jt
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKwogMjAxMS0wOS0yMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcGFpbnQgYm94IG1vZGVsIGNvbG9ycyBp
biBNZXRyaWNzIHNpZGViYXIgYXQgYWxsIHRpbWVzLCBkbyBub3QgZHJhdyBib3ggb3V0bGluZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDBmY2U3YjM2NDA0YmZjNDFmNTY4ODBjNTQx
MjVhMDUwMmEzYWEyZTkuLmQ3ZTAwZDFjN2RhNjI3ZDFhN2ZhNWI0YWJlMjZlYTBiYjkwMDliMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0yMTksNiArMjE5LDggQEAgU2V0dGluZ3M6
OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3Bhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6
bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKICAgICAsIG1fem9vbUFuaW1hdG9y
U2NhbGUoMSkKKyAgICAsIG1fem9vbUFuaW1hdG9yUG9zWCgwKQorICAgICwgbV96b29tQW5pbWF0
b3JQb3NZKDApCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHll
dCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3Jl
IHRyeWluZyB0byB1c2UgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggMDAxYjE4NGZhYzFk
MTNhNDBiYjQ2ZDM3NTAzY2M2ZGM4MTMwMGU4Ny4uMzA2YzJkMjcyMzlmZTQ1MWY4NWMyMGVmOTdl
Nzk5NGRhZTU1ZTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNDM1LDYgKzQzNSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUo
ZG91YmxlIHNjYWxlKSB7IG1fem9vbUFuaW1hdG9yU2NhbGUgPSBzY2FsZTsgfQogICAgICAgICBk
b3VibGUgem9vbUFuaW1hdG9yU2NhbGUoKSB7IHJldHVybiBtX3pvb21BbmltYXRvclNjYWxlOyB9
CiAKKyAgICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JQb3NpdGlvbihkb3VibGUgeCwgZG91Ymxl
IHkpIHsgbV96b29tQW5pbWF0b3JQb3NYID0geDsgbV96b29tQW5pbWF0b3JQb3NZID0geTsgfQor
ICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9yUG9zWCgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9y
UG9zWDsgfQorICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9yUG9zWSgpIHsgcmV0dXJuIG1fem9v
bUFuaW1hdG9yUG9zWTsgfQorCiAgICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlw
dHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJT
Y3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBzaG91
bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3No
b3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQogCkBAIC02MDQs
NiArNjA4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBnTW9j
a1Njcm9sbGJhcnNFbmFibGVkOwogCiAgICAgICAgIGRvdWJsZSBtX3pvb21BbmltYXRvclNjYWxl
OworICAgICAgICBkb3VibGUgbV96b29tQW5pbWF0b3JQb3NYOworICAgICAgICBkb3VibGUgbV96
b29tQW5pbWF0b3JQb3NZOwogCiAjaWYgVVNFKFNBRkFSSV9USEVNRSkKICAgICAgICAgc3RhdGlj
IGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcAppbmRleCA0ZGFlNjEzNTc5MGFhZTdlZWRiMzgwNmUyZmY0YTMxZjA5MDU5
YzI3Li5lYTEzOWQ0NjhmMzFkOTdmMGYzMzJiMTAxMTIzZDdjODljMDIyNjQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTE0Nyw3ICsxNDcsNiBAQCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBs
KiBvd25lciwKICAgICA6IG1fb3duZXIob3duZXIpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJm
YWNlKDApCiAgICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKLSAgICAsIG1fem9vbUFu
aW1hdG9yU2NhbGUoMSkKICAgICAsIG1fY29udGVudHNUZXh0dXJlTWVtb3J5VXNlQnl0ZXMoMCkK
ICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgw
KQpAQCAtMjY3LDE0ICsyNjYsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdM
YXllcnNJbnRlcm5hbCgpCiAgICAgQ0NMYXllckxpc3QgcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsK
ICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290RHJhd0xheWVyKTsKIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHpvb21NYXRyaXg7Ci0gICAgem9vbU1hdHJpeC5zY2FsZTNk
KG1fem9vbUFuaW1hdG9yU2NhbGUsIG1fem9vbUFuaW1hdG9yU2NhbGUsIDEpOwogICAgIG1fZGVm
YXVsdFJlbmRlclN1cmZhY2UgPSByb290RHJhd0xheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAg
bV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIHsKICAgICAg
ICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFs
OjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290RHJhd0xheWVyLCByb290
RHJhd0xheWVyLCB6b29tTWF0cml4LCB6b29tTWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIsIG1f
Y2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdERyYXdMYXllciwg
cm9vdERyYXdMYXllciwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJh
bnNmb3JtLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5s
YXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIsIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXpl
KTsKICAgICB9CiAKICAgICAvLyBUaGUgR0wgdmlld3BvcnQgY292ZXJzIHRoZSBlbnRpcmUgdmlz
aWJsZSBhcmVhLCBpbmNsdWRpbmcgdGhlIHNjcm9sbGJhcnMuCkBAIC0yOTAsOCArMjg3LDEzIEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwoKQogCiAgICAg
dXNlUmVuZGVyU3VyZmFjZShtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKTsKIAotICAgIC8vIENsZWFy
IHRvIGJsdWUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3BvdCB1bnJlbmRlcmVkIHJlZ2lvbnMuCi0g
ICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDEsIDEpOworICAgIGlmIChtX3pvb21Bbmlt
YXRvclRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIC8vIENsZWFyIHRvIGJsdWUgdG8g
bWFrZSBpdCBlYXNpZXIgdG8gc3BvdCB1bnJlbmRlcmVkIHJlZ2lvbnMuCisgICAgICAgIG1fY29u
dGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAxLCAxKTsKKyAgICBlbHNlCisgICAgICAgIC8vIENsZWFy
IHRvIGdyZXksIGFzIHpvb20gYW5pbWF0aW9uIG1heSBsZWF2ZSB1bnJlbmRlcmVkIHJlZ2lvbnMu
CisgICAgICAgIC8vIEZJWE1FKHdqbWFjbGVhbik6IFJlbmRlciBzb21lIGludGVyZXN0aW5nIHRl
eHR1cmUgaW4gdW5yZW5kZXJlZCByZWdpb25zLgorICAgICAgICBtX2NvbnRleHQtPmNsZWFyQ29s
b3IoMC4yNSwgMC4yNSwgMC4yNSwgMSk7CiAgICAgbV9jb250ZXh0LT5jb2xvck1hc2sodHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgbV9jb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfQlVGRkVSX0JJVCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
aW5kZXggZGJlYjg0ZWJlNzBmMDRjOGJjOTE0OTY0NWYwNzkxMDEzMDE2MmQwYS4uNTk4NGMxMzll
M2RmZmI3MTRkMzg2MmJjMjQzNTI5ZDUyOWVmYjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgLy8gcHV0cyBiYWNr
YnVmZmVyIG9uc2NyZWVuCiAgICAgdm9pZCBwcmVzZW50KCk7CiAKLSAgICB2b2lkIHNldFpvb21B
bmltYXRvclNjYWxlKGRvdWJsZSBmYWN0b3IpIHsgbV96b29tQW5pbWF0b3JTY2FsZSA9IGZhY3Rv
cjsgfQorICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0KSB7IG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtID0gdDsgfQogCiAgICAgdW5z
aWduZWQgY3JlYXRlTGF5ZXJUZXh0dXJlKCk7CiAgICAgdm9pZCBkZWxldGVMYXllclRleHR1cmUo
dW5zaWduZWQpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHByaXZhdGU6CiAKICAgICBDQ1JlbmRlclN1
cmZhY2UqIG1fY3VycmVudFJlbmRlclN1cmZhY2U7CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5G
cmFtZWJ1ZmZlcklkOwotICAgIGRvdWJsZSBtX3pvb21BbmltYXRvclNjYWxlOworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtOwogCiAgICAgLy8gU3RvcmUg
dmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiBlYWNoIGxheWVyIHR5
cGUKICAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnN0YW5jZSBvZiB0aGUgY29tcG9zaXRv
ci4gU2luY2UgdGhlcmUgY2FuIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRl
eCA0MjY5M2VhY2Y4YjEwYzhmM2VkZjgyMTM1MjM5MGE1ZmRhYjU5ZmUzLi5jYTQ3N2IzMTBkNjcz
Mjc3N2JmOTRkODEzNGVkOTM5MDEwYTFjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICAgICAg
ICAgICAgICBDUkFTSCgpOwogCiAgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0
dXJlKGNvbnRleHQpOwotICAgICAgICAgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGVy
LT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGlj
c0NvbnRleHQzRDo6TkVBUkVTVDsKKyAgICAgICAgICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0g
KG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpIHx8ICFsYXllclRyZWVIb3N0KCktPmlzWm9vbVRy
YW5zZm9ybUlkZW50aXR5KCkpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNz
Q29udGV4dDNEOjpORUFSRVNUOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogICAgICAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBh
MjU3YjQxMWFiOWY0YzRkNmFjZWJmZTdhNzUzYmYxOWRhYjgzMmM4Li43OGE5MjFhMTRhMDA3ZWMy
Y2ZmMmUwNTdjOWQwMzhjYjExOWYyMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAKQEAgLTUzLDcgKzUzLDYgQEAgQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8TGF5ZXIKICAgICAsIG1fZnJh
bWVOdW1iZXIoMCkKICAgICAsIG1fcm9vdExheWVyKHJvb3RMYXllcikKICAgICAsIG1fc2V0dGlu
Z3Moc2V0dGluZ3MpCi0gICAgLCBtX3pvb21BbmltYXRvclNjYWxlKDEpCiAgICAgLCBtX3Zpc2li
bGUodHJ1ZSkKIHsKIH0KQEAgLTEyMyw3ICsxMjIsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
Y29tbWl0VG8oQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiAgICAgY2xlYXJQZW5kaW5n
VXBkYXRlKCk7CiAKICAgICBob3N0SW1wbC0+c2V0VmlzaWJsZShtX3Zpc2libGUpOwotICAgIGhv
c3RJbXBsLT5zZXRab29tQW5pbWF0b3JTY2FsZShtX3pvb21BbmltYXRvclNjYWxlKTsKKyAgICBo
b3N0SW1wbC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKG1fem9vbUFuaW1hdG9yVHJhbnNmb3Jt
KTsKICAgICBob3N0SW1wbC0+c2V0Vmlld3BvcnQodmlld3BvcnRTaXplKCkpOwogCiAgICAgaG9z
dEltcGwtPmxheWVyUmVuZGVyZXIoKS0+c2V0Q29udGVudHNUZXh0dXJlTWVtb3J5VXNlQnl0ZXMo
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7CkBAIC0x
OTEsMTEgKzE5MCwxMiBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVy
VHJlZUhvc3Q6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjbwogICAgIHJldHVybiBtX3By
b3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzZXRab29tQW5pbWF0b3JTY2FsZShkb3VibGUgem9vbSkKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHpvb20pCiB7Ci0gICAgYm9vbCB6b29tQ2hhbmdlZCA9IG1fem9vbUFuaW1hdG9yU2NhbGUgIT0g
em9vbTsKKyAgICBib29sIHpvb21DaGFuZ2VkID0gbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0gIT0g
em9vbTsKIAotICAgIG1fem9vbUFuaW1hdG9yU2NhbGUgPSB6b29tOworICAgIG1fem9vbUFuaW1h
dG9yVHJhbnNmb3JtID0gem9vbTsKKyAgICBtX3pvb21UcmFuc2Zvcm1Jc0lkZW50aXR5ID0gbV96
b29tQW5pbWF0b3JUcmFuc2Zvcm0uaXNJZGVudGl0eSgpOwogCiAgICAgaWYgKHpvb21DaGFuZ2Vk
KQogICAgICAgICBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwpAQCAtMjg3LDExICsyODcsOSBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RM
YXllcikKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9v
dExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5
ZXJMaXN0KCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29tTWF0cml4OwotICAgIHpv
b21NYXRyaXguc2NhbGUzZChtX3pvb21BbmltYXRvclNjYWxlLCBtX3pvb21BbmltYXRvclNjYWxl
LCAxKTsKICAgICB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCBy
b290TGF5ZXIsIHpvb21NYXRyaXgsIHpvb21NYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRl
clN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4
dHVyZVNpemUpOworICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgbV96b29tQW5pbWF0
b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3VwZGF0ZUxpc3QsIHJvb3RS
ZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1h
eFRleHR1cmVTaXplKTsKICAgICB9CiAKICAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVM
aXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZmVlMjk1NjEyYjkyMTI3OTBk
MGJlYzEwNjg3ZDA1YmQxMTc4YmYxNy4uMDc4YWU4ZjdiOGZhYmU2N2M2ODYwNzg4OWFjZTQ5Mjdh
Mzk0YjU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNp
bmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
IAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0xMjYsNyArMTI3LDggQEAgcHVibGlj
OgogCiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsg
fQogCi0gICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShkb3VibGUpOworICAgIHZvaWQgc2V0
Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAg
Ym9vbCBpc1pvb21UcmFuc2Zvcm1JZGVudGl0eSgpIHsgcmV0dXJuIG1fem9vbVRyYW5zZm9ybUlz
SWRlbnRpdHk7IH0KIAogICAgIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKIApAQCAtMTgxLDcgKzE4Myw4IEBAIHByaXZh
dGU6CiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0
U2l6ZTsKLSAgICBkb3VibGUgbV96b29tQW5pbWF0b3JTY2FsZTsKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3pvb21BbmltYXRvclRyYW5zZm9ybTsKKyAgICBib29sIG1fem9vbVRyYW5zZm9y
bUlzSWRlbnRpdHk7CiAgICAgYm9vbCBtX3Zpc2libGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGIzMDQ4MzY4ZGFhMjA3NmZhNDlkYmExNGJiOWM5
MzY5OGI2NzZlMWQuLmFlMWM1ZGI0ZmM3NGU1ZGU5YmZkYmJiYTZhNGUxMTRjZGNmMjdjY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xNTEsOSArMTUxLDkg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2
aWV3cG9ydFNpemUpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+dmlld3BvcnRDaGFuZ2VkKCk7
CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Wm9vbUFuaW1hdG9yU2NhbGUoZG91
YmxlIHpvb20pCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFpvb21BbmltYXRvclRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgem9vbSkKIHsKLSAgICBtX2xheWVyUmVu
ZGVyZXItPnNldFpvb21BbmltYXRvclNjYWxlKHpvb20pOworICAgIG1fbGF5ZXJSZW5kZXJlci0+
c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb20pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYTM3ZTlmMzNiZTllNzRmZWU2Yjc5NTVjNDA3YTliZjNl
MDQ0Y2U1OS4uMTljZmNlMjA2MzBkMGZlZjE1OTU1NDQ2YzgxYTBkNDE0NGUyZDE2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBD
Q0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOwogc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXM7CitjbGFzcyBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKIAogLy8gQ0NMYXllclRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xh
eWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5kZXJpbmcgc3RhdGUKIGNsYXNz
IENDTGF5ZXJUcmVlSG9zdEltcGwgewpAQCAtNzUsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSk7CiAgICAgY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0K
LSAgICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKGRvdWJsZSk7CisgICAgdm9pZCBzZXRab29t
QW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKIAogICAgIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDA0ZWM5ZWY1
Mzc0OGI5YWQ3NGZlZTgwNjY2Y2YxNTBkYjE4MGVhM2IuLjJmZDRjNzNkNjYyODE5NDdkNWEwZTA3
NWNjYTM3NzVkMzIyMzkxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTI0Myw3ICsyNDMsNyBAQCB2b2lkIEludGVybmFsczo6c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUo
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdAogICAgIGRvY3VtZW50LT5z
ZXR0aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShlbmFibGVkKTsKIH0KIAotdm9pZCBJ
bnRlcm5hbHM6OnNldFpvb21BbmltYXRvclNjYWxlKERvY3VtZW50ICpkb2N1bWVudCwgZG91Ymxl
IHNjYWxlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0
b3JUcmFuc2Zvcm0oRG9jdW1lbnQgKmRvY3VtZW50LCBkb3VibGUgc2NhbGUsIGRvdWJsZSB0eCwg
ZG91YmxlIHR5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFk
b2N1bWVudC0+c2V0dGluZ3MoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
QEAgLTI1MSw2ICsyNTEsNyBAQCB2b2lkIEludGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yU2NhbGUo
RG9jdW1lbnQgKmRvY3VtZW50LCBkb3VibGUgc2NhbGUsIEV4Y2VwdGlvbgogICAgIH0KIAogICAg
IGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRab29tQW5pbWF0b3JTY2FsZShzY2FsZSk7CisgICAg
ZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldFpvb21BbmltYXRvclBvc2l0aW9uKHR4LCB0eSk7CiB9
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQYXNzd29yZEVjaG9FbmFibGVkKERvY3VtZW50KiBkb2N1
bWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IDEzNDM3ZTFlZGE0MDU3OTQ4MmVhZTg3Yzc0ODcxNjdmNGQ3MGY2NTIu
LjFhMjYzZDJjNzgxNThhNTk4NDMxZDhkNDg3NjczZDM0NGYzNzAzN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCB1bnNpZ25lZCwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShEb2N1bWVudCosIGJvb2wg
ZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUo
RG9jdW1lbnQqLCBkb3VibGUgc2NhbGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFpv
b21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVudCosIGRvdWJsZSBzY2FsZSwgZG91YmxlIHR4LCBk
b3VibGUgdHksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2V0UGFzc3dvcmRFY2hvRW5h
YmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
c2V0UGFzc3dvcmRFY2hvRHVyYXRpb25JblNlY29uZHMoRG9jdW1lbnQqLCBkb3VibGUgZHVyYXRp
b25JblNlY29uZHMsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCA1ZTIzMWNjZDUzMTg5NTk0ZWFkNGM2ZjA4Y2I3MzA5ZDQyYmU3MzY4Li40NWUx
YzhjMDYwYzQ0ZTRkMjU0YjhkNjkyMjFmMDY0OGMxMWEyYzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC01MSw3ICs1MSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAg
ICBSYW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiB1bnNpZ25lZCBsb25n
IGluZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICB2b2lkIHNldEZvcmNlQ29t
cG9zaXRpbmdNb2RlKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVuYWJsZWQpIHJh
aXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKGlu
IERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgc2NhbGUpIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICB2b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9ybShpbiBEb2N1bWVudCBkb2N1
bWVudCwgaW4gZG91YmxlIHNjYWxlLCBpbiBkb3VibGUgdHgsIGluIGRvdWJsZSB0eSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVkKGlu
IERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKGluIERv
Y3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgZHVyYXRpb25JblNlY29uZHMpIHJhaXNlcyhET01F
eGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhYTM5OWE5YjhjZTEwOWFm
ODllMjM0ZmNlZTQ5ZDExYjFhMDY5NzI2Li44OWEwNjJhYTI3OWFjMDllYzNhMTJiMjIwMjYxNTMw
OTljNWQ3ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDExLTA5LTIxICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIFJldmlzZSB6b29tIGFuaW1hdG9yIGJhY2tlbmQgdG8gdXNlIGZ1
bGwgdHJhbnNmb3JtIGluc3RlYWQgb2YganVzdCBzY2FsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSk6CisKIDIwMTEtMDktMjAgIEph
eSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRoaXMgQ0wgbWFr
ZXMgaXQgcG9zc2libGUgdG8gY3JlYXRlIGEgYmxvYiBmcm9tIENocm9taXVtLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDYwMDc0NjY3NWI0NGRiNzNh
YmIxOGRmOWYwMmMwMjM4M2M5OTk3NDEuLmZkOGUyYjE3ZDJmYTUwMmFlMGVjMGUzMDE0Y2Q3N2Ez
ZjU4NjQyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTE4NDEsNyArMTg0MSw3IEBAIGRvdWJsZSBXZWJWaWV3SW1wbDo6em9vbUxldmVsKCkKIGRv
dWJsZSBXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKGJvb2wgdGV4dE9ubHksIGRvdWJsZSB6b29t
TGV2ZWwpCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRab29tQW5pbWF0b3JTY2FsZSgxKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICBp
ZiAoem9vbUxldmVsIDwgbV9taW5pbXVtWm9vbUxldmVsKQogICAgICAgICBtX3pvb21MZXZlbCA9
IG1fbWluaW11bVpvb21MZXZlbDsKQEAgLTI1NzUsOCArMjU3NSwxMiBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9sYXll
clRyZWVIb3N0KQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFpvb21BbmltYXRvclNjYWxl
KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yU2NhbGUoKSk7CisgICAgaWYgKG1fbGF5
ZXJUcmVlSG9zdCkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29tTWF0cml4Owor
ICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0ZTNkKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFu
aW1hdG9yUG9zWCgpLCBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21BbmltYXRvclBvc1koKSwgMCk7
CisgICAgICAgIHpvb21NYXRyaXguc2NhbGUzZChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Bbmlt
YXRvclNjYWxlKCksIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yU2NhbGUoKSwgMSk7
CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKHpvb21N
YXRyaXgpOworICAgIH0KICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdEFu
ZFJlZHJhdygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108327</attachid>
            <date>2011-09-22 06:51:52 -0700</date>
            <delta_ts>2011-09-24 10:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68535-20110922094715.patch</filename>
            <type>text/plain</type>
            <size>20489</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3MTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZDM5ZGQ3YzNmZjY2NTFhODkxNTc3
ZjIzYTBkNjU5ZDQyYmVhNWVjLi5iMzIyMjk0OWY1Yzk0ZWY1YTFhMTFkMDQ5ZmMxMjZmZjY1YmYx
NzM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMjIgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmV2aXNlIHpv
b20gYW5pbWF0b3IgYmFja2VuZCB0byB1c2UgZnVsbCB0cmFuc2Zvcm0gaW5zdGVhZCBvZiBqdXN0
IHNjYWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3Qu
aHRtbDoKKwogMjAxMS0wOS0yMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtRdF1bV0syXSBVbnJlaXZld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QtZXhwZWN0ZWQucG5nIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L3BsYXRmb3JtL2Nocm9taXVtL2Nv
bXBvc2l0aW5nL3pvb20tYW5pbWF0b3Itc2NhbGUtdGVzdC1leHBlY3RlZC5wbmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzEwYmUzMTZkM2U4MTg4ZWIzNzRlMGI5YzBmNWQxZDRhMzZiMDRhNApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMjg2Mgp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlop
PWheaGxBJUBXcyRsSGBvazxtfT9vVG1+WigKekJlT0pQIXtrKXMjMXZ6Kk02KjxicX54UnxhfDJU
WSF6NSQjQm09YzJPTVdwaGEyQGI7YVNXLUxeWStGP1BOcU5zCno3UlVLQndvQ2tzPDhlQ3RDe3B4
YmphaE5wR2Uhbzc9UjBpfjcjYCVZaCVxPyRCcnF9QDhEJEt1SyMwNHxUekImNAp6b1ZUMytHd3lB
K1dufGQqXyNoS1EyZDU1MCE7QXg/akx8P0trUD5kcG9jV2ZRZm5vY2ooTnJePFZAOFhPKElScysK
aTdtVmhEIUkyQVl1PGtZQ1ReK3VZKWQkIUJYN0ZfTmI2TXc8JjskUyVgV0wkWgoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRt
bAppbmRleCAzMDA3NGIyNjAxMDg1MDEyNjY3OGY4ZTFjY2Y3Yzc5NjVmYTkzNGQ3Li5lMWJhYzll
YjczNGQ5ZTg3Y2M3MjhiNjhkMGExZDQ5ZjA0ZDNlZTk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3Qu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29t
LWFuaW1hdG9yLXNjYWxlLXRlc3QuaHRtbApAQCAtMyw3ICszLDcgQEAKICAgICA8c2NyaXB0Pgog
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewogICAgICAgICAgICAgd2luZG93LmludGVy
bmFscy5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShkb2N1bWVudCwgdHJ1ZSk7Ci0gICAgICAgICAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldFpvb21BbmltYXRvclNjYWxlKGRvY3VtZW50LCAxLjI1KTsK
KyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGRv
Y3VtZW50LCAxLjI1LCAtMjUuMCwgLTI1LjApOwogICAgICAgICB9CiAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUzNjUwZjg2YWJjMDll
NTc1NjAzM2M0OTI0M2M2NGNkNmVjYTEzOTcuLjFmZWFmMjg3NWIzM2NiY2VlNjJjODk1MmExMGVm
NzRmNzU3MGVlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wOS0yMiAgVy4g
SmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBSZXZpc2Ugem9vbSBhbmltYXRvciBiYWNrZW5kIHRvIHVzZSBmdWxsIHRyYW5zZm9ybSBp
bnN0ZWFkIG9mIGp1c3Qgc2NhbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02ODUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzZXRab29tQW5pbWF0b3JTY2FsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6em9vbUFuaW1hdG9yU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldFpvb21BbmltYXRvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
Ojp6b29tQW5pbWF0b3JQb3NYKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjp6b29tQW5p
bWF0b3JQb3NZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aXNab29tVHJhbnNmb3JtSWRlbnRpdHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Wm9vbUFuaW1h
dG9yVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOgorCiAyMDExLTA5LTIyICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFs
ZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdIFJlZGlyZWN0aW9uIG92ZXJmbG93
IGVycm9ycyBoYXZlIHdyb25nIGVycm9yIGRvbWFpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApp
bmRleCAwZmNlN2IzNjQwNGJmYzQxZjU2ODgwYzU0MTI1YTA1MDJhM2FhMmU5Li5kN2UwMGQxYzdk
YTYyN2QxYTdmYTViNGFiZTI2ZWEwYmI5MDA5YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cApAQCAtMjE5LDYgKzIxOSw4IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAg
ICwgbV9wYXNzd29yZEVjaG9FbmFibGVkKGZhbHNlKQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRp
bWVyRmlyZWQpCiAgICAgLCBtX3pvb21BbmltYXRvclNjYWxlKDEpCisgICAgLCBtX3pvb21Bbmlt
YXRvclBvc1goMCkKKyAgICAsIG1fem9vbUFuaW1hdG9yUG9zWSgwKQogewogICAgIC8vIEEgRnJh
bWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0
b21pY1N0cmluZyAKICAgICAvLyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCmluZGV4IDAwMWIxODRmYWMxZDEzYTQwYmI0NmQzNzUwM2NjNmRjODEzMDBl
ODcuLmRiNzM2NDhkNGExMGI5YjJkY2Y1NTQ0MmI5MjdhMTlmOGIwZmIxYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgKQEAgLTQzMiw4ICs0MzIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wgZmxhZykgeyBtX2ZvcmNlQ29t
cG9zaXRpbmdNb2RlID0gZmxhZzsgfQogICAgICAgICBib29sIGZvcmNlQ29tcG9zaXRpbmdNb2Rl
KCkgeyByZXR1cm4gbV9mb3JjZUNvbXBvc2l0aW5nTW9kZTsgfQogCi0gICAgICAgIHZvaWQgc2V0
Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlIHNjYWxlKSB7IG1fem9vbUFuaW1hdG9yU2NhbGUgPSBz
Y2FsZTsgfQotICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9yU2NhbGUoKSB7IHJldHVybiBtX3pv
b21BbmltYXRvclNjYWxlOyB9CisgICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoZmxv
YXQgc2NhbGUpIHsgbV96b29tQW5pbWF0b3JTY2FsZSA9IHNjYWxlOyB9CisgICAgICAgIGZsb2F0
IHpvb21BbmltYXRvclNjYWxlKCkgeyByZXR1cm4gbV96b29tQW5pbWF0b3JTY2FsZTsgfQorCisg
ICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yUG9zaXRpb24oZmxvYXQgeCwgZmxvYXQgeSkgeyBt
X3pvb21BbmltYXRvclBvc1ggPSB4OyBtX3pvb21BbmltYXRvclBvc1kgPSB5OyB9CisgICAgICAg
IGZsb2F0IHpvb21BbmltYXRvclBvc1goKSB7IHJldHVybiBtX3pvb21BbmltYXRvclBvc1g7IH0K
KyAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yUG9zWSgpIHsgcmV0dXJuIG1fem9vbUFuaW1hdG9y
UG9zWTsgfQogCiAgICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRp
YWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5J
bml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBzaG91bGRJbmplY3RV
c2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZEluamVj
dFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQpAQCAtNjAzLDcgKzYwNyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICBzdGF0aWMgYm9vbCBnTW9ja1Nj
cm9sbGJhcnNFbmFibGVkOwogCi0gICAgICAgIGRvdWJsZSBtX3pvb21BbmltYXRvclNjYWxlOwor
ICAgICAgICBmbG9hdCBtX3pvb21BbmltYXRvclNjYWxlOworICAgICAgICBmbG9hdCBtX3pvb21B
bmltYXRvclBvc1g7CisgICAgICAgIGZsb2F0IG1fem9vbUFuaW1hdG9yUG9zWTsKIAogI2lmIFVT
RShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNv
bnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggNGRhZTYx
MzU3OTBhYWU3ZWVkYjM4MDZlMmZmNGEzMWYwOTA1OWMyNy4uZWExMzlkNDY4ZjMxZDk3ZjBmMzMy
YjEwMTEyM2Q3Yzg5YzAyMjY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCkBAIC0xNDcsNyArMTQ3LDYgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRl
cmVyQ2hyb21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsCiAgICAgOiBtX293bmVyKG93
bmVyKQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgwKQogICAgICwgbV9vZmZzY3JlZW5G
cmFtZWJ1ZmZlcklkKDApCi0gICAgLCBtX3pvb21BbmltYXRvclNjYWxlKDEpCiAgICAgLCBtX2Nv
bnRlbnRzVGV4dHVyZU1lbW9yeVVzZUJ5dGVzKDApCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkK
ICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKQEAgLTI2NywxNCArMjY2LDEyIEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwoKQogICAgIENDTGF5
ZXJMaXN0IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocm9vdERyYXdMYXllcik7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29t
TWF0cml4OwotICAgIHpvb21NYXRyaXguc2NhbGUzZChtX3pvb21BbmltYXRvclNjYWxlLCBtX3pv
b21BbmltYXRvclNjYWxlLCAxKTsKICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlID0gcm9vdERy
YXdMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmNs
ZWFyTGF5ZXJMaXN0KCk7CiAKICAgICB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbDo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsK
LSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkocm9vdERyYXdMYXllciwgcm9vdERyYXdMYXllciwgem9vbU1hdHJpeCwgem9v
bU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+
bGF5ZXJMaXN0KCksICZtX2xheWVyU29ydGVyLCBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6
ZSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KHJvb3REcmF3TGF5ZXIsIHJvb3REcmF3TGF5ZXIsIG1fem9vbUFuaW1h
dG9yVHJhbnNmb3JtLCBtX3pvb21BbmltYXRvclRyYW5zZm9ybSwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksICZtX2xheWVyU29ydGVy
LCBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQogCiAgICAgLy8gVGhlIEdM
IHZpZXdwb3J0IGNvdmVycyB0aGUgZW50aXJlIHZpc2libGUgYXJlYSwgaW5jbHVkaW5nIHRoZSBz
Y3JvbGxiYXJzLgpAQCAtMjkwLDggKzI4NywxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd0xheWVyc0ludGVybmFsKCkKIAogICAgIHVzZVJlbmRlclN1cmZhY2UobV9kZWZhdWx0
UmVuZGVyU3VyZmFjZSk7CiAKLSAgICAvLyBDbGVhciB0byBibHVlIHRvIG1ha2UgaXQgZWFzaWVy
IHRvIHNwb3QgdW5yZW5kZXJlZCByZWdpb25zLgotICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigw
LCAwLCAxLCAxKTsKKyAgICBpZiAobV96b29tQW5pbWF0b3JUcmFuc2Zvcm0uaXNJZGVudGl0eSgp
KQorICAgICAgICAvLyBDbGVhciB0byBibHVlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgdW5y
ZW5kZXJlZCByZWdpb25zLgorICAgICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMSwg
MSk7CisgICAgZWxzZQorICAgICAgICAvLyBDbGVhciB0byBncmV5LCBhcyB6b29tIGFuaW1hdGlv
biBtYXkgbGVhdmUgdW5yZW5kZXJlZCByZWdpb25zLgorICAgICAgICAvLyBGSVhNRSh3am1hY2xl
YW4pOiBSZW5kZXIgc29tZSBpbnRlcmVzdGluZyB0ZXh0dXJlIGluIHVucmVuZGVyZWQgcmVnaW9u
cy4KKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAuMjUsIDAuMjUsIDAuMjUsIDEpOwog
ICAgIG1fY29udGV4dC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOwogICAgIG1f
Y29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGRiZWI4NGViZTcwZjA0YzhiYzkx
NDk2NDVmMDc5MTAxMzAxNjJkMGEuLjU5ODRjMTM5ZTNkZmZiNzE0ZDM4NjJiYzI0MzUyOWQ1Mjll
ZmI0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMDMsNyArMTAz
LDcgQEAgcHVibGljOgogICAgIC8vIHB1dHMgYmFja2J1ZmZlciBvbnNjcmVlbgogICAgIHZvaWQg
cHJlc2VudCgpOwogCi0gICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShkb3VibGUgZmFjdG9y
KSB7IG1fem9vbUFuaW1hdG9yU2NhbGUgPSBmYWN0b3I7IH0KKyAgICB2b2lkIHNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkgeyBtX3pvb21Bbmlt
YXRvclRyYW5zZm9ybSA9IHQ7IH0KIAogICAgIHVuc2lnbmVkIGNyZWF0ZUxheWVyVGV4dHVyZSgp
OwogICAgIHZvaWQgZGVsZXRlTGF5ZXJUZXh0dXJlKHVuc2lnbmVkKTsKQEAgLTE5MSw3ICsxOTEs
NyBAQCBwcml2YXRlOgogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2N1cnJlbnRSZW5kZXJTdXJm
YWNlOwogICAgIHVuc2lnbmVkIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZDsKLSAgICBkb3VibGUg
bV96b29tQW5pbWF0b3JTY2FsZTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3pvb21Bbmlt
YXRvclRyYW5zZm9ybTsKIAogICAgIC8vIFN0b3JlIHZhbHVlcyB0aGF0IGFyZSBzaGFyZWQgYmV0
d2VlbiBpbnN0YW5jZXMgb2YgZWFjaCBsYXllciB0eXBlCiAgICAgLy8gYXNzb2NpYXRlZCB3aXRo
IHRoaXMgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvc2l0b3IuIFNpbmNlIHRoZXJlIGNhbiBiZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYTI1N2I0MTFhYjlmNGM0ZDZhY2ViZmU3
YTc1M2JmMTlkYWI4MzJjOC4uNzhhOTIxYTE0YTAwN2VjMmNmZjJlMDU3YzlkMDM4Y2IxMTlmMjM4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC01Myw3ICs1Myw2IEBAIEND
TGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xp
ZW50LCBQYXNzUmVmUHRyPExheWVyCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCiAgICAgLCBtX3Jv
b3RMYXllcihyb290TGF5ZXIpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQotICAgICwgbV96
b29tQW5pbWF0b3JTY2FsZSgxKQogICAgICwgbV92aXNpYmxlKHRydWUpCiB7CiB9CkBAIC0xMjMs
NyArMTIyLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGhvc3RJbXBsKQogICAgIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaG9zdElt
cGwtPnNldFZpc2libGUobV92aXNpYmxlKTsKLSAgICBob3N0SW1wbC0+c2V0Wm9vbUFuaW1hdG9y
U2NhbGUobV96b29tQW5pbWF0b3JTY2FsZSk7CisgICAgaG9zdEltcGwtPnNldFpvb21BbmltYXRv
clRyYW5zZm9ybShtX3pvb21BbmltYXRvclRyYW5zZm9ybSk7CiAgICAgaG9zdEltcGwtPnNldFZp
ZXdwb3J0KHZpZXdwb3J0U2l6ZSgpKTsKIAogICAgIGhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCkt
PnNldENvbnRlbnRzVGV4dHVyZU1lbW9yeVVzZUJ5dGVzKG1fY29udGVudHNUZXh0dXJlTWFuYWdl
ci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwpAQCAtMTkxLDExICsxOTAsMTIgQEAgY29uc3Qg
TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVIb3N0OjpsYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkgY28KICAgICByZXR1cm4gbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Wm9vbUFuaW1hdG9yU2Nh
bGUoZG91YmxlIHpvb20pCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB6b29tKQogewotICAgIGJvb2wgem9v
bUNoYW5nZWQgPSBtX3pvb21BbmltYXRvclNjYWxlICE9IHpvb207CisgICAgYm9vbCB6b29tQ2hh
bmdlZCA9IG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtICE9IHpvb207CiAKLSAgICBtX3pvb21Bbmlt
YXRvclNjYWxlID0gem9vbTsKKyAgICBtX3pvb21BbmltYXRvclRyYW5zZm9ybSA9IHpvb207Cisg
ICAgbV96b29tVHJhbnNmb3JtSXNJZGVudGl0eSA9IG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLmlz
SWRlbnRpdHkoKTsKIAogICAgIGlmICh6b29tQ2hhbmdlZCkKICAgICAgICAgc2V0TmVlZHNDb21t
aXRBbmRSZWRyYXcoKTsKQEAgLTI4NywxMSArMjg3LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgp
OwogICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCi0gICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggem9vbU1hdHJpeDsKLSAgICB6b29tTWF0cml4LnNjYWxlM2QobV96b29t
QW5pbWF0b3JTY2FsZSwgbV96b29tQW5pbWF0b3JTY2FsZSwgMSk7CiAgICAgewogICAgICAgICBU
UkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwg
dGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCB6b29tTWF0cml4LCB6
b29tTWF0cml4LCBtX3VwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwg
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICAgICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
cm9vdExheWVyLCByb290TGF5ZXIsIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pvb21Bbmlt
YXRvclRyYW5zZm9ybSwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0
KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQog
CiAgICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCmluZGV4IGZlZTI5NTYxMmI5MjEyNzkwZDBiZWMxMDY4N2QwNWJkMTE3OGJmMTcu
LjA3OGFlOGY3YjhmYWJlNjdjNjg2MDc4ODlhY2U0OTI3YTM5NGI1NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzM0QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgpAQCAtMTI2LDcgKzEyNyw4IEBAIHB1YmxpYzoKIAogICAgIGludCBmcmFtZU51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAotICAgIHZvaWQgc2V0Wm9vbUFu
aW1hdG9yU2NhbGUoZG91YmxlKTsKKyAgICB2b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIGJvb2wgaXNab29tVHJhbnNmb3JtSWRl
bnRpdHkoKSB7IHJldHVybiBtX3pvb21UcmFuc2Zvcm1Jc0lkZW50aXR5OyB9CiAKICAgICBjb25z
dCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkg
Y29uc3Q7CiAKQEAgLTE4MSw3ICsxODMsOCBAQCBwcml2YXRlOgogICAgIENDU2V0dGluZ3MgbV9z
ZXR0aW5nczsKIAogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7Ci0gICAgZG91YmxlIG1fem9v
bUFuaW1hdG9yU2NhbGU7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV96b29tQW5pbWF0b3JU
cmFuc2Zvcm07CisgICAgYm9vbCBtX3pvb21UcmFuc2Zvcm1Jc0lkZW50aXR5OwogICAgIGJvb2wg
bV92aXNpYmxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApp
bmRleCBiMzA0ODM2OGRhYTIwNzZmYTQ5ZGJhMTRiYjljOTM2OThiNjc2ZTFkLi5hZTFjNWRiNGZj
NzRlNWRlOWJmZGJiYmE2YTRlMTE0Y2RjZjI3Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcApAQCAtMTUxLDkgKzE1MSw5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6c2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogICAgICAgICBt
X2xheWVyUmVuZGVyZXItPnZpZXdwb3J0Q2hhbmdlZCgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnNldFpvb21BbmltYXRvclNjYWxlKGRvdWJsZSB6b29tKQordm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHpvb20pCiB7Ci0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRab29tQW5pbWF0b3JT
Y2FsZSh6b29tKTsKKyAgICBtX2xheWVyUmVuZGVyZXItPnNldFpvb21BbmltYXRvclRyYW5zZm9y
bSh6b29tKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4
IGEzN2U5ZjMzYmU5ZTc0ZmVlNmI3OTU1YzQwN2E5YmYzZTA0NGNlNTkuLjE5Y2ZjZTIwNjMwZDBm
ZWYxNTk1NTQ0NmM4MWEwZDQxNDRlMmQxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CiBjbGFz
cyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIHN0cnVjdCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzOworY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIC8v
IENDTGF5ZXJUcmVlSG9zdEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFz
IGFzc29jaWF0ZWQgcmVuZGVyaW5nIHN0YXRlCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIHsK
QEAgLTc1LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUpOwogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9Ci0gICAgdm9pZCBzZXRab29tQW5pbWF0
b3JTY2FsZShkb3VibGUpOworICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAKICAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5n
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBmYTkyMDUxYzQ5YTljNDhkZmQyNDNjODk1N2FiOGMy
NzQ4MDI0YzVmLi45MzE2MGQ0MDIyYjMzMTE2ODcxNDU3NjY3ZTkwNmQ5NDJmODQ5MzA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBJ
bnRlcm5hbHM6OnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCBlbmFibGVkLCBFeGNlcHQKICAgICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0Rm9yY2VDb21w
b3NpdGluZ01vZGUoZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0
b3JTY2FsZShEb2N1bWVudCAqZG9jdW1lbnQsIGRvdWJsZSBzY2FsZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIEludGVybmFsczo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50ICpk
b2N1bWVudCwgZG91YmxlIHNjYWxlLCBkb3VibGUgdHgsIGRvdWJsZSB0eSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnNldHRpbmdzKCkpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CkBAIC0yNTEsNiArMjUxLDcgQEAgdm9p
ZCBJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclNjYWxlKERvY3VtZW50ICpkb2N1bWVudCwgZG91
YmxlIHNjYWxlLCBFeGNlcHRpb24KICAgICB9CiAKICAgICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+
c2V0Wm9vbUFuaW1hdG9yU2NhbGUoc2NhbGUpOworICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5z
ZXRab29tQW5pbWF0b3JQb3NpdGlvbih0eCwgdHkpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0
UGFzc3dvcmRFY2hvRW5hYmxlZChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3YzQ1NmZi
ZjA5MWM2M2U1NjBkN2MyYmIwMjUyMzQzNzg0ZWEwN2I2Li4wYzViYWUyYjY5MWQzZDMyNzBhZDlm
ODNlZDcxMjViMTk2OTVkZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTc3
LDcgKzc3LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlRm9y
Tm9kZShOb2RlKiwgdW5zaWduZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUoRG9jdW1lbnQqLCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIHNldFpvb21BbmltYXRvclNjYWxlKERvY3VtZW50KiwgZG91YmxlIHNjYWxl
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oRG9j
dW1lbnQqLCBkb3VibGUgc2NhbGUsIGRvdWJsZSB0eCwgZG91YmxlIHR5LCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1lbnQqLCBib29sIGVu
YWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0aW9u
SW5TZWNvbmRzKERvY3VtZW50KiwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzLCBFeGNlcHRpb25D
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZDhhMGE2ZDA2ZmE1
YzkxNDZlMjEzOTgxZjJiYmIyZWYyNWM5Y2JjOC4uNzNkZjYxNzcyMjJiZTMwODM2ZmExNTcyNWZh
NmE4OThhYzdjZmQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTEs
NyArNTEsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgUmFuZ2UgbWFya2VyUmFuZ2VGb3JO
b2RlKGluIE5vZGUgbm9kZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKICAgICAgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShpbiBEb2N1bWVu
dCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAg
ICAgICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4g
ZG91YmxlIHNjYWxlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRab29t
QW5pbWF0b3JUcmFuc2Zvcm0oaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGRvdWJsZSBzY2FsZSwg
aW4gZG91YmxlIHR4LCBpbiBkb3VibGUgdHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAg
ICAgIHZvaWQgc2V0UGFzc3dvcmRFY2hvRW5hYmxlZChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4g
Ym9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRQ
YXNzd29yZEVjaG9EdXJhdGlvbkluU2Vjb25kcyhpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gZG91
YmxlIGR1cmF0aW9uSW5TZWNvbmRzKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNmI0ZTI4NWU0ODNmODBlZDVjNGExODViNDEwYjI4MGNiMWU2YWFk
MS4uMWVlZTlhZmQwYWFhOTcwYjU3N2FjZDIxZTI3OTdjMWQ1NGI1ZTY4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wOS0yMiAgVy4gSmFtZXMgTWFj
TGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZXZp
c2Ugem9vbSBhbmltYXRvciBiYWNrZW5kIHRvIHVzZSBmdWxsIHRyYW5zZm9ybSBpbnN0ZWFkIG9m
IGp1c3Qgc2NhbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldFpvb21MZXZlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290TGF5
ZXJOZWVkc0Rpc3BsYXkpOgorCiAyMDExLTA5LTIyICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk1Njk5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDFmODUwOWY0
ODZhZjEzNjlhYTdiOTRjMDY1OTk0NGQ2YWU1NjBlYWUuLmQzNDEzNWFkYmVjMWQxNDk3OTljN2Nj
OWI5ZDg5NmE4ZjAzN2MzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTE4NDEsNyArMTg0MSw3IEBAIGRvdWJsZSBXZWJWaWV3SW1wbDo6em9vbUxl
dmVsKCkKIGRvdWJsZSBXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKGJvb2wgdGV4dE9ubHksIGRv
dWJsZSB6b29tTGV2ZWwpCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JTY2FsZSgxKTsKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7
CiAKICAgICBpZiAoem9vbUxldmVsIDwgbV9taW5pbXVtWm9vbUxldmVsKQogICAgICAgICBtX3pv
b21MZXZlbCA9IG1fbWluaW11bVpvb21MZXZlbDsKQEAgLTI1NzUsOCArMjU3NSwxMiBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikK
IAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBp
ZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFpvb21Bbmlt
YXRvclNjYWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFuaW1hdG9yU2NhbGUoKSk7CisgICAg
aWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29t
TWF0cml4OworICAgICAgICB6b29tTWF0cml4LnRyYW5zbGF0ZShtX3BhZ2UtPnNldHRpbmdzKCkt
Pnpvb21BbmltYXRvclBvc1goKSwgbV9wYWdlLT5zZXR0aW5ncygpLT56b29tQW5pbWF0b3JQb3NZ
KCkpOworICAgICAgICB6b29tTWF0cml4LnNjYWxlKG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFu
aW1hdG9yU2NhbGUoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Wm9vbUFuaW1hdG9y
VHJhbnNmb3JtKHpvb21NYXRyaXgpOworICAgIH0KICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJ
TkcpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108584</attachid>
            <date>2011-09-24 10:24:15 -0700</date>
            <delta_ts>2011-09-26 13:30:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68535-20110924132400.patch</filename>
            <type>text/plain</type>
            <size>20271</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU5MDgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzFlYzFmYzg0YmQzNTQ2Yjk1NjM5
NjhhZDViNjMwMDZjMTE5YTRkLi43MjRiMDUxMzVlOTU1ZDIzZGIwN2M2MjQ3NjFkNGU0YzFmNDYy
NGZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMjQgIFcuIEphbWVzIE1hY0xlYW4g
IDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmV2aXNlIHpv
b20gYW5pbWF0b3IgYmFja2VuZCB0byB1c2UgZnVsbCB0cmFuc2Zvcm0gaW5zdGVhZCBvZiBqdXN0
IHNjYWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njg1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3QtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNjYWxlLXRlc3Qu
aHRtbDoKKwogMjAxMS0wOS0yNCAgWW91bmcgSGFuIExlZSAgPGpveWJyb0Bjb21wYW55MTAwLm5l
dD4KIAogICAgICAgICBTVkdBbmltYXRpb24gZG9lcyBub3Qgc3VwcG9ydCAndmFsdWVzJyBmb3Ig
ZnJvbS10byBhbmltYXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1ncHUtbGludXgvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRv
ci1zY2FsZS10ZXN0LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LWdwdS1saW51eC9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy96b29tLWFuaW1hdG9yLXNj
YWxlLXRlc3QtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMGJlMzE2ZDNlODE4OGViMzc0ZTBi
OWMwZjVkMWQ0YTM2YjA0YTQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjIKemNtZUFTQE4/
KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1Rtfloo
CnpCZU9KUCF7aylzIzF2eipNNio8YnF+eFJ8YXwyVFkhejUkI0JtPWMyT01XcGhhMkBiO2FTVy1M
XlkrRj9QTnFOcwp6N1JVS0J3b0Nrczw4ZUN0Q3tweGJqYWhOcEdlIW83PVIwaX43I2AlWWglcT8k
QnJxfUA4RCRLdUsjMDR8VHpCJjQKem9WVDMrR3d5QStXbnxkKl8jaEtRMmQ1NTAhO0F4P2pMfD9L
a1A+ZHBvY1dmUWZub2NqKE5yXjxWQDhYTyhJUnMrCmk3bVZoRCFJMkFZdTxrWUNUXit1WSlkJCFC
WDdGX05iNk13PCY7JFMlYFdMJFoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3pvb20tYW5pbWF0b3It
c2NhbGUtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRp
bmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKaW5kZXggMzAwNzRiMjYwMTA4NTAxMjY2
NzhmOGUxY2NmN2M3OTY1ZmE5MzRkNy4uZTFiYWM5ZWI3MzRkOWU4N2NjNzI4YjY4ZDBhMWQ0OWYw
NGQzZWU5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9z
aXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvem9vbS1hbmltYXRvci1zY2FsZS10ZXN0Lmh0bWwK
QEAgLTMsNyArMyw3IEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKICAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Rm9yY2VDb21wb3NpdGluZ01v
ZGUoZG9jdW1lbnQsIHRydWUpOwotICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRab29t
QW5pbWF0b3JTY2FsZShkb2N1bWVudCwgMS4yNSk7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldFpvb21BbmltYXRvclRyYW5zZm9ybShkb2N1bWVudCwgMS4yNSwgLTI1LjAsIC0yNS4w
KTsKICAgICAgICAgfQogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CiAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBiMGRkMDRiMzQ1MjQ5MzIxYTVlMTI5ODU5ZmNhMThhZGFiMjgwMjQx
Li5lNjIyY2JkNWUxOWM0NjZlYWE0OGZmNDFkMGQ2ZWRiNjg3ZTU5ZDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTEtMDktMjQgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmV2aXNlIHpvb20gYW5pbWF0b3Ig
YmFja2VuZCB0byB1c2UgZnVsbCB0cmFuc2Zvcm0gaW5zdGVhZCBvZiBqdXN0IHNjYWxlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg1MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Wm9vbUFu
aW1hdG9yU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6Onpvb21BbmltYXRvclNj
YWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRab29tQW5pbWF0b3JQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbUFuaW1hdG9yUG9zWCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6em9vbUFuaW1hdG9yUG9zWSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0lu
dGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0Ojpjb21taXRUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNl
dFpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNl
dFpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTEtMDktMjQgIFlvdW5nIEhh
biBMZWUgIDxqb3licm9AY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgU1ZHQW5pbWF0aW9uIGRv
ZXMgbm90IHN1cHBvcnQgJ3ZhbHVlcycgZm9yIGZyb20tdG8gYW5pbWF0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAppbmRleCAwZmNlN2IzNjQwNGJmYzQxZjU2ODgwYzU0MTI1YTA1MDJhM2Fh
MmU5Li5kN2UwMGQxYzdkYTYyN2QxYTdmYTViNGFiZTI2ZWEwYmI5MDA5YjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcApAQCAtMjE5LDYgKzIxOSw4IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQ
YWdlKiBwYWdlKQogICAgICwgbV9wYXNzd29yZEVjaG9FbmFibGVkKGZhbHNlKQogICAgICwgbV9s
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseVRpbWVyRmlyZWQpCiAgICAgLCBtX3pvb21BbmltYXRvclNjYWxlKDEpCisg
ICAgLCBtX3pvb21BbmltYXRvclBvc1goMCkKKyAgICAsIG1fem9vbUFuaW1hdG9yUG9zWSgwKQog
ewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGlu
aXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAvLyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8g
dXNlIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDAwMWIxODRmYWMxZDEzYTQwYmI0NmQz
NzUwM2NjNmRjODEzMDBlODcuLmRiNzM2NDhkNGExMGI5YjJkY2Y1NTQ0MmI5MjdhMTlmOGIwZmIx
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTQzMiw4ICs0MzIsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wgZmxh
ZykgeyBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlID0gZmxhZzsgfQogICAgICAgICBib29sIGZvcmNl
Q29tcG9zaXRpbmdNb2RlKCkgeyByZXR1cm4gbV9mb3JjZUNvbXBvc2l0aW5nTW9kZTsgfQogCi0g
ICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlIHNjYWxlKSB7IG1fem9vbUFu
aW1hdG9yU2NhbGUgPSBzY2FsZTsgfQotICAgICAgICBkb3VibGUgem9vbUFuaW1hdG9yU2NhbGUo
KSB7IHJldHVybiBtX3pvb21BbmltYXRvclNjYWxlOyB9CisgICAgICAgIHZvaWQgc2V0Wm9vbUFu
aW1hdG9yU2NhbGUoZmxvYXQgc2NhbGUpIHsgbV96b29tQW5pbWF0b3JTY2FsZSA9IHNjYWxlOyB9
CisgICAgICAgIGZsb2F0IHpvb21BbmltYXRvclNjYWxlKCkgeyByZXR1cm4gbV96b29tQW5pbWF0
b3JTY2FsZTsgfQorCisgICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yUG9zaXRpb24oZmxvYXQg
eCwgZmxvYXQgeSkgeyBtX3pvb21BbmltYXRvclBvc1ggPSB4OyBtX3pvb21BbmltYXRvclBvc1kg
PSB5OyB9CisgICAgICAgIGZsb2F0IHpvb21BbmltYXRvclBvc1goKSB7IHJldHVybiBtX3pvb21B
bmltYXRvclBvc1g7IH0KKyAgICAgICAgZmxvYXQgem9vbUFuaW1hdG9yUG9zWSgpIHsgcmV0dXJu
IG1fem9vbUFuaW1hdG9yUG9zWTsgfQogCiAgICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNl
clNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVj
dFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KICAgICAgICAgYm9v
bCBzaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVy
biBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQpAQCAt
NjAzLDcgKzYwNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICBzdGF0
aWMgYm9vbCBnTW9ja1Njcm9sbGJhcnNFbmFibGVkOwogCi0gICAgICAgIGRvdWJsZSBtX3pvb21B
bmltYXRvclNjYWxlOworICAgICAgICBmbG9hdCBtX3pvb21BbmltYXRvclNjYWxlOworICAgICAg
ICBmbG9hdCBtX3pvb21BbmltYXRvclBvc1g7CisgICAgICAgIGZsb2F0IG1fem9vbUFuaW1hdG9y
UG9zWTsKIAogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0YXRpYyBib29sIGdTaG91
bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKaW5kZXggNGRhZTYxMzU3OTBhYWU3ZWVkYjM4MDZlMmZmNGEzMWYwOTA1OWMyNy4uZWExMzlk
NDY4ZjMxZDk3ZjBmMzMyYjEwMTEyM2Q3Yzg5YzAyMjY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xNDcsNyArMTQ3LDYgQEAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsCiAg
ICAgOiBtX293bmVyKG93bmVyKQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgwKQogICAg
ICwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCi0gICAgLCBtX3pvb21BbmltYXRvclNjYWxl
KDEpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZU1lbW9yeVVzZUJ5dGVzKDApCiAgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKQEAgLTI2Nywx
NCArMjY2LDEyIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJu
YWwoKQogICAgIENDTGF5ZXJMaXN0IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdERyYXdMYXllcik7CiAKLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB6b29tTWF0cml4OwotICAgIHpvb21NYXRyaXguc2NhbGUzZChtX3pvb21Bbmlt
YXRvclNjYWxlLCBtX3pvb21BbmltYXRvclNjYWxlLCAxKTsKICAgICBtX2RlZmF1bHRSZW5kZXJT
dXJmYWNlID0gcm9vdERyYXdMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIG1fZGVmYXVsdFJl
bmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICB7CiAgICAgICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbDo6Y2FsY0RyYXdF
dGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdERyYXdMYXllciwgcm9vdERyYXdMYXllciwg
em9vbU1hdHJpeCwgem9vbU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbV9kZWZhdWx0
UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksICZtX2xheWVyU29ydGVyLCBtX2NhcGFiaWxpdGll
cy5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3REcmF3TGF5ZXIsIHJvb3REcmF3TGF5
ZXIsIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pvb21BbmltYXRvclRyYW5zZm9ybSwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCks
ICZtX2xheWVyU29ydGVyLCBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQog
CiAgICAgLy8gVGhlIEdMIHZpZXdwb3J0IGNvdmVycyB0aGUgZW50aXJlIHZpc2libGUgYXJlYSwg
aW5jbHVkaW5nIHRoZSBzY3JvbGxiYXJzLgpAQCAtMjkwLDggKzI4NywxMyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsKCkKIAogICAgIHVzZVJlbmRlclN1
cmZhY2UobV9kZWZhdWx0UmVuZGVyU3VyZmFjZSk7CiAKLSAgICAvLyBDbGVhciB0byBibHVlIHRv
IG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgdW5yZW5kZXJlZCByZWdpb25zLgotICAgIG1fY29udGV4
dC0+Y2xlYXJDb2xvcigwLCAwLCAxLCAxKTsKKyAgICBpZiAobV96b29tQW5pbWF0b3JUcmFuc2Zv
cm0uaXNJZGVudGl0eSgpKQorICAgICAgICAvLyBDbGVhciB0byBibHVlIHRvIG1ha2UgaXQgZWFz
aWVyIHRvIHNwb3QgdW5yZW5kZXJlZCByZWdpb25zLgorICAgICAgICBtX2NvbnRleHQtPmNsZWFy
Q29sb3IoMCwgMCwgMSwgMSk7CisgICAgZWxzZQorICAgICAgICAvLyBDbGVhciB0byBncmV5LCBh
cyB6b29tIGFuaW1hdGlvbiBtYXkgbGVhdmUgdW5yZW5kZXJlZCByZWdpb25zLgorICAgICAgICAv
LyBGSVhNRSh3am1hY2xlYW4pOiBSZW5kZXIgc29tZSBpbnRlcmVzdGluZyB0ZXh0dXJlIGluIHVu
cmVuZGVyZWQgcmVnaW9ucy4KKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAuMjUsIDAu
MjUsIDAuMjUsIDEpOwogICAgIG1fY29udGV4dC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUs
IHRydWUpOwogICAgIG1fY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JV
RkZFUl9CSVQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGRiZWI4
NGViZTcwZjA0YzhiYzkxNDk2NDVmMDc5MTAxMzAxNjJkMGEuLjU5ODRjMTM5ZTNkZmZiNzE0ZDM4
NjJiYzI0MzUyOWQ1MjllZmI0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
CkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIC8vIHB1dHMgYmFja2J1ZmZlciBvbnNj
cmVlbgogICAgIHZvaWQgcHJlc2VudCgpOwogCi0gICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2Fs
ZShkb3VibGUgZmFjdG9yKSB7IG1fem9vbUFuaW1hdG9yU2NhbGUgPSBmYWN0b3I7IH0KKyAgICB2
b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dCkgeyBtX3pvb21BbmltYXRvclRyYW5zZm9ybSA9IHQ7IH0KIAogICAgIHVuc2lnbmVkIGNyZWF0
ZUxheWVyVGV4dHVyZSgpOwogICAgIHZvaWQgZGVsZXRlTGF5ZXJUZXh0dXJlKHVuc2lnbmVkKTsK
QEAgLTE5MSw3ICsxOTEsNyBAQCBwcml2YXRlOgogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2N1
cnJlbnRSZW5kZXJTdXJmYWNlOwogICAgIHVuc2lnbmVkIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJ
ZDsKLSAgICBkb3VibGUgbV96b29tQW5pbWF0b3JTY2FsZTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtX3pvb21BbmltYXRvclRyYW5zZm9ybTsKIAogICAgIC8vIFN0b3JlIHZhbHVlcyB0aGF0
IGFyZSBzaGFyZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgZWFjaCBsYXllciB0eXBlCiAgICAgLy8g
YXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvc2l0b3IuIFNpbmNlIHRo
ZXJlIGNhbiBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYTI1N2I0MTFh
YjlmNGM0ZDZhY2ViZmU3YTc1M2JmMTlkYWI4MzJjOC4uNjgzZGM3Y2U0MzRhMWNlNjE1OTNhNjQ0
Nzc2OGFhYjljZTQwNjU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC01
Myw3ICs1Myw2IEBAIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdENsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPExheWVyCiAgICAgLCBtX2ZyYW1lTnVtYmVy
KDApCiAgICAgLCBtX3Jvb3RMYXllcihyb290TGF5ZXIpCiAgICAgLCBtX3NldHRpbmdzKHNldHRp
bmdzKQotICAgICwgbV96b29tQW5pbWF0b3JTY2FsZSgxKQogICAgICwgbV92aXNpYmxlKHRydWUp
CiB7CiB9CkBAIC0xMjMsNyArMTIyLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRv
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIGNsZWFyUGVuZGluZ1VwZGF0ZSgp
OwogCiAgICAgaG9zdEltcGwtPnNldFZpc2libGUobV92aXNpYmxlKTsKLSAgICBob3N0SW1wbC0+
c2V0Wm9vbUFuaW1hdG9yU2NhbGUobV96b29tQW5pbWF0b3JTY2FsZSk7CisgICAgaG9zdEltcGwt
PnNldFpvb21BbmltYXRvclRyYW5zZm9ybShtX3pvb21BbmltYXRvclRyYW5zZm9ybSk7CiAgICAg
aG9zdEltcGwtPnNldFZpZXdwb3J0KHZpZXdwb3J0U2l6ZSgpKTsKIAogICAgIGhvc3RJbXBsLT5s
YXllclJlbmRlcmVyKCktPnNldENvbnRlbnRzVGV4dHVyZU1lbW9yeVVzZUJ5dGVzKG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwpAQCAtMTkxLDExICsx
OTAsMTEgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVIb3N0
OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY28KICAgICByZXR1cm4gbV9wcm94eS0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0
Wm9vbUFuaW1hdG9yU2NhbGUoZG91YmxlIHpvb20pCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0
Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB6b29tKQog
ewotICAgIGJvb2wgem9vbUNoYW5nZWQgPSBtX3pvb21BbmltYXRvclNjYWxlICE9IHpvb207Cisg
ICAgYm9vbCB6b29tQ2hhbmdlZCA9IG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtICE9IHpvb207CiAK
LSAgICBtX3pvb21BbmltYXRvclNjYWxlID0gem9vbTsKKyAgICBtX3pvb21BbmltYXRvclRyYW5z
Zm9ybSA9IHpvb207CiAKICAgICBpZiAoem9vbUNoYW5nZWQpCiAgICAgICAgIHNldE5lZWRzQ29t
bWl0QW5kUmVkcmF3KCk7CkBAIC0yODcsMTEgKzI4Niw5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bSogcm9vdFJlbmRlclN1cmZhY2UgPSByb290TGF5ZXItPnJlbmRlclN1cmZhY2Uo
KTsKICAgICByb290UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHpvb21NYXRyaXg7Ci0gICAgem9vbU1hdHJpeC5zY2FsZTNkKG1fem9v
bUFuaW1hdG9yU2NhbGUsIG1fem9vbUFuaW1hdG9yU2NhbGUsIDEpOwogICAgIHsKICAgICAgICAg
VFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIs
IHRoaXMsIDApOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgem9vbU1hdHJpeCwg
em9vbU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCks
IGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHJvb3RMYXllciwgcm9vdExheWVyLCBtX3pvb21BbmltYXRvclRyYW5zZm9ybSwgbV96b29tQW5p
bWF0b3JUcmFuc2Zvcm0sIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlz
dCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0K
IAogICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAppbmRleCBmZWUyOTU2MTJiOTIxMjc5MGQwYmVjMTA2ODdkMDViZDExNzhiZjE3
Li5iMTYyODVhOTg3OTdiYTVlMDE3OTA0ZDg4NTc5ODhiNTlmYmVlOGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NU
eXBlczNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KQEAgLTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgZnJhbWVOdW1i
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTnVtYmVyOyB9CiAKLSAgICB2b2lkIHNldFpvb21B
bmltYXRvclNjYWxlKGRvdWJsZSk7CisgICAgdm9pZCBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKIAogICAgIGNvbnN0IExheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKIApAQCAtMTgx
LDcgKzE4Miw3IEBAIHByaXZhdGU6CiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogCiAgICAg
SW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKLSAgICBkb3VibGUgbV96b29tQW5pbWF0b3JTY2FsZTsK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3pvb21BbmltYXRvclRyYW5zZm9ybTsKICAgICBi
b29sIG1fdmlzaWJsZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKaW5kZXggYjMwNDgzNjhkYWEyMDc2ZmE0OWRiYTE0YmI5YzkzNjk4YjY3NmUxZC4uYWUxYzVk
YjRmYzc0ZTVkZTliZmRiYmJhNmE0ZTExNGNkY2YyN2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE1MSw5ICsxNTEsOSBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKICAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT52aWV3cG9ydENoYW5nZWQoKTsKIH0KIAotdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpzZXRab29tQW5pbWF0b3JTY2FsZShkb3VibGUgem9vbSkKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB6b29tKQogewotICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Wm9vbUFuaW1h
dG9yU2NhbGUoem9vbSk7CisgICAgbV9sYXllclJlbmRlcmVyLT5zZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oem9vbSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApp
bmRleCBhMzdlOWYzM2JlOWU3NGZlZTZiNzk1NWM0MDdhOWJmM2UwNDRjZTU5Li4xOWNmY2UyMDYz
MGQwZmVmMTU5NTU0NDZjODFhMGQ0MTQ0ZTJkMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIENDQ29tcGxldGlvbkV2ZW50Owog
Y2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiBzdHJ1Y3Qg
TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKK2NsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4Owog
CiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUgYXMgd2Vs
bCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1w
bCB7CkBAIC03NSw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Vmlld3BvcnQoY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKTsKICAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZTsgfQotICAgIHZvaWQgc2V0Wm9vbUFu
aW1hdG9yU2NhbGUoZG91YmxlKTsKKyAgICB2b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCiAgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0
dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZjlhNzhhMjQyZjBhYzRlZjUwZjRiNzQ0MzNh
YTJlMTlkMGMyMWJjMi4uZGRlNGEyMzI0YzkyZDIzZDI4ZDg3ZGRkOWQ4NDRkNjRkN2I3YjcxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgZW5hYmxlZCwgRXhjZXB0CiAgICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldEZvcmNl
Q29tcG9zaXRpbmdNb2RlKGVuYWJsZWQpOwogfQogCi12b2lkIEludGVybmFsczo6c2V0Wm9vbUFu
aW1hdG9yU2NhbGUoRG9jdW1lbnQgKmRvY3VtZW50LCBkb3VibGUgc2NhbGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBJbnRlcm5hbHM6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybShEb2N1bWVu
dCAqZG9jdW1lbnQsIGRvdWJsZSBzY2FsZSwgZG91YmxlIHR4LCBkb3VibGUgdHksIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5zZXR0aW5ncygp
KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwpAQCAtMjUyLDYgKzI1Miw3IEBA
IHZvaWQgSW50ZXJuYWxzOjpzZXRab29tQW5pbWF0b3JTY2FsZShEb2N1bWVudCAqZG9jdW1lbnQs
IGRvdWJsZSBzY2FsZSwgRXhjZXB0aW9uCiAgICAgfQogCiAgICAgZG9jdW1lbnQtPnNldHRpbmdz
KCktPnNldFpvb21BbmltYXRvclNjYWxlKHNjYWxlKTsKKyAgICBkb2N1bWVudC0+c2V0dGluZ3Mo
KS0+c2V0Wm9vbUFuaW1hdG9yUG9zaXRpb24odHgsIHR5KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6
OnNldFBhc3N3b3JkRWNob0VuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYzJj
MjY0ZmY5MzZmNTIwMzA3MzA4NDdmZDUzNTkxNzBjOWEyMjA2Yi4uNjdhMTg5OTQ5YTU2MjdlMmYy
NzAyZjNhYThhZTBiN2U4YjJhODFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5n
ZUZvck5vZGUoTm9kZSosIHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHNl
dEZvcmNlQ29tcG9zaXRpbmdNb2RlKERvY3VtZW50KiwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCBzZXRab29tQW5pbWF0b3JTY2FsZShEb2N1bWVudCosIGRvdWJsZSBz
Y2FsZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3Jt
KERvY3VtZW50KiwgZG91YmxlIHNjYWxlLCBkb3VibGUgdHgsIGRvdWJsZSB0eSwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVkKERvY3VtZW50KiwgYm9v
bCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9EdXJh
dGlvbkluU2Vjb25kcyhEb2N1bWVudCosIGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcywgRXhjZXB0
aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGMyNjdlNDg2
YTAxNzBhNGFjYzQ4NDdmN2M1NmQwN2RhNDY3MTc4MTQuLmQ0NDAwYjljZDkyODQxMGM1NGU5ZGYw
NTM5NDJjOGMzMGY5ODczMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTUxLDcgKzUxLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFJhbmdlIG1hcmtlclJhbmdl
Rm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoaW4gRG9j
dW1lbnQgZG9jdW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
Ci0gICAgICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yU2NhbGUoaW4gRG9jdW1lbnQgZG9jdW1lbnQs
IGluIGRvdWJsZSBzY2FsZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0
Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBkb3VibGUgc2Nh
bGUsIGluIGRvdWJsZSB0eCwgaW4gZG91YmxlIHR5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
ICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJsZWQoaW4gRG9jdW1lbnQgZG9jdW1lbnQs
IGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQg
c2V0UGFzc3dvcmRFY2hvRHVyYXRpb25JblNlY29uZHMoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGlu
IGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDgyZDEwYzRhZjk4ZjQwMGViMGI5NmM3MTNiNDg5ZGY4NDAz
NjMwODMuLmRkMzU5MGJmMzYzMzNhMzY1YTQ5MDQ3ZjkyMGMxZTM0NTk4YTdjZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMjQgIFcuIEphbWVz
IE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
UmV2aXNlIHpvb20gYW5pbWF0b3IgYmFja2VuZCB0byB1c2UgZnVsbCB0cmFuc2Zvcm0gaW5zdGVh
ZCBvZiBqdXN0IHNjYWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZXRab29tTGV2ZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9v
dExheWVyTmVlZHNEaXNwbGF5KToKKwogMjAxMS0wOS0yMyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgRU5BQkxFX01VVEFUSU9OX09CU0VSVkVSUyBmZWF0
dXJlIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCA4OGIyMmVkMzhlNmYyOGI3MDMyZTdhNTViNTdhNTU4NzVhZGVhYTVlLi5jMTVmNjc1NTRiNWY2
OWYyNzNlNjVmMGFhN2E4YTRjNDhjYjAzODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xODM2LDcgKzE4MzYsNyBAQCBkb3VibGUgV2ViVmlld0lt
cGw6Onpvb21MZXZlbCgpCiBkb3VibGUgV2ViVmlld0ltcGw6OnNldFpvb21MZXZlbChib29sIHRl
eHRPbmx5LCBkb3VibGUgem9vbUxldmVsKQogewogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCi0g
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Wm9vbUFuaW1hdG9yU2NhbGUoMSk7CisgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpOwogCiAgICAgaWYgKHpvb21MZXZlbCA8IG1fbWluaW11bVpvb21MZXZlbCkKICAg
ICAgICAgbV96b29tTGV2ZWwgPSBtX21pbmltdW1ab29tTGV2ZWw7CkBAIC0yNTcwLDggKzI1NzAs
MTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ciogbGF5ZXIpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSgp
CiB7Ci0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRab29tQW5pbWF0b3JTY2FsZShtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21BbmltYXRvclNjYWxl
KCkpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggem9vbU1hdHJpeDsKKyAgICAgICAgem9vbU1hdHJpeC50cmFuc2xhdGUobV9wYWdlLT5z
ZXR0aW5ncygpLT56b29tQW5pbWF0b3JQb3NYKCksIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbUFu
aW1hdG9yUG9zWSgpKTsKKyAgICAgICAgem9vbU1hdHJpeC5zY2FsZShtX3BhZ2UtPnNldHRpbmdz
KCktPnpvb21BbmltYXRvclNjYWxlKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFpv
b21BbmltYXRvclRyYW5zZm9ybSh6b29tTWF0cml4KTsKKyAgICB9CiAjaWYgVVNFKFRIUkVBREVE
X0NPTVBPU0lUSU5HKQogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>