<?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>123931</bug_id>
          
          <creation_ts>2013-11-06 15:01:06 -0800</creation_ts>
          <short_desc>RenderBlockFlow::nextFloatLogicalBottomBelow should not use ShapeOutsideFloatOffsetMode</short_desc>
          <delta_ts>2013-11-09 23:02:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bem Jones-Bey">bjonesbe</reporter>
          <assigned_to name="Bem Jones-Bey">bjonesbe</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>947935</commentid>
    <comment_count>0</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-11-06 15:01:06 -0800</bug_when>
    <thetext>Once this is refactored, we can remove ShapeOutsideFloatOffsetMode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948799</commentid>
    <comment_count>1</comment_count>
      <attachid>216426</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-11-08 12:45:43 -0800</bug_when>
    <thetext>Created attachment 216426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948806</commentid>
    <comment_count>2</comment_count>
      <attachid>216426</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-08 13:10:24 -0800</bug_when>
    <thetext>Comment on attachment 216426
Patch

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

&gt; Source/WebCore/rendering/FloatingObjects.cpp:159
&gt; +    FindNextFloatLogicalBottomAdapter(const RenderBlockFlow* renderer, LayoutUnit belowLogicalHeight)

You should take the RenderBlockFlow by reference.

&gt; Source/WebCore/rendering/FloatingObjects.cpp:176
&gt; +    const RenderBlockFlow* m_renderer;

This should be a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948814</commentid>
    <comment_count>3</comment_count>
      <attachid>216431</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-11-08 13:28:08 -0800</bug_when>
    <thetext>Created attachment 216431
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948816</commentid>
    <comment_count>4</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-11-08 13:28:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 216426 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=216426&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/FloatingObjects.cpp:159
&gt; &gt; +    FindNextFloatLogicalBottomAdapter(const RenderBlockFlow* renderer, LayoutUnit belowLogicalHeight)
&gt; 
&gt; You should take the RenderBlockFlow by reference.
&gt; 
&gt; &gt; Source/WebCore/rendering/FloatingObjects.cpp:176
&gt; &gt; +    const RenderBlockFlow* m_renderer;
&gt; 
&gt; This should be a reference.

Thanks, I&apos;ve updated that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948832</commentid>
    <comment_count>5</comment_count>
      <attachid>216431</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-08 13:59:35 -0800</bug_when>
    <thetext>Comment on attachment 216431
Updated Patch

Clearing flags on attachment: 216431

Committed r158954: &lt;http://trac.webkit.org/changeset/158954&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948833</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-08 13:59:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949112</commentid>
    <comment_count>7</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-09 23:02:48 -0800</bug_when>
    <thetext>Roughly 80 tests started failing on the GTK port after this landed, due to that port enabling subpixel layout. All tests pass again if the saturated layout arithmetic in LayoutUnit is enabled. The patch in bug #119273 does just that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216426</attachid>
            <date>2013-11-08 12:45:43 -0800</date>
            <delta_ts>2013-11-08 13:28:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123931-20131108124542.patch</filename>
            <type>text/plain</type>
            <size>16417</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRlMzZjZmEwZWQzN2Uw
