<?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>146354</bug_id>
          
          <creation_ts>2015-06-26 11:17:01 -0700</creation_ts>
          <short_desc>Make NetworkCache::traverse faster</short_desc>
          <delta_ts>2015-06-27 01:54:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104988</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-06-26 11:17:01 -0700</bug_when>
    <thetext>Currently it reads one file at a time making it slow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105009</commentid>
    <comment_count>1</comment_count>
      <attachid>255655</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-06-26 12:00:26 -0700</bug_when>
    <thetext>Created attachment 255655
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105012</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-26 12:02:23 -0700</bug_when>
    <thetext>Attachment 255655 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannel.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannel.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:107:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 5 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>1105013</commentid>
    <comment_count>3</comment_count>
      <attachid>255655</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-26 12:05:46 -0700</bug_when>
    <thetext>Comment on attachment 255655
patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:107
&gt; +void IOChannel::write(size_t offset, const Data&amp; data, WorkQueue* queue, const std::function&lt;void (int error)&gt;&amp; completionHandler)

I don&apos;t think this should be a const&amp; since that&apos;s an extra copy.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:704
&gt; +    std::unique_ptr&lt;TraverseOperation&gt; traverseOperationPtr(new TraverseOperation { flags, WTF::move(traverseHandler) });

auto + std::make_unique?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105162</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-27 01:25:21 -0700</bug_when>
    <thetext>Antti, please, consider fixing GTK+ build before landing. You just need to do the same changes in NetworkCacheIOChannelSoup.cpp and include &lt;condition_variable&gt; in NetworkCacheStorage.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105165</commentid>
    <comment_count>5</comment_count>
      <attachid>255698</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-06-27 01:38:17 -0700</bug_when>
    <thetext>Created attachment 255698
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105166</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-27 01:39:36 -0700</bug_when>
    <thetext>Attachment 255698 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 3 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>1105167</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-06-27 01:54:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/186025</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255655</attachid>
            <date>2015-06-26 12:00:26 -0700</date>
            <delta_ts>2015-06-27 01:38:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>faster-traverse.patch</filename>
            <type>text/plain</type>
            <size>10784</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjAwNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE1LTA2LTI2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtDYWNoZTo6
