<?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>45476</bug_id>
          
          <creation_ts>2010-09-09 11:03:30 -0700</creation_ts>
          <short_desc>[Chromium] Minimize uploads in canvas 2d mixed mode rendering</short_desc>
          <delta_ts>2010-09-09 17:37:19 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Vincent Scheib">scheib</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>276589</commentid>
    <comment_count>0</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2010-09-09 11:03:30 -0700</bug_when>
    <thetext>[Chromium] Minimize uploads in canvas 2d mixed mode rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276612</commentid>
    <comment_count>1</comment_count>
      <attachid>67070</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2010-09-09 11:18:55 -0700</bug_when>
    <thetext>Created attachment 67070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276616</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 11:20:03 -0700</bug_when>
    <thetext>Attachment 67070 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/skia/PlatformContextSkia.cpp:342:  Use 0 instead of NULL.  [readability/null] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276653</commentid>
    <comment_count>3</comment_count>
      <attachid>67070</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-09 12:12:40 -0700</bug_when>
    <thetext>Comment on attachment 67070
Patch

review- for the build break.  Overall looks awesome.


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

&gt; WebCore/html/canvas/CanvasRenderingContext2D.cpp:1534
&gt;  #if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(ACCELERATED_COMPOSITING)
&gt; +    if (isAccelerated())
&gt; +        drawingContext()-&gt;addDirtyRect(enclosingIntRect(dirtyRect));
The addDirtyRect() call should only be guarded by ENABLE(ACCELERATED_2D_CANVAS).  We still have to make this call even if accelerated compositing is not enabled in order to render correctly.

&gt; WebCore/html/canvas/CanvasRenderingContext2D.h:272
&gt; +        CanvasDidDrawApplyNone = 0
nit: this would be better at the beginning of the enum definition

&gt; WebCore/platform/graphics/GraphicsContext.h:427
&gt; +        void addDirtyRect(const IntRect&amp; rect);
You have to add a stub implementation of this to GraphicsContext.cpp for !PLATFORM(SKIA) or this won&apos;t compile on other platforms.  See how setSharedGraphicsContext3D and syncSoftwareCanvas() are handled.

Don&apos;t name the parameter here.

Also, this name is less than ideal.  It appears to have a much broader application than it really does.

&gt; WebCore/platform/graphics/gpu/Texture.cpp:147
&gt; +
&gt; +
remove the extra new lines here