MWM0YzBiNjI2MGQ3MmI2MzNhODJhZDI5Ny4uYTNhOGRiZDFhOGI0OTlkY2ZkNTRlZmZhYzkxMzRh
OGU4NTcxMzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTExLTA4ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIFJlbmRlckJsb2NrRmxv
dzo6bmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93IHNob3VsZCBub3QgdXNlIFNoYXBlT3V0c2lk
ZUZsb2F0T2Zmc2V0TW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIzOTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmV3cml0ZSBuZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3cgdG8gdXNlIHRoZSBw
bGFjZWQgZmxvYXRzIHRyZWUgZm9yCisgICAgICAgIHRoZSBzZWFyY2ggYW5kIHRvIG5vdCBuZWVk
IFNoYXBlT3V0c2lkZUZsb2F0T2Zmc2V0TW9kZSBhbnltb3JlLiBUaGlzCisgICAgICAgIG1vdmVz
IGFsbW9zdCBhbGwgb2YgdGhlIGxvZ2ljIGludG8gRmxvYXRpbmdPYmplY3RzLCBtYWtpbmcgYSBz
bWFsbAorICAgICAgICByZWR1Y3Rpb24gaW4gdGhlIGFtb3VudCB0aGF0IFJlbmRlckJsb2NrRmxv
dyBuZWVkcyB0byBrbm93IGFib3V0IHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBGbG9h
dGluZ09iamVjdHMuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIGNoYW5nZSBDb21wdXRlRmxvYXRP
ZmZzZXRBZGFwdGVyIHRvIHRha2UgaW4gTGF5b3V0VW5pdHMKKyAgICAgICAgYW5kIHJvdW5kVG9J
bnQgaXRzZWxmIHNvIHRoYXQgYWxsIG9mIGl0J3MgY2FsbGVycyBjYW4gYmUgc2ltcGxpZmllZC4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIHJl
bmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmFuZ2VzSW50
ZXJzZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI6OkNv
bXB1dGVGbG9hdE9mZnNldEFkYXB0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmluZE5leHRGbG9h
dExvZ2ljYWxCb3R0b21BZGFwdGVyOjpGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmluZE5leHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVyOjps
b3dWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFk
YXB0ZXI6OmhpZ2hWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaW5kTmV4dEZsb2F0TG9naWNh
bEJvdHRvbUFkYXB0ZXI6Om5leHRMb2dpY2FsQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlcjo6bmV4dFNoYXBlTG9naWNhbEJvdHRvbSk6
CisgICAgICAgIChXZWJDb3JlOjpGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXI6OmNv
bGxlY3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OmZpbmRO
ZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3cpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdP
YmplY3RzOjpmaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93Rm9yQmxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3RzOjpsb2dpY2FsTGVmdE9mZnNldEZvclBvc2l0aW9u
aW5nRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3RzOjpsb2dpY2FsUmln
aHRPZmZzZXRGb3JQb3NpdGlvbmluZ0Zsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5n
T2JqZWN0czo6bG9naWNhbExlZnRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdP
YmplY3RzOjpsb2dpY2FsUmlnaHRPZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG9hdGlu
Z09iamVjdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvTGluZVdpZHRoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVXaWR0aDo6Zml0QmVsb3dGbG9hdHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjpuZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpuZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3dGb3JCbG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmdldENsZWFyRGVsdGEpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKwogMjAxMy0xMS0wOCAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBicmVha3BvaW50IChhbmQgZXhjZXB0aW9u
IGJyZWFrKSBmdW5jdGlvbmFsaXR5IGludG8gSlNDOjpEZWJ1Z2dlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKaW5kZXggYTdhNzkwN2RhNmM2YmRhN2Zi
ODQ4ZjdiZDM0NTBjNjIwZGJiZTg2OC4uMzRlY2JjYmYzZWMwMzQ1OTJkNGM0NTJlYTY4MWNjNjRm
OTQ3NzZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2Jq
ZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5j
cHAKQEAgLTEwMCwxNSArMTAwLDM1IEBAIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4g
RmxvYXRpbmdPYmplY3Q6OnVuc2FmZUNsb25lKCkgY29uc3QKICAgICByZXR1cm4gY2xvbmVPYmpl
Y3Q7CiB9CiAKK2lubGluZSBzdGF0aWMgYm9vbCByYW5nZXNJbnRlcnNlY3QoaW50IGZsb2F0VG9w
LCBpbnQgZmxvYXRCb3R0b20sIGludCBvYmplY3RUb3AsIGludCBvYmplY3RCb3R0b20pCit7Cisg
ICAgaWYgKG9iamVjdFRvcCA+PSBmbG9hdEJvdHRvbSB8fCBvYmplY3RCb3R0b20gPCBmbG9hdFRv
cCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHRvcCBvZiB0aGUgb2JqZWN0
IG92ZXJsYXBzIHRoZSBmbG9hdAorICAgIGlmIChvYmplY3RUb3AgPj0gZmxvYXRUb3ApCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgLy8gVGhlIG9iamVjdCBlbmNsb3NlcyB0aGUgZmxvYXQK
KyAgICBpZiAob2JqZWN0VG9wIDwgZmxvYXRUb3AgJiYgb2JqZWN0Qm90dG9tID4gZmxvYXRCb3R0
b20pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gVGhlIGJvdHRvbSBvZiB0aGUgb2Jq
ZWN0IG92ZXJsYXBzIHRoZSBmbG9hdAorICAgIGlmIChvYmplY3RCb3R0b20gPiBvYmplY3RUb3Ag
JiYgb2JqZWN0Qm90dG9tID4gZmxvYXRUb3AgJiYgb2JqZWN0Qm90dG9tIDw9IGZsb2F0Qm90dG9t
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdGVtcGxh
dGUgPEZsb2F0aW5nT2JqZWN0OjpUeXBlIEZsb2F0VHlwZVZhbHVlPgogY2xhc3MgQ29tcHV0ZUZs
b2F0T2Zmc2V0QWRhcHRlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBGbG9hdGluZ09iamVjdElu
dGVydmFsIEludGVydmFsVHlwZTsKIAotICAgIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXIoY29u
c3QgUmVuZGVyQmxvY2tGbG93KiByZW5kZXJlciwgaW50IGxpbmVUb3AsIGludCBsaW5lQm90dG9t
LCBMYXlvdXRVbml0IG9mZnNldCkKKyAgICBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyKGNvbnN0
IFJlbmRlckJsb2NrRmxvdyogcmVuZGVyZXIsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5p
dCBsaW5lQm90dG9tLCBMYXlvdXRVbml0IG9mZnNldCkKICAgICAgICAgOiBtX3JlbmRlcmVyKHJl
bmRlcmVyKQotICAgICAgICAsIG1fbGluZVRvcChsaW5lVG9wKQotICAgICAgICAsIG1fbGluZUJv
dHRvbShsaW5lQm90dG9tKQorICAgICAgICAsIG1fbGluZVRvcChyb3VuZFRvSW50KGxpbmVUb3Ap
KQorICAgICAgICAsIG1fbGluZUJvdHRvbShyb3VuZFRvSW50KGxpbmVCb3R0b20pKQogICAgICAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBtX291dGVybW9zdEZsb2F0KDApCiAgICAg
ewpAQCAtMTMyLDYgKzE1Miw3NSBAQCBwcml2YXRlOgogICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0
KiBtX291dGVybW9zdEZsb2F0OwogfTsKIAorY2xhc3MgRmluZE5leHRGbG9hdExvZ2ljYWxCb3R0
b21BZGFwdGVyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZsb2F0aW5nT2JqZWN0SW50ZXJ2YWwg
SW50ZXJ2YWxUeXBlOworCisgICAgRmluZE5leHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVyKGNv
bnN0IFJlbmRlckJsb2NrRmxvdyogcmVuZGVyZXIsIExheW91dFVuaXQgYmVsb3dMb2dpY2FsSGVp
Z2h0KQorICAgICAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCisgICAgICAgICwgbV9iZWxvd0xv
Z2ljYWxIZWlnaHQoZmxvb3JUb0ludChiZWxvd0xvZ2ljYWxIZWlnaHQpKQorICAgICAgICAsIG1f
YWJvdmVMb2dpY2FsSGVpZ2h0KHJvdW5kVG9JbnQoTGF5b3V0VW5pdDo6bWF4KCkpKQorICAgICAg
ICAsIG1fbmV4dExvZ2ljYWxCb3R0b20oTGF5b3V0VW5pdDo6bWF4KCkpCisgICAgICAgICwgbV9u
ZXh0U2hhcGVMb2dpY2FsQm90dG9tKExheW91dFVuaXQ6Om1heCgpKQorICAgIHsKKyAgICB9CisK
KyAgICBpbnQgbG93VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2JlbG93TG9naWNhbEhlaWdodDsg
fQorICAgIGludCBoaWdoVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Fib3ZlTG9naWNhbEhlaWdo
dDsgfQorICAgIHZvaWQgY29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVydmFsVHlwZSYpOworCisg
ICAgTGF5b3V0VW5pdCBuZXh0TG9naWNhbEJvdHRvbSgpIHsgcmV0dXJuIG1fbmV4dExvZ2ljYWxC
b3R0b20gPT0gTGF5b3V0VW5pdDo6bWF4KCkgPyBMYXlvdXRVbml0KCkgOiBtX25leHRMb2dpY2Fs
Qm90dG9tOyB9CisgICAgTGF5b3V0VW5pdCBuZXh0U2hhcGVMb2dpY2FsQm90dG9tKCkgeyByZXR1
cm4gbV9uZXh0U2hhcGVMb2dpY2FsQm90dG9tID09IExheW91dFVuaXQ6Om1heCgpID8gbmV4dExv
Z2ljYWxCb3R0b20oKSA6IG1fbmV4dFNoYXBlTG9naWNhbEJvdHRvbTsgfQorCitwcml2YXRlOgor
ICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyogbV9yZW5kZXJlcjsKKyAgICBpbnQgbV9iZWxvd0xv
Z2ljYWxIZWlnaHQ7CisgICAgaW50IG1fYWJvdmVMb2dpY2FsSGVpZ2h0OworICAgIExheW91dFVu
aXQgbV9uZXh0TG9naWNhbEJvdHRvbTsKKyAgICBMYXlvdXRVbml0IG1fbmV4dFNoYXBlTG9naWNh
bEJvdHRvbTsKK307CisKK2lubGluZSB2b2lkIEZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRh
cHRlcjo6Y29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVydmFsVHlwZSYgaW50ZXJ2YWwpCit7Cisg
ICAgY29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gaW50ZXJ2YWwuZGF0YSgp
OworICAgIGlmICghcmFuZ2VzSW50ZXJzZWN0KGludGVydmFsLmxvdygpLCBpbnRlcnZhbC5oaWdo
KCksIG1fYmVsb3dMb2dpY2FsSGVpZ2h0LCBtX2Fib3ZlTG9naWNhbEhlaWdodCkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIEFsbCB0aGUgb2JqZWN0cyByZXR1cm5lZCBmcm9tIHRoZSB0cmVl
IHNob3VsZCBiZSBhbHJlYWR5IHBsYWNlZC4KKyAgICBBU1NFUlQoZmxvYXRpbmdPYmplY3QtPmlz
UGxhY2VkKCkpOworICAgIEFTU0VSVChyYW5nZXNJbnRlcnNlY3QobV9yZW5kZXJlci0+cGl4ZWxT
bmFwcGVkTG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9yZW5kZXJlci0+cGl4
ZWxTbmFwcGVkTG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9iZWxvd0xv
Z2ljYWxIZWlnaHQsIG1fYWJvdmVMb2dpY2FsSGVpZ2h0KSk7CisKKyAgICBMYXlvdXRVbml0IGZs
b2F0Qm90dG9tID0gbV9yZW5kZXJlci0+bG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2Jq
ZWN0KTsKKyAgICBpZiAobV9uZXh0TG9naWNhbEJvdHRvbSA8IGZsb2F0Qm90dG9tKQorICAgICAg
ICByZXR1cm47CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICBpZiAoU2hhcGVPdXRzaWRl
SW5mbyogc2hhcGVPdXRzaWRlID0gZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCkuc2hhcGVPdXRz
aWRlSW5mbygpKSB7CisgICAgICAgIExheW91dFVuaXQgc2hhcGVCb3R0b20gPSBtX3JlbmRlcmVy
LT5sb2dpY2FsVG9wRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpICsgbV9yZW5kZXJlci0+bWFyZ2lu
QmVmb3JlRm9yQ2hpbGQoZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCkpICsgc2hhcGVPdXRzaWRl
LT5zaGFwZUxvZ2ljYWxCb3R0b20oKTsKKyAgICAgICAgLy8gVXNlIHRoZSBzaGFwZUJvdHRvbSB1
bmxlc3MgaXQgZXh0ZW5kcyBvdXRzaWRlIG9mIHRoZSBtYXJnaW4gYm94LCBpbiB3aGljaCBjYXNl
IGl0IGlzIGNsaXBwZWQuCisgICAgICAgIG1fbmV4dFNoYXBlTG9naWNhbEJvdHRvbSA9IG1pbihz
aGFwZUJvdHRvbSwgZmxvYXRCb3R0b20pOworICAgIH0gZWxzZQorICAgICAgICBtX25leHRTaGFw
ZUxvZ2ljYWxCb3R0b20gPSBmbG9hdEJvdHRvbTsKKyNlbmRpZgorICAgIG1fbmV4dExvZ2ljYWxC
b3R0b20gPSBmbG9hdEJvdHRvbTsKK30KKworTGF5b3V0VW5pdCBGbG9hdGluZ09iamVjdHM6OmZp
bmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3coTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQor
eworICAgIEZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlciBhZGFwdGVyKG1fcmVuZGVy
ZXIsIGxvZ2ljYWxIZWlnaHQpOworICAgIHBsYWNlZEZsb2F0c1RyZWUoKS5hbGxPdmVybGFwc1dp
dGhBZGFwdGVyKGFkYXB0ZXIpOworCisgICAgcmV0dXJuIGFkYXB0ZXIubmV4dFNoYXBlTG9naWNh
bEJvdHRvbSgpOworfQorCitMYXlvdXRVbml0IEZsb2F0aW5nT2JqZWN0czo6ZmluZE5leHRGbG9h
dExvZ2ljYWxCb3R0b21CZWxvd0ZvckJsb2NrKExheW91dFVuaXQgbG9naWNhbEhlaWdodCkKK3sK
KyAgICBGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXIgYWRhcHRlcihtX3JlbmRlcmVy
LCBsb2dpY2FsSGVpZ2h0KTsKKyAgICBwbGFjZWRGbG9hdHNUcmVlKCkuYWxsT3ZlcmxhcHNXaXRo
QWRhcHRlcihhZGFwdGVyKTsKKworICAgIHJldHVybiBhZGFwdGVyLm5leHRMb2dpY2FsQm90dG9t
KCk7Cit9CisKIEZsb2F0aW5nT2JqZWN0czo6RmxvYXRpbmdPYmplY3RzKGNvbnN0IFJlbmRlckJs
b2NrRmxvdyogcmVuZGVyZXIsIGJvb2wgaG9yaXpvbnRhbFdyaXRpbmdNb2RlKQogICAgIDogbV9w
bGFjZWRGbG9hdHNUcmVlKFVuaW5pdGlhbGl6ZWRUcmVlKQogICAgICwgbV9sZWZ0T2JqZWN0c0Nv
dW50KDApCkBAIC0zMDUsOCArMzk0LDcgQEAgaW5saW5lIExheW91dFVuaXQgQ29tcHV0ZUZsb2F0
T2Zmc2V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodD46OnNoYXBlT2YKIAogTGF5
b3V0VW5pdCBGbG9hdGluZ09iamVjdHM6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yUG9zaXRpb25pbmdG
bG9hdChMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91
dFVuaXQgKmhlaWdodFJlbWFpbmluZykKIHsKLSAgICBpbnQgbG9naWNhbFRvcEFzSW50ID0gcm91
bmRUb0ludChsb2dpY2FsVG9wKTsKLSAgICBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0
aW5nT2JqZWN0OjpGbG9hdExlZnQ+IGFkYXB0ZXIobV9yZW5kZXJlciwgbG9naWNhbFRvcEFzSW50
LCBsb2dpY2FsVG9wQXNJbnQsIGZpeGVkT2Zmc2V0KTsKKyAgICBDb21wdXRlRmxvYXRPZmZzZXRB
ZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+IGFkYXB0ZXIobV9yZW5kZXJlciwgbG9n
aWNhbFRvcCwgbG9naWNhbFRvcCwgZml4ZWRPZmZzZXQpOwogICAgIHBsYWNlZEZsb2F0c1RyZWUo
KS5hbGxPdmVybGFwc1dpdGhBZGFwdGVyKGFkYXB0ZXIpOwogCiAgICAgaWYgKGhlaWdodFJlbWFp
bmluZykKQEAgLTMxNyw4ICs0MDUsNyBAQCBMYXlvdXRVbml0IEZsb2F0aW5nT2JqZWN0czo6bG9n
aWNhbExlZnRPZmZzZXRGb3JQb3NpdGlvbmluZ0Zsb2F0KExheW91dFVuaXQgZml4ZQogCiBMYXlv
dXRVbml0IEZsb2F0aW5nT2JqZWN0czo6bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yUG9zaXRpb25pbmdG
bG9hdChMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91
dFVuaXQgKmhlaWdodFJlbWFpbmluZykKIHsKLSAgICBpbnQgbG9naWNhbFRvcEFzSW50ID0gcm91
bmRUb0ludChsb2dpY2FsVG9wKTsKLSAgICBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0
aW5nT2JqZWN0OjpGbG9hdFJpZ2h0PiBhZGFwdGVyKG1fcmVuZGVyZXIsIGxvZ2ljYWxUb3BBc0lu
dCwgbG9naWNhbFRvcEFzSW50LCBmaXhlZE9mZnNldCk7CisgICAgQ29tcHV0ZUZsb2F0T2Zmc2V0
QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodD4gYWRhcHRlcihtX3JlbmRlcmVyLCBs
b2dpY2FsVG9wLCBsb2dpY2FsVG9wLCBmaXhlZE9mZnNldCk7CiAgICAgcGxhY2VkRmxvYXRzVHJl
ZSgpLmFsbE92ZXJsYXBzV2l0aEFkYXB0ZXIoYWRhcHRlcik7CiAKICAgICBpZiAoaGVpZ2h0UmVt
YWluaW5nKQpAQCAtMzI5LDcgKzQxNiw3IEBAIExheW91dFVuaXQgRmxvYXRpbmdPYmplY3RzOjps
b2dpY2FsUmlnaHRPZmZzZXRGb3JQb3NpdGlvbmluZ0Zsb2F0KExheW91dFVuaXQgZml4CiAKIExh
eW91dFVuaXQgRmxvYXRpbmdPYmplY3RzOjpsb2dpY2FsTGVmdE9mZnNldChMYXlvdXRVbml0IGZp
eGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdo
dCkKIHsKLSAgICBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9h
dExlZnQ+IGFkYXB0ZXIobV9yZW5kZXJlciwgcm91bmRUb0ludChsb2dpY2FsVG9wKSwgcm91bmRU
b0ludChsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodCksIGZpeGVkT2Zmc2V0KTsKKyAgICBDb21w
dXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+IGFkYXB0ZXIo
bV9yZW5kZXJlciwgbG9naWNhbFRvcCwgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQsIGZpeGVk
T2Zmc2V0KTsKICAgICBwbGFjZWRGbG9hdHNUcmVlKCkuYWxsT3ZlcmxhcHNXaXRoQWRhcHRlcihh
ZGFwdGVyKTsKIAogICAgIHJldHVybiBhZGFwdGVyLnNoYXBlT2Zmc2V0KCk7CkBAIC0zMzcsMzIg
KzQyNCwxMiBAQCBMYXlvdXRVbml0IEZsb2F0aW5nT2JqZWN0czo6bG9naWNhbExlZnRPZmZzZXQo
TGF5b3V0VW5pdCBmaXhlZE9mZnNldCwgTGF5b3V0VW5pdAogCiBMYXlvdXRVbml0IEZsb2F0aW5n
T2JqZWN0czo6bG9naWNhbFJpZ2h0T2Zmc2V0KExheW91dFVuaXQgZml4ZWRPZmZzZXQsIExheW91
dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQogewotICAgIENvbXB1
dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+IGFkYXB0ZXIo
bV9yZW5kZXJlciwgcm91bmRUb0ludChsb2dpY2FsVG9wKSwgcm91bmRUb0ludChsb2dpY2FsVG9w
ICsgbG9naWNhbEhlaWdodCksIGZpeGVkT2Zmc2V0KTsKKyAgICBDb21wdXRlRmxvYXRPZmZzZXRB
ZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0PiBhZGFwdGVyKG1fcmVuZGVyZXIsIGxv
Z2ljYWxUb3AsIGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0LCBmaXhlZE9mZnNldCk7CiAgICAg
cGxhY2VkRmxvYXRzVHJlZSgpLmFsbE92ZXJsYXBzV2l0aEFkYXB0ZXIoYWRhcHRlcik7CiAKICAg
ICByZXR1cm4gbWluKGZpeGVkT2Zmc2V0LCBhZGFwdGVyLnNoYXBlT2Zmc2V0KCkpOwogfQogCi1p
bmxpbmUgc3RhdGljIGJvb2wgcmFuZ2VzSW50ZXJzZWN0KGludCBmbG9hdFRvcCwgaW50IGZsb2F0
Qm90dG9tLCBpbnQgb2JqZWN0VG9wLCBpbnQgb2JqZWN0Qm90dG9tKQotewotICAgIGlmIChvYmpl
Y3RUb3AgPj0gZmxvYXRCb3R0b20gfHwgb2JqZWN0Qm90dG9tIDwgZmxvYXRUb3ApCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRoZSB0b3Agb2YgdGhlIG9iamVjdCBvdmVybGFwcyB0
aGUgZmxvYXQKLSAgICBpZiAob2JqZWN0VG9wID49IGZsb2F0VG9wKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIC8vIFRoZSBvYmplY3QgZW5jbG9zZXMgdGhlIGZsb2F0Ci0gICAgaWYgKG9i
amVjdFRvcCA8IGZsb2F0VG9wICYmIG9iamVjdEJvdHRvbSA+IGZsb2F0Qm90dG9tKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoZSBib3R0b20gb2YgdGhlIG9iamVjdCBvdmVybGFw
cyB0aGUgZmxvYXQKLSAgICBpZiAob2JqZWN0Qm90dG9tID4gb2JqZWN0VG9wICYmIG9iamVjdEJv
dHRvbSA+IGZsb2F0VG9wICYmIG9iamVjdEJvdHRvbSA8PSBmbG9hdEJvdHRvbSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHRlbXBsYXRlPD4KIGlubGlu
ZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVm
dD46OnVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09i
amVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09i
amVjdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAppbmRl
eCA0N2VjN2JjZjZkNWMxYTAwN2ExNmQ2MzA1YjNmMWU4Y2M4NGNlNDhjLi4wYjQ3NWNmMzg1NWMy
MzE0ZDdmZDJjMGU2NGJhMGY2ZmJmMjU0ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb2F0aW5nT2JqZWN0cy5oCkBAIC0zMyw5ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKIGNsYXNzIFJlbmRlckJveDsKIAotLy8gRklYTUUgdGhp
cyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIFJlbmRlckJsb2NrRmxvdzo6bmV4dEZsb2F0TG9naWNh
bEJvdHRvbUJlbG93IGRvZXNuJ3QgbmVlZCBpdCBhbnltb3JlLiAoQnVnIDEyMzkzMSkKLWVudW0g
U2hhcGVPdXRzaWRlRmxvYXRPZmZzZXRNb2RlIHsgU2hhcGVPdXRzaWRlRmxvYXRTaGFwZU9mZnNl
dCwgU2hhcGVPdXRzaWRlRmxvYXRNYXJnaW5Cb3hPZmZzZXQgfTsKLQogY2xhc3MgRmxvYXRpbmdP
YmplY3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZsb2F0aW5nT2JqZWN0KTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xNDksNiArMTQ2LDkgQEAgcHVibGljOgog
ICAgIExheW91dFVuaXQgbG9naWNhbExlZnRPZmZzZXRGb3JQb3NpdGlvbmluZ0Zsb2F0KExheW91
dFVuaXQgZml4ZWRPZmZzZXQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCogaGVp
Z2h0UmVtYWluaW5nKTsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodE9mZnNldEZvclBvc2l0
aW9uaW5nRmxvYXQoTGF5b3V0VW5pdCBmaXhlZE9mZnNldCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
LCBMYXlvdXRVbml0KiBoZWlnaHRSZW1haW5pbmcpOwogCisgICAgTGF5b3V0VW5pdCBmaW5kTmV4
dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KExheW91dFVuaXQgbG9naWNhbEhlaWdodCk7CisgICAg
TGF5b3V0VW5pdCBmaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93Rm9yQmxvY2soTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0KTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQbGFjZWRG
bG9hdHNUcmVlKCk7CiAgICAgY29uc3QgRmxvYXRpbmdPYmplY3RUcmVlJiBwbGFjZWRGbG9hdHNU
cmVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwCmluZGV4IDRmNDg4YTk5
MzZjZjc2MDAxMTk2ODcyYjkzYjkyMTVlMDFjZGQ1MDIuLjU0MThhNDAzNzc2ZDMyNmRlYThjMmM1
YTM3NjY5ZjdlY2I4OGY0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
aW5lV2lkdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3Bw
CkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBMaW5lV2lkdGg6OmZpdEJlbG93RmxvYXRzKCkKICAg
ICBmbG9hdCBuZXdMaW5lTGVmdCA9IG1fbGVmdDsKICAgICBmbG9hdCBuZXdMaW5lUmlnaHQgPSBt
X3JpZ2h0OwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGZsb2F0TG9naWNhbEJvdHRvbSA9
IG1fYmxvY2submV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KGxhc3RGbG9hdExvZ2ljYWxCb3R0
b20sIFNoYXBlT3V0c2lkZUZsb2F0U2hhcGVPZmZzZXQpOworICAgICAgICBmbG9hdExvZ2ljYWxC
b3R0b20gPSBtX2Jsb2NrLm5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyhsYXN0RmxvYXRMb2dp
Y2FsQm90dG9tKTsKICAgICAgICAgaWYgKGZsb2F0TG9naWNhbEJvdHRvbSA8PSBsYXN0RmxvYXRM
b2dpY2FsQm90dG9tKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggOWRjNGU4NWI3N2YyZWQ1MjJjYzUxMzMy
MTIwNGJhN2IyNzdkMDJjYi4uMTJjZGI5NTY1MmRmZmQyZTA3NzcwODc1MGRlMjFkNWU1MzEwZWY3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAg
LTIyNzYsMzEgKzIyNzYsMjAgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmxvZ2ljYWxS
aWdodEZsb2F0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AKICAgICByZXR1cm4g
Zml4ZWRPZmZzZXQ7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjpuZXh0RmxvYXRM
b2dpY2FsQm90dG9tQmVsb3coTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTaGFwZU91dHNpZGVG
bG9hdE9mZnNldE1vZGUgb2Zmc2V0TW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQmxvY2tG
bG93OjpuZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3coTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0
KSBjb25zdAogewogICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMpCiAgICAgICAgIHJldHVybiBs
b2dpY2FsSGVpZ2h0OwogCi0gICAgTGF5b3V0VW5pdCBib3R0b20gPSBMYXlvdXRVbml0OjptYXgo
KTsKLSAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zs
b2F0aW5nT2JqZWN0cy0+c2V0KCk7Ci0gICAgYXV0byBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5l
bmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0g
aXQtPmdldCgpOwotICAgICAgICBMYXlvdXRVbml0IGZsb2F0Qm90dG9tID0gbG9naWNhbEJvdHRv
bUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsKLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICAg
ICAgU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlID0gZmxvYXRpbmdPYmplY3QtPnJlbmRl
cmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpOwotICAgICAgICBpZiAob2Zmc2V0TW9kZSA9PSBTaGFw
ZU91dHNpZGVGbG9hdFNoYXBlT2Zmc2V0ICYmIHNoYXBlT3V0c2lkZSkgewotICAgICAgICAgICAg
TGF5b3V0VW5pdCBzaGFwZUJvdHRvbSA9IGxvZ2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVj
dCkgKyBtYXJnaW5CZWZvcmVGb3JDaGlsZChmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKSkgKyBz
aGFwZU91dHNpZGUtPnNoYXBlTG9naWNhbEJvdHRvbSgpOwotICAgICAgICAgICAgLy8gVXNlIHRo
ZSBzaGFwZUJvdHRvbSB1bmxlc3MgaXQgZXh0ZW5kcyBvdXRzaWRlIG9mIHRoZSBtYXJnaW4gYm94
LCBpbiB3aGljaCBjYXNlIGl0IGlzIGNsaXBwZWQuCi0gICAgICAgICAgICBpZiAoc2hhcGVCb3R0
b20gPCBmbG9hdEJvdHRvbSkKLSAgICAgICAgICAgICAgICBmbG9hdEJvdHRvbSA9IHNoYXBlQm90
dG9tOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKGZsb2F0Qm90dG9tID4gbG9naWNh
bEhlaWdodCkKLSAgICAgICAgICAgIGJvdHRvbSA9IG1pbihmbG9hdEJvdHRvbSwgYm90dG9tKTsK
LSAgICB9CisgICAgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzLT5maW5kTmV4dEZsb2F0TG9naWNh
bEJvdHRvbUJlbG93KGxvZ2ljYWxIZWlnaHQpOworfQorCitMYXlvdXRVbml0IFJlbmRlckJsb2Nr
Rmxvdzo6bmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93Rm9yQmxvY2soTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0KSBjb25zdAoreworICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMpCisgICAgICAg
IHJldHVybiBsb2dpY2FsSGVpZ2h0OwogCi0gICAgcmV0dXJuIGJvdHRvbSA9PSBMYXlvdXRVbml0
OjptYXgoKSA/IExheW91dFVuaXQoKSA6IGJvdHRvbTsKKyAgICByZXR1cm4gbV9mbG9hdGluZ09i
amVjdHMtPmZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3dGb3JCbG9jayhsb2dpY2FsSGVp
Z2h0KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6Omxvd2VzdEZsb2F0TG9naWNh
bEJvdHRvbShGbG9hdGluZ09iamVjdDo6VHlwZSBmbG9hdFR5cGUpIGNvbnN0CkBAIC0yNTUyLDcg
KzI1NDEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6Z2V0Q2xlYXJEZWx0YShSZW5k
ZXJCb3gmIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxUbwogICAgICAgICAgICAgICAgIHJldHVy
biBuZXdMb2dpY2FsVG9wIC0gbG9naWNhbFRvcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgbmV3TG9naWNhbFRvcCA9IG5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyhuZXdMb2dpY2Fs
VG9wKTsKKyAgICAgICAgICAgIG5ld0xvZ2ljYWxUb3AgPSBuZXh0RmxvYXRMb2dpY2FsQm90dG9t
QmVsb3dGb3JCbG9jayhuZXdMb2dpY2FsVG9wKTsKICAgICAgICAgICAgIEFTU0VSVChuZXdMb2dp
Y2FsVG9wID49IGxvZ2ljYWxUb3ApOwogICAgICAgICAgICAgaWYgKG5ld0xvZ2ljYWxUb3AgPCBs
b2dpY2FsVG9wKQogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IGU3MTFkYzA3N2ZhOTAxZWY3ZmU4M2M4ZjE1NjY0
ODY5MDg4YjczNDYuLjAxMmZjMmM5NDgwNjY5M2M2YjhhMWVlNThlZDAyMGM3NTE2Y2EzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTQyMyw3ICs0
MjMsOCBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgbG9naWNhbExlZnRPZmZzZXRGb3JQb3Np
dGlvbmluZ0Zsb2F0KExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBmaXhlZE9mZnNl
dCwgYm9vbCBhcHBseVRleHRJbmRlbnQsIExheW91dFVuaXQqIGhlaWdodFJlbWFpbmluZykgY29u
c3Q7CiAKICAgICBMYXlvdXRVbml0IGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbShGbG9hdGluZ09i
amVjdDo6VHlwZSA9IEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnRSaWdodCkgY29uc3Q7IAotICAg
IExheW91dFVuaXQgbmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KExheW91dFVuaXQsIFNoYXBl
T3V0c2lkZUZsb2F0T2Zmc2V0TW9kZSA9IFNoYXBlT3V0c2lkZUZsb2F0TWFyZ2luQm94T2Zmc2V0
KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IG5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyhMYXlv
dXRVbml0KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IG5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxv
d0ZvckJsb2NrKExheW91dFVuaXQpIGNvbnN0OwogICAgIAogICAgIExheW91dFVuaXQgYWRkT3Zl
cmhhbmdpbmdGbG9hdHMoUmVuZGVyQmxvY2tGbG93JiBjaGlsZCwgYm9vbCBtYWtlQ2hpbGRQYWlu
dE90aGVyRmxvYXRzKTsKICAgICBib29sIGhhc092ZXJoYW5naW5nRmxvYXQoUmVuZGVyQm94Jik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216431</attachid>
            <date>2013-11-08 13:28:08 -0800</date>
            <delta_ts>2013-11-08 13:59:35 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>bug-123931-20131108132808.patch</filename>
            <type>text/plain</type>
            <size>16410</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRlMzZjZmEwZWQzN2Uw
