<?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>55660</bug_id>
          
          <creation_ts>2011-03-03 03:04:14 -0800</creation_ts>
          <short_desc>[WK2] Make non-transparent windowless plugins paint on X11</short_desc>
          <delta_ts>2011-03-10 06:50:55 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>55659</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alex</cc>
    
    <cc>buildbot</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>361484</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-03-03 03:04:14 -0800</bug_when>
    <thetext>Let&apos;s begin with the most basic case that is needed for Flash to paint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361654</commentid>
    <comment_count>1</comment_count>
      <attachid>84569</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-03-03 09:00:21 -0800</bug_when>
    <thetext>Created attachment 84569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361824</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-03 12:21:43 -0800</bug_when>
    <thetext>Attachment 84569 did not build on win:
Build output: http://queues.webkit.org/results/8083403</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364490</commentid>
    <comment_count>3</comment_count>
      <attachid>85172</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-03-09 07:17:46 -0800</bug_when>
    <thetext>Created attachment 85172
Patch

Fixed the build (speculatively). It also was a logical error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365114</commentid>
    <comment_count>4</comment_count>
      <attachid>85172</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-03-10 05:56:42 -0800</bug_when>
    <thetext>Comment on attachment 85172
Patch

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

Looks like a good start, r=me. :)

&gt; Source/WebKit2/ChangeLog:24
&gt; +        * WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp: Removed in favour
&gt; +        of a common implementation for X11.

We should remove NetscapePluginGtk.cpp as well.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1223
&gt; +        // Inject wmode=opaque to make Flash working with these conditions.

s/working with/work in/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365129</commentid>
    <comment_count>5</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-03-10 06:34:59 -0800</bug_when>
    <thetext>Committed r80714: &lt;http://trac.webkit.org/changeset/80714&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84569</attachid>
            <date>2011-03-03 09:00:21 -0800</date>
            <delta_ts>2011-03-09 07:17:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55660-20110303170020.patch</filename>
            <type>text/plain</type>
            <size>23252</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMDRiYzRkNjg2OGZhY2Y2