dHJhdmVyc2UgZmFzdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDYzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cGF0aCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjp0eXBlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6Om9wZW4pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cmVhZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6SU9DaGFubmVsOjpyZWFkU3luYyk6IERlbGV0ZWQuCisKKyAgICAgICAgICAgIE5vdCBuZWVk
ZWQgYW55bW9yZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6Oldy
aXRlT3BlcmF0aW9uOjpXcml0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6VHJhdmVyc2VPcGVyYXRpb246OlRyYXZlcnNlT3BlcmF0aW9uKToKKwor
ICAgICAgICAgICAgQWRkIFRyYXZlcnNlT3BlcmF0aW9uLCBzaW1pbGFyIHRvIFJlYWQvV3JpdGUu
CisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpvcGVuKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisKKyAgICAgICAg
ICAgIFVzZSBhc3luYyBJL08uCisgICAgICAgICAgICBVc2UgY29uZGl0aW9uIHZhcmlhYmxlIHRv
IGFsbG93IG1heGltdW0gNSBwYXJhbGxlbCBmaWxlIHJlYWRzLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorCiAyMDE1LTA2LTI2ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAogICAgICAgICBXaXJlbGVzcyBQbGF5YmFjayBU
YXJnZXQtcmVsYXRlZCAjaW1wb3J0IHNob3VsZCBiZSBhICNpbmNsdWRlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVJT0NoYW5uZWwuaAkocmV2aXNpb24gMTg1ODIyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDkgKzQ4LDggQEAgcHVibGljOgogCiAgICAgLy8gVXNpbmcgbnVsbHB0ciBhcyBxdWV1ZSBz
dWJtaXRzIHRoZSByZXN1bHQgdG8gdGhlIG1haW4gcXVldWUuCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBhZGQgV29ya1F1ZXVlOjptYWluKCkgaW5zdGVhZC4KLSAgICB2b2lkIHJlYWQoc2l6ZV90
IG9mZnNldCwgc2l6ZV90LCBXb3JrUXVldWUqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKERhdGEmLCBp
bnQgZXJyb3IpPik7Ci0gICAgdm9pZCByZWFkU3luYyhzaXplX3Qgb2Zmc2V0LCBzaXplX3QsIFdv
cmtRdWV1ZSosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+KTsKLSAgICB2
b2lkIHdyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmLCBXb3JrUXVldWUqLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGludCBlcnJvcik+KTsKKyAgICB2b2lkIHJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90LCBXb3JrUXVldWUqLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQg
ZXJyb3IpPiYpOworICAgIHZvaWQgd3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYsIFdv
cmtRdWV1ZSosIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoaW50IGVycm9yKT4mKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9D
aGFubmVsQ29jb2EubW0JKHJldmlzaW9uIDE4NTgyMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw3ICs4OCw3IEBAIFJlZjxJT0NoYW5uZWw+IElPQ2hhbm5lbDo6b3Blbihjb25z
dCBTdHIKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJT0NoYW5uZWwoZmlsZVBhdGgsIHR5cGUp
KTsKIH0KIAotdm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUs
IFdvcmtRdWV1ZSogcXVldWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAo
RGF0YSYsIGludCBlcnJvcik+JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQdHI8SU9D
aGFubmVsPiBjaGFubmVsKHRoaXMpOwogICAgIGJvb2wgZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVy
ID0gZmFsc2U7CkBAIC0xMDQsMTggKzEwNCw3IEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVf
dCBvZmZzZXQsIHNpemUKICAgICB9KTsKIH0KIAotLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRl
ciB0byBkbyB3aXRob3V0IHRoaXMuCi12b2lkIElPQ2hhbm5lbDo6cmVhZFN5bmMoc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
RGF0YSYsIGludCBlcnJvcik+IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGF1dG8gc2VtYXBo
b3JlID0gYWRvcHREaXNwYXRjaChkaXNwYXRjaF9zZW1hcGhvcmVfY3JlYXRlKDApKTsKLSAgICBy
ZWFkKG9mZnNldCwgc2l6ZSwgcXVldWUsIFtzZW1hcGhvcmUsICZjb21wbGV0aW9uSGFuZGxlcl0o
RGF0YSYgZGF0YSwgaW50IGVycm9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEs
IGVycm9yKTsKLSAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChzZW1hcGhvcmUuZ2V0
KCkpOwotICAgIH0pOwotICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KHNlbWFwaG9yZS5nZXQo
KSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKLX0KLQotdm9pZCBJT0NoYW5uZWw6OndyaXRlKHNp
emVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSogcXVldWUsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoaW50IGVycm9yKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIElPQ2hhbm5l
bDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlKiBxdWV1
ZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChpbnQgZXJyb3IpPiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKICAgICBhdXRvIGRp
c3BhdGNoRGF0YSA9IGRhdGEuZGlzcGF0Y2hEYXRhKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmNwcAkocmV2aXNpb24gMTg1ODIyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDExICs2
OCwyNiBAQCBzdHJ1Y3QgU3RvcmFnZTo6V3JpdGVPcGVyYXRpb24gewogICAgICAgICAsIG1hcHBl
ZEJvZHlIYW5kbGVyKG1hcHBlZEJvZHlIYW5kbGVyKQogICAgIHsgfQogICAgIAotICAgIFJlY29y
ZCByZWNvcmQ7Ci0gICAgTWFwcGVkQm9keUhhbmRsZXIgbWFwcGVkQm9keUhhbmRsZXI7CisgICAg
Y29uc3QgUmVjb3JkIHJlY29yZDsKKyAgICBjb25zdCBNYXBwZWRCb2R5SGFuZGxlciBtYXBwZWRC
b2R5SGFuZGxlcjsKKwogICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBhY3RpdmVDb3VudCB7IDAg
fTsKIH07CiAKK3N0cnVjdCBTdG9yYWdlOjpUcmF2ZXJzZU9wZXJhdGlvbiB7CisgICAgVHJhdmVy
c2VPcGVyYXRpb24oVHJhdmVyc2VGbGFncyBmbGFncywgY29uc3QgVHJhdmVyc2VIYW5kbGVyJiBo
YW5kbGVyKQorICAgICAgICA6IGZsYWdzKGZsYWdzKQorICAgICAgICAsIGhhbmRsZXIoaGFuZGxl
cikKKyAgICB7IH0KKworICAgIGNvbnN0IFRyYXZlcnNlRmxhZ3MgZmxhZ3M7CisgICAgY29uc3Qg
VHJhdmVyc2VIYW5kbGVyIGhhbmRsZXI7CisKKyAgICBzdGQ6Om11dGV4IGFjdGl2ZU11dGV4Owor
ICAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIGFjdGl2ZUNvbmRpdGlvbjsKKyAgICB1bnNpZ25l
ZCBhY3RpdmVDb3VudCB7IDAgfTsKK307CisKIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlPiBTdG9y
YWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgY2FjaGVQYXRoKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CkBAIC02ODUsMzcgKzcwMCw1OSBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNl
KFRyYXZlcnNlRmxhZ3MgZmxhCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBB
U1NFUlQodHJhdmVyc2VIYW5kbGVyKTsKICAgICAvLyBBdm9pZCBub24tdGhyZWFkIHNhZmUgc3Rk
OjpmdW5jdGlvbiBjb3BpZXMuCi0gICAgYXV0byogdHJhdmVyc2VIYW5kbGVyUHRyID0gbmV3IFRy
YXZlcnNlSGFuZGxlcihXVEY6Om1vdmUodHJhdmVyc2VIYW5kbGVyKSk7Ci0gICAgCi0gICAgaW9R
dWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBmbGFncywgdHJhdmVyc2VIYW5kbGVyUHRyXSB7Ci0gICAg
ICAgIGF1dG8mIHRyYXZlcnNlSGFuZGxlciA9ICp0cmF2ZXJzZUhhbmRsZXJQdHI7Ci0gICAgICAg
IHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoKCksIFt0aGlzLCBmbGFncywgJnRyYXZl
cnNlSGFuZGxlcl0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRp
b25QYXRoKSB7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhdmVyc2VPcGVyYXRpb24+IHRyYXZl
cnNlT3BlcmF0aW9uUHRyKG5ldyBUcmF2ZXJzZU9wZXJhdGlvbiB7IGZsYWdzLCBXVEY6Om1vdmUo
dHJhdmVyc2VIYW5kbGVyKSB9KTsKKyAgICBhdXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0cmF2
ZXJzZU9wZXJhdGlvblB0cjsKKyAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQoV1RG
Ojptb3ZlKHRyYXZlcnNlT3BlcmF0aW9uUHRyKSk7CisKKyAgICBpb1F1ZXVlKCkuZGlzcGF0Y2go
W3RoaXMsICZ0cmF2ZXJzZU9wZXJhdGlvbl0geworICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxl
cyhyZWNvcmRzUGF0aCgpLCBbdGhpcywgJnRyYXZlcnNlT3BlcmF0aW9uXShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvblBhdGgpIHsKICAgICAgICAgICAgIGlm
IChmaWxlTmFtZS5sZW5ndGgoKSAhPSBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgZmlsZU5hbWUpOwogCi0gICAg
ICAgICAgICBSZWNvcmRJbmZvIGluZm87Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBUcmF2ZXJz
ZUZsYWc6OkNvbXB1dGVXb3J0aCkKLSAgICAgICAgICAgICAgICBpbmZvLndvcnRoID0gY29tcHV0
ZVJlY29yZFdvcnRoKGZpbGVUaW1lcyhyZWNvcmRQYXRoKSk7Ci0gICAgICAgICAgICBpZiAoZmxh
Z3MgJiBUcmF2ZXJzZUZsYWc6OlNoYXJlQ291bnQpCi0gICAgICAgICAgICAgICAgaW5mby5ib2R5
U2hhcmVDb3VudCA9IG1fYmxvYlN0b3JhZ2Uuc2hhcmVDb3VudChib2R5UGF0aEZvclJlY29yZFBh
dGgocmVjb3JkUGF0aCkpOworICAgICAgICAgICAgZG91YmxlIHdvcnRoID0gLTE7CisgICAgICAg
ICAgICBpZiAodHJhdmVyc2VPcGVyYXRpb24uZmxhZ3MgJiBUcmF2ZXJzZUZsYWc6OkNvbXB1dGVX
b3J0aCkKKyAgICAgICAgICAgICAgICB3b3J0aCA9IGNvbXB1dGVSZWNvcmRXb3J0aChmaWxlVGlt
ZXMocmVjb3JkUGF0aCkpOworICAgICAgICAgICAgdW5zaWduZWQgYm9keVNoYXJlQ291bnQgPSAw
OworICAgICAgICAgICAgaWYgKHRyYXZlcnNlT3BlcmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFn
OjpTaGFyZUNvdW50KQorICAgICAgICAgICAgICAgIGJvZHlTaGFyZUNvdW50ID0gbV9ibG9iU3Rv
cmFnZS5zaGFyZUNvdW50KGJvZHlQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRoKSk7CisKKyAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9jayh0cmF2ZXJzZU9wZXJh
dGlvbi5hY3RpdmVNdXRleCk7CisgICAgICAgICAgICArK3RyYXZlcnNlT3BlcmF0aW9uLmFjdGl2
ZUNvdW50OwogCiAgICAgICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4ocmVj
b3JkUGF0aCwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBU
cmF2ZXJzYWwgaXMgc2xvd2VyIHRoYW4gaXQgc2hvdWxkIGJlIGR1ZSB0byBsYWNrIG9mIHBhcmFs
bGVsaXNtLgotICAgICAgICAgICAgY2hhbm5lbC0+cmVhZFN5bmMoMCwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSwgbnVsbHB0ciwgW3RoaXMsICZ0cmF2ZXJzZUhhbmRsZXIsICZp
bmZvXShEYXRhJiBmaWxlRGF0YSwgaW50KSB7CisgICAgICAgICAgICBjaGFubmVsLT5yZWFkKDAs
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIG51bGxwdHIsIFt0aGlzLCAmdHJh
dmVyc2VPcGVyYXRpb24sIHdvcnRoLCBib2R5U2hhcmVDb3VudF0oRGF0YSYgZmlsZURhdGEsIGlu
dCkgewogICAgICAgICAgICAgICAgIFJlY29yZE1ldGFEYXRhIG1ldGFEYXRhOwogICAgICAgICAg
ICAgICAgIERhdGEgaGVhZGVyRGF0YTsKICAgICAgICAgICAgICAgICBpZiAoZGVjb2RlUmVjb3Jk
SGVhZGVyKGZpbGVEYXRhLCBtZXRhRGF0YSwgaGVhZGVyRGF0YSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgUmVjb3JkIHJlY29yZCB7IG1ldGFEYXRhLmtleSwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludChtZXRhRGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1wKSwgaGVhZGVy
RGF0YSwgeyB9IH07Ci0gICAgICAgICAgICAgICAgICAgIGluZm8uYm9keVNpemUgPSBtZXRhRGF0
YS5ib2R5U2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaW5mby5ib2R5SGFzaCA9IFN0cmluZzo6
ZnJvbVVURjgoU0hBMTo6aGV4RGlnZXN0KG1ldGFEYXRhLmJvZHlIYXNoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHRyYXZlcnNlSGFuZGxlcigmcmVjb3JkLCBpbmZvKTsKKyAgICAgICAgICAgICAg
ICAgICAgUmVjb3JkSW5mbyBpbmZvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFEYXRh
LmJvZHlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgd29ydGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICBib2R5U2hhcmVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmlu
Zzo6ZnJvbVVURjgoU0hBMTo6aGV4RGlnZXN0KG1ldGFEYXRhLmJvZHlIYXNoKSkKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VPcGVyYXRpb24uaGFu
ZGxlcigmcmVjb3JkLCBpbmZvKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sodHJhdmVyc2VPcGVyYXRpb24uYWN0aXZl
TXV0ZXgpOworICAgICAgICAgICAgICAgIC0tdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlQ291bnQ7
CisgICAgICAgICAgICAgICAgdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlQ29uZGl0aW9uLm5vdGlm
eV9vbmUoKTsKICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBt
YXhpbXVtUGFyYWxsZWxSZWFkQ291bnQgPSA1OworICAgICAgICAgICAgdHJhdmVyc2VPcGVyYXRp
b24uYWN0aXZlQ29uZGl0aW9uLndhaXQobG9jaywgWyZ0cmF2ZXJzZU9wZXJhdGlvbl0geworICAg
ICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb3VudCA8PSBtYXhp
bXVtUGFyYWxsZWxSZWFkQ291bnQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
ICAgIC8vIFdhaXQgZm9yIGFsbCByZWFkcyB0byBmaW5pc2guCisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gbG9jayh0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVNdXRleCk7Cisg
ICAgICAgIHRyYXZlcnNlT3BlcmF0aW9uLmFjdGl2ZUNvbmRpdGlvbi53YWl0KGxvY2ssIFsmdHJh
dmVyc2VPcGVyYXRpb25dIHsKKyAgICAgICAgICAgIHJldHVybiAhdHJhdmVyc2VPcGVyYXRpb24u
YWN0aXZlQ291bnQ7CiAgICAgICAgIH0pOwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3RoaXMsIHRyYXZlcnNlSGFuZGxlclB0cl0gewotICAgICAgICAgICAgKCp0cmF2ZXJzZUhh
bmRsZXJQdHIpKG51bGxwdHIsIHsgfSk7Ci0gICAgICAgICAgICBkZWxldGUgdHJhdmVyc2VIYW5k
bGVyUHRyOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsICZ0cmF2ZXJz
ZU9wZXJhdGlvbl0geworICAgICAgICAgICAgdHJhdmVyc2VPcGVyYXRpb24uaGFuZGxlcihudWxs
cHRyLCB7IH0pOworICAgICAgICAgICAgbV9hY3RpdmVUcmF2ZXJzZU9wZXJhdGlvbnMucmVtb3Zl
KCZ0cmF2ZXJzZU9wZXJhdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMTg1ODIyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZVRpbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBzdHJ1Y3QgUmVjb3JkSW5mbyB7Ci0gICAg
ICAgIHNpemVfdCBib2R5U2l6ZSB7IDAgfTsKLSAgICAgICAgZG91YmxlIHdvcnRoIHsgLTEgfTsg
Ly8gMC0xIHdoZXJlIDEgaXMgdGhlIG1vc3QgdmFsdWFibGUuCi0gICAgICAgIHVuc2lnbmVkIGJv
ZHlTaGFyZUNvdW50IHsgMCB9OworICAgICAgICBzaXplX3QgYm9keVNpemU7CisgICAgICAgIGRv
dWJsZSB3b3J0aDsgLy8gMC0xIHdoZXJlIDEgaXMgdGhlIG1vc3QgdmFsdWFibGUuCisgICAgICAg
IHVuc2lnbmVkIGJvZHlTaGFyZUNvdW50OwogICAgICAgICBTdHJpbmcgYm9keUhhc2g7CiAgICAg
fTsKICAgICBlbnVtIFRyYXZlcnNlRmxhZyB7CkBAIC0xNTUsNiArMTU1LDkgQEAgcHJpdmF0ZToK
ICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlvbj4+IG1fYWN0aXZlV3Jp
dGVPcGVyYXRpb25zOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fd3JpdGVPcGVyYXRpb25EaXNwYXRj
aFRpbWVyOwogCisgICAgc3RydWN0IFRyYXZlcnNlT3BlcmF0aW9uOworICAgIEhhc2hTZXQ8c3Rk
Ojp1bmlxdWVfcHRyPFRyYXZlcnNlT3BlcmF0aW9uPj4gbV9hY3RpdmVUcmF2ZXJzZU9wZXJhdGlv
bnM7CisKICAgICBSZWY8V29ya1F1ZXVlPiBtX2lvUXVldWU7CiAgICAgUmVmPFdvcmtRdWV1ZT4g
bV9iYWNrZ3JvdW5kSU9RdWV1ZTsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3NlcmlhbEJhY2tncm91
bmRJT1F1ZXVlOwo=
</data>
<flag name="review"
          id="280735"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255698</attachid>
            <date>2015-06-27 01:38:17 -0700</date>
            <delta_ts>2015-06-27 01:38:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>faster-traverse-2.patch</filename>
            <type>text/plain</type>
            <size>13717</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjAwNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE1LTA2LTI2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtDYWNoZTo6