&gt; WebCore/platform/graphics/skia/PlatformContextSkia.cpp:818
&gt; +    switch (m_backingStoreState) {
&gt; +    case Software:
&gt; +    case Mixed:
&gt; +        m_softwareDirtyRect.unite(rect);
&gt; +        return;
&gt; +    case Hardware:
&gt; +        return;
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
This is probably clearer as an if() instead of a switch.  The other cases are not likely to get interesting.

&gt; WebCore/platform/graphics/skia/PlatformContextSkia.h:197
&gt; +    void addDirtyRect(const IntRect&amp; rect);
don&apos;t name the parameter here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276726</commentid>
    <comment_count>4</comment_count>
      <attachid>67091</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2010-09-09 13:53:10 -0700</bug_when>
    <thetext>Created attachment 67091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276728</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 13:54:47 -0700</bug_when>
    <thetext>Attachment 67091 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/skia/PlatformContextSkia.cpp:342:  Use 0 instead of NULL.  [readability/null] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276749</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-09-09 14:10:14 -0700</bug_when>
    <thetext>Attachment 67091 did not build on qt:
Build output: http://queues.webkit.org/results/3926335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276789</commentid>
    <comment_count>7</comment_count>
      <attachid>67099</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2010-09-09 15:23:06 -0700</bug_when>
    <thetext>Created attachment 67099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276796</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 15:28:26 -0700</bug_when>
    <thetext>Attachment 67099 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/skia/PlatformContextSkia.cpp:342:  Use 0 instead of NULL.  [readability/null] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276824</commentid>
    <comment_count>9</comment_count>
      <attachid>67099</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-09 16:12:10 -0700</bug_when>
    <thetext>Comment on attachment 67099
Patch

R=me.  Clearing commit-queue flag, I&apos;ll land by hand

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

&gt; WebCore/ChangeLog:11
&gt; +        - addDirtyRect() plumbed through GraphicsContext to PlatformContextSkia.
this is out of date. I&apos;ll fix while landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276826</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-09 16:15:44 -0700</bug_when>
    <thetext>Committed r67123: &lt;http://trac.webkit.org/changeset/67123&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276856</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 17:03:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67123 might have broken Qt Windows 32-bit Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/67123
http://trac.webkit.org/changeset/67124
http://trac.webkit.org/changeset/67125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276871</commentid>
    <comment_count>12</comment_count>
      <attachid>67099</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-09 17:37:19 -0700</bug_when>
    <thetext>Comment on attachment 67099
Patch

Patch has landed, clearing flags.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67070</attachid>
            <date>2010-09-09 11:18:55 -0700</date>
            <delta_ts>2010-09-09 13:53:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45476-20100909111854.patch</filename>
            <type>text/plain</type>
            <size>18123</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDc5MWFkMDQ0ZTRmOGJkODYxZjFm
ODY0MDg4OGFjZmU4NTE3NTNiYTguLjY5MTkzZjliZGVjNzdlM2MxZTc3NzM0OTIyYjFiNzRmNWMz
NDU4OTQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cApAQCAtMTUxMCwxMiArMTUxMCwxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmIHIsIHVuc2lnbmVkIG9wdGlvbnMpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSByOwotICAgIGlmIChvcHRpb25zICYg
Q2FudmFzV2lsbERyYXdBcHBseVRyYW5zZm9ybSkgeworICAgIGlmIChvcHRpb25zICYgQ2FudmFz
RGlkRHJhd0FwcGx5VHJhbnNmb3JtKSB7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBz
dGF0ZSgpLm1fdHJhbnNmb3JtOwogICAgICAgICBkaXJ0eVJlY3QgPSBjdG0ubWFwUmVjdChyKTsK
ICAgICB9CiAKLSAgICBpZiAob3B0aW9ucyAmIENhbnZhc1dpbGxEcmF3QXBwbHlTaGFkb3cgJiYg
YWxwaGFDaGFubmVsKHN0YXRlKCkubV9zaGFkb3dDb2xvcikpIHsKKyAgICBpZiAob3B0aW9ucyAm
IENhbnZhc0RpZERyYXdBcHBseVNoYWRvdyAmJiBhbHBoYUNoYW5uZWwoc3RhdGUoKS5tX3NoYWRv
d0NvbG9yKSkgewogICAgICAgICAvLyBUaGUgc2hhZG93IGdldHMgYXBwbGllZCBhZnRlciB0cmFu
c2Zvcm1hdGlvbgogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChkaXJ0eVJlY3QpOwogICAg
ICAgICBzaGFkb3dSZWN0Lm1vdmUoc3RhdGUoKS5tX3NoYWRvd09mZnNldCk7CkBAIC0xNTIzLDEz
ICsxNTIzLDE2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkaWREcmF3KGNvbnN0
IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykKICAgICAgICAgZGlydHlSZWN0LnVuaXRl
KHNoYWRvd1JlY3QpOwogICAgIH0KIAotICAgIGlmIChvcHRpb25zICYgQ2FudmFzV2lsbERyYXdB
cHBseUNsaXApIHsKKyAgICBpZiAob3B0aW9ucyAmIENhbnZhc0RpZERyYXdBcHBseUNsaXApIHsK
ICAgICAgICAgLy8gRklYTUU6IGFwcGx5IHRoZSBjdXJyZW50IGNsaXAgdG8gdGhlIHJlY3Rhbmds
ZS4gVW5mb3J0dW5hdGVseSB3ZSBjYW4ndCBnZXQgdGhlIGNsaXAKICAgICAgICAgLy8gYmFjayBv
dXQgb2YgdGhlIEdyYXBoaWNzQ29udGV4dCwgc28gdG8gdGFrZSBjbGlwIGludG8gYWNjb3VudCBm
b3IgaW5jcmVtZW50YWwgcGFpbnRpbmcsCiAgICAgICAgIC8vIHdlJ2QgaGF2ZSB0byBrZWVwIHRo
ZSBjbGlwIHBhdGggYXJvdW5kLgogICAgIH0KIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAoaXNBY2NlbGVy
YXRlZCgpKQorICAgICAgICBkcmF3aW5nQ29udGV4dCgpLT5hZGREaXJ0eVJlY3QoZW5jbG9zaW5n
SW50UmVjdChkaXJ0eVJlY3QpKTsKKwogICAgIC8vIElmIHdlIGFyZSBkcmF3aW5nIHRvIGhhcmR3
YXJlIGFuZCB3ZSBoYXZlIGEgY29tcG9zaXRlZCBsYXllciwganVzdCBjYWxsIHJlbmRlcmVyQ29u
dGVudENoYW5nZWQoKS4KICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9IGNhbnZhcygpLT5yZW5k
ZXJCb3goKTsKICAgICBpZiAoaXNBY2NlbGVyYXRlZCgpICYmIHJlbmRlckJveCAmJiByZW5kZXJC
b3gtPmhhc0xheWVyKCkgJiYgcmVuZGVyQm94LT5sYXllcigpLT5oYXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nKCkpCkBAIC0xNjU4LDcgKzE2NjEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSogZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5LAog
ICAgIEludFBvaW50IGRlc3RQb2ludChkZXN0T2Zmc2V0LndpZHRoKCksIGRlc3RPZmZzZXQuaGVp
Z2h0KCkpOwogCiAgICAgYnVmZmVyLT5wdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoZGF0YSwgc291
cmNlUmVjdCwgZGVzdFBvaW50KTsKLSAgICBkaWREcmF3KHNvdXJjZVJlY3QsIDApOyAvLyBpZ25v
cmUgdHJhbnNmb3JtLCBzaGFkb3cgYW5kIGNsaXAKKyAgICBkaWREcmF3KHNvdXJjZVJlY3QsIENh
bnZhc0RpZERyYXdBcHBseU5vbmUpOyAvLyBpZ25vcmUgdHJhbnNmb3JtLCBzaGFkb3cgYW5kIGNs
aXAKIH0KIAogU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9udCgpIGNvbnN0CkBA
IC0xODc4LDExICsxODgxLDExIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgYy0+ZHJh
d0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIGxvY2F0aW9uKTsKIAogICAgIGlmIChmaWxsKQotICAg
ICAgICBjYW52YXMoKS0+ZGlkRHJhdyh0ZXh0UmVjdCk7CisgICAgICAgIGRpZERyYXcodGV4dFJl
Y3QpOwogICAgIGVsc2UgewogICAgICAgICAvLyBXaGVuIHN0cm9raW5nIHRleHQsIHBvaW50eSBt
aXRlcnMgY2FuIGV4dGVuZCBvdXRzaWRlIG9mIHRleHRSZWN0LCBzbyB3ZQogICAgICAgICAvLyBw
dW50IGFuZCBkaXJ0eSB0aGUgd2hvbGUgY2FudmFzLgotICAgICAgICBjYW52YXMoKS0+ZGlkRHJh
dyhGbG9hdFJlY3QoMCwgMCwgY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSkp
OworICAgICAgICBkaWREcmF3KEZsb2F0UmVjdCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2Fu
dmFzKCktPmhlaWdodCgpKSk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oUVQpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBkOWQ4NTk3M2Rm
N2E3MWNkOGZmNmUxNzZmN2NlODhlYjBjODcwZjk2Li5mZWFmZmE3NDFlZDcwNGFhYmE4YTkzY2Q2
NjJiMWNhYjg1ZGRmNmFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmgKQEAgLTI2NCwxNCArMjY0LDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGFwcGx5U2hhZG93KCk7CiAKLSAgICBlbnVtIENhbnZhc1dpbGxEcmF3T3B0aW9uIHsKLSAgICAg
ICAgQ2FudmFzV2lsbERyYXdBcHBseVRyYW5zZm9ybSA9IDEsCi0gICAgICAgIENhbnZhc1dpbGxE
cmF3QXBwbHlTaGFkb3cgPSAxIDw8IDEsCi0gICAgICAgIENhbnZhc1dpbGxEcmF3QXBwbHlDbGlw
ID0gMSA8PCAyLAotICAgICAgICBDYW52YXNXaWxsRHJhd0FwcGx5QWxsID0gMHhmZmZmZmZmZgor
ICAgIGVudW0gQ2FudmFzRGlkRHJhd09wdGlvbiB7CisgICAgICAgIENhbnZhc0RpZERyYXdBcHBs
eVRyYW5zZm9ybSA9IDEsCisgICAgICAgIENhbnZhc0RpZERyYXdBcHBseVNoYWRvdyA9IDEgPDwg
MSwKKyAgICAgICAgQ2FudmFzRGlkRHJhd0FwcGx5Q2xpcCA9IDEgPDwgMiwKKyAgICAgICAgQ2Fu
dmFzRGlkRHJhd0FwcGx5QWxsID0gMHhmZmZmZmZmZiwKKyAgICAgICAgQ2FudmFzRGlkRHJhd0Fw
cGx5Tm9uZSA9IDAKICAgICB9OwogCi0gICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYs
IHVuc2lnbmVkIG9wdGlvbnMgPSBDYW52YXNXaWxsRHJhd0FwcGx5QWxsKTsKKyAgICB2b2lkIGRp
ZERyYXcoY29uc3QgRmxvYXRSZWN0JiwgdW5zaWduZWQgb3B0aW9ucyA9IENhbnZhc0RpZERyYXdB
cHBseUFsbCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGMz
YjIwYTk4YjdkNGE5N2E4MmNhNTgxODkzZjJiNDcyNDJlZDk4ODMuLjY3MjY3NzlkOWNmYTY3NjEz
MzdmMzIyZTc3N2Y4NWNhYjk2ZmMwNjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaApAQCAtNDI0LDYgKzQyNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIHNldFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFNoYXJlZEdyYXBoaWNz
Q29udGV4dDNEKiwgRHJhd2luZ0J1ZmZlciosIGNvbnN0IEludFNpemUmKTsKICAgICAgICAgdm9p
ZCBzeW5jU29mdHdhcmVDYW52YXMoKTsKKyAgICAgICAgdm9pZCBhZGREaXJ0eVJlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHNhdmVQbGF0Zm9y
bVN0YXRlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4
IDM2ZTRhZDVlZmMyNjgyZGI1YTA5ODI5MjAyM2MyZDNiNWZhOTZkNzguLjBiMGIwN2ZlNGExZWVm
OTlhNDYyOTc4ZTA5ODk1OGEwZjZkZjRiYzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1RleHR1cmUuY3BwCkBAIC0zMiwxMSArMzIsMTUgQEAKIAogI2luY2x1ZGUgIlRleHR1cmUu
aCIKIAorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIApAQCAtODIsNyArODYsNiBAQCBQYXNzUmVmUHRyPFRleHR1cmU+IFRl
eHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwg
aQogewogICAgIGludCBtYXhUZXh0dXJlU2l6ZSA9IDA7CiAgICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtYXhUZXh0dXJlU2l6ZSk7
Ci0KICAgICBUaWxpbmdEYXRhIHRpbGluZyhtYXhUZXh0dXJlU2l6ZSwgd2lkdGgsIGhlaWdodCwg
dHJ1ZSk7CiAgICAgaW50IG51bVRpbGVzID0gdGlsaW5nLm51bVRpbGVzKCk7CiAKQEAgLTEzNyw2
ICsxNDAsMTMgQEAgc3RhdGljIHVpbnQzMl90KiBjb3B5U3ViUmVjdCh1aW50MzJfdCogc3JjLCBp
bnQgc3JjWCwgaW50IHNyY1ksIHVpbnQzMl90KiBkc3QsIGkKIAogdm9pZCBUZXh0dXJlOjpsb2Fk
KHZvaWQqIHBpeGVscykKIHsKKyAgICB1cGRhdGVTdWJSZWN0KHBpeGVscywgSW50UmVjdCgwLCAw
LCBtX3RpbGVzLnRvdGFsU2l6ZVgoKSwgbV90aWxlcy50b3RhbFNpemVZKCkpKTsKK30KKworCisK
K3ZvaWQgVGV4dHVyZTo6dXBkYXRlU3ViUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFJlY3Qg
dXBkYXRlUmVjdCkKK3sKICAgICB1aW50MzJfdCogcGl4ZWxzMzIgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdCo+KHBpeGVscyk7CiAgICAgdW5zaWduZWQgaW50IGdsRm9ybWF0ID0gMDsKICAgICB1bnNp
Z25lZCBpbnQgZ2xUeXBlID0gMDsKQEAgLTE0NiwyNiArMTU2LDQyIEBAIHZvaWQgVGV4dHVyZTo6
bG9hZCh2b2lkKiBwaXhlbHMpCiAgICAgICAgIEFTU0VSVChnbEZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSAmJiBnbFR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUpOwogICAgICAgICAvLyBGSVhNRTogIFRoaXMgY291bGQgdXNlIFBCTydzIHRvIHNhdmUgZG9p
bmcgYW4gZXh0cmEgY29weSBoZXJlLgogICAgIH0KLSAgICBPd25BcnJheVB0cjx1aW50MzJfdD4g
dGVtcEJ1ZmYobmV3IHVpbnQzMl90W21fdGlsZXMubWF4VGV4dHVyZVNpemUoKSAqIG1fdGlsZXMu
bWF4VGV4dHVyZVNpemUoKV0pOworICAgIGludCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3Jhcnkg
YnVmZmVyIHNpemUgaXMgdGhlIHNtYWxsZXIgb2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhl
IHVwZGF0ZVJlY3QKKyAgICAgICAgbWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKSwgbV90aWxl
cy5ib3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3Qud2lkdGgoKSkgKgorICAgICAgICBtaW4obV90
aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLCBtX3RpbGVzLmJvcmRlclRleGVscygpICsgdXBkYXRlUmVj
dC5oZWlnaHQoKSk7CisgICAgT3duQXJyYXlQdHI8dWludDMyX3Q+IHRlbXBCdWZmKG5ldyB1aW50
MzJfdFt0ZW1wQnVmZlNpemVdKTsKKworICAgIGZvciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90
aWxlcy5udW1UaWxlcygpOyB0aWxlKyspIHsKKyAgICAgICAgLy8gSW50ZXJzZWN0IHdpdGggdGls
ZQorICAgICAgICBJbnRSZWN0IHRpbGVCb3VuZHNXaXRoQm9yZGVyID0gbV90aWxlcy50aWxlQm91
bmRzV2l0aEJvcmRlcih0aWxlKTsKKworICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3RJbnRlcnNl
Y3RlZCA9IHVwZGF0ZVJlY3Q7CisgICAgICAgIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5pbnRlcnNl
Y3QodGlsZUJvdW5kc1dpdGhCb3JkZXIpOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3Rp
bGVzLm51bVRpbGVzKCk7IGkrKykgewotICAgICAgICBJbnRSZWN0IHRpbGVCb3VuZHNXaXRoQm9y
ZGVyID0gbV90aWxlcy50aWxlQm91bmRzV2l0aEJvcmRlcihpKTsKKyAgICAgICAgSW50UmVjdCBk
c3RSZWN0ID0gdXBkYXRlUmVjdEludGVyc2VjdGVkOworICAgICAgICBkc3RSZWN0Lm1vdmUoLXRp
bGVCb3VuZHNXaXRoQm9yZGVyLngoKSwgLXRpbGVCb3VuZHNXaXRoQm9yZGVyLnkoKSk7CiAKKyAg
ICAgICAgaWYgKHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5pc0VtcHR5KCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAvLyBDb3B5IHN1YiByZWN0YW5nbGUgb3V0IG9mIGxhcmdlciBw
aXhlbCBkYXRhCiAgICAgICAgIHVpbnQzMl90KiB1cGxvYWRCdWZmID0gMDsKICAgICAgICAgaWYg
KHN3aXp6bGUpIHsKICAgICAgICAgICAgIHVwbG9hZEJ1ZmYgPSBjb3B5U3ViUmVjdDx0cnVlPigK
LSAgICAgICAgICAgIHBpeGVsczMyLCB0aWxlQm91bmRzV2l0aEJvcmRlci54KCksIHRpbGVCb3Vu
ZHNXaXRoQm9yZGVyLnkoKSwKLSAgICAgICAgICAgIHRlbXBCdWZmLmdldCgpLCB0aWxlQm91bmRz
V2l0aEJvcmRlci53aWR0aCgpLCB0aWxlQm91bmRzV2l0aEJvcmRlci5oZWlnaHQoKSwgbV90aWxl
cy50b3RhbFNpemVYKCkpOworICAgICAgICAgICAgcGl4ZWxzMzIsIHVwZGF0ZVJlY3RJbnRlcnNl
Y3RlZC54KCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC55KCksCisgICAgICAgICAgICB0ZW1wQnVm
Zi5nZXQoKSwgdXBkYXRlUmVjdEludGVyc2VjdGVkLndpZHRoKCksIHVwZGF0ZVJlY3RJbnRlcnNl
Y3RlZC5oZWlnaHQoKSwgbV90aWxlcy50b3RhbFNpemVYKCkpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgdXBsb2FkQnVmZiA9IGNvcHlTdWJSZWN0PGZhbHNlPigKLSAgICAgICAgICAg
IHBpeGVsczMyLCB0aWxlQm91bmRzV2l0aEJvcmRlci54KCksIHRpbGVCb3VuZHNXaXRoQm9yZGVy
LnkoKSwKLSAgICAgICAgICAgIHRlbXBCdWZmLmdldCgpLCB0aWxlQm91bmRzV2l0aEJvcmRlci53
aWR0aCgpLCB0aWxlQm91bmRzV2l0aEJvcmRlci5oZWlnaHQoKSwgbV90aWxlcy50b3RhbFNpemVY
KCkpOworICAgICAgICAgICAgcGl4ZWxzMzIsIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC54KCksIHVw
ZGF0ZVJlY3RJbnRlcnNlY3RlZC55KCksCisgICAgICAgICAgICB0ZW1wQnVmZi5nZXQoKSwgdXBk
YXRlUmVjdEludGVyc2VjdGVkLndpZHRoKCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5oZWlnaHQo
KSwgbV90aWxlcy50b3RhbFNpemVYKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9jb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90aWxlVGV4dHVy
ZUlkcy0+YXQoaSkpOwotICAgICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAsCi0gICAgICAgICAgICB0aWxlQm91bmRzV2l0
aEJvcmRlci53aWR0aCgpLAotICAgICAgICAgICAgdGlsZUJvdW5kc1dpdGhCb3JkZXIuaGVpZ2h0
KCksIGdsRm9ybWF0LCBnbFR5cGUsIHVwbG9hZEJ1ZmYpOworICAgICAgICBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RpbGVUZXh0dXJlSWRz
LT5hdCh0aWxlKSk7CisgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCAvKiBsZXZlbCAqLywKKyAgICAgICAgICAgIGRzdFJlY3Qu
eCgpLCAKKyAgICAgICAgICAgIGRzdFJlY3QueSgpLAorICAgICAgICAgICAgdXBkYXRlUmVjdElu
dGVyc2VjdGVkLndpZHRoKCksCisgICAgICAgICAgICB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQuaGVp
Z2h0KCksIGdsRm9ybWF0LCBnbFR5cGUsIHVwbG9hZEJ1ZmYpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCmluZGV4IDdlNGE3MmI2MzU3YjllZGU3YzVj
MTA4N2U5MTRjZmZkNWRiOTBhOWQuLmVkYTQ3NWVlMjY2ZTkzZTA3NTJjYmJhYTIwMzMyOTFiYjA3
OTk0ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKQEAgLTQxLDYg
KzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwog
CitjbGFzcyBJbnRSZWN0OworCiBjbGFzcyBUZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4
dHVyZT4gewogcHVibGljOgogICAgIH5UZXh0dXJlKCk7CkBAIC00OCw2ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0QqLCBGb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgdm9pZCBiaW5kVGlsZShp
bnQgdGlsZSk7CiAgICAgdm9pZCBsb2FkKHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCB1cGRhdGVT
dWJSZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCk7CiAgICAgRm9ybWF0IGZvcm1hdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgY29uc3QgVGlsaW5nRGF0YSYgdGlsZXMo
KSBjb25zdCB7IHJldHVybiBtX3RpbGVzOyB9CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCmluZGV4IGYxMmU2NmVkNzg2ZWZlYzA3MWFkYjc4N2Iw
ZDQyN2I0ZDE0NjhmMmEuLjFiZGM1MWE5N2VmY2VmZGE1MGU4Nzg0OWU1ODg2MDAzNjg3ZWQxZWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgcHVibGljOgogICAgIGludCBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4VGV4dHVyZVNpemU7IH0KICAgICBpbnQgdG90YWxTaXplWCgpIGNvbnN0IHsgcmV0dXJu
IG1fdG90YWxTaXplWDsgfQogICAgIGludCB0b3RhbFNpemVZKCkgY29uc3QgeyByZXR1cm4gbV90
b3RhbFNpemVZOyB9CisgICAgaW50IGJvcmRlclRleGVscygpIGNvbnN0IHsgcmV0dXJuIG1fYm9y
ZGVyVGV4ZWxzOyB9CiAKICAgICBpbnQgbnVtVGlsZXMoKSBjb25zdCB7IHJldHVybiBudW1UaWxl
c1goKSAqIG51bVRpbGVzWSgpOyB9CiAgICAgaW50IG51bVRpbGVzWCgpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtVGlsZXNYOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKaW5kZXggNGViODBhYWZkZjVlOTEwYTg0NzZkNzMy
NmM4OWRmZWQ5MzQ0NWMzMC4uYmUxMWUzNWUxN2M3Y2EzYjVlYmVjNjA4YTljNmFlNmMzMGQwMTcw
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dFNraWEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGlj
c0NvbnRleHRTa2lhLmNwcApAQCAtMSwxMCArMSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoYykg
MjAwNiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
ICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgewogaW5saW5lIGludCBmYXN0TW9kKGludCB2
YWx1ZSwgaW50IG1heCkKIHsKICAgICBpbnQgc2lnbiA9IFNrRXh0cmFjdFNpZ24odmFsdWUpOwot
ICAgIAorCiAgICAgdmFsdWUgPSBTa0FwcGx5U2lnbih2YWx1ZSwgc2lnbik7CiAgICAgaWYgKHZh
bHVlID49IG1heCkKICAgICAgICAgdmFsdWUgJT0gbWF4OwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBj
b25zdCBGbG9hdFBvaW50KiBwb2luCiAKICAgICBpZiAobnVtUG9pbnRzIDw9IDEpCiAgICAgICAg
IHJldHVybjsKLSAgICAKKwogICAgIC8vIEZJWE1FOiBJTVBMRU1FTlQhIQogfQogCkBAIC0xMjUw
LDQgKzEyNTAsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleAogICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5zZXRTaGFyZWRHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LCBmcmFtZWJ1ZmZlciwgc2l6
ZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGREaXJ0eVJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkKK3sKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+YWRkRGlydHlSZWN0KHJlY3QpOwor
fQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAppbmRleCBiYjg5YWM1NTZiOWZjZGVhOGUx
MTE1MWZkNmJlMTZmMzMwYzc1YjkxLi45Yzk2NjczYTY1NmQwNWQyZDkyYzcwOWE1NjcyZTg3MzU4
OTNmZTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VC
dWZmZXJTa2lhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VC
dWZmZXJTa2lhLmNwcApAQCAtMTE3LDYgKzExNyw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
CiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3RGbGlwcGVkKGRlc3RSZWN0KTsKICAgICAg
ICAgICAgIGRlc3RSZWN0RmxpcHBlZC5zZXRZKGRlc3RSZWN0LnkoKSArIGRlc3RSZWN0LmhlaWdo
dCgpKTsKICAgICAgICAgICAgIGRlc3RSZWN0RmxpcHBlZC5zZXRIZWlnaHQoLWRlc3RSZWN0Lmhl
aWdodCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJl
Rm9ySGFyZHdhcmVEcmF3KCk7CiAgICAgICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Z3B1Q2FudmFzKCktPmRyYXdUZXh0dXJlZFJlY3Qoc291cmNlVGV4dHVyZSwgbV9zaXplLCBz
cmNSZWN0LCBkZXN0UmVjdEZsaXBwZWQsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKaW5kZXggN2M1ODUxODIyY2YzMWIyYTZi
YzJlZjcwOGVlMTMwODJlNmRkYmNlMC4uYmFhOTBlMTdkNDM3NmUwNjc0N2E1Mjk4NTNmZWM3MWI0
MDY5NjNkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmNwcApAQCAtMSwxMCArMSwxMCBAQAogLyoKICAqIENvcHlyaWdo
dCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgpAQCAtMTg3LDcgKzE4Nyw3IEBAIFBsYXRmb3JtQ29udGV4dFNraWE6OlN0YXRlIFBs
YXRmb3JtQ29udGV4dFNraWE6OlN0YXRlOjpjbG9uZUluaGVyaXRlZFByb3BlcnRpZXMoCiAgICAg
UGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGUgc3RhdGUoKnRoaXMpOwogCiAgICAgLy8gRXZlcnl0
aGluZyBpcyBpbmhlcml0ZWQgZXhjZXB0IGZvciB0aGUgY2xpcCBwYXRocy4KLSAgICBzdGF0ZS5t
X2FudGlBbGlhc0NsaXBQYXRocy5jbGVhcigpOyAgCisgICAgc3RhdGUubV9hbnRpQWxpYXNDbGlw
UGF0aHMuY2xlYXIoKTsKIAogICAgIHJldHVybiBzdGF0ZTsKIH0KQEAgLTMzOSw3ICszMzksNyBA
QCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdSZWN0KFNrUmVjdCByZWN0KQogICAgICAg
ICAvLyBXZSBkbyBhIGZpbGwgb2YgZm91ciByZWN0cyB0byBzaW11bGF0ZSB0aGUgc3Ryb2tlIG9m
IGEgYm9yZGVyLgogICAgICAgICBTa0NvbG9yIG9sZEZpbGxDb2xvciA9IG1fc3RhdGUtPm1fZmls
bENvbG9yOwogCi0gICAgICAgIC8vIHNldEZpbGxDb2xvcigpIHdpbGwgc2V0IHRoZSBzaGFkZXIg
dG8gTlVMTCwgc28gc2F2ZSBhIHJlZiB0byBpdCBub3cuIAorICAgICAgICAvLyBzZXRGaWxsQ29s
b3IoKSB3aWxsIHNldCB0aGUgc2hhZGVyIHRvIE5VTEwsIHNvIHNhdmUgYSByZWYgdG8gaXQgbm93
LgogICAgICAgICBTa1NoYWRlciogb2xkRmlsbFNoYWRlciA9IG1fc3RhdGUtPm1fZmlsbFNoYWRl
cjsKICAgICAgICAgb2xkRmlsbFNoYWRlci0+c2FmZVJlZigpOwogICAgICAgICBzZXRGaWxsQ29s
b3IobV9zdGF0ZS0+bV9zdHJva2VDb2xvcik7CkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBQbGF0
Zm9ybUNvbnRleHRTa2lhOjpzZXRYZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6TW9kZSBwZG0pCiB2
b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldEZpbGxDb2xvcihTa0NvbG9yIGNvbG9yKQogewog
ICAgIG1fc3RhdGUtPm1fZmlsbENvbG9yID0gY29sb3I7Ci0gICAgc2V0RmlsbFNoYWRlcihOVUxM
KTsKKyAgICBzZXRGaWxsU2hhZGVyKDApOwogfQogCiBTa0RyYXdMb29wZXIqIFBsYXRmb3JtQ29u
dGV4dFNraWE6OmdldERyYXdMb29wZXIoKSBjb25zdApAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQg
UGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5
bGUpCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldFN0cm9rZUNvbG9yKFNrQ29sb3Igc3Ry
b2tlQ29sb3IpCiB7CiAgICAgbV9zdGF0ZS0+bV9zdHJva2VDb2xvciA9IHN0cm9rZUNvbG9yOwot
ICAgIHNldFN0cm9rZVNoYWRlcihOVUxMKTsKKyAgICBzZXRTdHJva2VTaGFkZXIoMCk7CiB9CiAK
IGZsb2F0IFBsYXRmb3JtQ29udGV4dFNraWE6OmdldFN0cm9rZVRoaWNrbmVzcygpIGNvbnN0CkBA
IC04MDIsNiArODAyLDIzIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c3luY1NvZnR3YXJl
Q2FudmFzKCkgY29uc3QKICAgICBtX2JhY2tpbmdTdG9yZVN0YXRlID0gU29mdHdhcmU7CiB9CiAK
K3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6YWRkRGlydHlSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QpCit7CisgICAgaWYgKCFtX3VzZUdQVSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNo
IChtX2JhY2tpbmdTdG9yZVN0YXRlKSB7CisgICAgY2FzZSBTb2Z0d2FyZToKKyAgICBjYXNlIE1p
eGVkOgorICAgICAgICBtX3NvZnR3YXJlRGlydHlSZWN0LnVuaXRlKHJlY3QpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBIYXJkd2FyZToKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwogdm9pZCBQbGF0Zm9y
bUNvbnRleHRTa2lhOjp1cGxvYWRTb2Z0d2FyZVRvSGFyZHdhcmUoQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApIGNvbnN0CiB7CiAgICAgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCA9IG1fY2FudmFzLT5nZXRE
ZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKQEAgLTgwOSwxMCArODI2LDExIEBAIHZvaWQg
UGxhdGZvcm1Db250ZXh0U2tpYTo6dXBsb2FkU29mdHdhcmVUb0hhcmR3YXJlKENvbXBvc2l0ZU9w
ZXJhdG9yIG9wKSBjb25zdAogICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0g
bV9ncHVDYW52YXMtPmNvbnRleHQoKTsKICAgICBpZiAoIW1fdXBsb2FkVGV4dHVyZSB8fCBtX3Vw
bG9hZFRleHR1cmUtPnRpbGVzKCkudG90YWxTaXplWCgpIDwgYml0bWFwLndpZHRoKCkgfHwgbV91
cGxvYWRUZXh0dXJlLT50aWxlcygpLnRvdGFsU2l6ZVkoKSA8IGJpdG1hcC5oZWlnaHQoKSkKICAg
ICAgICAgbV91cGxvYWRUZXh0dXJlID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZShUZXh0dXJlOjpC
R1JBOCwgYml0bWFwLndpZHRoKCksIGJpdG1hcC5oZWlnaHQoKSk7Ci0gICAgbV91cGxvYWRUZXh0
dXJlLT5sb2FkKGJpdG1hcC5nZXRQaXhlbHMoKSk7Ci0gICAgSW50UmVjdCByZWN0KDAsIDAsIGJp
dG1hcC53aWR0aCgpLCBiaXRtYXAuaGVpZ2h0KCkpOworCisgICAgbV91cGxvYWRUZXh0dXJlLT51
cGRhdGVTdWJSZWN0KGJpdG1hcC5nZXRQaXhlbHMoKSwgbV9zb2Z0d2FyZURpcnR5UmVjdCk7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIGlkZW50aXR5OwotICAgIGdwdUNhbnZhcygpLT5kcmF3VGV4dHVy
ZWRSZWN0KG1fdXBsb2FkVGV4dHVyZS5nZXQoKSwgcmVjdCwgcmVjdCwgaWRlbnRpdHksIDEuMCwg
RGV2aWNlQ29sb3JTcGFjZSwgb3ApOworICAgIGdwdUNhbnZhcygpLT5kcmF3VGV4dHVyZWRSZWN0
KG1fdXBsb2FkVGV4dHVyZS5nZXQoKSwgbV9zb2Z0d2FyZURpcnR5UmVjdCwgbV9zb2Z0d2FyZURp
cnR5UmVjdCwgaWRlbnRpdHksIDEuMCwgRGV2aWNlQ29sb3JTcGFjZSwgb3ApOworICAgIG1fc29m
dHdhcmVEaXJ0eVJlY3Quc2V0V2lkdGgoMCk7IC8vIENsZWFyIGRpcnR5IHJlY3QuCiB9CiAKIHZv
aWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6cmVhZGJhY2tIYXJkd2FyZVRvU29mdHdhcmUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29u
dGV4dFNraWEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmgKaW5kZXggY2I5YWE3MWEzMmIyMDZkYjA3NmJlY2I2YWExYzM4YWVmYzdjOTRhOC4u
YTgzYjE4NjQyMTA0NzQxZGFjZjhkYTUzN2Y5MzJmNmMzNGE1MjkyYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCkBAIC0x
OTQsNiArMTk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZUZvckhhcmR3YXJlRHJhdygp
IGNvbnN0OwogICAgIC8vIENhbGwgdG8gZm9yY2UgdGhlIHNraWE6OlBsYXRmb3JtQ2FudmFzIHRv
IGNvbnRhaW4gYWxsIHJlbmRlcmluZyByZXN1bHRzLgogICAgIHZvaWQgc3luY1NvZnR3YXJlQ2Fu
dmFzKCkgY29uc3Q7CisgICAgdm9pZCBhZGREaXJ0eVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCk7
CiAKIHByaXZhdGU6CiAjaWYgT1MoTElOVVgpIHx8IE9TKFdJTkRPV1MpCkBAIC0yMzMsNiArMjM0
LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R0xFUzJDYW52YXM+IG1fZ3B1Q2FudmFzOwogICAg
IG11dGFibGUgZW51bSB7IE5vbmUsIFNvZnR3YXJlLCBNaXhlZCwgSGFyZHdhcmUgfSBtX2JhY2tp
bmdTdG9yZVN0YXRlOwogICAgIG11dGFibGUgUmVmUHRyPFRleHR1cmU+IG1fdXBsb2FkVGV4dHVy
ZTsKKyAgICBtdXRhYmxlIEludFJlY3QgbV9zb2Z0d2FyZURpcnR5UmVjdDsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67091</attachid>
            <date>2010-09-09 13:53:10 -0700</date>
            <delta_ts>2010-09-09 15:22:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45476-20100909135307.patch</filename>
            <type>text/plain</type>
            <size>25239</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzZhZWExZjZhYzc2MzZiNmM3Y2M0ODNlYmNkZGQzMTA5ZDRlMmUwYS4uMTYxZGYyYTIyZmRjZDZm
OTgyNTUzMGUwODg1ZTY1MWYzZjg4MTk1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMC0wOS0wOSAgVmlu
Y2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gTWluaW1pemUgdXBsb2FkcyBp
biBjYW52YXMgMmQgbWl4ZWQgbW9kZSByZW5kZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NDc2CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0g
Y2hhbmdlIGlzIGZvciBwZXJmb3JtYW5jZSwgbG9naWMgZml4ZXMgb25seSBhcHBhcmVudCB3aGVu
IHJ1bm5pbmcgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLgorCisgICAgICAgIC0gRW51bWVyYXRpb24g
dmFsdWVzIGZpeGVkLCAiQ2F2YXNXaWxsRHJhdyIgLT4gIkNhbnZhc0RpZERyYXciLgorICAgICAg
ICAtIGFkZERpcnR5UmVjdCgpIHBsdW1iZWQgdGhyb3VnaCBHcmFwaGljc0NvbnRleHQgdG8gUGxh
dGZvcm1Db250ZXh0U2tpYS4KKyAgICAgICAgLSBUZXh0dXJlOjp1cGRhdGVTdWJSZWN0KCkgYWRk
ZWQgdG8gYWxsb3cgdXBsb2FkaW5nIG9ubHkgYSBkaXJ0eSByZWN0LgorICAgICAgICAtIExvZ2lj
IGZpeCBpbiBJbWFnZUJ1ZmZlcjo6ZHJhdygpLCBjYXVzZWQgY2FudmFzIHRvIGNhbnZhcyBjb3Bp
ZXMgdG8gYmUgaW5jb3JyZWN0LgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkaWREcmF3KToKKyAgICAgICAgICAtIExvZ2ljIGZpeCBm
b3IgZHJhd2luZ0NvbnRleHQoKS0+bWFya0RpcnR5UmVjdCgpIGNhbGwuCisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAg
ICAgICAgIC0gTG9naWMgZml4IGZvciBjYWxscyB0byAiZGlkRHJhdygpIiwgdXNlIHBlZXIgbWV0
aG9kIGZpcnN0LgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Om1hcmtEaXJ0eVJlY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmU6OnVwZGF0ZVN1YlJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0Rh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OmJvcmRlclRleGVscyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcENvbnZleFBvbHlnb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjptYXJrRGlydHlSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q29udGV4dFNraWE6OlN0YXRlOjpjbG9uZUluaGVyaXRlZFByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ29udGV4dFNraWE6OnNldFN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ29udGV4dFNraWE6Om1hcmtEaXJ0eVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1Db250ZXh0U2tpYTo6dXBsb2FkU29mdHdhcmVUb0hhcmR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKwogMjAxMC0w
OS0wOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDc5MWFkMDQ0ZTRmOGJkODYxZjFmODY0MDg4OGFjZmU4
NTE3NTNiYTguLjMzODk2MGM2YWYyYzQ0MmNlNzFhMDAyNTMxNzExNzQ4N2I2NDc2NmQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAg
LTI1LDcgKzI1LDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXN0
b3JlKCkKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRBbGxBdHRyaWJ1dGVzVG9EZWZhdWx0KCkgCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdCgpCiB7CiAgICAgc3RhdGUoKS5tX2ds
b2JhbEFscGhhID0gMTsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKCk7
CkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9r
ZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGgKIHsKICAgICBpZiAo
IXZhbGlkYXRlUmVjdEZvckNhbnZhcyh4LCB5LCB3aWR0aCwgaGVpZ2h0KSkKICAgICAgICAgcmV0
dXJuOwotIAorCiAgICAgaWYgKCEobGluZVdpZHRoID49IDApKQogICAgICAgICByZXR1cm47CiAK
QEAgLTEyNzYsNyArMTI3Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqIHNvdXJjZUNhbnZhcywgY29uc3QKICAgICAgICAgcmV0
dXJuOwogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsK
LSAKKwogICAgIEZsb2F0UmVjdCBzb3VyY2VSZWN0ID0gYy0+cm91bmRUb0RldmljZVBpeGVscyhz
cmNSZWN0KTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBjLT5yb3VuZFRvRGV2aWNlUGl4ZWxz
KGRzdFJlY3QpOwogCkBAIC0xNTEwLDEyICsxNTEwLDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGRpcnR5UmVjdCA9IHI7Ci0gICAgaWYg
KG9wdGlvbnMgJiBDYW52YXNXaWxsRHJhd0FwcGx5VHJhbnNmb3JtKSB7CisgICAgaWYgKG9wdGlv
bnMgJiBDYW52YXNEaWREcmF3QXBwbHlUcmFuc2Zvcm0pIHsKICAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGN0bSA9IHN0YXRlKCkubV90cmFuc2Zvcm07CiAgICAgICAgIGRpcnR5UmVjdCA9IGN0bS5t
YXBSZWN0KHIpOwogICAgIH0KIAotICAgIGlmIChvcHRpb25zICYgQ2FudmFzV2lsbERyYXdBcHBs
eVNoYWRvdyAmJiBhbHBoYUNoYW5uZWwoc3RhdGUoKS5tX3NoYWRvd0NvbG9yKSkgeworICAgIGlm
IChvcHRpb25zICYgQ2FudmFzRGlkRHJhd0FwcGx5U2hhZG93ICYmIGFscGhhQ2hhbm5lbChzdGF0
ZSgpLm1fc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIC8vIFRoZSBzaGFkb3cgZ2V0cyBhcHBsaWVk
IGFmdGVyIHRyYW5zZm9ybWF0aW9uCiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KGRpcnR5
UmVjdCk7CiAgICAgICAgIHNoYWRvd1JlY3QubW92ZShzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0KTsK
QEAgLTE1MjMsMTIgKzE1MjMsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRp
ZERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQogICAgICAgICBkaXJ0
eVJlY3QudW5pdGUoc2hhZG93UmVjdCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlvbnMgJiBDYW52
YXNXaWxsRHJhd0FwcGx5Q2xpcCkgeworICAgIGlmIChvcHRpb25zICYgQ2FudmFzRGlkRHJhd0Fw
cGx5Q2xpcCkgewogICAgICAgICAvLyBGSVhNRTogYXBwbHkgdGhlIGN1cnJlbnQgY2xpcCB0byB0
aGUgcmVjdGFuZ2xlLiBVbmZvcnR1bmF0ZWx5IHdlIGNhbid0IGdldCB0aGUgY2xpcAogICAgICAg
ICAvLyBiYWNrIG91dCBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LCBzbyB0byB0YWtlIGNsaXAgaW50
byBhY2NvdW50IGZvciBpbmNyZW1lbnRhbCBwYWludGluZywKICAgICAgICAgLy8gd2UnZCBoYXZl
IHRvIGtlZXAgdGhlIGNsaXAgcGF0aCBhcm91bmQuCiAgICAgfQogCisjaWYgRU5BQkxFKEFDQ0VM
RVJBVEVEXzJEX0NBTlZBUykKKyAgICBpZiAoaXNBY2NlbGVyYXRlZCgpKQorICAgICAgICBkcmF3
aW5nQ29udGV4dCgpLT5tYXJrRGlydHlSZWN0KGVuY2xvc2luZ0ludFJlY3QoZGlydHlSZWN0KSk7
CisjZW5kaWYKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gSWYgd2UgYXJlIGRyYXdpbmcgdG8gaGFyZHdhcmUg
YW5kIHdlIGhhdmUgYSBjb21wb3NpdGVkIGxheWVyLCBqdXN0IGNhbGwgcmVuZGVyZXJDb250ZW50
Q2hhbmdlZCgpLgogICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gY2FudmFzKCktPnJlbmRlckJv
eCgpOwpAQCAtMTY1OCw3ICsxNjYyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnB1dEltYWdlRGF0YShJbWFnZURhdGEqIGRhdGEsIGZsb2F0IGR4LCBmbG9hdCBkeSwKICAgICBJ
bnRQb2ludCBkZXN0UG9pbnQoZGVzdE9mZnNldC53aWR0aCgpLCBkZXN0T2Zmc2V0LmhlaWdodCgp
KTsKIAogICAgIGJ1ZmZlci0+cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGRhdGEsIHNvdXJjZVJl
Y3QsIGRlc3RQb2ludCk7Ci0gICAgZGlkRHJhdyhzb3VyY2VSZWN0LCAwKTsgLy8gaWdub3JlIHRy
YW5zZm9ybSwgc2hhZG93IGFuZCBjbGlwCisgICAgZGlkRHJhdyhzb3VyY2VSZWN0LCBDYW52YXNE
aWREcmF3QXBwbHlOb25lKTsgLy8gaWdub3JlIHRyYW5zZm9ybSwgc2hhZG93IGFuZCBjbGlwCiB9
CiAKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQoKSBjb25zdApAQCAtMTg3
OCwxMSArMTg4MiwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIGMtPmRyYXdCaWRp
VGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7CiAKICAgICBpZiAoZmlsbCkKLSAgICAgICAg
Y2FudmFzKCktPmRpZERyYXcodGV4dFJlY3QpOworICAgICAgICBkaWREcmF3KHRleHRSZWN0KTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gV2hlbiBzdHJva2luZyB0ZXh0LCBwb2ludHkgbWl0ZXJz
IGNhbiBleHRlbmQgb3V0c2lkZSBvZiB0ZXh0UmVjdCwgc28gd2UKICAgICAgICAgLy8gcHVudCBh
bmQgZGlydHkgdGhlIHdob2xlIGNhbnZhcy4KLSAgICAgICAgY2FudmFzKCktPmRpZERyYXcoRmxv
YXRSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpKTsKKyAg
ICAgICAgZGlkRHJhdyhGbG9hdFJlY3QoMCwgMCwgY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygp
LT5oZWlnaHQoKSkpOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggZDlkODU5NzNkZjdhNzFj
ZDhmZjZlMTc2ZjdjZTg4ZWIwYzg3MGY5Ni4uOTFiNjU0OTY0ZmYyY2ViMTc2ZDcwYTkxZjVjMWIw
NDdhZmRlMjE4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5k
ZWYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEX2gKQEAgLTI2NCwxNCArMjY0LDE1IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGFwcGx5U2hhZG93KCk7CiAKLSAgICBlbnVtIENhbnZhc1dpbGxEcmF3
T3B0aW9uIHsKLSAgICAgICAgQ2FudmFzV2lsbERyYXdBcHBseVRyYW5zZm9ybSA9IDEsCi0gICAg
ICAgIENhbnZhc1dpbGxEcmF3QXBwbHlTaGFkb3cgPSAxIDw8IDEsCi0gICAgICAgIENhbnZhc1dp
bGxEcmF3QXBwbHlDbGlwID0gMSA8PCAyLAotICAgICAgICBDYW52YXNXaWxsRHJhd0FwcGx5QWxs
ID0gMHhmZmZmZmZmZgorICAgIGVudW0gQ2FudmFzRGlkRHJhd09wdGlvbiB7CisgICAgICAgIENh
bnZhc0RpZERyYXdBcHBseU5vbmUgPSAwLAorICAgICAgICBDYW52YXNEaWREcmF3QXBwbHlUcmFu
c2Zvcm0gPSAxLAorICAgICAgICBDYW52YXNEaWREcmF3QXBwbHlTaGFkb3cgPSAxIDw8IDEsCisg
ICAgICAgIENhbnZhc0RpZERyYXdBcHBseUNsaXAgPSAxIDw8IDIsCisgICAgICAgIENhbnZhc0Rp
ZERyYXdBcHBseUFsbCA9IDB4ZmZmZmZmZmYKICAgICB9OwogCi0gICAgdm9pZCBkaWREcmF3KGNv
bnN0IEZsb2F0UmVjdCYsIHVuc2lnbmVkIG9wdGlvbnMgPSBDYW52YXNXaWxsRHJhd0FwcGx5QWxs
KTsKKyAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiwgdW5zaWduZWQgb3B0aW9ucyA9
IENhbnZhc0RpZERyYXdBcHBseUFsbCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdD
b250ZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAppbmRleCBlYTZjNDQ4NzQzYjExODE1YjhhYzcxZjQ3Yjc5ZDM4ZDM5NWFjZmIz
Li5jMmM1ZWE5NDZlZjZkMGNmMWVlZWI3ODliZmYyYjU2ODE2NzRiZGMwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00NjcsNyArNDY3LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1h
Z2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclMKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
IHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIGZsb2F0IHRzdyA9
IHNyYy53aWR0aCgpOwogICAgIGZsb2F0IHRzaCA9IHNyYy5oZWlnaHQoKTsKICAgICBmbG9hdCB0
dyA9IGRlc3Qud2lkdGgoKTsKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yUwogICAgIH0KIAogICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dCwgc3JjLCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKLSAgICAKKwogICAgIGlmICh1c2VMb3dR
dWFsaXR5U2NhbGUpCiAgICAgICAgIHJlc3RvcmUoKTsKIH0KQEAgLTU3OSw2ICs1NzksMTAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEKiwgRHJhd2kKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzeW5jU29mdHdh
cmVDYW52YXMoKQogewogfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6bWFya0RpcnR5UmVjdChj
b25zdCAmSW50UmVjdCkKK3sKK30KICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGMzYjIwYTk4YjdkNGE5N2E4MmNhNTgxODkzZjJi
NDcyNDJlZDk4ODMuLmNiMDQ1ZTE2MWQwOWFjZTNhNTA0MTk3MTc0NDRmMGU0YzZkNTRiZmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjEsNyAr
MjEsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIEdyYXBoaWNzQ29udGV4dF9o
CkBAIC00MjQsNiArNDI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQg
c2V0U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqLCBEcmF3
aW5nQnVmZmVyKiwgY29uc3QgSW50U2l6ZSYpOwogICAgICAgICB2b2lkIHN5bmNTb2Z0d2FyZUNh
bnZhcygpOworICAgICAgICB2b2lkIG1hcmtEaXJ0eVJlY3QoY29uc3QgSW50UmVjdCYpOyAvLyBI
aW50cyB0aGF0IGEgcG9ydGlvbiBvZiB0aGUgYmFja2luZyBzdG9yZSBpcyBkaXJ0eS4KIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgc2F2ZVBsYXRmb3JtU3RhdGUoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggMzZlNGFkNWVmYzI2ODJkYjVhMDk4
MjkyMDIzYzJkM2I1ZmE5NmQ3OC4uYzJjMzgwNGI2ZjU2ZTU3MTA5YjYzYzQwMjIyYmIzOTRkM2Fj
ZTEzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTMy
LDExICszMiwxNSBAQAogCiAjaW5jbHVkZSAiVGV4dHVyZS5oIgogCisjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCkBAIC04
Miw3ICs4Niw2IEBAIFBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpCiB7CiAgICAgaW50IG1heFRleHR1
cmVTaXplID0gMDsKICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6
TUFYX1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKLQogICAgIFRpbGluZ0RhdGEgdGls
aW5nKG1heFRleHR1cmVTaXplLCB3aWR0aCwgaGVpZ2h0LCB0cnVlKTsKICAgICBpbnQgbnVtVGls
ZXMgPSB0aWxpbmcubnVtVGlsZXMoKTsKIApAQCAtMTM3LDYgKzE0MCwxMSBAQCBzdGF0aWMgdWlu
dDMyX3QqIGNvcHlTdWJSZWN0KHVpbnQzMl90KiBzcmMsIGludCBzcmNYLCBpbnQgc3JjWSwgdWlu
dDMyX3QqIGRzdCwgaQogCiB2b2lkIFRleHR1cmU6OmxvYWQodm9pZCogcGl4ZWxzKQogeworICAg
IHVwZGF0ZVN1YlJlY3QocGl4ZWxzLCBJbnRSZWN0KDAsIDAsIG1fdGlsZXMudG90YWxTaXplWCgp
LCBtX3RpbGVzLnRvdGFsU2l6ZVkoKSkpOworfQorCit2b2lkIFRleHR1cmU6OnVwZGF0ZVN1YlJl
Y3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0IHVwZGF0ZVJlY3QpCit7CiAgICAgdWludDMy
X3QqIHBpeGVsczMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpOwogICAgIHVuc2ln
bmVkIGludCBnbEZvcm1hdCA9IDA7CiAgICAgdW5zaWduZWQgaW50IGdsVHlwZSA9IDA7CkBAIC0x
NDYsMjYgKzE1NCw0MiBAQCB2b2lkIFRleHR1cmU6OmxvYWQodm9pZCogcGl4ZWxzKQogICAgICAg
ICBBU1NFUlQoZ2xGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEgJiYgZ2xUeXBlID09
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKICAgICAgICAgLy8gRklYTUU6ICBU
aGlzIGNvdWxkIHVzZSBQQk8ncyB0byBzYXZlIGRvaW5nIGFuIGV4dHJhIGNvcHkgaGVyZS4KICAg
ICB9Ci0gICAgT3duQXJyYXlQdHI8dWludDMyX3Q+IHRlbXBCdWZmKG5ldyB1aW50MzJfdFttX3Rp
bGVzLm1heFRleHR1cmVTaXplKCkgKiBtX3RpbGVzLm1heFRleHR1cmVTaXplKCldKTsKKyAgICBp
bnQgdGVtcEJ1ZmZTaXplID0gLy8gVGVtcG9yYXJ5IGJ1ZmZlciBzaXplIGlzIHRoZSBzbWFsbGVy
IG9mIHRoZSBtYXggdGV4dHVyZSBzaXplIG9yIHRoZSB1cGRhdGVSZWN0CisgICAgICAgIG1pbiht
X3RpbGVzLm1heFRleHR1cmVTaXplKCksIG1fdGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVS
ZWN0LndpZHRoKCkpICoKKyAgICAgICAgbWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKSwgbV90
aWxlcy5ib3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3QuaGVpZ2h0KCkpOworICAgIE93bkFycmF5
UHRyPHVpbnQzMl90PiB0ZW1wQnVmZihuZXcgdWludDMyX3RbdGVtcEJ1ZmZTaXplXSk7CiAKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMubnVtVGlsZXMoKTsgaSsrKSB7Ci0gICAgICAg
IEludFJlY3QgdGlsZUJvdW5kc1dpdGhCb3JkZXIgPSBtX3RpbGVzLnRpbGVCb3VuZHNXaXRoQm9y
ZGVyKGkpOworICAgIGZvciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90aWxlcy5udW1UaWxlcygp
OyB0aWxlKyspIHsKKyAgICAgICAgLy8gSW50ZXJzZWN0IHdpdGggdGlsZQorICAgICAgICBJbnRS
ZWN0IHRpbGVCb3VuZHNXaXRoQm9yZGVyID0gbV90aWxlcy50aWxlQm91bmRzV2l0aEJvcmRlcih0
aWxlKTsKIAorICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3RJbnRlcnNlY3RlZCA9IHVwZGF0ZVJl
Y3Q7CisgICAgICAgIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5pbnRlcnNlY3QodGlsZUJvdW5kc1dp
dGhCb3JkZXIpOworCisgICAgICAgIEludFJlY3QgZHN0UmVjdCA9IHVwZGF0ZVJlY3RJbnRlcnNl
Y3RlZDsKKyAgICAgICAgZHN0UmVjdC5tb3ZlKC10aWxlQm91bmRzV2l0aEJvcmRlci54KCksIC10
aWxlQm91bmRzV2l0aEJvcmRlci55KCkpOworCisgICAgICAgIGlmICh1cGRhdGVSZWN0SW50ZXJz
ZWN0ZWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gQ29w
eSBzdWIgcmVjdGFuZ2xlIG91dCBvZiBsYXJnZXIgcGl4ZWwgZGF0YQogICAgICAgICB1aW50MzJf
dCogdXBsb2FkQnVmZiA9IDA7CiAgICAgICAgIGlmIChzd2l6emxlKSB7CiAgICAgICAgICAgICB1
cGxvYWRCdWZmID0gY29weVN1YlJlY3Q8dHJ1ZT4oCi0gICAgICAgICAgICBwaXhlbHMzMiwgdGls
ZUJvdW5kc1dpdGhCb3JkZXIueCgpLCB0aWxlQm91bmRzV2l0aEJvcmRlci55KCksCi0gICAgICAg
ICAgICB0ZW1wQnVmZi5nZXQoKSwgdGlsZUJvdW5kc1dpdGhCb3JkZXIud2lkdGgoKSwgdGlsZUJv
dW5kc1dpdGhCb3JkZXIuaGVpZ2h0KCksIG1fdGlsZXMudG90YWxTaXplWCgpKTsKKyAgICAgICAg
ICAgIHBpeGVsczMyLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueCgpLCB1cGRhdGVSZWN0SW50ZXJz
ZWN0ZWQueSgpLAorICAgICAgICAgICAgdGVtcEJ1ZmYuZ2V0KCksIHVwZGF0ZVJlY3RJbnRlcnNl
Y3RlZC53aWR0aCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQuaGVpZ2h0KCksIG1fdGlsZXMudG90
YWxTaXplWCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVwbG9hZEJ1ZmYgPSBj
b3B5U3ViUmVjdDxmYWxzZT4oCi0gICAgICAgICAgICBwaXhlbHMzMiwgdGlsZUJvdW5kc1dpdGhC
b3JkZXIueCgpLCB0aWxlQm91bmRzV2l0aEJvcmRlci55KCksCi0gICAgICAgICAgICB0ZW1wQnVm
Zi5nZXQoKSwgdGlsZUJvdW5kc1dpdGhCb3JkZXIud2lkdGgoKSwgdGlsZUJvdW5kc1dpdGhCb3Jk
ZXIuaGVpZ2h0KCksIG1fdGlsZXMudG90YWxTaXplWCgpKTsKKyAgICAgICAgICAgIHBpeGVsczMy
LCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueSgpLAor
ICAgICAgICAgICAgdGVtcEJ1ZmYuZ2V0KCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC53aWR0aCgp
LCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQuaGVpZ2h0KCksIG1fdGlsZXMudG90YWxTaXplWCgpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGlsZVRleHR1cmVJZHMtPmF0KGkpKTsKLSAgICAgICAgbV9j
b250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAw
LCAwLAotICAgICAgICAgICAgdGlsZUJvdW5kc1dpdGhCb3JkZXIud2lkdGgoKSwKLSAgICAgICAg
ICAgIHRpbGVCb3VuZHNXaXRoQm9yZGVyLmhlaWdodCgpLCBnbEZvcm1hdCwgZ2xUeXBlLCB1cGxv
YWRCdWZmKTsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV90aWxlVGV4dHVyZUlkcy0+YXQodGlsZSkpOworICAgICAgICBtX2Nv
bnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAgLyog
bGV2ZWwgKi8sCisgICAgICAgICAgICBkc3RSZWN0LngoKSwKKyAgICAgICAgICAgIGRzdFJlY3Qu
eSgpLAorICAgICAgICAgICAgdXBkYXRlUmVjdEludGVyc2VjdGVkLndpZHRoKCksCisgICAgICAg
ICAgICB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQuaGVpZ2h0KCksIGdsRm9ybWF0LCBnbFR5cGUsIHVw
bG9hZEJ1ZmYpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5oCmluZGV4IDdlNGE3MmI2MzU3YjllZGU3YzVjMTA4N2U5MTRjZmZkNWRiOTBhOWQuLmVkYTQ3
NWVlMjY2ZTkzZTA3NTJjYmJhYTIwMzMyOTFiYjA3OTk0ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmgKQEAgLTQxLDYgKzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCitjbGFzcyBJbnRSZWN0OworCiBjbGFzcyBU
ZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZT4gewogcHVibGljOgogICAgIH5UZXh0
dXJlKCk7CkBAIC00OCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
ZXh0dXJlPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBGb3JtYXQsIGludCB3aWR0aCwgaW50
IGhlaWdodCk7CiAgICAgdm9pZCBiaW5kVGlsZShpbnQgdGlsZSk7CiAgICAgdm9pZCBsb2FkKHZv
aWQqIHBpeGVscyk7CisgICAgdm9pZCB1cGRhdGVTdWJSZWN0KHZvaWQqIHBpeGVscywgY29uc3Qg
SW50UmVjdCk7CiAgICAgRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9
CiAgICAgY29uc3QgVGlsaW5nRGF0YSYgdGlsZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGVzOyB9
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGls
aW5nRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCmlu
ZGV4IGYxMmU2NmVkNzg2ZWZlYzA3MWFkYjc4N2IwZDQyN2I0ZDE0NjhmMmEuLjFiZGM1MWE5N2Vm
Y2VmZGE1MGU4Nzg0OWU1ODg2MDAzNjg3ZWQxZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9UaWxpbmdEYXRhLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIGludCBt
YXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VGV4dHVyZVNpemU7IH0KICAgICBp
bnQgdG90YWxTaXplWCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplWDsgfQogICAgIGludCB0
b3RhbFNpemVZKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemVZOyB9CisgICAgaW50IGJvcmRl
clRleGVscygpIGNvbnN0IHsgcmV0dXJuIG1fYm9yZGVyVGV4ZWxzOyB9CiAKICAgICBpbnQgbnVt
VGlsZXMoKSBjb25zdCB7IHJldHVybiBudW1UaWxlc1goKSAqIG51bVRpbGVzWSgpOyB9CiAgICAg
aW50IG51bVRpbGVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtVGlsZXNYOyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAK
aW5kZXggNGViODBhYWZkZjVlOTEwYTg0NzZkNzMyNmM4OWRmZWQ5MzQ0NWMzMC4uZDYxOGMxOTU5
OGJiYTY4ODU3MDA1ZDMxNTJhYzBkZGFmMzNhMDg3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcApAQCAtMSwxMCAr
MSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICog
bWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcg
KzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3Bh
Y2UgewogaW5saW5lIGludCBmYXN0TW9kKGludCB2YWx1ZSwgaW50IG1heCkKIHsKICAgICBpbnQg
c2lnbiA9IFNrRXh0cmFjdFNpZ24odmFsdWUpOwotICAgIAorCiAgICAgdmFsdWUgPSBTa0FwcGx5
U2lnbih2YWx1ZSwgc2lnbik7CiAgICAgaWYgKHZhbHVlID49IG1heCkKICAgICAgICAgdmFsdWUg
JT0gbWF4OwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29u
dmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2luCiAKICAg
ICBpZiAobnVtUG9pbnRzIDw9IDEpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIEZJ
WE1FOiBJTVBMRU1FTlQhIQogfQogCkBAIC0xMjUwLDQgKzEyNTAsOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRChjb250ZXh0LCBmcmFtZWJ1ZmZlciwgc2l6ZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjptYXJrRGlydHlSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgcGxhdGZvcm1D
b250ZXh0KCktPm1hcmtEaXJ0eVJlY3QocmVjdCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZm
ZXJTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNr
aWEuY3BwCmluZGV4IGJiODlhYzU1NmI5ZmNkZWE4ZTExMTUxZmQ2YmUxNmYzMzBjNzViOTEuLjlj
OTY2NzNhNjU2ZDA1ZDJkOTJjNzA5YTU2NzJlODczNTg5M2ZlMDggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCkBAIC0xMTcsNiAr
MTE3LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb24KICAgICAgICAgICAgIEZsb2F0UmVjdCBk
ZXN0UmVjdEZsaXBwZWQoZGVzdFJlY3QpOwogICAgICAgICAgICAgZGVzdFJlY3RGbGlwcGVkLnNl
dFkoZGVzdFJlY3QueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgICAgICAgICAgZGVzdFJl
Y3RGbGlwcGVkLnNldEhlaWdodCgtZGVzdFJlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JIYXJkd2FyZURyYXcoKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5ncHVDYW52YXMoKS0+ZHJhd1RleHR1
cmVkUmVjdChzb3VyY2VUZXh0dXJlLCBtX3NpemUsIHNyY1JlY3QsIGRlc3RSZWN0RmxpcHBlZCwg
c3R5bGVDb2xvclNwYWNlLCBvcCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcAppbmRleCA3YzU4NTE4MjJjZjMxYjJhNmJjMmVmNzA4ZWUxMzA4MmU2ZGRiY2UwLi5m
MGQ2NTQ4Yzc1ZjhmYjY3OGViYjc4MjAwMzgzZjI1MGUyY2JmNjM3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCkBA
IC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpA
QCAtMTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0xODcsNyArMTg3LDcg
QEAgUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGUgUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGU6
OmNsb25lSW5oZXJpdGVkUHJvcGVydGllcygKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0
ZSBzdGF0ZSgqdGhpcyk7CiAKICAgICAvLyBFdmVyeXRoaW5nIGlzIGluaGVyaXRlZCBleGNlcHQg
Zm9yIHRoZSBjbGlwIHBhdGhzLgotICAgIHN0YXRlLm1fYW50aUFsaWFzQ2xpcFBhdGhzLmNsZWFy
KCk7ICAKKyAgICBzdGF0ZS5tX2FudGlBbGlhc0NsaXBQYXRocy5jbGVhcigpOwogCiAgICAgcmV0
dXJuIHN0YXRlOwogfQpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tp
YTo6ZHJhd1JlY3QoU2tSZWN0IHJlY3QpCiAgICAgICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3Vy
IHJlY3RzIHRvIHNpbXVsYXRlIHRoZSBzdHJva2Ugb2YgYSBib3JkZXIuCiAgICAgICAgIFNrQ29s
b3Igb2xkRmlsbENvbG9yID0gbV9zdGF0ZS0+bV9maWxsQ29sb3I7CiAKLSAgICAgICAgLy8gc2V0
RmlsbENvbG9yKCkgd2lsbCBzZXQgdGhlIHNoYWRlciB0byBOVUxMLCBzbyBzYXZlIGEgcmVmIHRv
IGl0IG5vdy4gCisgICAgICAgIC8vIHNldEZpbGxDb2xvcigpIHdpbGwgc2V0IHRoZSBzaGFkZXIg
dG8gTlVMTCwgc28gc2F2ZSBhIHJlZiB0byBpdCBub3cuCiAgICAgICAgIFNrU2hhZGVyKiBvbGRG
aWxsU2hhZGVyID0gbV9zdGF0ZS0+bV9maWxsU2hhZGVyOwogICAgICAgICBvbGRGaWxsU2hhZGVy
LT5zYWZlUmVmKCk7CiAgICAgICAgIHNldEZpbGxDb2xvcihtX3N0YXRlLT5tX3N0cm9rZUNvbG9y
KTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldFhmZXJt
b2RlTW9kZShTa1hmZXJtb2RlOjpNb2RlIHBkbSkKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
c2V0RmlsbENvbG9yKFNrQ29sb3IgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS0+bV9maWxsQ29sb3Ig
PSBjb2xvcjsKLSAgICBzZXRGaWxsU2hhZGVyKE5VTEwpOworICAgIHNldEZpbGxTaGFkZXIoMCk7
CiB9CiAKIFNrRHJhd0xvb3BlciogUGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0RHJhd0xvb3Blcigp
IGNvbnN0CkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRT
dHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkKIHZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6c2V0U3Ryb2tlQ29sb3IoU2tDb2xvciBzdHJva2VDb2xvcikKIHsKICAgICBtX3N0YXRl
LT5tX3N0cm9rZUNvbG9yID0gc3Ryb2tlQ29sb3I7Ci0gICAgc2V0U3Ryb2tlU2hhZGVyKE5VTEwp
OworICAgIHNldFN0cm9rZVNoYWRlcigwKTsKIH0KIAogZmxvYXQgUGxhdGZvcm1Db250ZXh0U2tp
YTo6Z2V0U3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QKQEAgLTgwMiw2ICs4MDIsMjMgQEAgdm9pZCBQ
bGF0Zm9ybUNvbnRleHRTa2lhOjpzeW5jU29mdHdhcmVDYW52YXMoKSBjb25zdAogICAgIG1fYmFj
a2luZ1N0b3JlU3RhdGUgPSBTb2Z0d2FyZTsKIH0KIAordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lh
OjptYXJrRGlydHlSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFtX3VzZUdQ
VSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChtX2JhY2tpbmdTdG9yZVN0YXRlKSB7
CisgICAgY2FzZSBTb2Z0d2FyZToKKyAgICBjYXNlIE1peGVkOgorICAgICAgICBtX3NvZnR3YXJl
RGlydHlSZWN0LnVuaXRlKHJlY3QpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBIYXJkd2Fy
ZToKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKwogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjp1cGxvYWRTb2Z0
d2FyZVRvSGFyZHdhcmUoQ29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0CiB7CiAgICAgY29uc3Qg
U2tCaXRtYXAmIGJpdG1hcCA9IG1fY2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZh
bHNlKTsKQEAgLTgwOSwxMCArODI2LDExIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6dXBs
b2FkU29mdHdhcmVUb0hhcmR3YXJlKENvbXBvc2l0ZU9wZXJhdG9yIG9wKSBjb25zdAogICAgIFNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9ncHVDYW52YXMtPmNvbnRleHQoKTsK
ICAgICBpZiAoIW1fdXBsb2FkVGV4dHVyZSB8fCBtX3VwbG9hZFRleHR1cmUtPnRpbGVzKCkudG90
YWxTaXplWCgpIDwgYml0bWFwLndpZHRoKCkgfHwgbV91cGxvYWRUZXh0dXJlLT50aWxlcygpLnRv
dGFsU2l6ZVkoKSA8IGJpdG1hcC5oZWlnaHQoKSkKICAgICAgICAgbV91cGxvYWRUZXh0dXJlID0g
Y29udGV4dC0+Y3JlYXRlVGV4dHVyZShUZXh0dXJlOjpCR1JBOCwgYml0bWFwLndpZHRoKCksIGJp
dG1hcC5oZWlnaHQoKSk7Ci0gICAgbV91cGxvYWRUZXh0dXJlLT5sb2FkKGJpdG1hcC5nZXRQaXhl
bHMoKSk7Ci0gICAgSW50UmVjdCByZWN0KDAsIDAsIGJpdG1hcC53aWR0aCgpLCBiaXRtYXAuaGVp
Z2h0KCkpOworCisgICAgbV91cGxvYWRUZXh0dXJlLT51cGRhdGVTdWJSZWN0KGJpdG1hcC5nZXRQ
aXhlbHMoKSwgbV9zb2Z0d2FyZURpcnR5UmVjdCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGlkZW50
aXR5OwotICAgIGdwdUNhbnZhcygpLT5kcmF3VGV4dHVyZWRSZWN0KG1fdXBsb2FkVGV4dHVyZS5n
ZXQoKSwgcmVjdCwgcmVjdCwgaWRlbnRpdHksIDEuMCwgRGV2aWNlQ29sb3JTcGFjZSwgb3ApOwor
ICAgIGdwdUNhbnZhcygpLT5kcmF3VGV4dHVyZWRSZWN0KG1fdXBsb2FkVGV4dHVyZS5nZXQoKSwg
bV9zb2Z0d2FyZURpcnR5UmVjdCwgbV9zb2Z0d2FyZURpcnR5UmVjdCwgaWRlbnRpdHksIDEuMCwg
RGV2aWNlQ29sb3JTcGFjZSwgb3ApOworICAgIG1fc29mdHdhcmVEaXJ0eVJlY3Quc2V0V2lkdGgo
MCk7IC8vIENsZWFyIGRpcnR5IHJlY3QuCiB9CiAKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
cmVhZGJhY2tIYXJkd2FyZVRvU29mdHdhcmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKaW5kZXggY2I5YWE3MWEz
MmIyMDZkYjA3NmJlY2I2YWExYzM4YWVmYzdjOTRhOC4uZTZkNTg3NTBhMDNhOGZmYTUyYTAzYzYz
ZDE3MWE5MzA3YzJmMjcwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29w
eXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCkBAIC0xOTQsNiArMTk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFy
ZUZvckhhcmR3YXJlRHJhdygpIGNvbnN0OwogICAgIC8vIENhbGwgdG8gZm9yY2UgdGhlIHNraWE6
OlBsYXRmb3JtQ2FudmFzIHRvIGNvbnRhaW4gYWxsIHJlbmRlcmluZyByZXN1bHRzLgogICAgIHZv
aWQgc3luY1NvZnR3YXJlQ2FudmFzKCkgY29uc3Q7CisgICAgdm9pZCBtYXJrRGlydHlSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpOwogCiBwcml2YXRlOgogI2lmIE9TKExJTlVYKSB8fCBPUyhXSU5E
T1dTKQpAQCAtMjIyLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ3VycmVudCBwYXRoIGlu
IGdsb2JhbCBjb29yZGluYXRlcy4KICAgICBTa1BhdGggbV9wYXRoOwogCi0gICAgLy8gU3RvcmVz
IGltYWdlIHNpemVzIGZvciBhIGhpbnQgdG8gY29tcHV0ZSBpbWFnZSByZXNhbXBsaW5nIG1vZGVz
LiAKKyAgICAvLyBTdG9yZXMgaW1hZ2Ugc2l6ZXMgZm9yIGEgaGludCB0byBjb21wdXRlIGltYWdl
IHJlc2FtcGxpbmcgbW9kZXMuCiAgICAgLy8gVmFsdWVzIGFyZSB1c2VkIGluIEltYWdlU2tpYS5j
cHAKICAgICBJbnRTaXplIG1faW1hZ2VSZXNhbXBsaW5nSGludFNyY1NpemU7CiAgICAgRmxvYXRT
aXplIG1faW1hZ2VSZXNhbXBsaW5nSGludERzdFNpemU7CkBAIC0yMzMsNiArMjM0LDcgQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8R0xFUzJDYW52YXM+IG1fZ3B1Q2FudmFzOwogICAgIG11dGFibGUg
ZW51bSB7IE5vbmUsIFNvZnR3YXJlLCBNaXhlZCwgSGFyZHdhcmUgfSBtX2JhY2tpbmdTdG9yZVN0
YXRlOwogICAgIG11dGFibGUgUmVmUHRyPFRleHR1cmU+IG1fdXBsb2FkVGV4dHVyZTsKKyAgICBt
dXRhYmxlIEludFJlY3QgbV9zb2Z0d2FyZURpcnR5UmVjdDsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67099</attachid>
            <date>2010-09-09 15:23:06 -0700</date>
            <delta_ts>2010-09-09 17:37:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45476-20100909152259.patch</filename>
            <type>text/plain</type>
            <size>25239</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzZhZWExZjZhYzc2MzZiNmM3Y2M0ODNlYmNkZGQzMTA5ZDRlMmUwYS4uMTYxZGYyYTIyZmRjZDZm
OTgyNTUzMGUwODg1ZTY1MWYzZjg4MTk1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMC0wOS0wOSAgVmlu
Y2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gTWluaW1pemUgdXBsb2FkcyBp
biBjYW52YXMgMmQgbWl4ZWQgbW9kZSByZW5kZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NDc2CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0g
Y2hhbmdlIGlzIGZvciBwZXJmb3JtYW5jZSwgbG9naWMgZml4ZXMgb25seSBhcHBhcmVudCB3aGVu
IHJ1bm5pbmcgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLgorCisgICAgICAgIC0gRW51bWVyYXRpb24g
dmFsdWVzIGZpeGVkLCAiQ2F2YXNXaWxsRHJhdyIgLT4gIkNhbnZhc0RpZERyYXciLgorICAgICAg
ICAtIGFkZERpcnR5UmVjdCgpIHBsdW1iZWQgdGhyb3VnaCBHcmFwaGljc0NvbnRleHQgdG8gUGxh
dGZvcm1Db250ZXh0U2tpYS4KKyAgICAgICAgLSBUZXh0dXJlOjp1cGRhdGVTdWJSZWN0KCkgYWRk
ZWQgdG8gYWxsb3cgdXBsb2FkaW5nIG9ubHkgYSBkaXJ0eSByZWN0LgorICAgICAgICAtIExvZ2lj
IGZpeCBpbiBJbWFnZUJ1ZmZlcjo6ZHJhdygpLCBjYXVzZWQgY2FudmFzIHRvIGNhbnZhcyBjb3Bp
ZXMgdG8gYmUgaW5jb3JyZWN0LgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkaWREcmF3KToKKyAgICAgICAgICAtIExvZ2ljIGZpeCBm
b3IgZHJhd2luZ0NvbnRleHQoKS0+bWFya0RpcnR5UmVjdCgpIGNhbGwuCisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAg
ICAgICAgIC0gTG9naWMgZml4IGZvciBjYWxscyB0byAiZGlkRHJhdygpIiwgdXNlIHBlZXIgbWV0
aG9kIGZpcnN0LgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Om1hcmtEaXJ0eVJlY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmU6OnVwZGF0ZVN1YlJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0Rh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OmJvcmRlclRleGVscyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcENvbnZleFBvbHlnb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjptYXJrRGlydHlSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q29udGV4dFNraWE6OlN0YXRlOjpjbG9uZUluaGVyaXRlZFByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ29udGV4dFNraWE6OnNldFN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ29udGV4dFNraWE6Om1hcmtEaXJ0eVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1Db250ZXh0U2tpYTo6dXBsb2FkU29mdHdhcmVUb0hhcmR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKwogMjAxMC0w
OS0wOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDc5MWFkMDQ0ZTRmOGJkODYxZjFmODY0MDg4OGFjZmU4
NTE3NTNiYTguLjMzODk2MGM2YWYyYzQ0MmNlNzFhMDAyNTMxNzExNzQ4N2I2NDc2NmQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAg
LTI1LDcgKzI1LDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXN0
b3JlKCkKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRBbGxBdHRyaWJ1dGVzVG9EZWZhdWx0KCkgCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdCgpCiB7CiAgICAgc3RhdGUoKS5tX2ds
b2JhbEFscGhhID0gMTsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKCk7
CkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9r
ZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGgKIHsKICAgICBpZiAo
IXZhbGlkYXRlUmVjdEZvckNhbnZhcyh4LCB5LCB3aWR0aCwgaGVpZ2h0KSkKICAgICAgICAgcmV0
dXJuOwotIAorCiAgICAgaWYgKCEobGluZVdpZHRoID49IDApKQogICAgICAgICByZXR1cm47CiAK
QEAgLTEyNzYsNyArMTI3Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqIHNvdXJjZUNhbnZhcywgY29uc3QKICAgICAgICAgcmV0
dXJuOwogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsK
LSAKKwogICAgIEZsb2F0UmVjdCBzb3VyY2VSZWN0ID0gYy0+cm91bmRUb0RldmljZVBpeGVscyhz
cmNSZWN0KTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBjLT5yb3VuZFRvRGV2aWNlUGl4ZWxz
KGRzdFJlY3QpOwogCkBAIC0xNTEwLDEyICsxNTEwLDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGRpcnR5UmVjdCA9IHI7Ci0gICAgaWYg
KG9wdGlvbnMgJiBDYW52YXNXaWxsRHJhd0FwcGx5VHJhbnNmb3JtKSB7CisgICAgaWYgKG9wdGlv
bnMgJiBDYW52YXNEaWREcmF3QXBwbHlUcmFuc2Zvcm0pIHsKICAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGN0bSA9IHN0YXRlKCkubV90cmFuc2Zvcm07CiAgICAgICAgIGRpcnR5UmVjdCA9IGN0bS5t
YXBSZWN0KHIpOwogICAgIH0KIAotICAgIGlmIChvcHRpb25zICYgQ2FudmFzV2lsbERyYXdBcHBs
eVNoYWRvdyAmJiBhbHBoYUNoYW5uZWwoc3RhdGUoKS5tX3NoYWRvd0NvbG9yKSkgeworICAgIGlm
IChvcHRpb25zICYgQ2FudmFzRGlkRHJhd0FwcGx5U2hhZG93ICYmIGFscGhhQ2hhbm5lbChzdGF0
ZSgpLm1fc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIC8vIFRoZSBzaGFkb3cgZ2V0cyBhcHBsaWVk
IGFmdGVyIHRyYW5zZm9ybWF0aW9uCiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KGRpcnR5
UmVjdCk7CiAgICAgICAgIHNoYWRvd1JlY3QubW92ZShzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0KTsK
QEAgLTE1MjMsMTIgKzE1MjMsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRp
ZERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQogICAgICAgICBkaXJ0
eVJlY3QudW5pdGUoc2hhZG93UmVjdCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlvbnMgJiBDYW52
YXNXaWxsRHJhd0FwcGx5Q2xpcCkgeworICAgIGlmIChvcHRpb25zICYgQ2FudmFzRGlkRHJhd0Fw
cGx5Q2xpcCkgewogICAgICAgICAvLyBGSVhNRTogYXBwbHkgdGhlIGN1cnJlbnQgY2xpcCB0byB0
aGUgcmVjdGFuZ2xlLiBVbmZvcnR1bmF0ZWx5IHdlIGNhbid0IGdldCB0aGUgY2xpcAogICAgICAg
ICAvLyBiYWNrIG91dCBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LCBzbyB0byB0YWtlIGNsaXAgaW50
byBhY2NvdW50IGZvciBpbmNyZW1lbnRhbCBwYWludGluZywKICAgICAgICAgLy8gd2UnZCBoYXZl
IHRvIGtlZXAgdGhlIGNsaXAgcGF0aCBhcm91bmQuCiAgICAgfQogCisjaWYgRU5BQkxFKEFDQ0VM
RVJBVEVEXzJEX0NBTlZBUykKKyAgICBpZiAoaXNBY2NlbGVyYXRlZCgpKQorICAgICAgICBkcmF3
aW5nQ29udGV4dCgpLT5tYXJrRGlydHlSZWN0KGVuY2xvc2luZ0ludFJlY3QoZGlydHlSZWN0KSk7
CisjZW5kaWYKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gSWYgd2UgYXJlIGRyYXdpbmcgdG8gaGFyZHdhcmUg
YW5kIHdlIGhhdmUgYSBjb21wb3NpdGVkIGxheWVyLCBqdXN0IGNhbGwgcmVuZGVyZXJDb250ZW50
Q2hhbmdlZCgpLgogICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gY2FudmFzKCktPnJlbmRlckJv
eCgpOwpAQCAtMTY1OCw3ICsxNjYyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnB1dEltYWdlRGF0YShJbWFnZURhdGEqIGRhdGEsIGZsb2F0IGR4LCBmbG9hdCBkeSwKICAgICBJ
bnRQb2ludCBkZXN0UG9pbnQoZGVzdE9mZnNldC53aWR0aCgpLCBkZXN0T2Zmc2V0LmhlaWdodCgp
KTsKIAogICAgIGJ1ZmZlci0+cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGRhdGEsIHNvdXJjZVJl
Y3QsIGRlc3RQb2ludCk7Ci0gICAgZGlkRHJhdyhzb3VyY2VSZWN0LCAwKTsgLy8gaWdub3JlIHRy
YW5zZm9ybSwgc2hhZG93IGFuZCBjbGlwCisgICAgZGlkRHJhdyhzb3VyY2VSZWN0LCBDYW52YXNE
aWREcmF3QXBwbHlOb25lKTsgLy8gaWdub3JlIHRyYW5zZm9ybSwgc2hhZG93IGFuZCBjbGlwCiB9
CiAKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQoKSBjb25zdApAQCAtMTg3
OCwxMSArMTg4MiwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIGMtPmRyYXdCaWRp
VGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7CiAKICAgICBpZiAoZmlsbCkKLSAgICAgICAg
Y2FudmFzKCktPmRpZERyYXcodGV4dFJlY3QpOworICAgICAgICBkaWREcmF3KHRleHRSZWN0KTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gV2hlbiBzdHJva2luZyB0ZXh0LCBwb2ludHkgbWl0ZXJz
IGNhbiBleHRlbmQgb3V0c2lkZSBvZiB0ZXh0UmVjdCwgc28gd2UKICAgICAgICAgLy8gcHVudCBh
bmQgZGlydHkgdGhlIHdob2xlIGNhbnZhcy4KLSAgICAgICAgY2FudmFzKCktPmRpZERyYXcoRmxv
YXRSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpKTsKKyAg
ICAgICAgZGlkRHJhdyhGbG9hdFJlY3QoMCwgMCwgY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygp
LT5oZWlnaHQoKSkpOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggZDlkODU5NzNkZjdhNzFj
ZDhmZjZlMTc2ZjdjZTg4ZWIwYzg3MGY5Ni4uOTFiNjU0OTY0ZmYyY2ViMTc2ZDcwYTkxZjVjMWIw
NDdhZmRlMjE4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5k
ZWYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEX2gKQEAgLTI2NCwxNCArMjY0LDE1IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGFwcGx5U2hhZG93KCk7CiAKLSAgICBlbnVtIENhbnZhc1dpbGxEcmF3
T3B0aW9uIHsKLSAgICAgICAgQ2FudmFzV2lsbERyYXdBcHBseVRyYW5zZm9ybSA9IDEsCi0gICAg
ICAgIENhbnZhc1dpbGxEcmF3QXBwbHlTaGFkb3cgPSAxIDw8IDEsCi0gICAgICAgIENhbnZhc1dp
bGxEcmF3QXBwbHlDbGlwID0gMSA8PCAyLAotICAgICAgICBDYW52YXNXaWxsRHJhd0FwcGx5QWxs
ID0gMHhmZmZmZmZmZgorICAgIGVudW0gQ2FudmFzRGlkRHJhd09wdGlvbiB7CisgICAgICAgIENh
bnZhc0RpZERyYXdBcHBseU5vbmUgPSAwLAorICAgICAgICBDYW52YXNEaWREcmF3QXBwbHlUcmFu
c2Zvcm0gPSAxLAorICAgICAgICBDYW52YXNEaWREcmF3QXBwbHlTaGFkb3cgPSAxIDw8IDEsCisg
ICAgICAgIENhbnZhc0RpZERyYXdBcHBseUNsaXAgPSAxIDw8IDIsCisgICAgICAgIENhbnZhc0Rp
ZERyYXdBcHBseUFsbCA9IDB4ZmZmZmZmZmYKICAgICB9OwogCi0gICAgdm9pZCBkaWREcmF3KGNv
bnN0IEZsb2F0UmVjdCYsIHVuc2lnbmVkIG9wdGlvbnMgPSBDYW52YXNXaWxsRHJhd0FwcGx5QWxs
KTsKKyAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiwgdW5zaWduZWQgb3B0aW9ucyA9
IENhbnZhc0RpZERyYXdBcHBseUFsbCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdD
b250ZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAppbmRleCBlYTZjNDQ4NzQzYjExODE1YjhhYzcxZjQ3Yjc5ZDM4ZDM5NWFjZmIz
Li4yYzk0YmVjZWQ4MWFlMjgwMmIyZDYzODk0OTVhNzI2NTAyNDllNzYxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00NjcsNyArNDY3LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1h
Z2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclMKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
IHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIGZsb2F0IHRzdyA9
IHNyYy53aWR0aCgpOwogICAgIGZsb2F0IHRzaCA9IHNyYy5oZWlnaHQoKTsKICAgICBmbG9hdCB0
dyA9IGRlc3Qud2lkdGgoKTsKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yUwogICAgIH0KIAogICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dCwgc3JjLCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKLSAgICAKKwogICAgIGlmICh1c2VMb3dR
dWFsaXR5U2NhbGUpCiAgICAgICAgIHJlc3RvcmUoKTsKIH0KQEAgLTU3OSw2ICs1NzksMTAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFNoYXJlZEdy
YXBoaWNzQ29udGV4dDNEKiwgRHJhd2kKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzeW5jU29mdHdh
cmVDYW52YXMoKQogewogfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6bWFya0RpcnR5UmVjdChj
b25zdCBJbnRSZWN0JikKK3sKK30KICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGMzYjIwYTk4YjdkNGE5N2E4MmNhNTgxODkzZjJi
NDcyNDJlZDk4ODMuLmNiMDQ1ZTE2MWQwOWFjZTNhNTA0MTk3MTc0NDRmMGU0YzZkNTRiZmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjEsNyAr
MjEsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIEdyYXBoaWNzQ29udGV4dF9o
CkBAIC00MjQsNiArNDI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQg
c2V0U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QqLCBEcmF3
aW5nQnVmZmVyKiwgY29uc3QgSW50U2l6ZSYpOwogICAgICAgICB2b2lkIHN5bmNTb2Z0d2FyZUNh
bnZhcygpOworICAgICAgICB2b2lkIG1hcmtEaXJ0eVJlY3QoY29uc3QgSW50UmVjdCYpOyAvLyBI
aW50cyB0aGF0IGEgcG9ydGlvbiBvZiB0aGUgYmFja2luZyBzdG9yZSBpcyBkaXJ0eS4KIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgc2F2ZVBsYXRmb3JtU3RhdGUoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggMzZlNGFkNWVmYzI2ODJkYjVhMDk4
MjkyMDIzYzJkM2I1ZmE5NmQ3OC4uYzJjMzgwNGI2ZjU2ZTU3MTA5YjYzYzQwMjIyYmIzOTRkM2Fj
ZTEzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTMy
LDExICszMiwxNSBAQAogCiAjaW5jbHVkZSAiVGV4dHVyZS5oIgogCisjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCkBAIC04
Miw3ICs4Niw2IEBAIFBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpCiB7CiAgICAgaW50IG1heFRleHR1
cmVTaXplID0gMDsKICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6
TUFYX1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKLQogICAgIFRpbGluZ0RhdGEgdGls
aW5nKG1heFRleHR1cmVTaXplLCB3aWR0aCwgaGVpZ2h0LCB0cnVlKTsKICAgICBpbnQgbnVtVGls
ZXMgPSB0aWxpbmcubnVtVGlsZXMoKTsKIApAQCAtMTM3LDYgKzE0MCwxMSBAQCBzdGF0aWMgdWlu
dDMyX3QqIGNvcHlTdWJSZWN0KHVpbnQzMl90KiBzcmMsIGludCBzcmNYLCBpbnQgc3JjWSwgdWlu
dDMyX3QqIGRzdCwgaQogCiB2b2lkIFRleHR1cmU6OmxvYWQodm9pZCogcGl4ZWxzKQogeworICAg
IHVwZGF0ZVN1YlJlY3QocGl4ZWxzLCBJbnRSZWN0KDAsIDAsIG1fdGlsZXMudG90YWxTaXplWCgp
LCBtX3RpbGVzLnRvdGFsU2l6ZVkoKSkpOworfQorCit2b2lkIFRleHR1cmU6OnVwZGF0ZVN1YlJl
Y3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0IHVwZGF0ZVJlY3QpCit7CiAgICAgdWludDMy
X3QqIHBpeGVsczMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpOwogICAgIHVuc2ln
bmVkIGludCBnbEZvcm1hdCA9IDA7CiAgICAgdW5zaWduZWQgaW50IGdsVHlwZSA9IDA7CkBAIC0x
NDYsMjYgKzE1NCw0MiBAQCB2b2lkIFRleHR1cmU6OmxvYWQodm9pZCogcGl4ZWxzKQogICAgICAg
ICBBU1NFUlQoZ2xGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEgJiYgZ2xUeXBlID09
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKICAgICAgICAgLy8gRklYTUU6ICBU
aGlzIGNvdWxkIHVzZSBQQk8ncyB0byBzYXZlIGRvaW5nIGFuIGV4dHJhIGNvcHkgaGVyZS4KICAg
ICB9Ci0gICAgT3duQXJyYXlQdHI8dWludDMyX3Q+IHRlbXBCdWZmKG5ldyB1aW50MzJfdFttX3Rp
bGVzLm1heFRleHR1cmVTaXplKCkgKiBtX3RpbGVzLm1heFRleHR1cmVTaXplKCldKTsKKyAgICBp
bnQgdGVtcEJ1ZmZTaXplID0gLy8gVGVtcG9yYXJ5IGJ1ZmZlciBzaXplIGlzIHRoZSBzbWFsbGVy
IG9mIHRoZSBtYXggdGV4dHVyZSBzaXplIG9yIHRoZSB1cGRhdGVSZWN0CisgICAgICAgIG1pbiht
X3RpbGVzLm1heFRleHR1cmVTaXplKCksIG1fdGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVS
ZWN0LndpZHRoKCkpICoKKyAgICAgICAgbWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKSwgbV90
aWxlcy5ib3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3QuaGVpZ2h0KCkpOworICAgIE93bkFycmF5
UHRyPHVpbnQzMl90PiB0ZW1wQnVmZihuZXcgdWludDMyX3RbdGVtcEJ1ZmZTaXplXSk7CiAKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMubnVtVGlsZXMoKTsgaSsrKSB7Ci0gICAgICAg
IEludFJlY3QgdGlsZUJvdW5kc1dpdGhCb3JkZXIgPSBtX3RpbGVzLnRpbGVCb3VuZHNXaXRoQm9y
ZGVyKGkpOworICAgIGZvciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90aWxlcy5udW1UaWxlcygp
OyB0aWxlKyspIHsKKyAgICAgICAgLy8gSW50ZXJzZWN0IHdpdGggdGlsZQorICAgICAgICBJbnRS
ZWN0IHRpbGVCb3VuZHNXaXRoQm9yZGVyID0gbV90aWxlcy50aWxlQm91bmRzV2l0aEJvcmRlcih0
aWxlKTsKIAorICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3RJbnRlcnNlY3RlZCA9IHVwZGF0ZVJl
Y3Q7CisgICAgICAgIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC5pbnRlcnNlY3QodGlsZUJvdW5kc1dp
dGhCb3JkZXIpOworCisgICAgICAgIEludFJlY3QgZHN0UmVjdCA9IHVwZGF0ZVJlY3RJbnRlcnNl
Y3RlZDsKKyAgICAgICAgZHN0UmVjdC5tb3ZlKC10aWxlQm91bmRzV2l0aEJvcmRlci54KCksIC10
aWxlQm91bmRzV2l0aEJvcmRlci55KCkpOworCisgICAgICAgIGlmICh1cGRhdGVSZWN0SW50ZXJz
ZWN0ZWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gQ29w
eSBzdWIgcmVjdGFuZ2xlIG91dCBvZiBsYXJnZXIgcGl4ZWwgZGF0YQogICAgICAgICB1aW50MzJf
dCogdXBsb2FkQnVmZiA9IDA7CiAgICAgICAgIGlmIChzd2l6emxlKSB7CiAgICAgICAgICAgICB1
cGxvYWRCdWZmID0gY29weVN1YlJlY3Q8dHJ1ZT4oCi0gICAgICAgICAgICBwaXhlbHMzMiwgdGls
ZUJvdW5kc1dpdGhCb3JkZXIueCgpLCB0aWxlQm91bmRzV2l0aEJvcmRlci55KCksCi0gICAgICAg
ICAgICB0ZW1wQnVmZi5nZXQoKSwgdGlsZUJvdW5kc1dpdGhCb3JkZXIud2lkdGgoKSwgdGlsZUJv
dW5kc1dpdGhCb3JkZXIuaGVpZ2h0KCksIG1fdGlsZXMudG90YWxTaXplWCgpKTsKKyAgICAgICAg
ICAgIHBpeGVsczMyLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueCgpLCB1cGRhdGVSZWN0SW50ZXJz
ZWN0ZWQueSgpLAorICAgICAgICAgICAgdGVtcEJ1ZmYuZ2V0KCksIHVwZGF0ZVJlY3RJbnRlcnNl
Y3RlZC53aWR0aCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQuaGVpZ2h0KCksIG1fdGlsZXMudG90
YWxTaXplWCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVwbG9hZEJ1ZmYgPSBj
b3B5U3ViUmVjdDxmYWxzZT4oCi0gICAgICAgICAgICBwaXhlbHMzMiwgdGlsZUJvdW5kc1dpdGhC
b3JkZXIueCgpLCB0aWxlQm91bmRzV2l0aEJvcmRlci55KCksCi0gICAgICAgICAgICB0ZW1wQnVm
Zi5nZXQoKSwgdGlsZUJvdW5kc1dpdGhCb3JkZXIud2lkdGgoKSwgdGlsZUJvdW5kc1dpdGhCb3Jk
ZXIuaGVpZ2h0KCksIG1fdGlsZXMudG90YWxTaXplWCgpKTsKKyAgICAgICAgICAgIHBpeGVsczMy
LCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueCgpLCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQueSgpLAor
ICAgICAgICAgICAgdGVtcEJ1ZmYuZ2V0KCksIHVwZGF0ZVJlY3RJbnRlcnNlY3RlZC53aWR0aCgp
LCB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQuaGVpZ2h0KCksIG1fdGlsZXMudG90YWxTaXplWCgpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGlsZVRleHR1cmVJZHMtPmF0KGkpKTsKLSAgICAgICAgbV9j
b250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAw
LCAwLAotICAgICAgICAgICAgdGlsZUJvdW5kc1dpdGhCb3JkZXIud2lkdGgoKSwKLSAgICAgICAg
ICAgIHRpbGVCb3VuZHNXaXRoQm9yZGVyLmhlaWdodCgpLCBnbEZvcm1hdCwgZ2xUeXBlLCB1cGxv
YWRCdWZmKTsKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV90aWxlVGV4dHVyZUlkcy0+YXQodGlsZSkpOworICAgICAgICBtX2Nv
bnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAgLyog
bGV2ZWwgKi8sCisgICAgICAgICAgICBkc3RSZWN0LngoKSwKKyAgICAgICAgICAgIGRzdFJlY3Qu
eSgpLAorICAgICAgICAgICAgdXBkYXRlUmVjdEludGVyc2VjdGVkLndpZHRoKCksCisgICAgICAg
ICAgICB1cGRhdGVSZWN0SW50ZXJzZWN0ZWQuaGVpZ2h0KCksIGdsRm9ybWF0LCBnbFR5cGUsIHVw
bG9hZEJ1ZmYpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5oCmluZGV4IDdlNGE3MmI2MzU3YjllZGU3YzVjMTA4N2U5MTRjZmZkNWRiOTBhOWQuLmVkYTQ3
NWVlMjY2ZTkzZTA3NTJjYmJhYTIwMzMyOTFiYjA3OTk0ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmgKQEAgLTQxLDYgKzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCitjbGFzcyBJbnRSZWN0OworCiBjbGFzcyBU
ZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZT4gewogcHVibGljOgogICAgIH5UZXh0
dXJlKCk7CkBAIC00OCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
ZXh0dXJlPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBGb3JtYXQsIGludCB3aWR0aCwgaW50
IGhlaWdodCk7CiAgICAgdm9pZCBiaW5kVGlsZShpbnQgdGlsZSk7CiAgICAgdm9pZCBsb2FkKHZv
aWQqIHBpeGVscyk7CisgICAgdm9pZCB1cGRhdGVTdWJSZWN0KHZvaWQqIHBpeGVscywgY29uc3Qg
SW50UmVjdCk7CiAgICAgRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9
CiAgICAgY29uc3QgVGlsaW5nRGF0YSYgdGlsZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGVzOyB9
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGls
aW5nRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCmlu
ZGV4IGYxMmU2NmVkNzg2ZWZlYzA3MWFkYjc4N2IwZDQyN2I0ZDE0NjhmMmEuLjFiZGM1MWE5N2Vm
Y2VmZGE1MGU4Nzg0OWU1ODg2MDAzNjg3ZWQxZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9UaWxpbmdEYXRhLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIGludCBt
YXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VGV4dHVyZVNpemU7IH0KICAgICBp
bnQgdG90YWxTaXplWCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplWDsgfQogICAgIGludCB0
b3RhbFNpemVZKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemVZOyB9CisgICAgaW50IGJvcmRl
clRleGVscygpIGNvbnN0IHsgcmV0dXJuIG1fYm9yZGVyVGV4ZWxzOyB9CiAKICAgICBpbnQgbnVt
VGlsZXMoKSBjb25zdCB7IHJldHVybiBudW1UaWxlc1goKSAqIG51bVRpbGVzWSgpOyB9CiAgICAg
aW50IG51bVRpbGVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtVGlsZXNYOyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAK
aW5kZXggNGViODBhYWZkZjVlOTEwYTg0NzZkNzMyNmM4OWRmZWQ5MzQ0NWMzMC4uZDYxOGMxOTU5
OGJiYTY4ODU3MDA1ZDMxNTJhYzBkZGFmMzNhMDg3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcApAQCAtMSwxMCAr
MSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICog
bWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcg
KzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3Bh
Y2UgewogaW5saW5lIGludCBmYXN0TW9kKGludCB2YWx1ZSwgaW50IG1heCkKIHsKICAgICBpbnQg
c2lnbiA9IFNrRXh0cmFjdFNpZ24odmFsdWUpOwotICAgIAorCiAgICAgdmFsdWUgPSBTa0FwcGx5
U2lnbih2YWx1ZSwgc2lnbik7CiAgICAgaWYgKHZhbHVlID49IG1heCkKICAgICAgICAgdmFsdWUg
JT0gbWF4OwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29u
dmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2luCiAKICAg
ICBpZiAobnVtUG9pbnRzIDw9IDEpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIEZJ
WE1FOiBJTVBMRU1FTlQhIQogfQogCkBAIC0xMjUwLDQgKzEyNTAsOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRChjb250ZXh0LCBmcmFtZWJ1ZmZlciwgc2l6ZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjptYXJrRGlydHlSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgcGxhdGZvcm1D
b250ZXh0KCktPm1hcmtEaXJ0eVJlY3QocmVjdCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZm
ZXJTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNr
aWEuY3BwCmluZGV4IGJiODlhYzU1NmI5ZmNkZWE4ZTExMTUxZmQ2YmUxNmYzMzBjNzViOTEuLjlj
OTY2NzNhNjU2ZDA1ZDJkOTJjNzA5YTU2NzJlODczNTg5M2ZlMDggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCkBAIC0xMTcsNiAr
MTE3LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb24KICAgICAgICAgICAgIEZsb2F0UmVjdCBk
ZXN0UmVjdEZsaXBwZWQoZGVzdFJlY3QpOwogICAgICAgICAgICAgZGVzdFJlY3RGbGlwcGVkLnNl
dFkoZGVzdFJlY3QueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgICAgICAgICAgZGVzdFJl
Y3RGbGlwcGVkLnNldEhlaWdodCgtZGVzdFJlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JIYXJkd2FyZURyYXcoKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5ncHVDYW52YXMoKS0+ZHJhd1RleHR1
cmVkUmVjdChzb3VyY2VUZXh0dXJlLCBtX3NpemUsIHNyY1JlY3QsIGRlc3RSZWN0RmxpcHBlZCwg
c3R5bGVDb2xvclNwYWNlLCBvcCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcAppbmRleCA3YzU4NTE4MjJjZjMxYjJhNmJjMmVmNzA4ZWUxMzA4MmU2ZGRiY2UwLi5m
MGQ2NTQ4Yzc1ZjhmYjY3OGViYjc4MjAwMzgzZjI1MGUyY2JmNjM3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCkBA
IC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpA
QCAtMTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0xODcsNyArMTg3LDcg
QEAgUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGUgUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGU6
OmNsb25lSW5oZXJpdGVkUHJvcGVydGllcygKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0
ZSBzdGF0ZSgqdGhpcyk7CiAKICAgICAvLyBFdmVyeXRoaW5nIGlzIGluaGVyaXRlZCBleGNlcHQg
Zm9yIHRoZSBjbGlwIHBhdGhzLgotICAgIHN0YXRlLm1fYW50aUFsaWFzQ2xpcFBhdGhzLmNsZWFy
KCk7ICAKKyAgICBzdGF0ZS5tX2FudGlBbGlhc0NsaXBQYXRocy5jbGVhcigpOwogCiAgICAgcmV0
dXJuIHN0YXRlOwogfQpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tp
YTo6ZHJhd1JlY3QoU2tSZWN0IHJlY3QpCiAgICAgICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3Vy
IHJlY3RzIHRvIHNpbXVsYXRlIHRoZSBzdHJva2Ugb2YgYSBib3JkZXIuCiAgICAgICAgIFNrQ29s
b3Igb2xkRmlsbENvbG9yID0gbV9zdGF0ZS0+bV9maWxsQ29sb3I7CiAKLSAgICAgICAgLy8gc2V0
RmlsbENvbG9yKCkgd2lsbCBzZXQgdGhlIHNoYWRlciB0byBOVUxMLCBzbyBzYXZlIGEgcmVmIHRv
IGl0IG5vdy4gCisgICAgICAgIC8vIHNldEZpbGxDb2xvcigpIHdpbGwgc2V0IHRoZSBzaGFkZXIg
dG8gTlVMTCwgc28gc2F2ZSBhIHJlZiB0byBpdCBub3cuCiAgICAgICAgIFNrU2hhZGVyKiBvbGRG
aWxsU2hhZGVyID0gbV9zdGF0ZS0+bV9maWxsU2hhZGVyOwogICAgICAgICBvbGRGaWxsU2hhZGVy
LT5zYWZlUmVmKCk7CiAgICAgICAgIHNldEZpbGxDb2xvcihtX3N0YXRlLT5tX3N0cm9rZUNvbG9y
KTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldFhmZXJt
b2RlTW9kZShTa1hmZXJtb2RlOjpNb2RlIHBkbSkKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
c2V0RmlsbENvbG9yKFNrQ29sb3IgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS0+bV9maWxsQ29sb3Ig
PSBjb2xvcjsKLSAgICBzZXRGaWxsU2hhZGVyKE5VTEwpOworICAgIHNldEZpbGxTaGFkZXIoMCk7
CiB9CiAKIFNrRHJhd0xvb3BlciogUGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0RHJhd0xvb3Blcigp
IGNvbnN0CkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRT
dHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkKIHZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6c2V0U3Ryb2tlQ29sb3IoU2tDb2xvciBzdHJva2VDb2xvcikKIHsKICAgICBtX3N0YXRl
LT5tX3N0cm9rZUNvbG9yID0gc3Ryb2tlQ29sb3I7Ci0gICAgc2V0U3Ryb2tlU2hhZGVyKE5VTEwp
OworICAgIHNldFN0cm9rZVNoYWRlcigwKTsKIH0KIAogZmxvYXQgUGxhdGZvcm1Db250ZXh0U2tp
YTo6Z2V0U3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QKQEAgLTgwMiw2ICs4MDIsMjMgQEAgdm9pZCBQ
bGF0Zm9ybUNvbnRleHRTa2lhOjpzeW5jU29mdHdhcmVDYW52YXMoKSBjb25zdAogICAgIG1fYmFj
a2luZ1N0b3JlU3RhdGUgPSBTb2Z0d2FyZTsKIH0KIAordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lh
OjptYXJrRGlydHlSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFtX3VzZUdQ
VSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChtX2JhY2tpbmdTdG9yZVN0YXRlKSB7
CisgICAgY2FzZSBTb2Z0d2FyZToKKyAgICBjYXNlIE1peGVkOgorICAgICAgICBtX3NvZnR3YXJl
RGlydHlSZWN0LnVuaXRlKHJlY3QpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBIYXJkd2Fy
ZToKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKwogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjp1cGxvYWRTb2Z0
d2FyZVRvSGFyZHdhcmUoQ29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0CiB7CiAgICAgY29uc3Qg
U2tCaXRtYXAmIGJpdG1hcCA9IG1fY2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZh
bHNlKTsKQEAgLTgwOSwxMCArODI2LDExIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6dXBs
b2FkU29mdHdhcmVUb0hhcmR3YXJlKENvbXBvc2l0ZU9wZXJhdG9yIG9wKSBjb25zdAogICAgIFNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9ncHVDYW52YXMtPmNvbnRleHQoKTsK
ICAgICBpZiAoIW1fdXBsb2FkVGV4dHVyZSB8fCBtX3VwbG9hZFRleHR1cmUtPnRpbGVzKCkudG90
YWxTaXplWCgpIDwgYml0bWFwLndpZHRoKCkgfHwgbV91cGxvYWRUZXh0dXJlLT50aWxlcygpLnRv
dGFsU2l6ZVkoKSA8IGJpdG1hcC5oZWlnaHQoKSkKICAgICAgICAgbV91cGxvYWRUZXh0dXJlID0g
Y29udGV4dC0+Y3JlYXRlVGV4dHVyZShUZXh0dXJlOjpCR1JBOCwgYml0bWFwLndpZHRoKCksIGJp
dG1hcC5oZWlnaHQoKSk7Ci0gICAgbV91cGxvYWRUZXh0dXJlLT5sb2FkKGJpdG1hcC5nZXRQaXhl
bHMoKSk7Ci0gICAgSW50UmVjdCByZWN0KDAsIDAsIGJpdG1hcC53aWR0aCgpLCBiaXRtYXAuaGVp
Z2h0KCkpOworCisgICAgbV91cGxvYWRUZXh0dXJlLT51cGRhdGVTdWJSZWN0KGJpdG1hcC5nZXRQ
aXhlbHMoKSwgbV9zb2Z0d2FyZURpcnR5UmVjdCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGlkZW50
aXR5OwotICAgIGdwdUNhbnZhcygpLT5kcmF3VGV4dHVyZWRSZWN0KG1fdXBsb2FkVGV4dHVyZS5n
ZXQoKSwgcmVjdCwgcmVjdCwgaWRlbnRpdHksIDEuMCwgRGV2aWNlQ29sb3JTcGFjZSwgb3ApOwor
ICAgIGdwdUNhbnZhcygpLT5kcmF3VGV4dHVyZWRSZWN0KG1fdXBsb2FkVGV4dHVyZS5nZXQoKSwg
bV9zb2Z0d2FyZURpcnR5UmVjdCwgbV9zb2Z0d2FyZURpcnR5UmVjdCwgaWRlbnRpdHksIDEuMCwg
RGV2aWNlQ29sb3JTcGFjZSwgb3ApOworICAgIG1fc29mdHdhcmVEaXJ0eVJlY3Quc2V0V2lkdGgo
MCk7IC8vIENsZWFyIGRpcnR5IHJlY3QuCiB9CiAKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
cmVhZGJhY2tIYXJkd2FyZVRvU29mdHdhcmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKaW5kZXggY2I5YWE3MWEz
MmIyMDZkYjA3NmJlY2I2YWExYzM4YWVmYzdjOTRhOC4uZTZkNTg3NTBhMDNhOGZmYTUyYTAzYzYz
ZDE3MWE5MzA3YzJmMjcwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29w
eXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCkBAIC0xOTQsNiArMTk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFy
ZUZvckhhcmR3YXJlRHJhdygpIGNvbnN0OwogICAgIC8vIENhbGwgdG8gZm9yY2UgdGhlIHNraWE6
OlBsYXRmb3JtQ2FudmFzIHRvIGNvbnRhaW4gYWxsIHJlbmRlcmluZyByZXN1bHRzLgogICAgIHZv
aWQgc3luY1NvZnR3YXJlQ2FudmFzKCkgY29uc3Q7CisgICAgdm9pZCBtYXJrRGlydHlSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpOwogCiBwcml2YXRlOgogI2lmIE9TKExJTlVYKSB8fCBPUyhXSU5E
T1dTKQpAQCAtMjIyLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ3VycmVudCBwYXRoIGlu
IGdsb2JhbCBjb29yZGluYXRlcy4KICAgICBTa1BhdGggbV9wYXRoOwogCi0gICAgLy8gU3RvcmVz
IGltYWdlIHNpemVzIGZvciBhIGhpbnQgdG8gY29tcHV0ZSBpbWFnZSByZXNhbXBsaW5nIG1vZGVz
LiAKKyAgICAvLyBTdG9yZXMgaW1hZ2Ugc2l6ZXMgZm9yIGEgaGludCB0byBjb21wdXRlIGltYWdl
IHJlc2FtcGxpbmcgbW9kZXMuCiAgICAgLy8gVmFsdWVzIGFyZSB1c2VkIGluIEltYWdlU2tpYS5j
cHAKICAgICBJbnRTaXplIG1faW1hZ2VSZXNhbXBsaW5nSGludFNyY1NpemU7CiAgICAgRmxvYXRT
aXplIG1faW1hZ2VSZXNhbXBsaW5nSGludERzdFNpemU7CkBAIC0yMzMsNiArMjM0LDcgQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8R0xFUzJDYW52YXM+IG1fZ3B1Q2FudmFzOwogICAgIG11dGFibGUg
ZW51bSB7IE5vbmUsIFNvZnR3YXJlLCBNaXhlZCwgSGFyZHdhcmUgfSBtX2JhY2tpbmdTdG9yZVN0
YXRlOwogICAgIG11dGFibGUgUmVmUHRyPFRleHR1cmU+IG1fdXBsb2FkVGV4dHVyZTsKKyAgICBt
dXRhYmxlIEludFJlY3QgbV9zb2Z0d2FyZURpcnR5UmVjdDsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>