<?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>86568</bug_id>
          
          <creation_ts>2012-05-15 21:18:28 -0700</creation_ts>
          <short_desc>Add instrumentation to Vector to track used capacity, and dump useful info</short_desc>
          <delta_ts>2013-01-04 00:52:52 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>86281</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>levin+threading</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>624941</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-15 21:18:28 -0700</bug_when>
    <thetext>Add instrumentation to Vector to track used capacity, and dump useful info</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624946</commentid>
    <comment_count>1</comment_count>
      <attachid>142141</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-15 21:25:50 -0700</bug_when>
    <thetext>Created attachment 142141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624947</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 21:28:04 -0700</bug_when>
    <thetext>Attachment 142141 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/WTF.xc...&quot; exit_code: 1
Source/WTF/wtf/Vector.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775114</commentid>
    <comment_count>3</comment_count>
      <attachid>142141</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-11-25 20:38:27 -0800</bug_when>
    <thetext>Comment on attachment 142141
Patch

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

The whole patch should probably have been landed long ago; it probably doesn&apos;t impact non-Mac platforms at all. We&apos;re there particular cases where these statistics were helpful in debugging a problem that you can mention?

R=me.

&gt; Source/WTF/wtf/Vector.cpp:56
&gt; +    pthread_once(&amp;initializeOnceKey, initializeOnce);

Should we have a FIXME here for other platforms?

&gt; Source/WTF/wtf/Vector.cpp:125
&gt; +    VectorHash::iterator it = vectorData.find(vector);

It might be clearer to handle the fail/log case as an early return here.

&gt; Source/WTF/wtf/Vector.cpp:142
&gt; +    long long m_totalSizeBytes; 

Would it be better to use something like int64_t? Actually, does it make sense to allow these to be signed? Maybe uint64_t would be better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775541</commentid>
    <comment_count>4</comment_count>
      <attachid>142141</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-26 09:18:49 -0800</bug_when>
    <thetext>Comment on attachment 142141
Patch

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

Simon, it seems that this code will be dead the moment it lands as it requires some modification of the main even loop that no port implements. Is there a plan to add this tracking to any platform or even better DRT?

&gt; Source/WTF/wtf/Vector.cpp:42
&gt; +#if OS(DARWIN)

It&apos;s wrong to use OS(DARWIN) here, you should use USE(PTHREADS)

&gt; Source/WTF/wtf/Vector.cpp:88
&gt; +    }

Regular WebKit style puts the functions first and the members last.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775616</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-26 10:18:23 -0800</bug_when>
    <thetext>Someone is welcome to take this patch and fix it up so that it works for all ports. I&apos;m unlikely to do that any time soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800031</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 00:52:52 -0800</bug_when>
    <thetext>Attachment 142141 was posted by a committer and has review+, assigning to Simon Fraser for commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142141</attachid>
            <date>2012-05-15 21:25:50 -0700</date>
            <delta_ts>2012-11-26 09:18:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86568-20120515212548.patch</filename>
            <type>text/plain</type>
            <size>23500</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNjMmY0MmUzNjAyNTJlOWNjMjE4MjBi