ZjZlMWFmMDgzZDdkNGI2NjgwZmNlNzA3Li45YjAyMTYzMzRjNGNjNzdhZDFkODE0ZGExYWU2NWRh
ZDQ1ZjlmNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDMtMDMgIEJhbGF6
cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSzJdIE1ha2Ugbm9uLXRyYW5zcGFyZW50IHdpbmRv
d2xlc3MgcGx1Z2lucyBwYWludCBvbiBYMTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU1NjYwCisKKyAgICAgICAgSW1wbGVtZW50IHBhaW50aW5nIGZv
ciBub24tdHJhbnNwYXJlbnQgd2luZG93bGVzcyBYMTEgcGx1Z2lucy4KKyAgICAgICAgVGhlIGVz
c2VuY2Ugb2YgdGhlIGxvZ2ljIGhhcyBiZWVuIGFkYXB0ZWQgZnJvbSBXZWJDb3JlLgorICAgICAg
ICBUaGUgaW1wbGVtZW50YXRpb24gaXMgc3R1YmJlZCBmb3IgR1RLIGFuZCB3b3JraW5nIG9ubHkg
b24gUXQKKyAgICAgICAgYnV0IGl0IHNob3VsZCBiZSByZWFsbHkgZWFzeSB0byBmaW5pc2ggaXQg
Zm9yIEdUSy4KKworICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIEhhbmRs
ZSBYMTEgc3BlY2lmaWMgdmFsdWVzIHRoYXQgYXJlIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYktp
dDo6TlBOX0dldFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TlBOX1NldFZhbHVlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4pOiBJbml0aWFsaXpl
IHRoZSBYMTEgc3BlY2lmaWMKKyAgICAgICAgbWVtYmVycyB0aGF0IGhhcyBiZWVuIGFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6Y2FsbFNldFdpbmRvdyk6IEFsd2F5cyBz
ZXQgdGhlIHggYW5kIHkgY29vcmRpbmF0ZXMKKyAgICAgICAgb2YgdGhlIE5QX1dpbmRvdyB0byAw
IG9uIFgxMSBzaW5jZSB3ZSBhcmUgdXNpbmcgYSBiYWNraW5ncyBzdG9yZSBhcyB0aGUKKyAgICAg
ICAgcGFpbnRpbmcgYXJlYSBmb3IgdGhlIHBsdWdpbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvcXQvTmV0c2NhcGVQbHVnaW5RdC5jcHA6IFJlbW92ZWQgaW4gZmF2b3Vy
CisgICAgICAgIG9mIGEgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciBYMTEuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpnZXRQbHVnaW5EaXNwbGF5KToKKworICAgICAgICBQbGF0
Zm9ybSBzcGVjaWZpYyBzdGF0aWMgZ2V0dGVycy4KKyAgICAgICAgKFdlYktpdDo6eDExRGlzcGxh
eSk6CisgICAgICAgIChXZWJLaXQ6OmRpc3BsYXlEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OnJv
b3RXaW5kb3dJRCk6CisgICAgICAgIChXZWJLaXQ6OngxMVNjcmVlbik6CisKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUpOiBTZXQgdXAgdGhl
IHZpc3VhbAorICAgICAgICBzZXR0aW5ncyBhbmQgdGhlIGNvbG9ybWFwIGZvciB0aGUgcGx1Z2lu
LgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSW52YWxpZGF0ZSk6IFJlbWFp
bmVkIHN0dWIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21l
dHJ5RGlkQ2hhbmdlKTogQ3JlYXRlIGEgbmV3CisgICAgICAgIHBpeG1hcCB0aGF0IGZpdHMgdGhl
IGdlb21ldHJ5LgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWlu
dCk6IFByb3BhZ2F0ZSBhIHBhaW50IGV2ZW50CisgICAgICAgIHRvIHRoZSBwbHVnaW4sIHN5bmMg
d2l0aCBpdCBpZiBuZWNlc3NhcnkgYW5kIGRyYXcgdGhlIHBpeG1hcCB0bworICAgICAgICB0aGUg
c2NyZWVuLgorICAgICAgICAoV2ViS2l0Ojp0b05QKTogUmVtYWluZWQgc3R1Yi4KKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudCk6IFJlbWFp
bmVkIHN0dWIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRs
ZVdoZWVsRXZlbnQpOiBSZW1haW5lZCBzdHViLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1TZXRGb2N1cyk6IFJlbWFpbmVkIHN0dWIuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRW50ZXJFdmVudCk6IFJlbWFpbmVk
IHN0dWIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1v
dXNlTGVhdmVFdmVudCk6IFJlbWFpbmVkIHN0dWIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQpOiBSZW1haW5lZCBzdHViLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKTog
SGFjay4gSW5qZWN0IHdtb2RlPW9wYXF1ZQorICAgICAgICBrZXktdmFsdWUgcGFpciB0byB0aGUg
cGx1Z2luIHBhcmFtZXRlcnMgdG8gZm9yY2UgRmxhc2ggdG8gYWN0IGluCisgICAgICAgIG5vbi10
cmFuc3BhcmVudCB3aW5kb3dsZXNzIG1vZGUuIFF0IGFsc28gZG9pbmcgdGhpcyBpbiBXZWJDb3Jl
LgorCiAyMDExLTAyLTI4ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggZThk
NTllNmZkZDY0MjJkODEyZGFkZDU0MjkwYWVmNTQ2ODYzNmVjZS4uMTczNTI3NTE3NzIxMGZjZmIz
MWM2Y2ZkOTJiOGUxYzlmNjdlMGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAgLTQxNyw3ICs0MTcsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwIFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwIFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uY3BwIFwKLSAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0
c2NhcGVQbHVnaW5RdC5jcHAgXAorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwIFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIFwKICAgICBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1
bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggNjc5ZGU2ZjBjOWQ5MmIwNmVkMGRkYjQ5NTVmZDEx
OTBlMWFkMDU1YS4uZGY2ODY2YmZkMGE1NTVmODg5Nzg5ZmQ1NjM3ZmVlMTk5NmU3MGNmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC0zNSw2ICszNSwxMiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAor
I2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFYMTFJbmZvPgorI2VsaWYgUExBVEZPUk0oR1RL
KQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00ODQsMTcgKzQ5MCwzMyBAQCBzdGF0aWMg
TlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQg
KnZhbHVlKQogICAgICAgICAgICAqKE5QQm9vbCopdmFsdWUgPSB0cnVlOwogICAgICAgICAgICBi
cmVhazsKICNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgICAgIGNhc2UgTlBOVnhE
aXNwbGF5OgorI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxE
aXNwbGF5Kio+KHZhbHVlKSA9IFFYMTFJbmZvOjpkaXNwbGF5KCk7CisgICAgICAgICAgIGJyZWFr
OworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxEaXNw
bGF5Kio+KHZhbHVlKSA9IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZh
dWx0KCkpOworICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgIGdvdG8gZGVmYXVs
dDsKKyNlbmRpZgorICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzWEVtYmVkQm9vbDoKKyAgICAgICAg
ICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CisgICAgICAgICAgIGJyZWFr
OworICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzV2luZG93bGVzczoKKyAgICAgICAgICAgKnN0YXRp
Y19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CisgICAgICAgICAgIGJyZWFrOworCiAgICAg
ICAgY2FzZSBOUE5WVG9vbGtpdDogewogICAgICAgICAgICBjb25zdCB1aW50MzJfdCBleHBlY3Rl
ZEdUS1Rvb2xLaXRWZXJzaW9uID0gMjsKIAogICAgICAgICAgICBSZWZQdHI8TmV0c2NhcGVQbHVn
aW4+IHBsdWdpbiA9IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKG5wcCk7Ci0gICAgICAgICAgIGlm
IChwbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6UmVxdWlyZXNHVEtUb29s
S2l0KSkgewotICAgICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1
ZSkgPSBleHBlY3RlZEdUS1Rvb2xLaXRWZXJzaW9uOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgIH0KLQotICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAg
ICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSBwbHVnaW4tPnF1
aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6UmVxdWlyZXNHVEtUb29sS2l0KSA/CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRHVEtU
b29sS2l0VmVyc2lvbiA6IDA7CisgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KKworICAgICAg
IC8vIFRPRE86IGltcGxlbWVudCBOUE5WbmV0c2NhcGVXaW5kb3cgb25jZSB3ZSB3YW50IHRvIHN1
cHBvcnQgd2luZG93ZWQgcGx1Z2lucy4KICNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTUyMSwxNSArNTQzLDE2IEBAIHN0YXRpYyBOUEVy
cm9yIE5QTl9TZXRWYWx1ZShOUFAgbnBwLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFs
dWUpCiAgICAgICAgICAgICBOUEV2ZW50TW9kZWwgZXZlbnRNb2RlbCA9IHN0YXRpY19jYXN0PE5Q
RXZlbnRNb2RlbD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSk7CiAgICAgICAg
ICAgICByZXR1cm4gcGx1Z2luLT5zZXRFdmVudE1vZGVsKGV2ZW50TW9kZWwpOwogICAgICAgICB9
Ci0jZW5kaWYKLQorI2VsaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgICAgIGNhc2Ug
TlBQVnBsdWdpbldpbmRvd0Jvb2w6IHsKICAgICAgICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdp
bj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsKLSAgICAgICAgICAgIHBs
dWdpbi0+c2V0SXNXaW5kb3dlZCh2YWx1ZSk7CisgICAgICAgICAgICBwbHVnaW4tPnNldElzV2lu
ZG93ZWQoc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybiBOUEVS
Ul9OT19FUlJPUjsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgTlBQVnBsdWdpblRyYW5zcGFy
ZW50Qm9vbDoKKyAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50IE5QUFZwbHVnaW5UcmFuc3BhcmVu
dEJvb2wgb25jZSB3ZSB3YW50IHRvIHN1cHBvcnQgdHJhbnNwYXJlbmN5LgorI2VuZGlmCisKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgICAg
ICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmlu
ZGV4IDdlOWIwNTlmZWEzNTE3MWQ5YWE5MmRhNDY3YjA2NzE2OWI5MWM4N2EuLjAzYmU0Y2NjNGEx
OTYxYTdmZWVlOGYwZDNlZjgzZDE3ODhmNjNiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cApAQCAtNzUsNyArNzUsMTAgQEAgTmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKFBhc3NS
ZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSkKICNpZm5kZWYgTlBfTk9f
Q0FSQk9OCiAgICAgLCBtX251bGxFdmVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk5l
dHNjYXBlUGx1Z2luOjpudWxsRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9ucENHQ29udGV4dCgp
Ci0jZW5kaWYgICAgCisjZW5kaWYKKyNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAg
ICwgbV9kcmF3YWJsZSgwKQorICAgICwgbV9wbHVnaW5EaXNwbGF5KDApCiAjZW5kaWYKIHsKICAg
ICBtX25wcC5uZGF0YSA9IHRoaXM7CkBAIC0zNDcsOCArMzUwLDE0IEBAIE5QRXJyb3IgTmV0c2Nh
cGVQbHVnaW46Ok5QUF9TZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUp
CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OmNhbGxTZXRXaW5kb3coKQogeworI2lmIFBMVUdJTl9B
UkNISVRFQ1RVUkUoWDExKQorICAgIC8vIFdlIHVzZSBhIGJhY2tpbmcgc3RvcmUgYXMgdGhlIHBh
aW50aW5nIGFyZWEgZm9yIHRoZSBwbHVnaW4uCisgICAgbV9ucFdpbmRvdy54ID0gMDsKKyAgICBt
X25wV2luZG93LnkgPSAwOworI2Vsc2UKICAgICBtX25wV2luZG93LnggPSBtX2ZyYW1lUmVjdC54
KCk7CiAgICAgbV9ucFdpbmRvdy55ID0gbV9mcmFtZVJlY3QueSgpOworI2VuZGlmCiAgICAgbV9u
cFdpbmRvdy53aWR0aCA9IG1fZnJhbWVSZWN0LndpZHRoKCk7CiAgICAgbV9ucFdpbmRvdy5oZWln
aHQgPSBtX2ZyYW1lUmVjdC5oZWlnaHQoKTsKICAgICBtX25wV2luZG93LmNsaXBSZWN0LnRvcCA9
IG1fY2xpcFJlY3QueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBlODY1ZDkzY2Y3Nzc4
ZTAyZTgzNzdmZTFhMWNjZWEyYWVjZThjOTYwLi5jODdkZDRiN2M3Yjg5MTcyNmQyMjRjYzQ2Mzlj
Yzc1MzQ1MGRkOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMjA4LDcgKzIwOCw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBtX21hbnVhbFN0cmVh
bTsKICAgICBWZWN0b3I8Ym9vbCwgOD4gbV9wb3B1cEVuYWJsZWRTdGF0ZXM7CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgTlBEcmF3aW5nTW9k
ZWwgbV9kcmF3aW5nTW9kZWw7CiAgICAgTlBFdmVudE1vZGVsIG1fZXZlbnRNb2RlbDsKICAgICBS
ZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbHVnaW5MYXllcjsKQEAgLTIyOSw4ICsyMjksMTEg
QEAgcHJpdmF0ZToKICAgICBSdW5Mb29wOjpUaW1lcjxOZXRzY2FwZVBsdWdpbj4gbV9udWxsRXZl
bnRUaW1lcjsKICAgICBOUF9DR0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNlbmRpZgotI2VsaWYg
UExBVEZPUk0oV0lOKQorI2VsaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShXSU4pCiAgICAgSFdORCBt
X3dpbmRvdzsKKyNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIFBpeG1hcCBtX2Ry
YXdhYmxlOworICAgIERpc3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3F0L05l
dHNjYXBlUGx1Z2luUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3F0L05ldHNjYXBlUGx1Z2luUXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1ODFkY2YzNjQ4Nzc5MDQzMWExNWZhNTFlOTdiZjVkYmRmZTk5ZDQxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTmV0
c2NhcGVQbHVnaW4uaCIKLQotI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9v
bCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1EZXN0cm95KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIE5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFsaWRhdGUoY29uc3QgSW50UmVjdCYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotTlBFdmVudCB0b05QKGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2
ZW50KQotewotI2lmIE9TKFNZTUJJQU4pCi0gICAgTlBFdmVudCBucEV2ZW50ID0gUUV2ZW50KFFF
dmVudDo6Tm9uZSk7Ci0jZWxzZQotICAgIE5QRXZlbnQgbnBFdmVudCA9IE5QRXZlbnQoKTsKLSNl
bmRpZgotCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBucEV2ZW50OwotfQot
Ci1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2Vi
TW91c2VFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgTlBFdmVudCBucEV2ZW50ID0gdG9OUChldmVudCk7Ci0gICAgTlBQ
X0hhbmRsZUV2ZW50KCZucEV2ZW50KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3VzKGJvb2wpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUVu
dGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKG1faXNXaW5k
b3dlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTlBFdmVudCBucEV2ZW50ID0gdG9O
UChldmVudCk7Ci0gICAgTlBQX0hhbmRsZUV2ZW50KCZucEV2ZW50KTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUxlYXZlRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTlBFdmVudCBucEV2ZW50ID0gdG9OUChldmVu
dCk7Ci0gICAgTlBQX0hhbmRsZUV2ZW50KCZucEV2ZW50KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0
IFdlYktleWJvYXJkRXZlbnQmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRz
Y2FwZVBsdWdpblgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3ZTY4MGRiMDQ2NTFjZDJmMDNlNTk3ZGM2
NjBmYWU4Mzc1OTdiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0wLDAgKzEs
MzEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIK
KworI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKKyNpZiBQTEFURk9S
TShRVCkKKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURlc2t0b3BXaWRnZXQ+
CisjaW5jbHVkZSA8UVBpeG1hcD4KKyNpbmNsdWRlIDxRWDExSW5mbz4KKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIERpc3BsYXkgKmdldFBsdWdp
bkRpc3BsYXkoKQoreworI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIEF0IHRoZSBtb21lbnQsIHdl
IG9ubHkgc3VwcG9ydCBnZGsgYmFzZWQgcGx1Z2lucyAobGlrZSBGbGFzaCkgdGhhdCB1c2UgYSBk
aWZmZXJlbnQgWCBjb25uZWN0aW9uLgorICAgIC8vIFRoZSBjb2RlIGJlbG93IGhhcyB0aGUgc2Ft
ZSBlZmZlY3QgYXMgdGhpcyBvbmU6CisgICAgLy8gRGlzcGxheSAqZ2RrRGlzcGxheSA9IGdka194
MTFfZGlzcGxheV9nZXRfeGRpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisKKyAg
ICBRTGlicmFyeSBsaWJyYXJ5KCJsaWJnZGsteDExLTIuMCIsIDApOworICAgIGlmICghbGlicmFy
eS5sb2FkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdHlwZWRlZiB2b2lkICooKmdka19k
aXNwbGF5X2dldF9kZWZhdWx0X3B0cikoKTsKKyAgICBnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9w
dHIgZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQgPSAoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfcHRy
KWxpYnJhcnkucmVzb2x2ZSgiZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQiKTsKKyAgICBpZiAoIWdk
a19kaXNwbGF5X2dldF9kZWZhdWx0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHR5cGVkZWYg
dm9pZCAqKCpnZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5X3B0cikodm9pZCAqKTsKKyAgICBn
ZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5X3B0ciBnZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNw
bGF5ID0gKGdka194MTFfZGlzcGxheV9nZXRfeGRpc3BsYXlfcHRyKWxpYnJhcnkucmVzb2x2ZSgi
Z2RrX3gxMV9kaXNwbGF5X2dldF94ZGlzcGxheSIpOworICAgIGlmICghZ2RrX3gxMV9kaXNwbGF5
X2dldF94ZGlzcGxheSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gKERpc3BsYXkq
KWdka194MTFfZGlzcGxheV9nZXRfeGRpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7
CisjZWxpZiBQTEFURk9STShHVEspCisgICAgLy8gU2luY2Ugd2UncmUgYSBnZGsvZ3RrIGFwcCwg
d2UnbGwgKHByb2JhYmx5PykgaGF2ZSB0aGUgc2FtZSBYIGNvbm5lY3Rpb24gYXMgYW55IGdkay1i
YXNlZAorICAgIC8vIHBsdWdpbnMsIHNvIHdlIGNhbiByZXR1cm4gdGhhdC4gV2UgbWlnaHQgd2Fu
dCB0byBhZGQgb3RoZXIgaW1wbGVtZW50YXRpb25zIGhlcmUgbGF0ZXIuCisgICAgcmV0dXJuIEdE
S19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIERpc3BsYXkqIHgxMURpc3Bs
YXkoKQoreworI2lmIFBMQVRGT1JNKFFUKQorICAgIHJldHVybiBRWDExSW5mbzo6ZGlzcGxheSgp
OworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIHJldHVybiBHREtfRElTUExBWV9YRElTUExBWShn
ZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKQorI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCitzdGF0aWMgaW5saW5lIGludCBkaXNwbGF5RGVwdGgoKQoreworI2lmIFBMQVRGT1JNKFFU
KQorICAgIHJldHVybiBRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+eDExSW5mbygpLmRlcHRoKCk7
CisjZWxpZiBQTEFURk9STShHVEspCisgICAgcmV0dXJuIGdka192aXN1YWxfZ2V0X2RlcHRoKGdk
a19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bG9uZyByb290V2luZG93SUQoKQoreworI2lmIFBMQVRGT1JNKFFUKQorICAgIHJldHVybiBRWDEx
SW5mbzo6YXBwUm9vdFdpbmRvdygpOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIHJldHVybiBH
REtfUk9PVF9XSU5ET1coKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworc3Rh
dGljIGlubGluZSBpbnQgeDExU2NyZWVuKCkKK3sKKyNpZiBQTEFURk9STShRVCkKKyAgICByZXR1
cm4gUVgxMUluZm86OmFwcFNjcmVlbigpOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIHJldHVy
biBnZGtfc2NyZWVuX2dldF9udW1iZXIoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKyNlbHNl
CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1Qb3N0SW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKG1faXNXaW5kb3dlZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCEobV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1Z2luRGlzcGxh
eSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0
cnVjdCogY2FsbGJhY2tTdHJ1Y3QgPSBuZXcgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCgpOwor
ICAgIGNhbGxiYWNrU3RydWN0LT50eXBlID0gMDsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0geDEx
RGlzcGxheSgpOworICAgIGludCBkZXB0aCA9IGRpc3BsYXlEZXB0aCgpOworICAgIGNhbGxiYWNr
U3RydWN0LT5kaXNwbGF5ID0gZGlzcGxheTsKKyAgICBjYWxsYmFja1N0cnVjdC0+ZGVwdGggPSBk
ZXB0aDsKKworICAgIFhWaXN1YWxJbmZvIHZpc3VhbFRlbXBsYXRlOworICAgIHZpc3VhbFRlbXBs
YXRlLnNjcmVlbiA9IHgxMVNjcmVlbigpOworICAgIHZpc3VhbFRlbXBsYXRlLmRlcHRoID0gZGVw
dGg7CisgICAgdmlzdWFsVGVtcGxhdGUuY19jbGFzcyA9IFRydWVDb2xvcjsKKyAgICBpbnQgbnVt
TWF0Y2hpbmc7CisgICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8gPSBYR2V0VmlzdWFsSW5mbyhk
aXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NN
YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZpc3Vh
bFRlbXBsYXRlLCAmbnVtTWF0Y2hpbmcpOworICAgIEFTU0VSVCh2aXN1YWxJbmZvKTsKKyAgICBW
aXN1YWwqIHZpc3VhbCA9IHZpc3VhbEluZm9bMF0udmlzdWFsOworICAgIEFTU0VSVCh2aXN1YWwp
OworICAgIFhGcmVlKHZpc3VhbEluZm8pOworCisgICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCA9
IHZpc3VhbDsKKyAgICBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAo
ZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25lKTsKKworICAgIG1fbnBX
aW5kb3cudHlwZSA9IE5QV2luZG93VHlwZURyYXdhYmxlOworICAgIG1fbnBXaW5kb3cud2luZG93
ID0gMDsKKyAgICBtX25wV2luZG93LndzX2luZm8gPSBjYWxsYmFja1N0cnVjdDsKKworICAgIGNh
bGxTZXRXaW5kb3coKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5ldHNjYXBlUGx1
Z2luOjpwbGF0Zm9ybURlc3Ryb3koKQoreworICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxOUFNldFdp
bmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKTsKKworICAgIGlmIChtX2Ry
YXdhYmxlKSB7CisgICAgICAgIFhGcmVlUGl4bWFwKHgxMURpc3BsYXkoKSwgbV9kcmF3YWJsZSk7
CisgICAgICAgIG1fZHJhd2FibGUgPSAwOworICAgIH0KK30KKworYm9vbCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0
Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkKSB7CisgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBEaXNw
bGF5KiBkaXNwbGF5ID0geDExRGlzcGxheSgpOworICAgIGlmIChtX2RyYXdhYmxlKQorICAgICAg
ICBYRnJlZVBpeG1hcChkaXNwbGF5LCBtX2RyYXdhYmxlKTsKKworICAgIG1fZHJhd2FibGUgPSBY
Q3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCBtX2ZyYW1lUmVjdC53aWR0aCgp
LCBtX2ZyYW1lUmVjdC5oZWlnaHQoKSwgZGlzcGxheURlcHRoKCkpOworCisgICAgWFN5bmMoZGlz
cGxheSwgZmFsc2UpOyAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dzIGFib3V0IHRo
ZSBEcmF3YWJsZS4KK30KKwordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCAvKmlz
U25hcHNob3QqLykKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkKSB7CisgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1faXNTdGFydGVk
KSB7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcGFpbnQgYSBtaXNzaW5nIHBsdWdpbiBp
Y29uLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fZHJhd2FibGUpOwor
CisjaWYgUExBVEZPUk0oUVQpCisgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKTsKKyAgICBwYWludGVyLT50cmFuc2xhdGUobV9mcmFtZVJlY3QueCgpLCBt
X2ZyYW1lUmVjdC55KCkpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
bjsKKyNlbmRpZgorCisgICAgWEV2ZW50IHhldmVudDsKKyAgICBtZW1zZXQoJnhldmVudCwgMCwg
c2l6ZW9mKFhFdmVudCkpOworICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50JiBleHBvc2VFdmVudCA9
IHhldmVudC54Z3JhcGhpY3NleHBvc2U7CisgICAgZXhwb3NlRXZlbnQudHlwZSA9IEdyYXBoaWNz
RXhwb3NlOworICAgIGV4cG9zZUV2ZW50LmRpc3BsYXkgPSB4MTFEaXNwbGF5KCk7CisgICAgZXhw
b3NlRXZlbnQuZHJhd2FibGUgPSBtX2RyYXdhYmxlOworCisgICAgSW50UmVjdCBleHBvc2VkUmVj
dChkaXJ0eVJlY3QpOworICAgIGV4cG9zZWRSZWN0LmludGVyc2VjdChtX2ZyYW1lUmVjdCk7Cisg
ICAgZXhwb3NlZFJlY3QubW92ZSgtbV9mcmFtZVJlY3QueCgpLCAtbV9mcmFtZVJlY3QueSgpKTsK
KyAgICBleHBvc2VFdmVudC54ID0gZXhwb3NlZFJlY3QueCgpOworICAgIGV4cG9zZUV2ZW50Lnkg
PSBleHBvc2VkUmVjdC55KCk7CisKKyAgICAvLyBOb3RlOiBpbiB0cmFuc3BhcmVudCBtb2RlIEZs
YXNoIHRoaW5rcyB3aWR0aCBpcyB0aGUgcmlnaHQgYW5kIGhlaWdodCBpcyB0aGUgYm90dG9tLgor
ICAgIC8vIFdlIHNob3VsZCB0YWtlIGl0IGludG8gYWNjb3VudCBpZiB3ZSB3YW50IHRvIHN1cHBv
cnQgdHJhbnNwYXJlbmN5LgorICAgIGV4cG9zZUV2ZW50LndpZHRoID0gZXhwb3NlZFJlY3Qud2lk
dGgoKTsKKyAgICBleHBvc2VFdmVudC5oZWlnaHQgPSBleHBvc2VkUmVjdC5oZWlnaHQoKTsKKwor
ICAgIE5QUF9IYW5kbGVFdmVudCgmeGV2ZW50KTsKKworICAgIGlmIChtX3BsdWdpbkRpc3BsYXkg
IT0geDExRGlzcGxheSgpKQorICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsK
KworI2lmIFBMQVRGT1JNKFFUKQorICAgIFFQaXhtYXAgcXREcmF3YWJsZSA9IFFQaXhtYXA6OmZy
b21YMTFQaXhtYXAobV9kcmF3YWJsZSwgUVBpeG1hcDo6RXhwbGljaXRseVNoYXJlZCk7CisgICAg
QVNTRVJUKHF0RHJhd2FibGUuZGVwdGgoKSA9PSBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxi
YWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+ZGVwdGgpOworICAgIHBhaW50ZXItPmRy
YXdQaXhtYXAoUVBvaW50KGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgpKSwgcXREcmF3
YWJsZSwgZXhwb3NlZFJlY3QpOworCisgICAgcGFpbnRlci0+dHJhbnNsYXRlKC1tX2ZyYW1lUmVj
dC54KCksIC1tX2ZyYW1lUmVjdC55KCkpOworI2VuZGlmCit9CisKK05QRXZlbnQgdG9OUChjb25z
dCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyNpZiBPUyhTWU1CSUFOKQorICAgIE5QRXZlbnQg
bnBFdmVudCA9IFFFdmVudChRRXZlbnQ6Ok5vbmUpOworI2Vsc2UKKyAgICBOUEV2ZW50IG5wRXZl
bnQgPSBOUEV2ZW50KCk7CisjZW5kaWYKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisKKyAgICBy
ZXR1cm4gbnBFdmVudDsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVN
b3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIGlmIChtX2lzV2lu
ZG93ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5QRXZlbnQgbnBFdmVudCA9IHRv
TlAoZXZlbnQpOworICAgIE5QUF9IYW5kbGVFdmVudCgmbnBFdmVudCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudChj
b25zdCBXZWJXaGVlbEV2ZW50JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1TZXRGb2N1cyhib29s
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtSGFuZGxlTW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQor
eworICAgIGlmIChtX2lzV2luZG93ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5Q
RXZlbnQgbnBFdmVudCA9IHRvTlAoZXZlbnQpOworICAgIE5QUF9IYW5kbGVFdmVudCgmbnBFdmVu
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
SGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAg
IGlmIChtX2lzV2luZG93ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5QRXZlbnQg
bnBFdmVudCA9IHRvTlAoZXZlbnQpOworICAgIE5QUF9IYW5kbGVFdmVudCgmbnBFdmVudCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxl
S2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDVjZjNlNjYzMzQxYTVmMTA5NTAz
OWJiYTc0MmM4MjM4OWQyY2U2OTEuLjZjMjRmOWRiN2E0OTk4YWY3ZWNlZDc1MGNlOTc2MzVkYjU4
NTEwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTk1LDYgKzEx
OTUsMTkgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQ
bHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW4KICAgICAgICAgICAgIHBhcmFtZXRlcnMu
bmFtZXNbaV0gPSBwYXJhbU5hbWVzW2ldLmxvd2VyKCk7CiAgICAgfQogCisjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1pbWVUeXBlLCAiYXBw
bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKSkgeworICAgICAgICAvLyBDdXJyZW50bHkgd2Ug
ZG9uJ3Qgc3VwcG9ydCB0cmFuc3BhcmVuY3kgYW5kIHdpbmRvd2VkIG1vZGUuCisgICAgICAgIC8v
IEluamVjdCB3bW9kZT1vcGFxdWUgdG8gbWFrZSBGbGFzaCB3b3JraW5nIHdpdGggdGhlc2UgY29u
ZGl0aW9ucy4KKyAgICAgICAgc2l6ZV90IHdtb2RlSW5kZXggPSBwYXJhbWV0ZXJzLm5hbWVzLmZp
bmQoIndtb2RlIik7CisgICAgICAgIGlmICh3bW9kZUluZGV4ID09IC0xKSB7CisgICAgICAgICAg
ICBwYXJhbWV0ZXJzLm5hbWVzLmFwcGVuZCgid21vZGUiKTsKKyAgICAgICAgICAgIHBhcmFtZXRl
cnMudmFsdWVzLmFwcGVuZCgib3BhcXVlIik7CisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UocGFyYW1ldGVycy52YWx1ZXNbd21vZGVJbmRleF0sICJ3aW5kb3ciKSkKKyAgICAg
ICAgICAgIHBhcmFtZXRlcnMudmFsdWVzW3dtb2RlSW5kZXhdID0gIm9wYXF1ZSI7CisgICAgfQor
I2VuZGlmCisKICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSB3ZWJQYWdlLT5jcmVhdGVQbHVn
aW4ocGFyYW1ldGVycyk7CiAgICAgaWYgKCFwbHVnaW4pCiAgICAgICAgIHJldHVybiAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85172</attachid>
            <date>2011-03-09 07:17:46 -0800</date>
            <delta_ts>2011-03-10 06:50:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55660-20110309151745.patch</filename>
            <type>text/plain</type>
            <size>22438</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2NDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMDJhY2IxZTc4MmJkNGVh