dHJhdmVyc2UgZmFzdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDYzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnBhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6dHlwZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpvcGVuKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OklPQ2hhbm5lbDo6d3JpdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OklPQ2hhbm5lbDo6cmVhZFN5bmMpOiBEZWxldGVkLgorCisgICAgICAgICAgICBOb3QgbmVl
ZGVkIGFueW1vcmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpX
cml0ZU9wZXJhdGlvbjo6V3JpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN0b3JhZ2U6OlRyYXZlcnNlT3BlcmF0aW9uOjpUcmF2ZXJzZU9wZXJhdGlvbik6CisK
KyAgICAgICAgICAgIEFkZCBUcmF2ZXJzZU9wZXJhdGlvbiwgc2ltaWxhciB0byBSZWFkL1dyaXRl
LgorCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6b3Blbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorCisgICAgICAg
ICAgICBVc2UgYXN5bmMgSS9PLgorICAgICAgICAgICAgVXNlIGNvbmRpdGlvbiB2YXJpYWJsZSB0
byBhbGxvdyBtYXhpbXVtIDUgcGFyYWxsZWwgZmlsZSByZWFkcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKwogMjAxNS0wNi0yNiAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgV2lyZWxlc3MgUGxheWJhY2sg
VGFyZ2V0LXJlbGF0ZWQgI2ltcG9ydCBzaG91bGQgYmUgYSAjaW5jbHVkZQpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlSU9DaGFubmVsLmgJKHJldmlzaW9uIDE4NTgyMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw3ICs0OSw2IEBAIHB1YmxpYzoKICAgICAvLyBVc2luZyBudWxscHRyIGFzIHF1ZXVlIHN1
Ym1pdHMgdGhlIHJlc3VsdCB0byB0aGUgbWFpbiBxdWV1ZS4KICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGFkZCBXb3JrUXVldWU6Om1haW4oKSBpbnN0ZWFkLgogICAgIHZvaWQgcmVhZChzaXplX3Qg
b2Zmc2V0LCBzaXplX3QsIFdvcmtRdWV1ZSosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRGF0YSYsIGlu
dCBlcnJvcik+KTsKLSAgICB2b2lkIHJlYWRTeW5jKHNpemVfdCBvZmZzZXQsIHNpemVfdCwgV29y
a1F1ZXVlKiwgc3RkOjpmdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4pOwogICAgIHZv
aWQgd3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYsIFdvcmtRdWV1ZSosIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoaW50IGVycm9yKT4pOwogCiAgICAgY29uc3QgU3RyaW5nJiBwYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9wYXRoOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2Nv
YS5tbQkocmV2aXNpb24gMTg1ODIyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
NCwxNyArMTA0LDYgQEAgdm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZQog
ICAgIH0pOwogfQogCi0vLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGRvIHdpdGhvdXQg
dGhpcy4KLXZvaWQgSU9DaGFubmVsOjpyZWFkU3luYyhzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6
ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9y
KT4gY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byBzZW1hcGhvcmUgPSBhZG9wdERpc3Bh
dGNoKGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUoMCkpOwotICAgIHJlYWQob2Zmc2V0LCBzaXpl
LCBxdWV1ZSwgW3NlbWFwaG9yZSwgJmNvbXBsZXRpb25IYW5kbGVyXShEYXRhJiBkYXRhLCBpbnQg
ZXJyb3IpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YSwgZXJyb3IpOwotICAgICAg
ICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKHNlbWFwaG9yZS5nZXQoKSk7Ci0gICAgfSk7Ci0g
ICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQoc2VtYXBob3JlLmdldCgpLCBESVNQQVRDSF9USU1F
X0ZPUkVWRVIpOwotfQotCiB2b2lkIElPQ2hhbm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29u
c3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlKiBxdWV1ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChpbnQg
ZXJyb3IpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFu
bmVsKHRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAJKHJldmlz
aW9uIDE4NTgyMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNTcgKzE3NSw2
IEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemUKICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihpbnB1dFN0cmVhbVJlYWRSZWFkeUNh
bGxiYWNrKSwgYXN5bmNEYXRhKTsKIH0KIAotLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciB0
byBkbyB3aXRob3V0IHRoaXMuCi12b2lkIElPQ2hhbm5lbDo6cmVhZFN5bmMoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRGF0
YSYsIGludCBlcnJvcik+IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwotCi0gICAgc3RhdGljIEdNdXRleCBtdXRleDsKLSAgICBzdGF0aWMgR0NvbmQg
Y29uZGl0aW9uOwotICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtdXRleCk7Ci0g
ICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKLQotICAgIGlmICghbV9pbnB1dFN0
cmVhbSkgewotICAgICAgICBydW5UYXNrSW5RdWV1ZShbY2hhbm5lbCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKLSAgICAgICAgICAgIERhdGEgZGF0YTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRhdGEsIC0xKTsKLSAgICAgICAgICAgIGdfY29uZF9zaWduYWwoJmNvbmRpdGlvbik7Ci0g
ICAgICAgIH0sIHF1ZXVlKTsKLSAgICAgICAgZ19jb25kX3dhaXQoJmNvbmRpdGlvbiwgJm11dGV4
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNpemVfdCBidWZmZXJTaXplID0gc3Rk
OjptaW4oc2l6ZSwgZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSk7Ci0gICAgdWludDhfdCogYnVmZmVy
RGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKGJ1ZmZlclNpemUpKTsKLSAg
ICBHUmVmUHRyPFNvdXBCdWZmZXI+IHJlYWRCdWZmZXIgPSBhZG9wdEdSZWYoc291cF9idWZmZXJf
bmV3X3dpdGhfb3duZXIoYnVmZmVyRGF0YSwgYnVmZmVyU2l6ZSwgYnVmZmVyRGF0YSwgZmFzdEZy
ZWUpKTsKLSAgICBEYXRhIGRhdGE7Ci0gICAgc2l6ZV90IHBlbmRpbmdCeXRlc1RvUmVhZCA9IHNp
emU7Ci0gICAgc2l6ZV90IGJ5dGVzVG9SZWFkID0gYnVmZmVyU2l6ZTsKLSAgICBkbyB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgb2Zmc2V0LgotICAgICAgICBnc3NpemUgYnl0ZXNSZWFk
ID0gZ19pbnB1dF9zdHJlYW1fcmVhZChtX2lucHV0U3RyZWFtLmdldCgpLCBjb25zdF9jYXN0PGNo
YXIqPihyZWFkQnVmZmVyLT5kYXRhKSwgYnl0ZXNUb1JlYWQsIG51bGxwdHIsIG51bGxwdHIpOwot
ICAgICAgICBpZiAoYnl0ZXNSZWFkID09IC0xKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihkYXRhLCAtMSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoIWJ5dGVzUmVhZCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIEFTU0VSVChi
eXRlc1JlYWQgPiAwKTsKLSAgICAgICAgZmlsbERhdGFGcm9tUmVhZEJ1ZmZlcihyZWFkQnVmZmVy
LmdldCgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCksIGRhdGEpOwotCi0gICAgICAg
IHBlbmRpbmdCeXRlc1RvUmVhZCA9IHNpemUgLSBkYXRhLnNpemUoKTsKLSAgICAgICAgYnl0ZXNU
b1JlYWQgPSBzdGQ6Om1pbihwZW5kaW5nQnl0ZXNUb1JlYWQsIHJlYWRCdWZmZXItPmxlbmd0aCk7
Ci0gICAgfSB3aGlsZSAocGVuZGluZ0J5dGVzVG9SZWFkKTsKLQotICAgIHJ1blRhc2tJblF1ZXVl
KFtjaGFubmVsLCAmZGF0YSwgY29tcGxldGlvbkhhbmRsZXJdIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZGF0YSwgMCk7Ci0gICAgICAgIGdfY29uZF9zaWduYWwoJmNvbmRpdGlvbik7Ci0g
ICAgfSwgcXVldWUpOwotICAgIGdfY29uZF93YWl0KCZjb25kaXRpb24sICZtdXRleCk7Ci19Ci0K
IHN0cnVjdCBXcml0ZUFzeW5jRGF0YSB7CiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbDsK
ICAgICBHUmVmUHRyPFNvdXBCdWZmZXI+IGJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwCShyZXZpc2lvbiAxODU4MjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDxjb25k
aXRpb25fdmFyaWFibGU+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CkBAIC02OCwxMSArNjksMjYgQEAgc3RydWN0IFN0b3JhZ2U6OldyaXRlT3BlcmF0aW9u
IHsKICAgICAgICAgLCBtYXBwZWRCb2R5SGFuZGxlcihtYXBwZWRCb2R5SGFuZGxlcikKICAgICB7
IH0KICAgICAKLSAgICBSZWNvcmQgcmVjb3JkOwotICAgIE1hcHBlZEJvZHlIYW5kbGVyIG1hcHBl
ZEJvZHlIYW5kbGVyOworICAgIGNvbnN0IFJlY29yZCByZWNvcmQ7CisgICAgY29uc3QgTWFwcGVk
Qm9keUhhbmRsZXIgbWFwcGVkQm9keUhhbmRsZXI7CisKICAgICBzdGQ6OmF0b21pYzx1bnNpZ25l
ZD4gYWN0aXZlQ291bnQgeyAwIH07CiB9OwogCitzdHJ1Y3QgU3RvcmFnZTo6VHJhdmVyc2VPcGVy
YXRpb24geworICAgIFRyYXZlcnNlT3BlcmF0aW9uKFRyYXZlcnNlRmxhZ3MgZmxhZ3MsIGNvbnN0
IFRyYXZlcnNlSGFuZGxlciYgaGFuZGxlcikKKyAgICAgICAgOiBmbGFncyhmbGFncykKKyAgICAg
ICAgLCBoYW5kbGVyKGhhbmRsZXIpCisgICAgeyB9CisKKyAgICBjb25zdCBUcmF2ZXJzZUZsYWdz
IGZsYWdzOworICAgIGNvbnN0IFRyYXZlcnNlSGFuZGxlciBoYW5kbGVyOworCisgICAgc3RkOjpt
dXRleCBhY3RpdmVNdXRleDsKKyAgICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSBhY3RpdmVDb25k
aXRpb247CisgICAgdW5zaWduZWQgYWN0aXZlQ291bnQgeyAwIH07Cit9OworCiBzdGQ6OnVuaXF1
ZV9wdHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCkKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNjUzLDcgKzY2OSw4IEBAIHZvaWQg
U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgS2V5JiBrZXksIHUKICAgICBpZiAocmV0cmlldmVGcm9t
TWVtb3J5KG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLCBrZXksIGNvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wZW5kaW5nUmVhZE9wZXJhdGlvbnNCeVByaW9yaXR5
W3ByaW9yaXR5XS5wcmVwZW5kKG5ldyBSZWFkT3BlcmF0aW9uIHsga2V5LCBXVEY6Om1vdmUoY29t
cGxldGlvbkhhbmRsZXIpIH0gKTsKKyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlYWRPcGVyYXRpb24+KGtleSwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgbV9wZW5kaW5nUmVhZE9wZXJhdGlvbnNCeVByaW9yaXR5W3ByaW9yaXR5XS5wcmVwZW5k
KFdURjo6bW92ZShyZWFkT3BlcmF0aW9uKSk7CiAgICAgZGlzcGF0Y2hQZW5kaW5nUmVhZE9wZXJh
dGlvbnMoKTsKIH0KIApAQCAtNjY1LDcgKzY4Miw4IEBAIHZvaWQgU3RvcmFnZTo6c3RvcmUoY29u
c3QgUmVjb3JkJiByZWNvcmQKICAgICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5wcmVwZW5kKG5ldyBXcml0ZU9wZXJhdGlv
biB7IHJlY29yZCwgV1RGOjptb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSB9KTsKKyAgICBhdXRvIHdy
aXRlT3BlcmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZU9wZXJhdGlvbj4ocmVjb3JkLCBX
VEY6Om1vdmUobWFwcGVkQm9keUhhbmRsZXIpKTsKKyAgICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlv
bnMucHJlcGVuZChXVEY6Om1vdmUod3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkg
dG8gdGhlIGZpbHRlciBhbHJlYWR5IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5k
aW5nIG9wZXJhdGlvbnMgdG9vLgogICAgIGFkZFRvUmVjb3JkRmlsdGVyKHJlY29yZC5rZXkpOwpA
QCAtNjg1LDM3ICs3MDMsNjUgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShUcmF2ZXJzZUZsYWdz
IGZsYQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHRyYXZlcnNl
SGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIHN0ZDo6ZnVuY3Rpb24gY29w
aWVzLgotICAgIGF1dG8qIHRyYXZlcnNlSGFuZGxlclB0ciA9IG5ldyBUcmF2ZXJzZUhhbmRsZXIo
V1RGOjptb3ZlKHRyYXZlcnNlSGFuZGxlcikpOwotICAgIAotICAgIGlvUXVldWUoKS5kaXNwYXRj
aChbdGhpcywgZmxhZ3MsIHRyYXZlcnNlSGFuZGxlclB0cl0gewotICAgICAgICBhdXRvJiB0cmF2
ZXJzZUhhbmRsZXIgPSAqdHJhdmVyc2VIYW5kbGVyUHRyOwotICAgICAgICB0cmF2ZXJzZVJlY29y
ZHNGaWxlcyhyZWNvcmRzUGF0aCgpLCBbdGhpcywgZmxhZ3MsICZ0cmF2ZXJzZUhhbmRsZXJdKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uUGF0aCkgeworCisg
ICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhdmVyc2VP
cGVyYXRpb24+KGZsYWdzLCBXVEY6Om1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byYg
dHJhdmVyc2VPcGVyYXRpb24gPSAqdHJhdmVyc2VPcGVyYXRpb25QdHI7CisgICAgbV9hY3RpdmVU
cmF2ZXJzZU9wZXJhdGlvbnMuYWRkKFdURjo6bW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwor
CisgICAgaW9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCAmdHJhdmVyc2VPcGVyYXRpb25dIHsKKyAg
ICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgoKSwgW3RoaXMsICZ0cmF2ZXJz
ZU9wZXJhdGlvbl0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRp
b25QYXRoKSB7CiAgICAgICAgICAgICBpZiAoZmlsZU5hbWUubGVuZ3RoKCkgIT0gS2V5OjpoYXNo
U3RyaW5nTGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYXV0
byByZWNvcmRQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlv
blBhdGgsIGZpbGVOYW1lKTsKIAotICAgICAgICAgICAgUmVjb3JkSW5mbyBpbmZvOwotICAgICAg
ICAgICAgaWYgKGZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCi0gICAgICAgICAg
ICAgICAgaW5mby53b3J0aCA9IGNvbXB1dGVSZWNvcmRXb3J0aChmaWxlVGltZXMocmVjb3JkUGF0
aCkpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgVHJhdmVyc2VGbGFnOjpTaGFyZUNvdW50KQot
ICAgICAgICAgICAgICAgIGluZm8uYm9keVNoYXJlQ291bnQgPSBtX2Jsb2JTdG9yYWdlLnNoYXJl
Q291bnQoYm9keVBhdGhGb3JSZWNvcmRQYXRoKHJlY29yZFBhdGgpKTsKKyAgICAgICAgICAgIGRv
dWJsZSB3b3J0aCA9IC0xOworICAgICAgICAgICAgaWYgKHRyYXZlcnNlT3BlcmF0aW9uLmZsYWdz
ICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCisgICAgICAgICAgICAgICAgd29ydGggPSBj
b21wdXRlUmVjb3JkV29ydGgoZmlsZVRpbWVzKHJlY29yZFBhdGgpKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGJvZHlTaGFyZUNvdW50ID0gMDsKKyAgICAgICAgICAgIGlmICh0cmF2ZXJzZU9wZXJh
dGlvbi5mbGFncyAmIFRyYXZlcnNlRmxhZzo6U2hhcmVDb3VudCkKKyAgICAgICAgICAgICAgICBi
b2R5U2hhcmVDb3VudCA9IG1fYmxvYlN0b3JhZ2Uuc2hhcmVDb3VudChib2R5UGF0aEZvclJlY29y
ZFBhdGgocmVjb3JkUGF0aCkpOworCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IGxvY2sodHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlTXV0ZXgpOworICAgICAgICAgICAg
Kyt0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIAogICAgICAgICAgICAgYXV0byBjaGFu
bmVsID0gSU9DaGFubmVsOjpvcGVuKHJlY29yZFBhdGgsIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogVHJhdmVyc2FsIGlzIHNsb3dlciB0aGFuIGl0IHNob3Vs
ZCBiZSBkdWUgdG8gbGFjayBvZiBwYXJhbGxlbGlzbS4KLSAgICAgICAgICAgIGNoYW5uZWwtPnJl
YWRTeW5jKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIG51bGxwdHIsIFt0
aGlzLCAmdHJhdmVyc2VIYW5kbGVyLCAmaW5mb10oRGF0YSYgZmlsZURhdGEsIGludCkgeworICAg
ICAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpLCBudWxscHRyLCBbdGhpcywgJnRyYXZlcnNlT3BlcmF0aW9uLCB3b3J0aCwgYm9keVNoYXJl
Q291bnRdKERhdGEmIGZpbGVEYXRhLCBpbnQpIHsKICAgICAgICAgICAgICAgICBSZWNvcmRNZXRh
RGF0YSBtZXRhRGF0YTsKICAgICAgICAgICAgICAgICBEYXRhIGhlYWRlckRhdGE7CiAgICAgICAg
ICAgICAgICAgaWYgKGRlY29kZVJlY29yZEhlYWRlcihmaWxlRGF0YSwgbWV0YURhdGEsIGhlYWRl
ckRhdGEpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlY29yZCByZWNvcmQgeyBtZXRhRGF0YS5r
ZXksIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQobWV0YURhdGEuZXBvY2hS
ZWxhdGl2ZVRpbWVTdGFtcCksIGhlYWRlckRhdGEsIHsgfSB9OwotICAgICAgICAgICAgICAgICAg
ICBpbmZvLmJvZHlTaXplID0gbWV0YURhdGEuYm9keVNpemU7Ci0gICAgICAgICAgICAgICAgICAg
IGluZm8uYm9keUhhc2ggPSBTdHJpbmc6OmZyb21VVEY4KFNIQTE6OmhleERpZ2VzdChtZXRhRGF0
YS5ib2R5SGFzaCkpOwotICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZUhhbmRsZXIoJnJlY29y
ZCwgaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIFJlY29yZCByZWNvcmQgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0YURhdGEua2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChtZXRhRGF0YS5lcG9jaFJlbGF0aXZl
VGltZVN0YW1wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckRhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICB7IH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICAgICAgUmVjb3JkSW5mbyBpbmZvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHNpemVfdD4obWV0YURhdGEuYm9keVNpemUpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgd29ydGgsCisgICAgICAgICAgICAgICAgICAgICAgICBib2R5U2hhcmVDb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoU0hBMTo6aGV4RGlnZXN0KG1ldGFE
YXRhLmJvZHlIYXNoKSkKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAg
ICAgdHJhdmVyc2VPcGVyYXRpb24uaGFuZGxlcigmcmVjb3JkLCBpbmZvKTsKICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9j
ayh0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVNdXRleCk7CisgICAgICAgICAgICAgICAgLS10cmF2
ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKKyAgICAgICAgICAgICAgICB0cmF2ZXJzZU9wZXJh
dGlvbi5hY3RpdmVDb25kaXRpb24ubm90aWZ5X29uZSgpOwogICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG1heGltdW1QYXJhbGxlbFJlYWRDb3VudCA9IDU7Cisg
ICAgICAgICAgICB0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb25kaXRpb24ud2FpdChsb2NrLCBb
JnRyYXZlcnNlT3BlcmF0aW9uXSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlT3Bl
cmF0aW9uLmFjdGl2ZUNvdW50IDw9IG1heGltdW1QYXJhbGxlbFJlYWRDb3VudDsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICAgICAgLy8gV2FpdCBmb3IgYWxsIHJlYWRzIHRvIGZp
bmlzaC4KKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrKHRyYXZlcnNl
T3BlcmF0aW9uLmFjdGl2ZU11dGV4KTsKKyAgICAgICAgdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZl
Q29uZGl0aW9uLndhaXQobG9jaywgWyZ0cmF2ZXJzZU9wZXJhdGlvbl0geworICAgICAgICAgICAg
cmV0dXJuICF0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKICAgICAgICAgfSk7Ci0gICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgdHJhdmVyc2VIYW5kbGVyUHRyXSB7
Ci0gICAgICAgICAgICAoKnRyYXZlcnNlSGFuZGxlclB0cikobnVsbHB0ciwgeyB9KTsKLSAgICAg
ICAgICAgIGRlbGV0ZSB0cmF2ZXJzZUhhbmRsZXJQdHI7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgJnRyYXZlcnNlT3BlcmF0aW9uXSB7CisgICAgICAgICAgICB0cmF2
ZXJzZU9wZXJhdGlvbi5oYW5kbGVyKG51bGxwdHIsIHsgfSk7CisgICAgICAgICAgICBtX2FjdGl2
ZVRyYXZlcnNlT3BlcmF0aW9ucy5yZW1vdmUoJnRyYXZlcnNlT3BlcmF0aW9uKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCShyZXZpc2lvbiAxODU4MjIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXIoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
VGltZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAg
IHN0cnVjdCBSZWNvcmRJbmZvIHsKLSAgICAgICAgc2l6ZV90IGJvZHlTaXplIHsgMCB9OwotICAg
ICAgICBkb3VibGUgd29ydGggeyAtMSB9OyAvLyAwLTEgd2hlcmUgMSBpcyB0aGUgbW9zdCB2YWx1
YWJsZS4KLSAgICAgICAgdW5zaWduZWQgYm9keVNoYXJlQ291bnQgeyAwIH07CisgICAgICAgIHNp
emVfdCBib2R5U2l6ZTsKKyAgICAgICAgZG91YmxlIHdvcnRoOyAvLyAwLTEgd2hlcmUgMSBpcyB0
aGUgbW9zdCB2YWx1YWJsZS4KKyAgICAgICAgdW5zaWduZWQgYm9keVNoYXJlQ291bnQ7CiAgICAg
ICAgIFN0cmluZyBib2R5SGFzaDsKICAgICB9OwogICAgIGVudW0gVHJhdmVyc2VGbGFnIHsKQEAg
LTE1NSw2ICsxNTUsOSBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPFdy
aXRlT3BlcmF0aW9uPj4gbV9hY3RpdmVXcml0ZU9wZXJhdGlvbnM7CiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV93cml0ZU9wZXJhdGlvbkRpc3BhdGNoVGltZXI7CiAKKyAgICBzdHJ1Y3QgVHJhdmVyc2VP
cGVyYXRpb247CisgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8VHJhdmVyc2VPcGVyYXRpb24+
PiBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9uczsKKwogICAgIFJlZjxXb3JrUXVldWU+IG1faW9R
dWV1ZTsKICAgICBSZWY8V29ya1F1ZXVlPiBtX2JhY2tncm91bmRJT1F1ZXVlOwogICAgIFJlZjxX
b3JrUXVldWU+IG1fc2VyaWFsQmFja2dyb3VuZElPUXVldWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>