MWM0YzBiNjI2MGQ3MmI2MzNhODJhZDI5Ny4uMDUzMDE2OGUwZmI5YjMyMDljNjYxMjEzYzY1ZDU2
YjBiM2FlMWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTExLTA4ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIFJlbmRlckJsb2NrRmxv
dzo6bmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93IHNob3VsZCBub3QgdXNlIFNoYXBlT3V0c2lk
ZUZsb2F0T2Zmc2V0TW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIzOTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAg
ICAgICBSZXdyaXRlIG5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyB0byB1c2UgdGhlIHBsYWNl
ZCBmbG9hdHMgdHJlZSBmb3IKKyAgICAgICAgdGhlIHNlYXJjaCBhbmQgdG8gbm90IG5lZWQgU2hh
cGVPdXRzaWRlRmxvYXRPZmZzZXRNb2RlIGFueW1vcmUuIFRoaXMKKyAgICAgICAgbW92ZXMgYWxt
b3N0IGFsbCBvZiB0aGUgbG9naWMgaW50byBGbG9hdGluZ09iamVjdHMsIG1ha2luZyBhIHNtYWxs
CisgICAgICAgIHJlZHVjdGlvbiBpbiB0aGUgYW1vdW50IHRoYXQgUmVuZGVyQmxvY2tGbG93IG5l
ZWRzIHRvIGtub3cgYWJvdXQgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIEZsb2F0aW5n
T2JqZWN0cy4KKworICAgICAgICBJbiBhZGRpdGlvbiwgY2hhbmdlIENvbXB1dGVGbG9hdE9mZnNl
dEFkYXB0ZXIgdG8gdGFrZSBpbiBMYXlvdXRVbml0cworICAgICAgICBhbmQgcm91bmRUb0ludCBp
dHNlbGYgc28gdGhhdCBhbGwgb2YgaXQncyBjYWxsZXJzIGNhbiBiZSBzaW1wbGlmaWVkLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gbmV3IGJlaGF2aW9yLgorCisgICAgICAgICogcmVuZGVy
aW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyYW5nZXNJbnRlcnNl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZUZsb2F0T2Zmc2V0QWRhcHRlcjo6Q29tcHV0
ZUZsb2F0T2Zmc2V0QWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpGaW5kTmV4dEZsb2F0TG9n
aWNhbEJvdHRvbUFkYXB0ZXI6OkZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXI6Omxvd1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRl
cjo6aGlnaFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbmROZXh0RmxvYXRMb2dpY2FsQm90
dG9tQWRhcHRlcjo6bmV4dExvZ2ljYWxCb3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6RmluZE5l
eHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVyOjpuZXh0U2hhcGVMb2dpY2FsQm90dG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlcjo6Y29sbGVj
dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0czo6ZmluZE5leHRG
bG9hdExvZ2ljYWxCb3R0b21CZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVj
dHM6OmZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3dGb3JCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yUG9zaXRpb25pbmdG
bG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OmxvZ2ljYWxSaWdodE9m
ZnNldEZvclBvc2l0aW9uaW5nRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmpl
Y3RzOjpsb2dpY2FsTGVmdE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVj
dHM6OmxvZ2ljYWxSaWdodE9mZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2Jq
ZWN0cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9MaW5lV2lkdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZVdpZHRoOjpmaXRCZWxvd0Zsb2F0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Om5l
eHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6Om5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvd0ZvckJsb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Z2V0Q2xlYXJEZWx0YSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oOgorCiAyMDEzLTExLTA4ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIGJyZWFrcG9pbnQgKGFuZCBleGNlcHRpb24gYnJl
YWspIGZ1bmN0aW9uYWxpdHkgaW50byBKU0M6OkRlYnVnZ2VyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCBhN2E3OTA3ZGE2YzZiZGE3ZmI4NDhm
N2JkMzQ1MGM2MjBkYmJlODY4Li40YTA0YWRlNWYwZjE1YmRhZGViZTE2ZGUxZDA1M2UxZTY3OGZk
M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3Rz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApA
QCAtMTAwLDE1ICsxMDAsMzUgQEAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9h
dGluZ09iamVjdDo6dW5zYWZlQ2xvbmUoKSBjb25zdAogICAgIHJldHVybiBjbG9uZU9iamVjdDsK
IH0KIAoraW5saW5lIHN0YXRpYyBib29sIHJhbmdlc0ludGVyc2VjdChpbnQgZmxvYXRUb3AsIGlu
dCBmbG9hdEJvdHRvbSwgaW50IG9iamVjdFRvcCwgaW50IG9iamVjdEJvdHRvbSkKK3sKKyAgICBp
ZiAob2JqZWN0VG9wID49IGZsb2F0Qm90dG9tIHx8IG9iamVjdEJvdHRvbSA8IGZsb2F0VG9wKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgdG9wIG9mIHRoZSBvYmplY3Qgb3Zl
cmxhcHMgdGhlIGZsb2F0CisgICAgaWYgKG9iamVjdFRvcCA+PSBmbG9hdFRvcCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyBUaGUgb2JqZWN0IGVuY2xvc2VzIHRoZSBmbG9hdAorICAg
IGlmIChvYmplY3RUb3AgPCBmbG9hdFRvcCAmJiBvYmplY3RCb3R0b20gPiBmbG9hdEJvdHRvbSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBUaGUgYm90dG9tIG9mIHRoZSBvYmplY3Qg
b3ZlcmxhcHMgdGhlIGZsb2F0CisgICAgaWYgKG9iamVjdEJvdHRvbSA+IG9iamVjdFRvcCAmJiBv
YmplY3RCb3R0b20gPiBmbG9hdFRvcCAmJiBvYmplY3RCb3R0b20gPD0gZmxvYXRCb3R0b20pCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB0ZW1wbGF0ZSA8
RmxvYXRpbmdPYmplY3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+CiBjbGFzcyBDb21wdXRlRmxvYXRP
ZmZzZXRBZGFwdGVyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEZsb2F0aW5nT2JqZWN0SW50ZXJ2
YWwgSW50ZXJ2YWxUeXBlOwogCi0gICAgQ29tcHV0ZUZsb2F0T2Zmc2V0QWRhcHRlcihjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cqIHJlbmRlcmVyLCBpbnQgbGluZVRvcCwgaW50IGxpbmVCb3R0b20sIExh
eW91dFVuaXQgb2Zmc2V0KQorICAgIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXIoY29uc3QgUmVu
ZGVyQmxvY2tGbG93KiByZW5kZXJlciwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxp
bmVCb3R0b20sIExheW91dFVuaXQgb2Zmc2V0KQogICAgICAgICA6IG1fcmVuZGVyZXIocmVuZGVy
ZXIpCi0gICAgICAgICwgbV9saW5lVG9wKGxpbmVUb3ApCi0gICAgICAgICwgbV9saW5lQm90dG9t
KGxpbmVCb3R0b20pCisgICAgICAgICwgbV9saW5lVG9wKHJvdW5kVG9JbnQobGluZVRvcCkpCisg
ICAgICAgICwgbV9saW5lQm90dG9tKHJvdW5kVG9JbnQobGluZUJvdHRvbSkpCiAgICAgICAgICwg
bV9vZmZzZXQob2Zmc2V0KQogICAgICAgICAsIG1fb3V0ZXJtb3N0RmxvYXQoMCkKICAgICB7CkBA
IC0xMzIsNiArMTUyLDc1IEBAIHByaXZhdGU6CiAgICAgY29uc3QgRmxvYXRpbmdPYmplY3QqIG1f
b3V0ZXJtb3N0RmxvYXQ7CiB9OwogCitjbGFzcyBGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFk
YXB0ZXIgeworcHVibGljOgorICAgIHR5cGVkZWYgRmxvYXRpbmdPYmplY3RJbnRlcnZhbCBJbnRl
cnZhbFR5cGU7CisKKyAgICBGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXIoY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiByZW5kZXJlciwgTGF5b3V0VW5pdCBiZWxvd0xvZ2ljYWxIZWlnaHQp
CisgICAgICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKKyAgICAgICAgLCBtX2JlbG93TG9naWNh
bEhlaWdodChmbG9vclRvSW50KGJlbG93TG9naWNhbEhlaWdodCkpCisgICAgICAgICwgbV9hYm92
ZUxvZ2ljYWxIZWlnaHQocm91bmRUb0ludChMYXlvdXRVbml0OjptYXgoKSkpCisgICAgICAgICwg
bV9uZXh0TG9naWNhbEJvdHRvbShMYXlvdXRVbml0OjptYXgoKSkKKyAgICAgICAgLCBtX25leHRT
aGFwZUxvZ2ljYWxCb3R0b20oTGF5b3V0VW5pdDo6bWF4KCkpCisgICAgeworICAgIH0KKworICAg
IGludCBsb3dWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmVsb3dMb2dpY2FsSGVpZ2h0OyB9Cisg
ICAgaW50IGhpZ2hWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJvdmVMb2dpY2FsSGVpZ2h0OyB9
CisgICAgdm9pZCBjb2xsZWN0SWZOZWVkZWQoY29uc3QgSW50ZXJ2YWxUeXBlJik7CisKKyAgICBM
YXlvdXRVbml0IG5leHRMb2dpY2FsQm90dG9tKCkgeyByZXR1cm4gbV9uZXh0TG9naWNhbEJvdHRv
bSA9PSBMYXlvdXRVbml0OjptYXgoKSA/IExheW91dFVuaXQoKSA6IG1fbmV4dExvZ2ljYWxCb3R0
b207IH0KKyAgICBMYXlvdXRVbml0IG5leHRTaGFwZUxvZ2ljYWxCb3R0b20oKSB7IHJldHVybiBt
X25leHRTaGFwZUxvZ2ljYWxCb3R0b20gPT0gTGF5b3V0VW5pdDo6bWF4KCkgPyBuZXh0TG9naWNh
bEJvdHRvbSgpIDogbV9uZXh0U2hhcGVMb2dpY2FsQm90dG9tOyB9CisKK3ByaXZhdGU6CisgICAg
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBtX3JlbmRlcmVyOworICAgIGludCBtX2JlbG93TG9naWNh
bEhlaWdodDsKKyAgICBpbnQgbV9hYm92ZUxvZ2ljYWxIZWlnaHQ7CisgICAgTGF5b3V0VW5pdCBt
X25leHRMb2dpY2FsQm90dG9tOworICAgIExheW91dFVuaXQgbV9uZXh0U2hhcGVMb2dpY2FsQm90
dG9tOworfTsKKworaW5saW5lIHZvaWQgRmluZE5leHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVy
Ojpjb2xsZWN0SWZOZWVkZWQoY29uc3QgSW50ZXJ2YWxUeXBlJiBpbnRlcnZhbCkKK3sKKyAgICBj
b25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpbnRlcnZhbC5kYXRhKCk7Cisg
ICAgaWYgKCFyYW5nZXNJbnRlcnNlY3QoaW50ZXJ2YWwubG93KCksIGludGVydmFsLmhpZ2goKSwg
bV9iZWxvd0xvZ2ljYWxIZWlnaHQsIG1fYWJvdmVMb2dpY2FsSGVpZ2h0KSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gQWxsIHRoZSBvYmplY3RzIHJldHVybmVkIGZyb20gdGhlIHRyZWUgc2hv
dWxkIGJlIGFscmVhZHkgcGxhY2VkLgorICAgIEFTU0VSVChmbG9hdGluZ09iamVjdC0+aXNQbGFj
ZWQoKSk7CisgICAgQVNTRVJUKHJhbmdlc0ludGVyc2VjdChtX3JlbmRlcmVyLnBpeGVsU25hcHBl
ZExvZ2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVjdCksIG1fcmVuZGVyZXIucGl4ZWxTbmFw
cGVkTG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9iZWxvd0xvZ2ljYWxI
ZWlnaHQsIG1fYWJvdmVMb2dpY2FsSGVpZ2h0KSk7CisKKyAgICBMYXlvdXRVbml0IGZsb2F0Qm90
dG9tID0gbV9yZW5kZXJlci5sb2dpY2FsQm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOwor
ICAgIGlmIChtX25leHRMb2dpY2FsQm90dG9tIDwgZmxvYXRCb3R0b20pCisgICAgICAgIHJldHVy
bjsKKworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBz
aGFwZU91dHNpZGUgPSBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZv
KCkpIHsKKyAgICAgICAgTGF5b3V0VW5pdCBzaGFwZUJvdHRvbSA9IG1fcmVuZGVyZXIubG9naWNh
bFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSArIG1fcmVuZGVyZXIubWFyZ2luQmVmb3JlRm9y
Q2hpbGQoZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCkpICsgc2hhcGVPdXRzaWRlLT5zaGFwZUxv
Z2ljYWxCb3R0b20oKTsKKyAgICAgICAgLy8gVXNlIHRoZSBzaGFwZUJvdHRvbSB1bmxlc3MgaXQg
ZXh0ZW5kcyBvdXRzaWRlIG9mIHRoZSBtYXJnaW4gYm94LCBpbiB3aGljaCBjYXNlIGl0IGlzIGNs
aXBwZWQuCisgICAgICAgIG1fbmV4dFNoYXBlTG9naWNhbEJvdHRvbSA9IG1pbihzaGFwZUJvdHRv
bSwgZmxvYXRCb3R0b20pOworICAgIH0gZWxzZQorICAgICAgICBtX25leHRTaGFwZUxvZ2ljYWxC
b3R0b20gPSBmbG9hdEJvdHRvbTsKKyNlbmRpZgorICAgIG1fbmV4dExvZ2ljYWxCb3R0b20gPSBm
bG9hdEJvdHRvbTsKK30KKworTGF5b3V0VW5pdCBGbG9hdGluZ09iamVjdHM6OmZpbmROZXh0Rmxv
YXRMb2dpY2FsQm90dG9tQmVsb3coTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQoreworICAgIEZp
bmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlciBhZGFwdGVyKCptX3JlbmRlcmVyLCBsb2dp
Y2FsSGVpZ2h0KTsKKyAgICBwbGFjZWRGbG9hdHNUcmVlKCkuYWxsT3ZlcmxhcHNXaXRoQWRhcHRl
cihhZGFwdGVyKTsKKworICAgIHJldHVybiBhZGFwdGVyLm5leHRTaGFwZUxvZ2ljYWxCb3R0b20o
KTsKK30KKworTGF5b3V0VW5pdCBGbG9hdGluZ09iamVjdHM6OmZpbmROZXh0RmxvYXRMb2dpY2Fs
Qm90dG9tQmVsb3dGb3JCbG9jayhMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCit7CisgICAgRmlu
ZE5leHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVyIGFkYXB0ZXIoKm1fcmVuZGVyZXIsIGxvZ2lj
YWxIZWlnaHQpOworICAgIHBsYWNlZEZsb2F0c1RyZWUoKS5hbGxPdmVybGFwc1dpdGhBZGFwdGVy
KGFkYXB0ZXIpOworCisgICAgcmV0dXJuIGFkYXB0ZXIubmV4dExvZ2ljYWxCb3R0b20oKTsKK30K
KwogRmxvYXRpbmdPYmplY3RzOjpGbG9hdGluZ09iamVjdHMoY29uc3QgUmVuZGVyQmxvY2tGbG93
KiByZW5kZXJlciwgYm9vbCBob3Jpem9udGFsV3JpdGluZ01vZGUpCiAgICAgOiBtX3BsYWNlZEZs
b2F0c1RyZWUoVW5pbml0aWFsaXplZFRyZWUpCiAgICAgLCBtX2xlZnRPYmplY3RzQ291bnQoMCkK
QEAgLTMwNSw4ICszOTQsNyBAQCBpbmxpbmUgTGF5b3V0VW5pdCBDb21wdXRlRmxvYXRPZmZzZXRB
ZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6c2hhcGVPZgogCiBMYXlvdXRVbml0
IEZsb2F0aW5nT2JqZWN0czo6bG9naWNhbExlZnRPZmZzZXRGb3JQb3NpdGlvbmluZ0Zsb2F0KExh
eW91dFVuaXQgZml4ZWRPZmZzZXQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCAq
aGVpZ2h0UmVtYWluaW5nKQogewotICAgIGludCBsb2dpY2FsVG9wQXNJbnQgPSByb3VuZFRvSW50
KGxvZ2ljYWxUb3ApOwotICAgIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRpbmdPYmpl
Y3Q6OkZsb2F0TGVmdD4gYWRhcHRlcihtX3JlbmRlcmVyLCBsb2dpY2FsVG9wQXNJbnQsIGxvZ2lj
YWxUb3BBc0ludCwgZml4ZWRPZmZzZXQpOworICAgIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8
RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD4gYWRhcHRlcihtX3JlbmRlcmVyLCBsb2dpY2FsVG9w
LCBsb2dpY2FsVG9wLCBmaXhlZE9mZnNldCk7CiAgICAgcGxhY2VkRmxvYXRzVHJlZSgpLmFsbE92
ZXJsYXBzV2l0aEFkYXB0ZXIoYWRhcHRlcik7CiAKICAgICBpZiAoaGVpZ2h0UmVtYWluaW5nKQpA
QCAtMzE3LDggKzQwNSw3IEBAIExheW91dFVuaXQgRmxvYXRpbmdPYmplY3RzOjpsb2dpY2FsTGVm
dE9mZnNldEZvclBvc2l0aW9uaW5nRmxvYXQoTGF5b3V0VW5pdCBmaXhlCiAKIExheW91dFVuaXQg
RmxvYXRpbmdPYmplY3RzOjpsb2dpY2FsUmlnaHRPZmZzZXRGb3JQb3NpdGlvbmluZ0Zsb2F0KExh
eW91dFVuaXQgZml4ZWRPZmZzZXQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCAq
aGVpZ2h0UmVtYWluaW5nKQogewotICAgIGludCBsb2dpY2FsVG9wQXNJbnQgPSByb3VuZFRvSW50
KGxvZ2ljYWxUb3ApOwotICAgIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRpbmdPYmpl
Y3Q6OkZsb2F0UmlnaHQ+IGFkYXB0ZXIobV9yZW5kZXJlciwgbG9naWNhbFRvcEFzSW50LCBsb2dp
Y2FsVG9wQXNJbnQsIGZpeGVkT2Zmc2V0KTsKKyAgICBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVy
PEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0PiBhZGFwdGVyKG1fcmVuZGVyZXIsIGxvZ2ljYWxU
b3AsIGxvZ2ljYWxUb3AsIGZpeGVkT2Zmc2V0KTsKICAgICBwbGFjZWRGbG9hdHNUcmVlKCkuYWxs
T3ZlcmxhcHNXaXRoQWRhcHRlcihhZGFwdGVyKTsKIAogICAgIGlmIChoZWlnaHRSZW1haW5pbmcp
CkBAIC0zMjksNyArNDE2LDcgQEAgTGF5b3V0VW5pdCBGbG9hdGluZ09iamVjdHM6OmxvZ2ljYWxS
aWdodE9mZnNldEZvclBvc2l0aW9uaW5nRmxvYXQoTGF5b3V0VW5pdCBmaXgKIAogTGF5b3V0VW5p
dCBGbG9hdGluZ09iamVjdHM6OmxvZ2ljYWxMZWZ0T2Zmc2V0KExheW91dFVuaXQgZml4ZWRPZmZz
ZXQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQogewot
ICAgIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD4g
YWRhcHRlcihtX3JlbmRlcmVyLCByb3VuZFRvSW50KGxvZ2ljYWxUb3ApLCByb3VuZFRvSW50KGxv
Z2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0KSwgZml4ZWRPZmZzZXQpOworICAgIENvbXB1dGVGbG9h
dE9mZnNldEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD4gYWRhcHRlcihtX3JlbmRl
cmVyLCBsb2dpY2FsVG9wLCBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodCwgZml4ZWRPZmZzZXQp
OwogICAgIHBsYWNlZEZsb2F0c1RyZWUoKS5hbGxPdmVybGFwc1dpdGhBZGFwdGVyKGFkYXB0ZXIp
OwogCiAgICAgcmV0dXJuIGFkYXB0ZXIuc2hhcGVPZmZzZXQoKTsKQEAgLTMzNywzMiArNDI0LDEy
IEBAIExheW91dFVuaXQgRmxvYXRpbmdPYmplY3RzOjpsb2dpY2FsTGVmdE9mZnNldChMYXlvdXRV
bml0IGZpeGVkT2Zmc2V0LCBMYXlvdXRVbml0CiAKIExheW91dFVuaXQgRmxvYXRpbmdPYmplY3Rz
Ojpsb2dpY2FsUmlnaHRPZmZzZXQoTGF5b3V0VW5pdCBmaXhlZE9mZnNldCwgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCiB7Ci0gICAgQ29tcHV0ZUZsb2F0
T2Zmc2V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodD4gYWRhcHRlcihtX3JlbmRl
cmVyLCByb3VuZFRvSW50KGxvZ2ljYWxUb3ApLCByb3VuZFRvSW50KGxvZ2ljYWxUb3AgKyBsb2dp
Y2FsSGVpZ2h0KSwgZml4ZWRPZmZzZXQpOworICAgIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8
RmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+IGFkYXB0ZXIobV9yZW5kZXJlciwgbG9naWNhbFRv
cCwgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQsIGZpeGVkT2Zmc2V0KTsKICAgICBwbGFjZWRG
bG9hdHNUcmVlKCkuYWxsT3ZlcmxhcHNXaXRoQWRhcHRlcihhZGFwdGVyKTsKIAogICAgIHJldHVy
biBtaW4oZml4ZWRPZmZzZXQsIGFkYXB0ZXIuc2hhcGVPZmZzZXQoKSk7CiB9CiAKLWlubGluZSBz
dGF0aWMgYm9vbCByYW5nZXNJbnRlcnNlY3QoaW50IGZsb2F0VG9wLCBpbnQgZmxvYXRCb3R0b20s
IGludCBvYmplY3RUb3AsIGludCBvYmplY3RCb3R0b20pCi17Ci0gICAgaWYgKG9iamVjdFRvcCA+
PSBmbG9hdEJvdHRvbSB8fCBvYmplY3RCb3R0b20gPCBmbG9hdFRvcCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gVGhlIHRvcCBvZiB0aGUgb2JqZWN0IG92ZXJsYXBzIHRoZSBmbG9h
dAotICAgIGlmIChvYmplY3RUb3AgPj0gZmxvYXRUb3ApCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gVGhlIG9iamVjdCBlbmNsb3NlcyB0aGUgZmxvYXQKLSAgICBpZiAob2JqZWN0VG9w
IDwgZmxvYXRUb3AgJiYgb2JqZWN0Qm90dG9tID4gZmxvYXRCb3R0b20pCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgLy8gVGhlIGJvdHRvbSBvZiB0aGUgb2JqZWN0IG92ZXJsYXBzIHRoZSBm
bG9hdAotICAgIGlmIChvYmplY3RCb3R0b20gPiBvYmplY3RUb3AgJiYgb2JqZWN0Qm90dG9tID4g
ZmxvYXRUb3AgJiYgb2JqZWN0Qm90dG9tIDw9IGZsb2F0Qm90dG9tKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdGVtcGxhdGU8PgogaW5saW5lIGJvb2wg
Q29tcHV0ZUZsb2F0T2Zmc2V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBk
YXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCmluZGV4IDQ3ZWM3
YmNmNmQ1YzFhMDA3YTE2ZDYzMDViM2YxZThjYzg0Y2U0OGMuLjBiNDc1Y2YzODU1YzIzMTRkN2Zk
MmMwZTY0YmEwZjZmYmYyNTRmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GbG9hdGluZ09iamVjdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRp
bmdPYmplY3RzLmgKQEAgLTMzLDkgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVuZGVyQmxvY2tGbG93OwogY2xhc3MgUmVuZGVyQm94OwogCi0vLyBGSVhNRSB0aGlzIHNob3Vs
ZCBiZSByZW1vdmVkIG9uY2UgUmVuZGVyQmxvY2tGbG93OjpuZXh0RmxvYXRMb2dpY2FsQm90dG9t
QmVsb3cgZG9lc24ndCBuZWVkIGl0IGFueW1vcmUuIChCdWcgMTIzOTMxKQotZW51bSBTaGFwZU91
dHNpZGVGbG9hdE9mZnNldE1vZGUgeyBTaGFwZU91dHNpZGVGbG9hdFNoYXBlT2Zmc2V0LCBTaGFw
ZU91dHNpZGVGbG9hdE1hcmdpbkJveE9mZnNldCB9OwotCiBjbGFzcyBGbG9hdGluZ09iamVjdCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmxvYXRpbmdPYmplY3QpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTE0OSw2ICsxNDYsOSBAQCBwdWJsaWM6CiAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdE9mZnNldEZvclBvc2l0aW9uaW5nRmxvYXQoTGF5b3V0VW5pdCBm
aXhlZE9mZnNldCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0KiBoZWlnaHRSZW1h
aW5pbmcpOwogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yUG9zaXRpb25pbmdG
bG9hdChMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91
dFVuaXQqIGhlaWdodFJlbWFpbmluZyk7CiAKKyAgICBMYXlvdXRVbml0IGZpbmROZXh0RmxvYXRM
b2dpY2FsQm90dG9tQmVsb3coTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KTsKKyAgICBMYXlvdXRV
bml0IGZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3dGb3JCbG9jayhMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQpOworCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVBsYWNlZEZsb2F0c1Ry
ZWUoKTsKICAgICBjb25zdCBGbG9hdGluZ09iamVjdFRyZWUmIHBsYWNlZEZsb2F0c1RyZWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKaW5kZXggNGY0ODhhOTkzNmNmNzYw
MDExOTY4NzJiOTNiOTIxNWUwMWNkZDUwMi4uNTQxOGE0MDM3NzZkMzI2ZGVhOGMyYzVhMzc2Njlm
N2VjYjg4ZjQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKQEAgLTE4
MSw3ICsxODEsNyBAQCB2b2lkIExpbmVXaWR0aDo6Zml0QmVsb3dGbG9hdHMoKQogICAgIGZsb2F0
IG5ld0xpbmVMZWZ0ID0gbV9sZWZ0OwogICAgIGZsb2F0IG5ld0xpbmVSaWdodCA9IG1fcmlnaHQ7
CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgZmxvYXRMb2dpY2FsQm90dG9tID0gbV9ibG9j
ay5uZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3cobGFzdEZsb2F0TG9naWNhbEJvdHRvbSwgU2hh
cGVPdXRzaWRlRmxvYXRTaGFwZU9mZnNldCk7CisgICAgICAgIGZsb2F0TG9naWNhbEJvdHRvbSA9
IG1fYmxvY2submV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KGxhc3RGbG9hdExvZ2ljYWxCb3R0
b20pOwogICAgICAgICBpZiAoZmxvYXRMb2dpY2FsQm90dG9tIDw9IGxhc3RGbG9hdExvZ2ljYWxC
b3R0b20pCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA5ZGM0ZTg1Yjc3ZjJlZDUyMmNjNTEzMzIxMjA0YmE3
YjI3N2QwMmNiLi4xMmNkYjk1NjUyZGZmZDJlMDc3NzA4NzUwZGUyMWQ1ZTUzMTBlZjc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMjI3Niwz
MSArMjI3NiwyMCBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6bG9naWNhbFJpZ2h0Rmxv
YXRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgbG9naWNhbFRvcAogICAgIHJldHVybiBmaXhlZE9m
ZnNldDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6Om5leHRGbG9hdExvZ2ljYWxC
b3R0b21CZWxvdyhMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNoYXBlT3V0c2lkZUZsb2F0T2Zm
c2V0TW9kZSBvZmZzZXRNb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6Om5l
eHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyhMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykKICAgICAgICAgcmV0dXJuIGxvZ2ljYWxI
ZWlnaHQ7CiAKLSAgICBMYXlvdXRVbml0IGJvdHRvbSA9IExheW91dFVuaXQ6Om1heCgpOwotICAg
IGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdP
YmplY3RzLT5zZXQoKTsKLSAgICBhdXRvIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwot
ICAgIGZvciAoYXV0byBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0
KCk7Ci0gICAgICAgIExheW91dFVuaXQgZmxvYXRCb3R0b20gPSBsb2dpY2FsQm90dG9tRm9yRmxv
YXQoZmxvYXRpbmdPYmplY3QpOwotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgICAgICBTaGFw
ZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGUgPSBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5z
aGFwZU91dHNpZGVJbmZvKCk7Ci0gICAgICAgIGlmIChvZmZzZXRNb2RlID09IFNoYXBlT3V0c2lk
ZUZsb2F0U2hhcGVPZmZzZXQgJiYgc2hhcGVPdXRzaWRlKSB7Ci0gICAgICAgICAgICBMYXlvdXRV
bml0IHNoYXBlQm90dG9tID0gbG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSArIG1h
cmdpbkJlZm9yZUZvckNoaWxkKGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpKSArIHNoYXBlT3V0
c2lkZS0+c2hhcGVMb2dpY2FsQm90dG9tKCk7Ci0gICAgICAgICAgICAvLyBVc2UgdGhlIHNoYXBl
Qm90dG9tIHVubGVzcyBpdCBleHRlbmRzIG91dHNpZGUgb2YgdGhlIG1hcmdpbiBib3gsIGluIHdo
aWNoIGNhc2UgaXQgaXMgY2xpcHBlZC4KLSAgICAgICAgICAgIGlmIChzaGFwZUJvdHRvbSA8IGZs
b2F0Qm90dG9tKQotICAgICAgICAgICAgICAgIGZsb2F0Qm90dG9tID0gc2hhcGVCb3R0b207Ci0g
ICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAoZmxvYXRCb3R0b20gPiBsb2dpY2FsSGVpZ2h0
KQotICAgICAgICAgICAgYm90dG9tID0gbWluKGZsb2F0Qm90dG9tLCBib3R0b20pOwotICAgIH0K
KyAgICByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMtPmZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9t
QmVsb3cobG9naWNhbEhlaWdodCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93Ojpu
ZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3dGb3JCbG9jayhMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykKKyAgICAgICAgcmV0dXJu
IGxvZ2ljYWxIZWlnaHQ7CiAKLSAgICByZXR1cm4gYm90dG9tID09IExheW91dFVuaXQ6Om1heCgp
ID8gTGF5b3V0VW5pdCgpIDogYm90dG9tOworICAgIHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cy0+
ZmluZE5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvd0ZvckJsb2NrKGxvZ2ljYWxIZWlnaHQpOwog
fQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9t
KEZsb2F0aW5nT2JqZWN0OjpUeXBlIGZsb2F0VHlwZSkgY29uc3QKQEAgLTI1NTIsNyArMjU0MSw3
IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjpnZXRDbGVhckRlbHRhKFJlbmRlckJveCYg
Y2hpbGQsIExheW91dFVuaXQgbG9naWNhbFRvCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0xv
Z2ljYWxUb3AgLSBsb2dpY2FsVG9wOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBuZXdM
b2dpY2FsVG9wID0gbmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KG5ld0xvZ2ljYWxUb3ApOwor
ICAgICAgICAgICAgbmV3TG9naWNhbFRvcCA9IG5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvd0Zv
ckJsb2NrKG5ld0xvZ2ljYWxUb3ApOwogICAgICAgICAgICAgQVNTRVJUKG5ld0xvZ2ljYWxUb3Ag
Pj0gbG9naWNhbFRvcCk7CiAgICAgICAgICAgICBpZiAobmV3TG9naWNhbFRvcCA8IGxvZ2ljYWxU
b3ApCiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmgKaW5kZXggZTcxMWRjMDc3ZmE5MDFlZjdmZTgzYzhmMTU2NjQ4NjkwODhi
NzM0Ni4uMDEyZmMyYzk0ODA2NjkzYzZiOGExZWU1OGVkMDIwYzc1MTZjYTM3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNDIzLDcgKzQyMyw4IEBA
IHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE9mZnNldEZvclBvc2l0aW9uaW5n
RmxvYXQoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBib29s
IGFwcGx5VGV4dEluZGVudCwgTGF5b3V0VW5pdCogaGVpZ2h0UmVtYWluaW5nKSBjb25zdDsKIAog
ICAgIExheW91dFVuaXQgbG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKEZsb2F0aW5nT2JqZWN0OjpU
eXBlID0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdFJpZ2h0KSBjb25zdDsgCi0gICAgTGF5b3V0
VW5pdCBuZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3coTGF5b3V0VW5pdCwgU2hhcGVPdXRzaWRl
RmxvYXRPZmZzZXRNb2RlID0gU2hhcGVPdXRzaWRlRmxvYXRNYXJnaW5Cb3hPZmZzZXQpIGNvbnN0
OworICAgIExheW91dFVuaXQgbmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KExheW91dFVuaXQp
IGNvbnN0OworICAgIExheW91dFVuaXQgbmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93Rm9yQmxv
Y2soTGF5b3V0VW5pdCkgY29uc3Q7CiAgICAgCiAgICAgTGF5b3V0VW5pdCBhZGRPdmVyaGFuZ2lu
Z0Zsb2F0cyhSZW5kZXJCbG9ja0Zsb3cmIGNoaWxkLCBib29sIG1ha2VDaGlsZFBhaW50T3RoZXJG
bG9hdHMpOwogICAgIGJvb2wgaGFzT3ZlcmhhbmdpbmdGbG9hdChSZW5kZXJCb3gmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>