NmNhMzlhNmY4NjcxMjEwOGZmOTVjZjJlLi5iN2JkOGQwYmViZTgzZDQ3NDkzM2IzYjAwOWIzZjY1
OGVkYTI0ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDMtMDMgIEJhbGF6
cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSzJdIE1ha2Ugbm9uLXRyYW5zcGFyZW50IHdpbmRv
d2xlc3MgcGx1Z2lucyBwYWludCBvbiBYMTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU1NjYwCisKKyAgICAgICAgSW1wbGVtZW50IHBhaW50aW5nIGZv
ciBub24tdHJhbnNwYXJlbnQgd2luZG93bGVzcyBYMTEgcGx1Z2lucy4KKyAgICAgICAgVGhlIGVz
c2VuY2Ugb2YgdGhlIGxvZ2ljIGhhcyBiZWVuIGFkYXB0ZWQgZnJvbSBXZWJDb3JlLgorICAgICAg
ICBUaGUgaW1wbGVtZW50YXRpb24gaXMgc3R1YmJlZCBmb3IgR1RLIGFuZCB3b3JraW5nIG9ubHkg
b24gUXQKKyAgICAgICAgYnV0IGl0IHNob3VsZCBiZSByZWFsbHkgZWFzeSB0byBmaW5pc2ggaXQg
Zm9yIEdUSy4KKworICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5QTl9HZXRWYWx1ZSk6IEhhbmRsZSBYMTEgc3BlY2lmaWMgdmFsdWVzIHRoYXQgYXJlIG5l
Y2Vzc2FyeS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVn
aW4pOiBJbml0aWFsaXplIHRoZSBYMTEgc3BlY2lmaWMKKyAgICAgICAgbWVtYmVycyB0aGF0IGhh
cyBiZWVuIGFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6Y2FsbFNldFdp
bmRvdyk6IEFsd2F5cyBzZXQgdGhlIHggYW5kIHkgY29vcmRpbmF0ZXMKKyAgICAgICAgb2YgdGhl
IE5QX1dpbmRvdyB0byAwIG9uIFgxMSBzaW5jZSB3ZSBhcmUgdXNpbmcgYSBiYWNraW5ncyBzdG9y
ZSBhcyB0aGUKKyAgICAgICAgcGFpbnRpbmcgYXJlYSBmb3IgdGhlIHBsdWdpbi4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0c2NhcGVQbHVnaW5RdC5jcHA6IFJl
bW92ZWQgaW4gZmF2b3VyCisgICAgICAgIG9mIGEgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciBY
MTEuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpnZXRQbHVnaW5EaXNwbGF5KToK
KworICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyBzdGF0aWMgZ2V0dGVycy4KKyAgICAgICAgKFdl
YktpdDo6eDExRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OmRpc3BsYXlEZXB0aCk6CisgICAg
ICAgIChXZWJLaXQ6OnJvb3RXaW5kb3dJRCk6CisgICAgICAgIChXZWJLaXQ6OngxMVNjcmVlbik6
CisKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxp
emUpOiBTZXQgdXAgdGhlIHZpc3VhbAorICAgICAgICBzZXR0aW5ncyBhbmQgdGhlIGNvbG9ybWFw
IGZvciB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1EZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSW52
YWxpZGF0ZSk6IFJlbWFpbmVkIHN0dWIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKTogQ3JlYXRlIGEgbmV3CisgICAgICAgIHBpeG1h
cCB0aGF0IGZpdHMgdGhlIGdlb21ldHJ5LgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1QYWludCk6IFByb3BhZ2F0ZSBhIHBhaW50IGV2ZW50CisgICAgICAgIHRvIHRo
ZSBwbHVnaW4sIHN5bmMgd2l0aCBpdCBpZiBuZWNlc3NhcnkgYW5kIGRyYXcgdGhlIHBpeG1hcCB0
bworICAgICAgICB0aGUgc2NyZWVuLgorICAgICAgICAoV2ViS2l0Ojp0b05QKTogUmVtYWluZWQg
c3R1Yi4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91
c2VFdmVudCk6IFJlbWFpbmVkIHN0dWIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybUhhbmRsZVdoZWVsRXZlbnQpOiBSZW1haW5lZCBzdHViLgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1TZXRGb2N1cyk6IFJlbWFpbmVkIHN0dWIuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRW50ZXJF
dmVudCk6IFJlbWFpbmVkIHN0dWIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpw
bGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudCk6IFJlbWFpbmVkIHN0dWIuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQpOiBSZW1h
aW5lZCBzdHViLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlUGx1Z2luKTogSGFjay4gSW5qZWN0IHdtb2RlPW9wYXF1ZQorICAgICAgICBrZXktdmFs
dWUgcGFpciB0byB0aGUgcGx1Z2luIHBhcmFtZXRlcnMgdG8gZm9yY2UgRmxhc2ggdG8gYWN0IGlu
CisgICAgICAgIG5vbi10cmFuc3BhcmVudCB3aW5kb3dsZXNzIG1vZGUuIFF0IGFsc28gZG9pbmcg
dGhpcyBpbiBXZWJDb3JlLgorCiAyMDExLTAzLTA5ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxl
eEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBjb21waWxhdGlvbiBhZnRlciByODA1OTYsIGFk
ZCBzb3VwIERvd25sb2FkIHN0dWJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCA1NzI1NjZhNDA3MTdlMTFi
MGEwYTg5YTAwZjM5MWU1OWRkMjEwOGI5Li4zZmMzOWJhOWI2ZjEyNjZjYWM3NjlhZDg5MjYzODhl
ZDdkY2M1NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtNDUwLDcgKzQ1MCw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAgXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAg
XAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5j
cHAgXAotICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0
LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
blgxMS5jcHAgXAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9QbHVnaW5Qcm94
eVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcAppbmRleCA2NzlkZTZmMGM5ZDkyYjA2ZWQwZGRiNDk1NWZkMTE5MGUxYWQwNTVh
Li43NmIzMzA4MjRiOGU3ZjAwODE3OWIyOTRkNDUyM2MxODMzODFjNGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTM1LDYgKzM1LDEyIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaWYgUExBVEZP
Uk0oUVQpCisjaW5jbHVkZSA8UVgxMUluZm8+CisjZWxpZiBQTEFURk9STShHVEspCisjaW5jbHVk
ZSA8Z2RrL2dka3guaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTQ4NCwxNyArNDkwLDMzIEBAIHN0YXRpYyBOUEVycm9yIE5Q
Tl9HZXRWYWx1ZShOUFAgbnBwLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpCiAg
ICAgICAgICAgICooTlBCb29sKil2YWx1ZSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwogI2Vs
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgICAgY2FzZSBOUE5WeERpc3BsYXk6Cisj
aWYgUExBVEZPUk0oUVQpCisgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PERpc3BsYXkqKj4o
dmFsdWUpID0gUVgxMUluZm86OmRpc3BsYXkoKTsKKyAgICAgICAgICAgYnJlYWs7CisjZWxpZiBQ
TEFURk9STShHVEspCisgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PERpc3BsYXkqKj4odmFs
dWUpID0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7Cisg
ICAgICAgICAgIGJyZWFrOworI2Vsc2UKKyAgICAgICAgICAgZ290byBkZWZhdWx0OworI2VuZGlm
CisgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgorICAgICAgICAgICAqc3RhdGlj
X2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gdHJ1ZTsKKyAgICAgICAgICAgYnJlYWs7CisgICAgICAg
Y2FzZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOgorICAgICAgICAgICAqc3RhdGljX2Nhc3Q8TlBC
b29sKj4odmFsdWUpID0gdHJ1ZTsKKyAgICAgICAgICAgYnJlYWs7CisKICAgICAgICBjYXNlIE5Q
TlZUb29sa2l0OiB7CiAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGV4cGVjdGVkR1RLVG9vbEtp
dFZlcnNpb24gPSAyOwogCiAgICAgICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2lu
ID0gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsKLSAgICAgICAgICAgaWYgKHBsdWdpbi0+
cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpKSB7Ci0g
ICAgICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9IGV4cGVj
dGVkR1RLVG9vbEtpdFZlcnNpb247Ci0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
fQotCi0gICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAgICAq
cmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9IHBsdWdpbi0+cXVpcmtzKCkuY29u
dGFpbnMoUGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpID8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZEdUS1Rvb2xLaXRWZXJz
aW9uIDogMDsKKyAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQorCisgICAgICAgLy8gVE9ETzog
aW1wbGVtZW50IE5QTlZuZXRzY2FwZVdpbmRvdyBvbmNlIHdlIHdhbnQgdG8gc3VwcG9ydCB3aW5k
b3dlZCBwbHVnaW5zLgogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggN2U5YjA1OWZlYTM1
MTcxZDlhYTkyZGE0NjdiMDY3MTY5YjkxYzg3YS4uMDNiZTRjY2M0YTE5NjFhN2ZlZWU4ZjBkM2Vm
ODNkMTc4OGY2M2IzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NSw3ICs3NSwx
MCBAQCBOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBs
dWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKQogI2lmbmRlZiBOUF9OT19DQVJCT04KICAgICAsIG1f
bnVsbEV2ZW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTmV0c2NhcGVQbHVnaW46Om51
bGxFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX25wQ0dDb250ZXh0KCkKLSNlbmRpZiAgICAKKyNl
bmRpZgorI2VsaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgLCBtX2RyYXdhYmxlKDAp
CisgICAgLCBtX3BsdWdpbkRpc3BsYXkoMCkKICNlbmRpZgogewogICAgIG1fbnBwLm5kYXRhID0g
dGhpczsKQEAgLTM0Nyw4ICszNTAsMTQgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbjo6TlBQX1Nl
dFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKIAogdm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6Y2FsbFNldFdpbmRvdygpCiB7CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEp
CisgICAgLy8gV2UgdXNlIGEgYmFja2luZyBzdG9yZSBhcyB0aGUgcGFpbnRpbmcgYXJlYSBmb3Ig
dGhlIHBsdWdpbi4KKyAgICBtX25wV2luZG93LnggPSAwOworICAgIG1fbnBXaW5kb3cueSA9IDA7
CisjZWxzZQogICAgIG1fbnBXaW5kb3cueCA9IG1fZnJhbWVSZWN0LngoKTsKICAgICBtX25wV2lu
ZG93LnkgPSBtX2ZyYW1lUmVjdC55KCk7CisjZW5kaWYKICAgICBtX25wV2luZG93LndpZHRoID0g
bV9mcmFtZVJlY3Qud2lkdGgoKTsKICAgICBtX25wV2luZG93LmhlaWdodCA9IG1fZnJhbWVSZWN0
LmhlaWdodCgpOwogICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QudG9wID0gbV9jbGlwUmVjdC55KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGU4NjVkOTNjZjc3NzhlMDJlODM3N2ZlMWExY2Nl
YTJhZWNlOGM5NjAuLmM4N2RkNGI3YzdiODkxNzI2ZDIyNGNjNDYzOWNjNzUzNDUwZGQ5MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0yMDgsNyArMjA4LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IG1fbWFudWFsU3RyZWFtOwogICAgIFZlY3Rvcjxi
b29sLCA4PiBtX3BvcHVwRW5hYmxlZFN0YXRlczsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKE1BQykKICAgICBOUERyYXdpbmdNb2RlbCBtX2RyYXdpbmdNb2Rl
bDsKICAgICBOUEV2ZW50TW9kZWwgbV9ldmVudE1vZGVsOwogICAgIFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPiBtX3BsdWdpbkxheWVyOwpAQCAtMjI5LDggKzIyOSwxMSBAQCBwcml2YXRlOgogICAg
IFJ1bkxvb3A6OlRpbWVyPE5ldHNjYXBlUGx1Z2luPiBtX251bGxFdmVudFRpbWVyOwogICAgIE5Q
X0NHQ29udGV4dCBtX25wQ0dDb250ZXh0OwogI2VuZGlmCi0jZWxpZiBQTEFURk9STShXSU4pCisj
ZWxpZiBQTFVHSU5fQVJDSElURUNUVVJFKFdJTikKICAgICBIV05EIG1fd2luZG93OworI2VsaWYg
UExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgUGl4bWFwIG1fZHJhd2FibGU7CisgICAgRGlz
cGxheSogbV9wbHVnaW5EaXNwbGF5OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0c2NhcGVQbHVnaW5RdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0c2Nh
cGVQbHVnaW5RdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MWRjZjM2NDg3
NzkwNDMxYTE1ZmE1MWU5N2JmNWRiZGZlOTlkNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3F0L05ldHNjYXBlUGx1Z2luUXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgot
Ci0jaW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1ib29sIE5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3ko
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1H
ZW9tZXRyeURpZENoYW5nZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi1OUEV2ZW50IHRvTlAoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCi17Ci0jaWYgT1Mo
U1lNQklBTikKLSAgICBOUEV2ZW50IG5wRXZlbnQgPSBRRXZlbnQoUUV2ZW50OjpOb25lKTsKLSNl
bHNlCi0gICAgTlBFdmVudCBucEV2ZW50ID0gTlBFdmVudCgpOwotI2VuZGlmCi0KLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotCi0gICAgcmV0dXJuIG5wRXZlbnQ7Ci19Ci0KLWJvb2wgTmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVu
dCkKLXsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBOUEV2ZW50IG5wRXZlbnQgPSB0b05QKGV2ZW50KTsKLSAgICBOUFBfSGFuZGxlRXZlbnQoJm5w
RXZlbnQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0
Zm9ybUhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtU2V0Rm9jdXMoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1i
b29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRW50ZXJFdmVudChjb25zdCBX
ZWJNb3VzZUV2ZW50JiBldmVudCkKLXsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBOUEV2ZW50IG5wRXZlbnQgPSB0b05QKGV2ZW50KTsKLSAgICBO
UFBfSGFuZGxlRXZlbnQoJm5wRXZlbnQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCkKLXsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBOUEV2ZW50IG5wRXZlbnQgPSB0b05QKGV2ZW50KTsKLSAgICBOUFBfSGFu
ZGxlRXZlbnQoJm5wRXZlbnQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE5ldHNjYXBl
UGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVu
dCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZTdlNjgwZGIwNDY1MWNkMmYwM2U1OTdkYzY2MGZhZTgzNzU5N2IwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgorCisjaW5jbHVkZSAiV2Vi
RXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
PFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVza3RvcFdpZGdldD4KKyNpbmNsdWRlIDxRUGl4
bWFwPgorI2luY2x1ZGUgPFFYMTFJbmZvPgorI2VsaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUg
PGdkay9nZGt4Lmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdGF0aWMgRGlzcGxheSAqZ2V0UGx1Z2luRGlzcGxheSgpCit7Cisj
aWYgUExBVEZPUk0oUVQpCisgICAgLy8gQXQgdGhlIG1vbWVudCwgd2Ugb25seSBzdXBwb3J0IGdk
ayBiYXNlZCBwbHVnaW5zIChsaWtlIEZsYXNoKSB0aGF0IHVzZSBhIGRpZmZlcmVudCBYIGNvbm5l
Y3Rpb24uCisgICAgLy8gVGhlIGNvZGUgYmVsb3cgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlz
IG9uZToKKyAgICAvLyBEaXNwbGF5ICpnZGtEaXNwbGF5ID0gZ2RrX3gxMV9kaXNwbGF5X2dldF94
ZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKworICAgIFFMaWJyYXJ5IGxpYnJh
cnkoImxpYmdkay14MTEtMi4wIiwgMCk7CisgICAgaWYgKCFsaWJyYXJ5LmxvYWQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICB0eXBlZGVmIHZvaWQgKigqZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1
bHRfcHRyKSgpOworICAgIGdka19kaXNwbGF5X2dldF9kZWZhdWx0X3B0ciBnZGtfZGlzcGxheV9n
ZXRfZGVmYXVsdCA9IChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9wdHIpbGlicmFyeS5yZXNvbHZl
KCJnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCIpOworICAgIGlmICghZ2RrX2Rpc3BsYXlfZ2V0X2Rl
ZmF1bHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgdHlwZWRlZiB2b2lkICooKmdka194MTFf
ZGlzcGxheV9nZXRfeGRpc3BsYXlfcHRyKSh2b2lkICopOworICAgIGdka194MTFfZGlzcGxheV9n
ZXRfeGRpc3BsYXlfcHRyIGdka194MTFfZGlzcGxheV9nZXRfeGRpc3BsYXkgPSAoZ2RrX3gxMV9k
aXNwbGF5X2dldF94ZGlzcGxheV9wdHIpbGlicmFyeS5yZXNvbHZlKCJnZGtfeDExX2Rpc3BsYXlf
Z2V0X3hkaXNwbGF5Iik7CisgICAgaWYgKCFnZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5KQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAoRGlzcGxheSopZ2RrX3gxMV9kaXNwbGF5
X2dldF94ZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyAgICAvLyBTaW5jZSB3ZSdyZSBhIGdkay9ndGsgYXBwLCB3ZSdsbCAocHJvYmFibHk/
KSBoYXZlIHRoZSBzYW1lIFggY29ubmVjdGlvbiBhcyBhbnkgZ2RrLWJhc2VkCisgICAgLy8gcGx1
Z2lucywgc28gd2UgY2FuIHJldHVybiB0aGF0LiBXZSBtaWdodCB3YW50IHRvIGFkZCBvdGhlciBp
bXBsZW1lbnRhdGlvbnMgaGVyZSBsYXRlci4KKyAgICByZXR1cm4gR0RLX0RJU1BMQVlfWERJU1BM
QVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2Vu
ZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgRGlzcGxheSogeDExRGlzcGxheSgpCit7CisjaWYgUExB
VEZPUk0oUVQpCisgICAgcmV0dXJuIFFYMTFJbmZvOjpkaXNwbGF5KCk7CisjZWxpZiBQTEFURk9S
TShHVEspCisgICAgcmV0dXJuIEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9k
ZWZhdWx0KCkpCisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxp
bmUgaW50IGRpc3BsYXlEZXB0aCgpCit7CisjaWYgUExBVEZPUk0oUVQpCisgICAgcmV0dXJuIFFB
cHBsaWNhdGlvbjo6ZGVza3RvcCgpLT54MTFJbmZvKCkuZGVwdGgoKTsKKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyAgICByZXR1cm4gZ2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lz
dGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpKTsKKyNlbHNlCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJvb3RXaW5kb3dJ
RCgpCit7CisjaWYgUExBVEZPUk0oUVQpCisgICAgcmV0dXJuIFFYMTFJbmZvOjphcHBSb290V2lu
ZG93KCk7CisjZWxpZiBQTEFURk9STShHVEspCisgICAgcmV0dXJuIEdES19ST09UX1dJTkRPVygp
OworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIGludCB4
MTFTY3JlZW4oKQoreworI2lmIFBMQVRGT1JNKFFUKQorICAgIHJldHVybiBRWDExSW5mbzo6YXBw
U2NyZWVuKCk7CisjZWxpZiBQTEFURk9STShHVEspCisgICAgcmV0dXJuIGdka19zY3JlZW5fZ2V0
X251bWJlcihnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsK
KyNlbmRpZgorfQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
KCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIShtX3BsdWdpbkRpc3BsYXkgPSBnZXRQbHVnaW5EaXNwbGF5KCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0
cnVjdCA9IG5ldyBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KCk7CisgICAgY2FsbGJhY2tTdHJ1
Y3QtPnR5cGUgPSAwOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFEaXNwbGF5KCk7CisgICAg
aW50IGRlcHRoID0gZGlzcGxheURlcHRoKCk7CisgICAgY2FsbGJhY2tTdHJ1Y3QtPmRpc3BsYXkg
PSBkaXNwbGF5OworICAgIGNhbGxiYWNrU3RydWN0LT5kZXB0aCA9IGRlcHRoOworCisgICAgWFZp
c3VhbEluZm8gdmlzdWFsVGVtcGxhdGU7CisgICAgdmlzdWFsVGVtcGxhdGUuc2NyZWVuID0geDEx
U2NyZWVuKCk7CisgICAgdmlzdWFsVGVtcGxhdGUuZGVwdGggPSBkZXB0aDsKKyAgICB2aXN1YWxU
ZW1wbGF0ZS5jX2NsYXNzID0gVHJ1ZUNvbG9yOworICAgIGludCBudW1NYXRjaGluZzsKKyAgICBY
VmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbFNj
cmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlzdWFsVGVtcGxhdGUsICZudW1N
YXRjaGluZyk7CisgICAgQVNTRVJUKHZpc3VhbEluZm8pOworICAgIFZpc3VhbCogdmlzdWFsID0g
dmlzdWFsSW5mb1swXS52aXN1YWw7CisgICAgQVNTRVJUKHZpc3VhbCk7CisgICAgWEZyZWUodmlz
dWFsSW5mbyk7CisKKyAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOworICAgIGNh
bGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCByb290V2lu
ZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOworCisgICAgbV9ucFdpbmRvdy50eXBlID0gTlBX
aW5kb3dUeXBlRHJhd2FibGU7CisgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAwOworICAgIG1fbnBX
aW5kb3cud3NfaW5mbyA9IGNhbGxiYWNrU3RydWN0OworCisgICAgY2FsbFNldFdpbmRvdygpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVz
dHJveSgpCit7CisgICAgZGVsZXRlIHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1
Y3QqPihtX25wV2luZG93LndzX2luZm8pOworCisgICAgaWYgKG1fZHJhd2FibGUpIHsKKyAgICAg
ICAgWEZyZWVQaXhtYXAoeDExRGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKKyAgICAgICAgbV9kcmF3
YWJsZSA9IDA7CisgICAgfQorfQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFs
aWRhdGUoY29uc3QgSW50UmVjdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRD
aGFuZ2UoKQoreworICAgIGlmIChtX2lzV2luZG93ZWQpIHsKKyAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4
MTFEaXNwbGF5KCk7CisgICAgaWYgKG1fZHJhd2FibGUpCisgICAgICAgIFhGcmVlUGl4bWFwKGRp
c3BsYXksIG1fZHJhd2FibGUpOworCisgICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAoZGlz
cGxheSwgcm9vdFdpbmRvd0lEKCksIG1fZnJhbWVSZWN0LndpZHRoKCksIG1fZnJhbWVSZWN0Lmhl
aWdodCgpLCBkaXNwbGF5RGVwdGgoKSk7CisKKyAgICBYU3luYyhkaXNwbGF5LCBmYWxzZSk7IC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIga25vd3MgYWJvdXQgdGhlIERyYXdhYmxlLgorfQor
Cit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNTbmFwc2hvdCovKQorewor
ICAgIGlmIChtX2lzV2luZG93ZWQpIHsKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9pc1N0YXJ0ZWQpIHsKKyAgICAgICAgLy8g
RklYTUU6IHdlIHNob3VsZCBwYWludCBhIG1pc3NpbmcgcGx1Z2luIGljb24uCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9kcmF3YWJsZSk7CisKKyNpZiBQTEFURk9STShR
VCkKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwor
ICAgIHBhaW50ZXItPnRyYW5zbGF0ZShtX2ZyYW1lUmVjdC54KCksIG1fZnJhbWVSZWN0LnkoKSk7
CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuOworI2VuZGlmCisKKyAg
ICBYRXZlbnQgeGV2ZW50OworICAgIG1lbXNldCgmeGV2ZW50LCAwLCBzaXplb2YoWEV2ZW50KSk7
CisgICAgWEdyYXBoaWNzRXhwb3NlRXZlbnQmIGV4cG9zZUV2ZW50ID0geGV2ZW50LnhncmFwaGlj
c2V4cG9zZTsKKyAgICBleHBvc2VFdmVudC50eXBlID0gR3JhcGhpY3NFeHBvc2U7CisgICAgZXhw
b3NlRXZlbnQuZGlzcGxheSA9IHgxMURpc3BsYXkoKTsKKyAgICBleHBvc2VFdmVudC5kcmF3YWJs
ZSA9IG1fZHJhd2FibGU7CisKKyAgICBJbnRSZWN0IGV4cG9zZWRSZWN0KGRpcnR5UmVjdCk7Cisg
ICAgZXhwb3NlZFJlY3QuaW50ZXJzZWN0KG1fZnJhbWVSZWN0KTsKKyAgICBleHBvc2VkUmVjdC5t
b3ZlKC1tX2ZyYW1lUmVjdC54KCksIC1tX2ZyYW1lUmVjdC55KCkpOworICAgIGV4cG9zZUV2ZW50
LnggPSBleHBvc2VkUmVjdC54KCk7CisgICAgZXhwb3NlRXZlbnQueSA9IGV4cG9zZWRSZWN0Lnko
KTsKKworICAgIC8vIE5vdGU6IGluIHRyYW5zcGFyZW50IG1vZGUgRmxhc2ggdGhpbmtzIHdpZHRo
IGlzIHRoZSByaWdodCBhbmQgaGVpZ2h0IGlzIHRoZSBib3R0b20uCisgICAgLy8gV2Ugc2hvdWxk
IHRha2UgaXQgaW50byBhY2NvdW50IGlmIHdlIHdhbnQgdG8gc3VwcG9ydCB0cmFuc3BhcmVuY3ku
CisgICAgZXhwb3NlRXZlbnQud2lkdGggPSBleHBvc2VkUmVjdC53aWR0aCgpOworICAgIGV4cG9z
ZUV2ZW50LmhlaWdodCA9IGV4cG9zZWRSZWN0LmhlaWdodCgpOworCisgICAgTlBQX0hhbmRsZUV2
ZW50KCZ4ZXZlbnQpOworCisgICAgaWYgKG1fcGx1Z2luRGlzcGxheSAhPSB4MTFEaXNwbGF5KCkp
CisgICAgICAgIFhTeW5jKG1fcGx1Z2luRGlzcGxheSwgZmFsc2UpOworCisjaWYgUExBVEZPUk0o
UVQpCisgICAgUVBpeG1hcCBxdERyYXdhYmxlID0gUVBpeG1hcDo6ZnJvbVgxMVBpeG1hcChtX2Ry
YXdhYmxlLCBRUGl4bWFwOjpFeHBsaWNpdGx5U2hhcmVkKTsKKyAgICBBU1NFUlQocXREcmF3YWJs
ZS5kZXB0aCgpID09IHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25w
V2luZG93LndzX2luZm8pLT5kZXB0aCk7CisgICAgcGFpbnRlci0+ZHJhd1BpeG1hcChRUG9pbnQo
ZXhwb3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCkpLCBxdERyYXdhYmxlLCBleHBvc2VkUmVj
dCk7CisKKyAgICBwYWludGVyLT50cmFuc2xhdGUoLW1fZnJhbWVSZWN0LngoKSwgLW1fZnJhbWVS
ZWN0LnkoKSk7CisjZW5kaWYKK30KKworTlBFdmVudCB0b05QKGNvbnN0IFdlYk1vdXNlRXZlbnQm
IGV2ZW50KQoreworI2lmIE9TKFNZTUJJQU4pCisgICAgTlBFdmVudCBucEV2ZW50ID0gUUV2ZW50
KFFFdmVudDo6Tm9uZSk7CisjZWxzZQorICAgIE5QRXZlbnQgbnBFdmVudCA9IE5QRXZlbnQoKTsK
KyNlbmRpZgorCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAgIHJldHVybiBucEV2ZW50Owor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3Qg
V2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKG1faXNXaW5kb3dlZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgTlBFdmVudCBucEV2ZW50ID0gdG9OUChldmVudCk7CisgICAg
TlBQX0hhbmRsZUV2ZW50KCZucEV2ZW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZl
bnQmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3VzKGJvb2wpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3Vz
ZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKG1faXNX
aW5kb3dlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlBFdmVudCBucEV2ZW50ID0g
dG9OUChldmVudCk7CisgICAgTlBQX0hhbmRsZUV2ZW50KCZucEV2ZW50KTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUxlYXZl
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKG1faXNXaW5kb3dl
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlBFdmVudCBucEV2ZW50ID0gdG9OUChl
dmVudCk7CisgICAgTlBQX0hhbmRsZUV2ZW50KCZucEV2ZW50KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXlib2FyZEV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggOTNmMzE4NWM0ZmI1ZjU0N2RkYzY3NzZiN2I4MzQzMTBkZTE0
ZjFhYi4uNTgwYmExMDA2ODllZDE1MzlmNzMwZTYwMDZiOGY3NTE1NWU0YTFiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEyMTcsNiArMTIxNywxOSBAQCBQYXNzUmVm
UHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbgogICAgICAgICAgICAgcGFyYW1ldGVycy5uYW1lc1tpXSA9IHBhcmFt
TmFtZXNbaV0ubG93ZXIoKTsKICAgICB9CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkK
KyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94LXNob2Nr
d2F2ZS1mbGFzaCIpKSB7CisgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBzdXBwb3J0IHRy
YW5zcGFyZW5jeSBhbmQgd2luZG93ZWQgbW9kZS4KKyAgICAgICAgLy8gSW5qZWN0IHdtb2RlPW9w
YXF1ZSB0byBtYWtlIEZsYXNoIHdvcmtpbmcgd2l0aCB0aGVzZSBjb25kaXRpb25zLgorICAgICAg
ICBzaXplX3Qgd21vZGVJbmRleCA9IHBhcmFtZXRlcnMubmFtZXMuZmluZCgid21vZGUiKTsKKyAg
ICAgICAgaWYgKHdtb2RlSW5kZXggPT0gLTEpIHsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMubmFt
ZXMuYXBwZW5kKCJ3bW9kZSIpOworICAgICAgICAgICAgcGFyYW1ldGVycy52YWx1ZXMuYXBwZW5k
KCJvcGFxdWUiKTsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShwYXJhbWV0
ZXJzLnZhbHVlc1t3bW9kZUluZGV4XSwgIndpbmRvdyIpKQorICAgICAgICAgICAgcGFyYW1ldGVy
cy52YWx1ZXNbd21vZGVJbmRleF0gPSAib3BhcXVlIjsKKyAgICB9CisjZW5kaWYKKwogICAgIFJl
ZlB0cjxQbHVnaW4+IHBsdWdpbiA9IHdlYlBhZ2UtPmNyZWF0ZVBsdWdpbihwYXJhbWV0ZXJzKTsK
ICAgICBpZiAoIXBsdWdpbikKICAgICAgICAgcmV0dXJuIDA7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>