OTI2NWJkYWMxMGEyNWRkODIuLjU4YmM4M2ZkOTY3MGVjYjBkMTkzMmEwMTk2ODhmODI2YTIyMDhh
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTItMDUtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGluc3RydW1lbnRhdGlvbiB0byBWZWN0
b3IgdG8gdHJhY2sgdXNlZCBjYXBhY2l0eSwgYW5kIGR1bXAgdXNlZnVsIGluZm8KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXaGVuIERVTVBf
VkVDVE9SX1NUQVRTIGlzIGRlZmluZWQgdG8gMSwgd2Uga2VlcCB0cmFjayBvZiBhbGwgVmVjdG9y
cywKKyAgICAgICAgYW5kIHN0b3JlIGRhdGEgYWJvdXQgdGhlaXIgY3VycmVudCBzaXplIGFuZCBj
YXBhY2l0eSwgYW5kIGhpZ2ggd2F0ZXJtYXJrCisgICAgICAgIHNpemUgYW5kIGNhcGFjaXR5LiBU
aGVpciBjcmVhdGlvbiB0aW1lIGFuZCBhbGxvY2F0aW9uIHN0YWNrIGFyZSB0cmFja2VkLgorICAg
ICAgICAKKyAgICAgICAgV2hlbiBkdW1wVmVjdG9yU3RhdHMoKSBpcyBjYWxsZWQsIHdlIGNvYWxl
c2NlIGRhdGEgb24gVmVjdG9ycyB3aXRoCisgICAgICAgIG1hdGNoaW5nIGFsbG9jYXRpb24gc3Rh
Y2tzLCBzb3J0IHRoZSBhbGxvY2F0aW9uIHN0YWNrcyBhY2NvcmRpbmcKKyAgICAgICAgdG8gdGhv
c2Ugd2hpY2ggd2FzdGUgdGhlIG1vc3Qgc3BhY2UsIGFuZCBwcmludCB0aGUgdG9wIDIwIHN0YWNr
cy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGRvZXMgbm90IGluIGluY2x1ZGUgYSBj
YWxsIHRvIFZlY3RvclN0YXRzOjpkdW1wVmVjdG9yU3RhdHMoKS4KKyAgICAgICAgQWRkaW5nIHRo
YXQgaXMgdXAgdG8gdGhlIHBlcnNvbiBlbmFibGluZyBEVU1QX1ZFQ1RPUl9TVEFUUy4gU29tZSBj
b21tZW50cworICAgICAgICBzdWdnZXN0IGhvdyB0byBkbyB0aGlzLgorCisgICAgICAgICogV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL1ZlY3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU9uY2UpOgorICAg
ICAgICAoV1RGOjp2ZWN0b3JTdGF0c011dGV4KToKKyAgICAgICAgKFBlclZlY3RvckRhdGEpOgor
ICAgICAgICAoV1RGOjpQZXJWZWN0b3JEYXRhOjpQZXJWZWN0b3JEYXRhKToKKyAgICAgICAgKFdU
Rjo6dmVjdG9yTGlzdCk6CisgICAgICAgIChXVEY6OlZlY3RvclN0YXRzOjp2ZWN0b3JDcmVhdGVk
KToKKyAgICAgICAgKFdURjo6VmVjdG9yU3RhdHM6OnZlY3RvclVwZGF0ZWQpOgorICAgICAgICAo
QWxsb2NhdGlvblN0YWNrSW5mbyk6CisgICAgICAgIChXVEY6OkFsbG9jYXRpb25TdGFja0luZm86
OkFsbG9jYXRpb25TdGFja0luZm8pOgorICAgICAgICAoV1RGOjpjb21wYXJlQnlXYXN0ZSk6Cisg
ICAgICAgIChXVEY6OmR1bXBXYXN0ZWZ1bG5lc3NTdGF0cyk6CisgICAgICAgIChXVEY6OlZlY3Rv
clN0YXRzOjp2ZWN0b3JEZXN0cm95ZWQpOgorICAgICAgICAoV1RGOjpWZWN0b3JTdGF0czo6ZHVt
cFZlY3RvclN0YXRzKToKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEYpOgor
ICAgICAgICAoVmVjdG9yU3RhdHMpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OlZlY3Rvcik6Cisg
ICAgICAgIChXVEY6OlZlY3Rvcjo6flZlY3Rvcik6CisgICAgICAgIChXVEY6Ojo6VmVjdG9yKToK
KyAgICAgICAgKFdURjo6PSk6CisgICAgICAgIChXVEY6Ojo6ZmlsbCk6CisgICAgICAgIChXVEY6
Ojo6cmVzaXplKToKKyAgICAgICAgKFdURjo6Ojpncm93KToKKyAgICAgICAgKFdURjo6OjpyZXNl
cnZlQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjo6OnRyeVJlc2VydmVDYXBhY2l0eSk6CisgICAg
ICAgIChXVEY6Ojo6cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Ojo6c2hy
aW5rQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjo6OmFwcGVuZCk6CisgICAgICAgIChXVEY6Ojo6
dHJ5QXBwZW5kKToKKyAgICAgICAgKFdURjo6OjphcHBlbmRTbG93Q2FzZSk6CisgICAgICAgIChX
VEY6Ojo6dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAgKFdURjo6OjppbnNlcnQpOgorICAgICAg
ICAoV1RGOjo6OnJlbW92ZSk6CisgICAgICAgIChXVEY6Ojo6cmVsZWFzZUJ1ZmZlcik6CisKIDIw
MTItMDUtMTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBzaHJp
bmtUb0ZpdCgpIGlzIG9mdGVuIG5vdCBjYWxsZWQgZm9yIFZlY3RvcnMgaW4gQ29kZUJsb2NrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNmI5MmJiMDc5NDIx
ZDJkMWFmNzVlNWI2NTk0NmJkMDdkMmIzNTI3Li5mYzE2NmVmNWNiY2QyZTdhYmQ4NTU3Nzg1MmVm
ZjVjZWU5NTFkN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTcsNiArNyw3IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNl
Y3Rpb24gKi8KKwkJMEY4MjVBQkUxNTVFMDE4NjAwODEwQ0U5IC8qIFZlY3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNUFCRDE1NUUwMTg2
MDA4MTBDRTkgLyogVmVjdG9yLmNwcCAqLzsgfTsKIAkJQTg3NkRCRDgxNTE4MTZFNTAwREFEQjk1
IC8qIFBsYXRmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLzsgfTsKIAkJQThB
NDczN0YxNTFBODI1QjAwNDEyM0ZGIC8qIEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNTQxNTFBODI1QTAwNDEyM0ZGIC8qIEFs
aWdubWVudC5oICovOyB9OwogCQlBOEE0NzM4MDE1MUE4MjVCMDA0MTIzRkYgLyogQWx3YXlzSW5s
aW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0
NzI1NTE1MUE4MjVBMDA0MTIzRkYgLyogQWx3YXlzSW5saW5lLmggKi87IH07CkBAIC0yNDAsNiAr
MjQxLDcgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMEY4MjVBQkQxNTVFMDE4NjAwODEwQ0U5IC8qIFZl
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWZWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYg
LyogbGliV1RGLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhC
NzYgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2RjE0Njg5QzQ3MDBFNzhCNzYgLyogQ29tcGls
ZXJWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBpbGVyVmVyc2lvbi54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwMCw2ICs3MDIsNyBAQAogCQkJCUE4
QTQ3MzVEMTUxQTgyNUIwMDQxMjNGRiAvKiBVbnVzZWRQYXJhbS5oICovLAogCQkJCUE4QTQ3MzVF
MTUxQTgyNUIwMDQxMjNGRiAvKiB1cmwgKi8sCiAJCQkJQThBNDczNkYxNTFBODI1QjAwNDEyM0ZG
IC8qIFZhbHVlQ2hlY2suaCAqLywKKwkJCQkwRjgyNUFCRDE1NUUwMTg2MDA4MTBDRTkgLyogVmVj
dG9yLmNwcCAqLywKIAkJCQlBOEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8s
CiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovLAogCQkJ
CUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywKQEAgLTExNjgsNiArMTE3
MSw3IEBACiAJCQkJQThBNDc0NzcxNTFBODI1QjAwNDEyM0ZGIC8qIFVSTEVzY2FwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzQ3QjE1MUE4MjVCMDA0MTIzRkYgLyogVVJMU2VnbWVudHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRo
cmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY4MjVBQkUxNTVFMDE4NjAwODEwQ0U5
IC8qIFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNTM2
ZTk4YWMwNzIzNzI2ZTJiNmUyZWI4ODEyN2QwZTgyZjEzYTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZlY3Rvci5oIgorCisjaW5jbHVkZSAiQXNz
ZXJ0aW9ucy5oIgorI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCisjaW5jbHVkZSAiSGFzaE1hcC5o
IgorI2luY2x1ZGUgIlN0cmluZ0hhc2hlci5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNs
dWRlIDxtYXRoLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXVEYgewor
CisjaWYgRFVNUF9WRUNUT1JfU1RBVFMKKworI2lmIE9TKERBUldJTikKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCBpbml0aWFsaXplT25jZUtleSA9IFBUSFJFQURfT05DRV9JTklUOworI2VuZGlmCisK
K3N0YXRpYyBNdXRleCogc011dGV4Oworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU9uY2UoKQorewor
ICAgIHNNdXRleCA9IG5ldyBNdXRleDsKK30KKworc3RhdGljIE11dGV4JiB2ZWN0b3JTdGF0c011
dGV4KCkKK3sKKyAgICAvLyBDYW4ndCB1c2UgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljIGJl
Y2F1c2Ugc29tZW9uZSBtYXkgYmUgdXNpbmcgb24gdGhlIHN0YWNrIGFib3ZlIHVzLgorI2lmIE9T
KERBUldJTikKKyAgICBwdGhyZWFkX29uY2UoJmluaXRpYWxpemVPbmNlS2V5LCBpbml0aWFsaXpl
T25jZSk7CisjZW5kaWYKKyAgICByZXR1cm4gKnNNdXRleDsKK30KKworc3RhdGljIGNvbnN0IGlu
dCBmcmFtZXNUb1Nob3cgPSA1Oworc3RhdGljIGNvbnN0IGludCBmcmFtZXNUb1NraXAgPSAyOwor
CitzdHJ1Y3QgUGVyVmVjdG9yRGF0YSB7CisgICAgdm9pZCogbV9hbGxvY2F0aW9uU3RhY2tTYW1w
bGVzW2ZyYW1lc1RvU2hvdyArIGZyYW1lc1RvU2tpcF07CisgICAgaW50IG1fYWxsb2NhdGlvblN0
YWNrRnJhbWVDb3VudCA9IGZyYW1lc1RvU2hvdyArIGZyYW1lc1RvU2tpcDsKKworICAgIHVuc2ln
bmVkIG1fYWxsb2NhdGlvblN0YWNrSGFzaDsKKyAgICAKKyAgICBpbnQgbV9jdXJyU2l6ZTsKKyAg
ICBpbnQgbV9jdXJyQ2FwYWNpdHk7CisgICAgCisgICAgaW50IG1fbWF4U2l6ZTsKKyAgICBpbnQg
bV9tYXhDYXBhY2l0eTsKKworICAgIHNpemVfdCBtX3ZhbHVlU2l6ZTsKKyAgICBkb3VibGUgbV9j
cmVhdGlvblRpbWU7CisgICAgCisgICAgUGVyVmVjdG9yRGF0YSgpCisgICAgICAgIDogbV9hbGxv
Y2F0aW9uU3RhY2tIYXNoKDApCisgICAgICAgICwgbV9jdXJyU2l6ZSgwKQorICAgICAgICAsIG1f
Y3VyckNhcGFjaXR5KDApCisgICAgICAgICwgbV9tYXhTaXplKDApCisgICAgICAgICwgbV9tYXhD
YXBhY2l0eSgwKQorICAgICAgICAsIG1fdmFsdWVTaXplKDApCisgICAgICAgICwgbV9jcmVhdGlv
blRpbWUoMCkKKyAgICB7CisgICAgfQorfTsKKwordHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBQZXJW
ZWN0b3JEYXRhPiBWZWN0b3JIYXNoOworCitzdGF0aWMgVmVjdG9ySGFzaCYgdmVjdG9yTGlzdCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3JIYXNoLCB2ZWN0b3JMaXN0LCAoKSk7
CisgICAgcmV0dXJuIHZlY3Rvckxpc3Q7Cit9CisKK3ZvaWQgVmVjdG9yU3RhdHM6OnZlY3RvckNy
ZWF0ZWQodm9pZCogdmVjdG9yLCBzaXplX3QgdmFsdWVTaXplLCBpbnQgY2FwYWNpdHksIGludCBz
aXplKQoreworICAgIEFTU0VSVChzaXplIDw9IGNhcGFjaXR5KTsKKworICAgIFBlclZlY3RvckRh
dGEgY3VyclZlY3RvckRhdGE7CisgICAgY3VyclZlY3RvckRhdGEubV92YWx1ZVNpemUgPSB2YWx1
ZVNpemU7CisgICAgY3VyclZlY3RvckRhdGEubV9jdXJyU2l6ZSA9IHNpemU7CisgICAgY3VyclZl
Y3RvckRhdGEubV9jdXJyQ2FwYWNpdHkgPSBjYXBhY2l0eTsKKyAgICBjdXJyVmVjdG9yRGF0YS5t
X21heFNpemUgPSBzaXplOworICAgIGN1cnJWZWN0b3JEYXRhLm1fbWF4Q2FwYWNpdHkgPSBjYXBh
Y2l0eTsKKyAgICBjdXJyVmVjdG9yRGF0YS5tX2NyZWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisKKyAgICBXVEZHZXRCYWNrdHJhY2UoY3VyclZlY3RvckRhdGEubV9hbGxvY2F0aW9uU3RhY2tT
YW1wbGVzLCAmY3VyclZlY3RvckRhdGEubV9hbGxvY2F0aW9uU3RhY2tGcmFtZUNvdW50KTsKKyAg
ICBjdXJyVmVjdG9yRGF0YS5tX2FsbG9jYXRpb25TdGFja0hhc2ggPSBTdHJpbmdIYXNoZXI6Omhh
c2hNZW1vcnkoY3VyclZlY3RvckRhdGEubV9hbGxvY2F0aW9uU3RhY2tTYW1wbGVzLCBjdXJyVmVj
dG9yRGF0YS5tX2FsbG9jYXRpb25TdGFja0ZyYW1lQ291bnQgKiBzaXplb2Yodm9pZCopKTsKKwor
ICAgIE11dGV4TG9ja2VyIGxvY2sodmVjdG9yU3RhdHNNdXRleCgpKTsKKyAgICBWZWN0b3JIYXNo
JiB2ZWN0b3JEYXRhID0gdmVjdG9yTGlzdCgpOworICAgIHZlY3RvckRhdGEuYWRkKHZlY3Rvciwg
Y3VyclZlY3RvckRhdGEpOworfQorCit2b2lkIFZlY3RvclN0YXRzOjp2ZWN0b3JVcGRhdGVkKHZv
aWQqIHZlY3RvciwgaW50IGNhcGFjaXR5LCBpbnQgc2l6ZSkKK3sKKyAgICBBU1NFUlQoc2l6ZSA8
PSBjYXBhY2l0eSk7CisgICAgTXV0ZXhMb2NrZXIgbG9jayh2ZWN0b3JTdGF0c011dGV4KCkpOwor
CisgICAgVmVjdG9ySGFzaCYgdmVjdG9yRGF0YSA9IHZlY3Rvckxpc3QoKTsKKyAgICBWZWN0b3JI
YXNoOjppdGVyYXRvciBpdCA9IHZlY3RvckRhdGEuZmluZCh2ZWN0b3IpOworICAgIGlmIChpdCAh
PSB2ZWN0b3JEYXRhLmVuZCgpKSB7CisgICAgICAgIFBlclZlY3RvckRhdGEmIGRhdGEgPSBpdC0+
c2Vjb25kOworCisgICAgICAgIGRhdGEubV9jdXJyU2l6ZSA9IHNpemU7CisgICAgICAgIGRhdGEu
bV9jdXJyQ2FwYWNpdHkgPSBjYXBhY2l0eTsKKworICAgICAgICBkYXRhLm1fbWF4U2l6ZSA9IG1h
eChkYXRhLm1fbWF4U2l6ZSwgc2l6ZSk7CisgICAgICAgIGRhdGEubV9tYXhDYXBhY2l0eSA9IG1h
eChkYXRhLm1fbWF4Q2FwYWNpdHksIGNhcGFjaXR5KTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJVbmtub3duIHZlY3RvciAlcFxuIiwgdmVjdG9yKTsKK30KKworc3RydWN0
IEFsbG9jYXRpb25TdGFja0luZm8geworICAgIFBlclZlY3RvckRhdGEgbV9maXJzdFZlY3Rvcjsg
Ly8gVXNlZCB0byBmZXRjaCB0aGUgc3RhY2sgZnJhbWVzLgorICAgIAorICAgIHVuc2lnbmVkIG1f
Y291bnQ7CisgICAgbG9uZyBsb25nIG1fdG90YWxTaXplQnl0ZXM7IAorICAgIGxvbmcgbG9uZyBt
X3RvdGFsQ2FwYWNpdHlCeXRlczsKKyAgICAKKyAgICBBbGxvY2F0aW9uU3RhY2tJbmZvKCkKKyAg
ICAgICAgOiBtX2NvdW50KDApCisgICAgICAgICwgbV90b3RhbFNpemVCeXRlcygwKQorICAgICAg
ICAsIG1fdG90YWxDYXBhY2l0eUJ5dGVzKDApCisgICAgeworICAgIH0KK307CisKK3N0YXRpYyBi
b29sIGNvbXBhcmVCeVdhc3RlKGNvbnN0IEFsbG9jYXRpb25TdGFja0luZm8qIGZpcnN0LCBjb25z
dCBBbGxvY2F0aW9uU3RhY2tJbmZvKiBzZWNvbmQpCit7CisgICAgbG9uZyBsb25nIGZpcnN0V2Fz
dGUgPSBmaXJzdC0+bV90b3RhbENhcGFjaXR5Qnl0ZXMgLSBmaXJzdC0+bV90b3RhbFNpemVCeXRl
czsKKyAgICBsb25nIGxvbmcgc2Vjb25kV2FzdGUgPSBzZWNvbmQtPm1fdG90YWxDYXBhY2l0eUJ5
dGVzIC0gc2Vjb25kLT5tX3RvdGFsU2l6ZUJ5dGVzOworICAgIAorICAgIHJldHVybiBmaXJzdFdh
c3RlIDwgc2Vjb25kV2FzdGU7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBXYXN0ZWZ1bG5lc3NTdGF0
cygpCit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgQWxsb2NhdGlvblN0YWNrSW5mbz4gY29tbW9u
U3RhY2tzTWFwOworCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrKHZlY3RvclN0YXRz
TXV0ZXgoKSk7CisgICAgICAgIFZlY3Rvckhhc2gmIHZlY3Rvckhhc2ggPSB2ZWN0b3JMaXN0KCk7
CisKKyAgICAgICAgbG9uZyBsb25nIHRvdGFsVXNlZEJ5dGVzID0gMDsKKyAgICAgICAgbG9uZyBs
b25nIHRvdGFsQ2FwYWNpdHlCeXRlcyA9IDA7CisgICAgICAgIAorICAgICAgICBWZWN0b3JIYXNo
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSB2ZWN0b3JIYXNoLmVuZCgpOworICAgICAgICBmb3IgKFZl
Y3Rvckhhc2g6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdmVjdG9ySGFzaC5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGNvbnN0IFBlclZlY3RvckRhdGEmIGN1cnJWZWN0b3JE
YXRhID0gaXQtPnNlY29uZDsKKyAgICAgICAgCisgICAgICAgICAgICB0b3RhbFVzZWRCeXRlcyAr
PSBjdXJyVmVjdG9yRGF0YS5tX2N1cnJTaXplICogY3VyclZlY3RvckRhdGEubV92YWx1ZVNpemU7
CisgICAgICAgICAgICB0b3RhbENhcGFjaXR5Qnl0ZXMgKz0gY3VyclZlY3RvckRhdGEubV9jdXJy
Q2FwYWNpdHkgKiBjdXJyVmVjdG9yRGF0YS5tX3ZhbHVlU2l6ZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIEFsbG9jYXRpb25TdGFja0luZm8+OjppdGVyYXRv
ciBjb21tb25TdGFja3NJdCA9IGNvbW1vblN0YWNrc01hcC5maW5kKGN1cnJWZWN0b3JEYXRhLm1f
YWxsb2NhdGlvblN0YWNrSGFzaCk7CisgICAgICAgICAgICAgaWYgKGNvbW1vblN0YWNrc0l0ID09
IGNvbW1vblN0YWNrc01hcC5lbmQoKSkgeworICAgICAgICAgICAgICAgIEFsbG9jYXRpb25TdGFj
a0luZm8gYWxsb2NhdGlvbkluZm87CisgICAgICAgICAgICAgICAgYWxsb2NhdGlvbkluZm8ubV9m
aXJzdFZlY3RvciA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgYWxsb2NhdGlvbkluZm8u
bV9jb3VudCA9IDE7CisgICAgICAgICAgICAgICAgYWxsb2NhdGlvbkluZm8ubV90b3RhbFNpemVC
eXRlcyA9IGN1cnJWZWN0b3JEYXRhLm1fY3VyclNpemUgKiBjdXJyVmVjdG9yRGF0YS5tX3ZhbHVl
U2l6ZTsKKyAgICAgICAgICAgICAgICBhbGxvY2F0aW9uSW5mby5tX3RvdGFsQ2FwYWNpdHlCeXRl
cyA9IGN1cnJWZWN0b3JEYXRhLm1fY3VyckNhcGFjaXR5ICogY3VyclZlY3RvckRhdGEubV92YWx1
ZVNpemU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29tbW9uU3RhY2tzTWFw
LmFkZChjdXJyVmVjdG9yRGF0YS5tX2FsbG9jYXRpb25TdGFja0hhc2gsIGFsbG9jYXRpb25JbmZv
KTsKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFsbG9jYXRpb25TdGFj
a0luZm8mIGFsbG9jYXRpb25JbmZvID0gY29tbW9uU3RhY2tzSXQtPnNlY29uZDsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBhbGxvY2F0aW9uSW5mby5tX2NvdW50ICs9IDE7Cisg
ICAgICAgICAgICAgICAgYWxsb2NhdGlvbkluZm8ubV90b3RhbFNpemVCeXRlcyArPSBjdXJyVmVj
dG9yRGF0YS5tX2N1cnJTaXplICogY3VyclZlY3RvckRhdGEubV92YWx1ZVNpemU7CisgICAgICAg
ICAgICAgICAgYWxsb2NhdGlvbkluZm8ubV90b3RhbENhcGFjaXR5Qnl0ZXMgKz0gY3VyclZlY3Rv
ckRhdGEubV9jdXJyQ2FwYWNpdHkgKiBjdXJyVmVjdG9yRGF0YS5tX3ZhbHVlU2l6ZTsKKyAgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAi
XG4lZCBleHRhbnQgdmVjdG9ycyB3YXN0aW5nICUuMmZNQiAlLjJmJSUgKHVzZWQgJWxsZCBieXRl
cywgY2FwYWNpdHkgJWxsZCBieXRlcyk6XG4iLAorICAgICAgICAgICAgdmVjdG9ySGFzaC5zaXpl
KCksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHRvdGFsQ2FwYWNpdHlCeXRlcyAt
IHRvdGFsVXNlZEJ5dGVzKSAvICgxMDI0ICogMTAyNCksCisgICAgICAgICAgICAxMDAuMCAqIHN0
YXRpY19jYXN0PGRvdWJsZT4odG90YWxDYXBhY2l0eUJ5dGVzIC0gdG90YWxVc2VkQnl0ZXMpIC8g
dG90YWxDYXBhY2l0eUJ5dGVzLAorICAgICAgICAgICAgdG90YWxVc2VkQnl0ZXMsIHRvdGFsQ2Fw
YWNpdHlCeXRlcyk7ICAgIAorICAgIH0KKyAgICAKKyAgICBWZWN0b3I8Y29uc3QgQWxsb2NhdGlv
blN0YWNrSW5mbyo+IGFsbG9jYXRpb25zOworICAgIGFsbG9jYXRpb25zLnJlc2l6ZShjb21tb25T
dGFja3NNYXAuc2l6ZSgpKTsKKyAgICAKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBBbGxvY2F0aW9u
U3RhY2tJbmZvPjo6Y29uc3RfaXRlcmF0b3Igc3RhY2tzRW5kID0gY29tbW9uU3RhY2tzTWFwLmVu
ZCgpOworICAgIEhhc2hNYXA8dW5zaWduZWQsIEFsbG9jYXRpb25TdGFja0luZm8+Ojpjb25zdF9p
dGVyYXRvciBzdGFja3NJdDsKKyAgICBpbnQgaTsKKyAgICBmb3IgKHN0YWNrc0l0ID0gY29tbW9u
U3RhY2tzTWFwLmJlZ2luKCksIGkgPSAwOyBzdGFja3NJdCAhPSBzdGFja3NFbmQ7ICsrc3RhY2tz
SXQsICsraSkKKyAgICAgICAgYWxsb2NhdGlvbnNbaV0gPSAmKHN0YWNrc0l0LT5zZWNvbmQpOwor
ICAgIAorICAgIHN0ZDo6c29ydChhbGxvY2F0aW9ucy5iZWdpbigpLCBhbGxvY2F0aW9ucy5lbmQo
KSwgY29tcGFyZUJ5V2FzdGUpOworICAgIAorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
ayh2ZWN0b3JTdGF0c011dGV4KCkpOyAvLyBUcnkgdG8gYXZvaWQgaW50ZXJsZWF2ZWQgb3V0cHV0
LgorCisgICAgICAgIGludCBzdGFja3NUb1ByaW50ID0gbWluPGludD4oYWxsb2NhdGlvbnMuc2l6
ZSgpLCAyMCk7CisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiXG5Nb3N0IHdhc3RlZnVsICVkIHN0
YWNrc1xuIiwgc3RhY2tzVG9QcmludCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBqID0g
MDsgaiA8IHN0YWNrc1RvUHJpbnQ7ICsraikgeworICAgICAgICAgICAgY29uc3QgQWxsb2NhdGlv
blN0YWNrSW5mbyogY3VyclN0YWNrID0gYWxsb2NhdGlvbnNbYWxsb2NhdGlvbnMuc2l6ZSgpIC0g
aiAtIDFdOworICAgICAgICAgICAgCisgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVkIHZl
Y3RvcnMsICUuMmZLQiB1c2VkIG9mICUuMmZLQiwgJS4yZktCIHdhc3RlZCBhdDpcbiIsIGN1cnJT
dGFjay0+bV9jb3VudCwKKyAgICAgICAgICAgICAgICAoZG91YmxlKWN1cnJTdGFjay0+bV90b3Rh
bFNpemVCeXRlcyAvIDEwMjQsCisgICAgICAgICAgICAgICAgKGRvdWJsZSljdXJyU3RhY2stPm1f
dG90YWxDYXBhY2l0eUJ5dGVzIC8gMTAyNCwKKyAgICAgICAgICAgICAgICAoZG91YmxlKShjdXJy
U3RhY2stPm1fdG90YWxDYXBhY2l0eUJ5dGVzIC0gY3VyclN0YWNrLT5tX3RvdGFsU2l6ZUJ5dGVz
KSAvIDEwMjQuMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdURlByaW50QmFja3RyYWNl
KCh2b2lkKiopKGN1cnJTdGFjay0+bV9maXJzdFZlY3Rvci5tX2FsbG9jYXRpb25TdGFja1NhbXBs
ZXMpICsgZnJhbWVzVG9Ta2lwLCBjdXJyU3RhY2stPm1fZmlyc3RWZWN0b3IubV9hbGxvY2F0aW9u
U3RhY2tGcmFtZUNvdW50IC0gZnJhbWVzVG9Ta2lwKTsKKyAgICAgICAgICAgIGZwcmludGYoc3Rk
b3V0LCAiXG4iKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBWZWN0b3JTdGF0czo6dmVj
dG9yRGVzdHJveWVkKHZvaWQqIHZlY3RvcikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKHZlY3Rv
clN0YXRzTXV0ZXgoKSk7CisKKyAgICBWZWN0b3JIYXNoJiB2ZWN0b3JEYXRhID0gdmVjdG9yTGlz
dCgpOworICAgIFZlY3Rvckhhc2g6Oml0ZXJhdG9yIGl0ID0gdmVjdG9yRGF0YS5maW5kKHZlY3Rv
cik7CisgICAgaWYgKGl0ICE9IHZlY3RvckRhdGEuZW5kKCkpCisgICAgICAgIHZlY3RvckRhdGEu
cmVtb3ZlKGl0KTsKKyAgICBlbHNlCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5rbm93biB2
ZWN0b3IgJXBcbiIsIHZlY3Rvcik7Cit9CisKKy8vIFRvIGR1bXAgZGF0YSwgeW91IG5lZWQgdG8g
YWRkIGEgY2FsbCB0byB0aGlzIGF0IGEgcG9pbnQgd2hlcmUgdGhlcmUgYXJlIG5vdCBhIGxvdCBv
ZiB0ZW1wb3JhcnkKKy8vIGV4dGFudCBWZWN0b3JzLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVz
ZSBhIENGUnVuTG9vcE9ic2V2ZXIgb24gTWFjOgorLy8KKy8vIHN0YXRpYyB2b2lkIGR1bXBTdGF0
c09ic2VydmVyQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5
LCB2b2lkKikKKy8vIHsKKy8vICAgIFdURjo6VmVjdG9yU3RhdHM6OmR1bXBWZWN0b3JTdGF0cygp
OworLy8gfQorLy8gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJDb250ZXh0IGNvbnRleHQgPSB7MCwgMCwg
MCwgMCwgMH07CisvLyAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBkdW1wVmVjdG9yU3RhdHNPYnNl
cnZlciA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRlJ1
bkxvb3BCZWZvcmVXYWl0aW5nLCBZRVMsIDAsICZkdW1wU3RhdHNPYnNlcnZlckNhbGxiYWNrLCAm
Y29udGV4dCk7CisvLyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRNYWluKCks
IGR1bXBWZWN0b3JTdGF0c09ic2VydmVyLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworLy8KK3Zv
aWQgVmVjdG9yU3RhdHM6OmR1bXBWZWN0b3JTdGF0cygpCit7CisgICAgZHVtcFdhc3RlZnVsbmVz
c1N0YXRzKCk7Cit9CisKKyNlbmRpZiAvLyBEVU1QX1ZFQ1RPUl9TVEFUUworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRl
eCAxOWU2ZmZiOGMxNjQ2YWFkZTRmNWI2NjA1NDg5YWZiMWM2ZWNhN2I2Li5mOWFmOTYwNGQzMzQ5
YTY0YWQ2ZjFlYTg2ZTk5YWFlZTJiNGIzNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9W
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtMzUsOCArMzUsMjAgQEAK
ICNpbmNsdWRlIDxRRGF0YVN0cmVhbT4KICNlbmRpZgogCisjZGVmaW5lIERVTVBfVkVDVE9SX1NU
QVRTIDAKKwogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBEVU1QX1ZFQ1RPUl9TVEFUUworICAgIHN0
cnVjdCBWZWN0b3JTdGF0cyB7CisgICAgICAgIH5WZWN0b3JTdGF0cygpOworICAgICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmVjdG9yQ3JlYXRlZCh2b2lkKiB2ZWN0b3IsIHNp
emVfdCB2YWx1ZVNpemUsIGludCBjYXBhY2l0eSwgaW50IHNpemUpOworICAgICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmVjdG9yVXBkYXRlZCh2b2lkKiB2ZWN0b3IsIGludCBj
YXBhY2l0eSwgaW50IHNpemUpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgdmVjdG9yRGVzdHJveWVkKHZvaWQqIHZlY3Rvcik7CisgICAgICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBkdW1wVmVjdG9yU3RhdHMoKTsKKyAgICB9OworI2VuZGlmCisKICAg
ICB1c2luZyBzdGQ6Om1pbjsKICAgICB1c2luZyBzdGQ6Om1heDsKIApAQCAtNDk0LDE4ICs1MDYs
MjcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIFZlY3RvcigpIAogICAgICAgICAgICAgOiBt
X3NpemUoMCkKICAgICAgICAgeworI2lmIERVTVBfVkVDVE9SX1NUQVRTCisgICAgICAgICAgICBW
ZWN0b3JTdGF0czo6dmVjdG9yQ3JlYXRlZCh0aGlzLCBzaXplb2YoVmFsdWVUeXBlKSwgbV9idWZm
ZXIuY2FwYWNpdHkoKSwgbV9zaXplKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBleHBsaWNpdCBWZWN0b3Ioc2l6ZV90IHNpemUpIAogICAgICAgICAgICAgOiBtX3NpemUo
c2l6ZSkKICAgICAgICAgICAgICwgbV9idWZmZXIoc2l6ZSkKICAgICAgICAgeworI2lmIERVTVBf
VkVDVE9SX1NUQVRTCisgICAgICAgICAgICBWZWN0b3JTdGF0czo6dmVjdG9yQ3JlYXRlZCh0aGlz
LCBzaXplb2YoVmFsdWVUeXBlKSwgbV9idWZmZXIuY2FwYWNpdHkoKSwgbV9zaXplKTsKKyNlbmRp
ZgogICAgICAgICAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6OmluaXRpYWxpemUoYmVnaW4oKSwgZW5kKCkpOwogICAgICAgICB9CiAKICAgICAgICAgflZl
Y3RvcigpCiAgICAgICAgIHsKKyNpZiBEVU1QX1ZFQ1RPUl9TVEFUUworICAgICAgICAgICAgVmVj
dG9yU3RhdHM6OnZlY3RvckRlc3Ryb3llZCh0aGlzKTsKKyNlbmRpZgogICAgICAgICAgICAgaWYg
KG1fc2l6ZSkKICAgICAgICAgICAgICAgICBzaHJpbmsoMCk7CiAgICAgICAgIH0KQEAgLTYwMCw2
ICs2MjEsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIDogbV9zaXplKHNpemUpCiAg
ICAgICAgICAgICAsIG1fYnVmZmVyKHNpemUpCiAgICAgICAgIHsKKyNpZiBEVU1QX1ZFQ1RPUl9T
VEFUUworICAgICAgICAgICAgVmVjdG9yU3RhdHM6OnZlY3RvckNyZWF0ZWQodGhpcywgc2l6ZW9m
KFZhbHVlVHlwZSksIG1fYnVmZmVyLmNhcGFjaXR5KCksIG1fc2l6ZSk7CisjZW5kaWYKICAgICAg
ICAgICAgIGlmIChiZWdpbigpKQogICAgICAgICAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmlu
aXRpYWxpemVkRmlsbChiZWdpbigpLCBlbmQoKSwgdmFsKTsKICAgICAgICAgfQpAQCAtNjg0LDYg
KzcwOCw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICA6IG1fc2l6ZShvdGhlci5zaXplKCkp
CiAgICAgICAgICwgbV9idWZmZXIob3RoZXIuY2FwYWNpdHkoKSkKICAgICB7CisjaWYgRFVNUF9W
RUNUT1JfU1RBVFMKKyAgICAgICAgVmVjdG9yU3RhdHM6OnZlY3RvckNyZWF0ZWQodGhpcywgc2l6
ZW9mKFZhbHVlVHlwZSksIG1fYnVmZmVyLmNhcGFjaXR5KCksIG1fc2l6ZSk7CisjZW5kaWYKICAg
ICAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFs
aXplZENvcHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuZW5kKCksIGJlZ2luKCkpOwogICAgIH0KQEAg
LTY5NCw2ICs3MjEsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgOiBtX3NpemUob3RoZXIu
c2l6ZSgpKQogICAgICAgICAsIG1fYnVmZmVyKG90aGVyLmNhcGFjaXR5KCkpCiAgICAgeworI2lm
IERVTVBfVkVDVE9SX1NUQVRTCisgICAgICAgIFZlY3RvclN0YXRzOjp2ZWN0b3JDcmVhdGVkKHRo
aXMsIHNpemVvZihWYWx1ZVR5cGUpLCBtX2J1ZmZlci5jYXBhY2l0eSgpLCBtX3NpemUpOworI2Vu
ZGlmCiAgICAgICAgIGlmIChiZWdpbigpKQogICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVu
aW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKICAg
ICB9CkBAIC03MjMsNiArNzUzLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBUeXBlT3Bl
cmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIu
ZW5kKCksIGVuZCgpKTsKICAgICAgICAgbV9zaXplID0gb3RoZXIuc2l6ZSgpOwogCisjaWYgRFVN
UF9WRUNUT1JfU1RBVFMKKyAgICAgICAgVmVjdG9yU3RhdHM6OnZlY3RvclVwZGF0ZWQodGhpcywg
bV9idWZmZXIuY2FwYWNpdHkoKSwgbV9zaXplKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CiAKQEAgLTc1Niw2ICs3OTAsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCkgKyBzaXpl
KCksIG90aGVyLmVuZCgpLCBlbmQoKSk7CiAgICAgICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsK
IAorI2lmIERVTVBfVkVDVE9SX1NUQVRTCisgICAgICAgIFZlY3RvclN0YXRzOjp2ZWN0b3JVcGRh
dGVkKHRoaXMsIG1fYnVmZmVyLmNhcGFjaXR5KCksIG1fc2l6ZSk7CisjZW5kaWYKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIApAQCAtODA0LDYgKzg0MSwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgc3RkOjpmaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOwogICAgICAgICBUeXBl
T3BlcmF0aW9uczo6dW5pbml0aWFsaXplZEZpbGwoZW5kKCksIGJlZ2luKCkgKyBuZXdTaXplLCB2
YWwpOwogICAgICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYgRFVNUF9WRUNUT1JfU1RBVFMK
KyAgICAgICAgVmVjdG9yU3RhdHM6OnZlY3RvclVwZGF0ZWQodGhpcywgbV9idWZmZXIuY2FwYWNp
dHkoKSwgbV9zaXplKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KQEAgLTg3Miw2ICs5MTMsMTAgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBE
VU1QX1ZFQ1RPUl9TVEFUUworICAgICAgICBWZWN0b3JTdGF0czo6dmVjdG9yVXBkYXRlZCh0aGlz
LCBtX2J1ZmZlci5jYXBhY2l0eSgpLCBtX3NpemUpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgpAQCAtODkxLDYgKzkzNiwx
MCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgICAgICBU
eXBlT3BlcmF0aW9uczo6aW5pdGlhbGl6ZShlbmQoKSwgYmVnaW4oKSArIHNpemUpOwogICAgICAg
ICBtX3NpemUgPSBzaXplOworCisjaWYgRFVNUF9WRUNUT1JfU1RBVFMKKyAgICAgICAgVmVjdG9y
U3RhdHM6OnZlY3RvclVwZGF0ZWQodGhpcywgbV9idWZmZXIuY2FwYWNpdHkoKSwgbV9zaXplKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KQEAgLTkwNCw2ICs5NTMsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlm
IChiZWdpbigpKQogICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyLCBv
bGRFbmQsIGJlZ2luKCkpOwogICAgICAgICBtX2J1ZmZlci5kZWFsbG9jYXRlQnVmZmVyKG9sZEJ1
ZmZlcik7CisKKyNpZiBEVU1QX1ZFQ1RPUl9TVEFUUworICAgICAgICBWZWN0b3JTdGF0czo6dmVj
dG9yVXBkYXRlZCh0aGlzLCBtX2J1ZmZlci5jYXBhY2l0eSgpLCBtX3NpemUpOworI2VuZGlmCiAg
ICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KQEAgLTkxOCw2ICs5NzEsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIEFTU0VSVChi
ZWdpbigpKTsKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyLCBvbGRFbmQs
IGJlZ2luKCkpOwogICAgICAgICBtX2J1ZmZlci5kZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7
CisKKyNpZiBEVU1QX1ZFQ1RPUl9TVEFUUworICAgICAgICBWZWN0b3JTdGF0czo6dmVjdG9yVXBk
YXRlZCh0aGlzLCBtX2J1ZmZlci5jYXBhY2l0eSgpLCBtX3NpemUpOworI2VuZGlmCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTkyOCw2ICs5ODUsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIEFTU0VSVChjYXBhY2l0eSgpID09IGlubGluZUNhcGFjaXR5KTsKICAg
ICAgICAgaWYgKGluaXRpYWxDYXBhY2l0eSA+IGlubGluZUNhcGFjaXR5KQogICAgICAgICAgICAg
bV9idWZmZXIuYWxsb2NhdGVCdWZmZXIoaW5pdGlhbENhcGFjaXR5KTsKKworI2lmIERVTVBfVkVD
VE9SX1NUQVRTCisgICAgICAgIFZlY3RvclN0YXRzOjp2ZWN0b3JVcGRhdGVkKHRoaXMsIG1fYnVm
ZmVyLmNhcGFjaXR5KCksIG1fc2l6ZSk7CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgpAQCAtOTQ5LDYgKzEwMTAsMTAg
QEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgbV9idWZmZXIuZGVhbGxvY2F0ZUJ1ZmZlcihv
bGRCdWZmZXIpOwogICAgICAgICBtX2J1ZmZlci5yZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQo
KTsKKworI2lmIERVTVBfVkVDVE9SX1NUQVRTCisgICAgICAgIFZlY3RvclN0YXRzOjp2ZWN0b3JV
cGRhdGVkKHRoaXMsIG1fYnVmZmVyLmNhcGFjaXR5KCksIG1fc2l6ZSk7CisjZW5kaWYKICAgICB9
CiAKICAgICAvLyBUZW1wbGF0aXppbmcgdGhlc2UgaXMgYmV0dGVyIHRoYW4ganVzdCBsZXR0aW5n
IHRoZSBjb252ZXJzaW9uIGhhcHBlbiBpbXBsaWNpdGx5LApAQCAtOTcwLDYgKzEwMzUsMTAgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YVNpemU7
ICsraSkKICAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJmRlc3RbaV0pIFQoZGF0YVtpXSk7CiAg
ICAgICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBEVU1QX1ZFQ1RPUl9TVEFUUworICAgICAg
ICBWZWN0b3JTdGF0czo6dmVjdG9yVXBkYXRlZCh0aGlzLCBtX2J1ZmZlci5jYXBhY2l0eSgpLCBt
X3NpemUpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgpAQCAtOTg4LDYgKzEwNTcsMTAg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YVNp
emU7ICsraSkKICAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJmRlc3RbaV0pIFQoZGF0YVtpXSk7
CiAgICAgICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBEVU1QX1ZFQ1RPUl9TVEFUUworICAg
ICAgICBWZWN0b3JTdGF0czo6dmVjdG9yVXBkYXRlZCh0aGlzLCBtX2J1ZmZlci5jYXBhY2l0eSgp
LCBtX3NpemUpOworI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtOTk3
LDYgKzEwNzAsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmIChzaXplKCkgIT0gY2Fw
YWNpdHkoKSkgewogICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVCh2YWwpOwogICAg
ICAgICAgICAgKyttX3NpemU7CisKKyNpZiBEVU1QX1ZFQ1RPUl9TVEFUUworICAgICAgICAgICAg
VmVjdG9yU3RhdHM6OnZlY3RvclVwZGF0ZWQodGhpcywgbV9idWZmZXIuY2FwYWNpdHkoKSwgbV9z
aXplKTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEwMTUs
NiArMTA5MiwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBuZXcgKE5vdE51bGwsIGVu
ZCgpKSBUKCpwdHIpOwogICAgICAgICArK21fc2l6ZTsKKworI2lmIERVTVBfVkVDVE9SX1NUQVRT
CisgICAgICAgIFZlY3RvclN0YXRzOjp2ZWN0b3JVcGRhdGVkKHRoaXMsIG1fYnVmZmVyLmNhcGFj
aXR5KCksIG1fc2l6ZSk7CisjZW5kaWYKICAgICB9CiAKICAgICAvLyBUaGlzIHZlcnNpb24gb2Yg
YXBwZW5kIHNhdmVzIGEgYnJhbmNoIGluIHRoZSBjYXNlIHdoZXJlIHlvdSBrbm93IHRoYXQgdGhl
CkBAIC0xMDI3LDYgKzExMDgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGNvbnN0IFUq
IHB0ciA9ICZ2YWw7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoKnB0cik7CiAgICAg
ICAgICsrbV9zaXplOworCisjaWYgRFVNUF9WRUNUT1JfU1RBVFMKKyAgICAgICAgVmVjdG9yU3Rh
dHM6OnZlY3RvclVwZGF0ZWQodGhpcywgbV9idWZmZXIuY2FwYWNpdHkoKSwgbV9zaXplKTsKKyNl
bmRpZgogICAgIH0KIAogICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFw
cGVuZCwgYSBiZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KQEAgLTEwNTUsNiAr
MTE0MCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkYXRhU2l6ZTsgKytpKQogICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmc3BvdFtpXSkgVChk
YXRhW2ldKTsKICAgICAgICAgbV9zaXplID0gbmV3U2l6ZTsKKworI2lmIERVTVBfVkVDVE9SX1NU
QVRTCisgICAgICAgIFZlY3RvclN0YXRzOjp2ZWN0b3JVcGRhdGVkKHRoaXMsIG1fYnVmZmVyLmNh
cGFjaXR5KCksIG1fc2l6ZSk7CisjZW5kaWYKICAgICB9CiAgICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gdGVtcGxhdGU8dHlwZW5hbWUgVT4KQEAg
LTEwNzEsNiArMTE2MCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6Om1vdmVPdmVybGFwcGluZyhzcG90LCBlbmQoKSwgc3BvdCArIDEpOwogICAgICAgICBuZXcg
KE5vdE51bGwsIHNwb3QpIFQoKmRhdGEpOwogICAgICAgICArK21fc2l6ZTsKKworI2lmIERVTVBf
VkVDVE9SX1NUQVRTCisgICAgICAgIFZlY3RvclN0YXRzOjp2ZWN0b3JVcGRhdGVkKHRoaXMsIG1f
YnVmZmVyLmNhcGFjaXR5KCksIG1fc2l6ZSk7CisjZW5kaWYKICAgICB9CiAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1l
IFUsIHNpemVfdCBjPgpAQCAtMTEwNSw2ICsxMTk4LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICBzcG90LT5+VCgpOwogICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5n
KHNwb3QgKyAxLCBlbmQoKSwgc3BvdCk7CiAgICAgICAgIC0tbV9zaXplOworCisjaWYgRFVNUF9W
RUNUT1JfU1RBVFMKKyAgICAgICAgVmVjdG9yU3RhdHM6OnZlY3RvclVwZGF0ZWQodGhpcywgbV9i
dWZmZXIuY2FwYWNpdHkoKSwgbV9zaXplKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KQEAgLTExMTcsNiArMTIxNCwxMCBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2lu
U3BvdCwgZW5kU3BvdCk7IAogICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5n
KGVuZFNwb3QsIGVuZCgpLCBiZWdpblNwb3QpOwogICAgICAgICBtX3NpemUgLT0gbGVuZ3RoOwor
CisjaWYgRFVNUF9WRUNUT1JfU1RBVFMKKyAgICAgICAgVmVjdG9yU3RhdHM6OnZlY3RvclVwZGF0
ZWQodGhpcywgbV9idWZmZXIuY2FwYWNpdHkoKSwgbV9zaXplKTsKKyNlbmRpZgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KQEAgLTExMzks
NiArMTI0MCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIG1lbWNweShidWZmZXIs
IGRhdGEoKSwgYnl0ZXMpOwogICAgICAgICB9CiAgICAgICAgIG1fc2l6ZSA9IDA7CisKKyNpZiBE
VU1QX1ZFQ1RPUl9TVEFUUworICAgICAgICBWZWN0b3JTdGF0czo6dmVjdG9yVXBkYXRlZCh0aGlz
LCBtX2J1ZmZlci5jYXBhY2l0eSgpLCBtX3NpemUpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBi
dWZmZXI7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="148399"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>