<?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>88096</bug_id>
          
          <creation_ts>2012-06-01 08:09:13 -0700</creation_ts>
          <short_desc>[Qt][WK2] Refactor the tap gesture recognizer</short_desc>
          <delta_ts>2012-06-04 04:43:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Andras Becsi">abecsi</reporter>
          <assigned_to name="Andras Becsi">abecsi</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>639350</commentid>
    <comment_count>0</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-06-01 08:09:13 -0700</bug_when>
    <thetext>[Qt][WK2] Refactor the tap gesture recognizer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639353</commentid>
    <comment_count>1</comment_count>
      <attachid>145313</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-06-01 08:11:30 -0700</bug_when>
    <thetext>Created attachment 145313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639962</commentid>
    <comment_count>2</comment_count>
      <attachid>145313</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-06-01 23:27:14 -0700</bug_when>
    <thetext>Comment on attachment 145313
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/qt/QtTapGestureRecognizer.cpp:96
&gt; +        // The singleTapTimeout was ignored earlier but the gesture has been finished
&gt; +        // before the tapAndHoldTimeout fired, therefore this is a single tap gesture.
&gt; +        m_eventHandler-&gt;handleSingleTapEvent(touchPoint);

I think it would help if the comment would directly say that this happens when the finger is released (gesture finished) after the single tap timeout elapsed (500ms) but _before_ the tapAndHold (1000ms), i.e. explain it using numbers instead of states. Just a thought :)

&gt; Source/WebKit2/UIProcess/qt/QtTapGestureRecognizer.h:39
&gt;  const int maxPanDistance = 10;
&gt;  const int maxDoubleTapDistance = 120;
&gt; -const int tapAndHoldTime = 800;
&gt; -const int maxDoubleTapInterval = 400;
&gt; -const int highlightDelay = 80;
&gt; +const int tapAndHoldTime = 1000;
&gt; +const int maxDoubleTapInterval = 500;
&gt; +const int highlightDelay = 100;

Why are these global constants in a header file? I understand that due to them being const they will only have internal linkage, but nevertheless they are not shared with any other files and IMHO would fit just as well into the .cpp file.

I also wonder if these timeouts should be consistent across the platform where tap gestures are recognized in different places, i.e. if they should be read from some setting? (think platform plugin)

For example I can see that our tapAndHoldTime is 1 second while in qquickmouseareap.cpp it&apos;s 800ms. That&apos;s subtle, but still different.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:505
&gt;              if (!m_panGestureRecognizer.isRecognized())
&gt; -                m_tapGestureRecognizer.update(ev-&gt;type(), touchPoints.first());
&gt; +                m_tapGestureRecognizer.finish(touchPoints.first());
&gt;              m_panGestureRecognizer.finish(touchPoints.first(), eventTimestampMillis);

I think this code would be more readable if it was

    if (m_panGestureRecognizer.isRecognized())
        m_panGestureRecognizer.finish(...);
    else
        m_tapGestureRecognizer.finish();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640470</commentid>
    <comment_count>3</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-06-04 04:31:28 -0700</bug_when>
    <thetext>Committed r119385: &lt;http://trac.webkit.org/changeset/119385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640477</commentid>
    <comment_count>4</comment_count>
      <attachid>145313</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-06-04 04:43:02 -0700</bug_when>
    <thetext>Comment on attachment 145313
Patch

Clearing flags from attachment.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145313</attachid>
            <date>2012-06-01 08:11:30 -0700</date>
            <delta_ts>2012-06-04 04:43:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88096-20120601171134.patch</filename>
            <type>text/plain</type>
            <size>14927</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTY2Njc1Y2EyOTRmMDlh
NWY4MTkwY2QwMDEwMzVmNzExZjFiNTNjNS4uNDRiMzc2NjU1NTVlNWVjOGZmNWU3NzI1ZDQyYTg2
ZWQ2OGQ1ZTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA1LTMxICBBbmRy
YXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBS
ZWZhY3RvciB0aGUgdGFwIGdlc3R1cmUgcmVjb2duaXplcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgwOTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUgdGFwIGdlc3R1cmUgcmVjb2du
aXplciBzbyB0aGF0IGl0cyBpbnRlcm5hbCBzdGF0ZSBtYWNoaW5lIGlzCisgICAgICAgIHNlbGYg
Y29udGFpbmVkIGFuZCBpbmRlcGVuZGVudCBvZiBpbnB1dCBldmVudCB0eXBlcy4KKyAgICAgICAg
QWxzbyBjaGFuZ2UgdGhlIGludGVybmFsIEFQSSBmb3IgdGFwIGhpZ2hsaWdodGluZyB0byBtYWtl
IHRoZSBjb2RlIGVhc2llcgorICAgICAgICB0byB1bmRlcnN0YW5kIG9uIHRoZSBjYWxsZXIgc2lk
ZS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSB0YXAgZ2VzdHVyZSByZWNvZ25pemVy
IG1vcmUgcm9idXN0LCBjb25zaXN0ZW50IHdpdGgKKyAgICAgICAgb3RoZXIgZ2VzdHVyZSByZWNv
Z25pemVycyBhbmQgZml4ZXMgc29tZSBpc3N1ZXMgcmVsYXRlZCB0byBoaWdobGlnaHRpbmcKKyAg
ICAgICAgYW5kIGxpbmsgYWN0aXZhdGlvbiB3aXRoIHJlc3BlY3QgdG8gbmF0aXZlIHRvdWNoIGV2
ZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFRhcEdlc3R1cmVSZWNvZ25pemVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UXRUYXBHZXN0dXJlUmVjb2duaXplcjo6UXRUYXBHZXN0dXJl
UmVjb2duaXplcik6CisgICAgICAgIChXZWJLaXQ6OlF0VGFwR2VzdHVyZVJlY29nbml6ZXI6Ondp
dGhpbkRpc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UXRUYXBHZXN0dXJlUmVjb2duaXplcjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6UXRUYXBHZXN0dXJlUmVjb2duaXplcjo6ZmluaXNo
KToKKyAgICAgICAgKFdlYktpdDo6UXRUYXBHZXN0dXJlUmVjb2duaXplcjo6Y2FuY2VsKToKKyAg
ICAgICAgKFdlYktpdDo6UXRUYXBHZXN0dXJlUmVjb2duaXplcjo6aGlnaGxpZ2h0VGltZW91dCk6
CisgICAgICAgIChXZWJLaXQ6OlF0VGFwR2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcFRpbWVv
dXQpOgorICAgICAgICAoV2ViS2l0OjpRdFRhcEdlc3R1cmVSZWNvZ25pemVyOjp0YXBBbmRIb2xk
VGltZW91dCk6CisgICAgICAgIChXZWJLaXQ6OlF0VGFwR2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRUYXBHZXN0dXJlUmVjb2duaXplci5oOgorICAg
ICAgICAoUXRUYXBHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUV2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUV2ZW50
SGFuZGxlcjo6UXRXZWJQYWdlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyOjphY3RpdmF0ZVRhcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6
OlF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6ZGVhY3RpdmF0ZVRhcEhpZ2hsaWdodCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRs
ZVNpbmdsZVRhcEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVEb3VibGVUYXBFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUV2ZW50
SGFuZGxlcjo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXIpOgor
CiAyMDEyLTA2LTAxICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbUXRdIE1vdmUgc3VzcGVuc2lvbiB0byBRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRh
cEdlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRh
cEdlc3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCAwMDc2NTliMmZkMmY4ZDkyNGIzNDlkZWIwN2Qx
MTU1MDFjOTQyOGQ2Li5kZTA3MGRjNWMwM2NkYzZlYzE2NzlkYjMzNjdiN2Q5YjVmNTNmZTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUYXBHZXN0dXJlUmVjb2du
aXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VGFwR2VzdHVyZVJl
Y29nbml6ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNzMgKzI3LDgyIEBA
CiAKICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlIDxRTGluZUY+
Ci0jaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBRdFRhcEdl
c3R1cmVSZWNvZ25pemVyOjpRdFRhcEdlc3R1cmVSZWNvZ25pemVyKFF0V2ViUGFnZUV2ZW50SGFu
ZGxlciogZXZlbnRIYW5kbGVyKQogICAgIDogUXRHZXN0dXJlUmVjb2duaXplcihldmVudEhhbmRs
ZXIpCi0gICAgLCBtX2NhbmRpZGF0ZShJbnZhbGlkKQorICAgICwgbV9jYW5kaWRhdGUoU2luZ2xl
VGFwQ2FuZGlkYXRlKQogewogfQogCiBib29sIFF0VGFwR2VzdHVyZVJlY29nbml6ZXI6OndpdGhp
bkRpc3RhbmNlKGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiB0b3VjaFBvaW50LCBpbnQg
ZGlzdGFuY2UpCiB7CisgICAgQVNTRVJUKG1fbGFzdFRvdWNoUG9pbnQuaWQoKSAhPSAtMSk7CiAg
ICAgcmV0dXJuIFFMaW5lRih0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFBvaW50
LnNjcmVlblBvcygpKS5sZW5ndGgoKSA8IGRpc3RhbmNlOwogfQogCi1ib29sIFF0VGFwR2VzdHVy
ZVJlY29nbml6ZXI6OnVwZGF0ZShRRXZlbnQ6OlR5cGUgZXZlbnRUeXBlLCBjb25zdCBRVG91Y2hF
dmVudDo6VG91Y2hQb2ludCYgdG91Y2hQb2ludCkKK3ZvaWQgUXRUYXBHZXN0dXJlUmVjb2duaXpl
cjo6dXBkYXRlKGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiB0b3VjaFBvaW50KQogewot
ICAgIEFTU0VSVChtX2V2ZW50SGFuZGxlcik7Ci0KLSAgICBzd2l0Y2ggKGV2ZW50VHlwZSkgewot
ICAgIGNhc2UgUUV2ZW50OjpUb3VjaEJlZ2luOgorICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAg
IGNhc2UgTm9HZXN0dXJlOgogICAgICAgICBtX2RvdWJsZVRhcFRpbWVyLnN0b3AoKTsgLy8gQ2Fu
Y2VsIG90aGVyIHBlbmRpbmcgc2luZ2xlIHRhcCBldmVudC4KKyAgICAgICAgbV9zdGF0ZSA9IEdl
c3R1cmVSZWNvZ25pdGlvblN0YXJ0ZWQ7CiAKICAgICAgICAgQVNTRVJUKCFtX3RhcEFuZEhvbGRU
aW1lci5pc0FjdGl2ZSgpKTsKICAgICAgICAgbV90YXBBbmRIb2xkVGltZXIuc3RhcnQodGFwQW5k
SG9sZFRpbWUsIHRoaXMpOwogCi0gICAgICAgIGlmIChtX2xhc3RUb3VjaFBvaW50LmlkKCkgIT0g
LTEgJiYgd2l0aGluRGlzdGFuY2UodG91Y2hQb2ludCwgbWF4RG91YmxlVGFwRGlzdGFuY2UpKQot
ICAgICAgICAgICAgbV9jYW5kaWRhdGUgPSBEb3VibGVUYXBDYW5kaWRhdGU7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgbV9jYW5kaWRhdGUgPSBTaW5nbGVUYXBDYW5kaWRhdGU7Ci0gICAg
ICAgICAgICAvLyBUaGUgYmVsb3cgaW4gZmFjdHMgcmVzZXRzIGFueSBwcmV2aW91cyBzaW5nbGUg
dGFwIGV2ZW50LgotICAgICAgICAgICAgbV9oaWdobGlnaHRUaW1lci5zdGFydChoaWdobGlnaHRE
ZWxheSwgdGhpcyk7Ci0gICAgICAgICAgICBtX2xhc3RUb3VjaFBvaW50ID0gdG91Y2hQb2ludDsK
LSAgICAgICAgICAgIG1fZG91YmxlVGFwVGltZXIuc3RhcnQobWF4RG91YmxlVGFwSW50ZXJ2YWws
IHRoaXMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICAvLyBFYXJseSByZXR1
cm4gaWYgdGhpcyBpcyB0aGUgc2Vjb25kIHRvdWNoIHBvaW50IG9mIGEgcG90ZW50aWFsIGRvdWJs
ZSB0YXAgZ2VzdHVyZS4KKyAgICAgICAgaWYgKG1fY2FuZGlkYXRlID09IERvdWJsZVRhcENhbmRp
ZGF0ZSAmJiB3aXRoaW5EaXN0YW5jZSh0b3VjaFBvaW50LCBtYXhEb3VibGVUYXBEaXN0YW5jZSkp
CisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIFFFdmVudDo6VG91Y2hVcGRhdGU6Cisg
ICAgICAgIC8vIFRoZSBiZWxvdyBpbiBmYWN0IHJlc2V0cyBhbnkgcHJldmlvdXMgc2luZ2xlIHRh
cCBldmVudC4KKyAgICAgICAgbV9jYW5kaWRhdGUgPSBTaW5nbGVUYXBDYW5kaWRhdGU7CisgICAg
ICAgIG1fbGFzdFRvdWNoUG9pbnQgPSB0b3VjaFBvaW50OworICAgICAgICBtX2hpZ2hsaWdodFRp
bWVyLnN0YXJ0KGhpZ2hsaWdodERlbGF5LCB0aGlzKTsKKyAgICAgICAgbV9kb3VibGVUYXBUaW1l
ci5zdGFydChtYXhEb3VibGVUYXBJbnRlcnZhbCwgdGhpcyk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgR2VzdHVyZVJlY29nbml0aW9uU3RhcnRlZDoKICAgICAgICAgLy8gSWYgdGhlIHRvdWNo
IHBvaW50IG1vdmVzIGZ1cnRoZXIgdGhhbiB0aGUgdGhyZXNob2xkLCB3ZSBjYW5jZWwgdGhlIHRh
cCBnZXN0dXJlLgotICAgICAgICBpZiAobV9jYW5kaWRhdGUgIT0gSW52YWxpZCAmJiAhd2l0aGlu
RGlzdGFuY2UodG91Y2hQb2ludCwgbWF4UGFuRGlzdGFuY2UpKQorICAgICAgICBpZiAoIXdpdGhp
bkRpc3RhbmNlKHRvdWNoUG9pbnQsIG1heFBhbkRpc3RhbmNlKSkKICAgICAgICAgICAgIHJlc2V0
KCk7CiAgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CiAKLSAgICBjYXNlIFFFdmVudDo6VG91
Y2hFbmQ6Ci0gICAgICAgIG1fdGFwQW5kSG9sZFRpbWVyLnN0b3AoKTsKLQotICAgICAgICBpZiAo
bV9jYW5kaWRhdGUgPT0gSW52YWxpZCkKLSAgICAgICAgICAgIGJyZWFrOwordm9pZCBRdFRhcEdl
c3R1cmVSZWNvZ25pemVyOjpmaW5pc2goY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHRv
dWNoUG9pbnQpCit7CisgICAgQVNTRVJUKG1fZXZlbnRIYW5kbGVyKTsKKyAgICBtX3RhcEFuZEhv
bGRUaW1lci5zdG9wKCk7CiAKLSAgICAgICAgaWYgKG1fY2FuZGlkYXRlID09IERvdWJsZVRhcENh
bmRpZGF0ZSkgewotICAgICAgICAgICAgbV9ldmVudEhhbmRsZXItPmhhbmRsZVBvdGVudGlhbFNp
bmdsZVRhcEV2ZW50KFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50KCkpOwotICAgICAgICAgICAgbV9l
dmVudEhhbmRsZXItPmhhbmRsZURvdWJsZVRhcEV2ZW50KHRvdWNoUG9pbnQpOwotICAgICAgICAg
ICAgcmVzZXQoKTsKLSAgICAgICAgfQorICAgIC8vIEdlc3R1cmUgaGFzIGJlZW4gY2FuY2VsbGVk
LCBpZ25vcmUuCisgICAgaWYgKG1fc3RhdGUgPT0gTm9HZXN0dXJlKQorICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgYnJlYWs7CisgICAgbV9zdGF0ZSA9IE5vR2VzdHVyZTsKIAotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBpZiAobV9jYW5kaWRhdGUgPT0gU2luZ2xl
VGFwQ2FuZGlkYXRlKSB7CisgICAgICAgIGlmIChtX2RvdWJsZVRhcFRpbWVyLmlzQWN0aXZlKCkp
IHsKKyAgICAgICAgICAgIG1fY2FuZGlkYXRlID0gRG91YmxlVGFwQ2FuZGlkYXRlOworICAgICAg
ICAgICAgbV9sYXN0VG91Y2hQb2ludCA9IHRvdWNoUG9pbnQ7CisgICAgICAgICAgICAvLyBFYXJs
eSByZXR1cm4gc2luY2UgdGhpcyBpcyBhIHBvdGVudGlhbCBkb3VibGUgdGFwIGdlc3R1cmUuCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhlIHNpbmdsZVRhcFRp
bWVvdXQgd2FzIGlnbm9yZWQgZWFybGllciBidXQgdGhlIGdlc3R1cmUgaGFzIGJlZW4gZmluaXNo
ZWQKKyAgICAgICAgLy8gYmVmb3JlIHRoZSB0YXBBbmRIb2xkVGltZW91dCBmaXJlZCwgdGhlcmVm
b3JlIHRoaXMgaXMgYSBzaW5nbGUgdGFwIGdlc3R1cmUuCisgICAgICAgIG1fZXZlbnRIYW5kbGVy
LT5oYW5kbGVTaW5nbGVUYXBFdmVudCh0b3VjaFBvaW50KTsKKyAgICB9IGVsc2UgLy8gRG91Ymxl
VGFwQ2FuZGlkYXRlCisgICAgICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVEb3VibGVUYXBFdmVu
dCh0b3VjaFBvaW50KTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNldCgpOwogfQogCiB2
b2lkIFF0VGFwR2VzdHVyZVJlY29nbml6ZXI6OmNhbmNlbCgpCiB7Ci0gICAgaWYgKG1fY2FuZGlk
YXRlID09IEludmFsaWQpCisgICAgaWYgKG1fbGFzdFRvdWNoUG9pbnQuaWQoKSA9PSAtMSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcmVzZXQoKTsKQEAgLTEwMywyNyArMTEyLDIyIEBAIHZvaWQg
UXRUYXBHZXN0dXJlUmVjb2duaXplcjo6aGlnaGxpZ2h0VGltZW91dCgpCiB7CiAgICAgbV9oaWdo
bGlnaHRUaW1lci5zdG9wKCk7CiAKLSAgICBpZiAobV9jYW5kaWRhdGUgIT0gU2luZ2xlVGFwQ2Fu
ZGlkYXRlKQorICAgIC8vIEdlc3R1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCBpZ25vcmUuCisgICAg
aWYgKG1fbGFzdFRvdWNoUG9pbnQuaWQoKSA9PSAtMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QVNTRVJUKG1fbGFzdFRvdWNoUG9pbnQuaWQoKSAhPSAtMSk7Ci0gICAgbV9ldmVudEhhbmRsZXIt
PmhhbmRsZVBvdGVudGlhbFNpbmdsZVRhcEV2ZW50KG1fbGFzdFRvdWNoUG9pbnQpOworICAgIG1f
ZXZlbnRIYW5kbGVyLT5hY3RpdmF0ZVRhcEhpZ2hsaWdodChtX2xhc3RUb3VjaFBvaW50KTsKIH0K
IAogdm9pZCBRdFRhcEdlc3R1cmVSZWNvZ25pemVyOjpzaW5nbGVUYXBUaW1lb3V0KCkKIHsKICAg
ICBtX2RvdWJsZVRhcFRpbWVyLnN0b3AoKTsKIAotICAgIC8vIEZpbmdlciBpcyBzdGlsbCBwcmVz
c2VkLCBpZ25vcmUuCi0gICAgaWYgKG1fdGFwQW5kSG9sZFRpbWVyLmlzQWN0aXZlKCkpCisgICAg
Ly8gRmluZ2VyIGlzIHN0aWxsIHByZXNzZWQgb3IgZ2VzdHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQs
IGlnbm9yZS4KKyAgICBpZiAobV90YXBBbmRIb2xkVGltZXIuaXNBY3RpdmUoKSB8fCBtX2xhc3RU
b3VjaFBvaW50LmlkKCkgPT0gLTEpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2xh
c3RUb3VjaFBvaW50LmlkKCkgIT0gLTEpOwotCi0gICAgaWYgKG1fY2FuZGlkYXRlID09IFNpbmds
ZVRhcENhbmRpZGF0ZSkgewotICAgICAgICBtX2V2ZW50SGFuZGxlci0+aGFuZGxlUG90ZW50aWFs
U2luZ2xlVGFwRXZlbnQoUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQoKSk7Ci0gICAgICAgIG1fZXZl
bnRIYW5kbGVyLT5oYW5kbGVTaW5nbGVUYXBFdmVudChtX2xhc3RUb3VjaFBvaW50KTsKLSAgICB9
CisgICAgbV9ldmVudEhhbmRsZXItPmhhbmRsZVNpbmdsZVRhcEV2ZW50KG1fbGFzdFRvdWNoUG9p
bnQpOwogICAgIHJlc2V0KCk7CiB9CiAKQEAgLTEzMSw5ICsxMzUsMTEgQEAgdm9pZCBRdFRhcEdl
c3R1cmVSZWNvZ25pemVyOjp0YXBBbmRIb2xkVGltZW91dCgpCiB7CiAgICAgbV90YXBBbmRIb2xk
VGltZXIuc3RvcCgpOwogCi0gICAgQVNTRVJUKG1fbGFzdFRvdWNoUG9pbnQuaWQoKSAhPSAtMSk7
CisgICAgLy8gR2VzdHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIGlnbm9yZS4KKyAgICBpZiAobV9s
YXN0VG91Y2hQb2ludC5pZCgpID09IC0xKQorICAgICAgICByZXR1cm47CisKICNpZiAwIC8vIE5v
IHN1cHBvcnQgZm9yIHN5bnRoZXRpYyBjb250ZXh0IG1lbnVzIGluIFdLMiB5ZXQuCi0gICAgbV9l
dmVudEhhbmRsZXItPmhhbmRsZVBvdGVudGlhbFNpbmdsZVRhcEV2ZW50KFFUb3VjaEV2ZW50OjpU
b3VjaFBvaW50KCkpOwogICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVUYXBBbmRIb2xkRXZlbnQo
bV9sYXN0VG91Y2hQb2ludCk7CiAjZW5kaWYKICAgICByZXNldCgpOwpAQCAtMTQxLDEwICsxNDcs
OSBAQCB2b2lkIFF0VGFwR2VzdHVyZVJlY29nbml6ZXI6OnRhcEFuZEhvbGRUaW1lb3V0KCkKIAog
dm9pZCBRdFRhcEdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiB7Ci0gICAgaWYgKG1fY2FuZGlk
YXRlICE9IEludmFsaWQpCi0gICAgICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVQb3RlbnRpYWxT
aW5nbGVUYXBFdmVudChRVG91Y2hFdmVudDo6VG91Y2hQb2ludCgpKTsKKyAgICBtX2V2ZW50SGFu
ZGxlci0+ZGVhY3RpdmF0ZVRhcEhpZ2hsaWdodCgpOwogCi0gICAgbV9jYW5kaWRhdGUgPSBJbnZh
bGlkOworICAgIG1fY2FuZGlkYXRlID0gU2luZ2xlVGFwQ2FuZGlkYXRlOwogICAgIG1fbGFzdFRv
dWNoUG9pbnQuc2V0SWQoLTEpOwogICAgIG1faGlnaGxpZ2h0VGltZXIuc3RvcCgpOwogICAgIG1f
ZG91YmxlVGFwVGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0VGFwR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFRhcEdlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggMmNiY2Y5Mzc1NmNmZWY3MjcxYmIw
YjJiMDMyMmFhN2I1MWVjMWMzMy4uMDc0NGRhMTZkN2JiNTRjY2I2NTA4NTlhZWZkZjJiZWYxMGMz
ZTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VGFwR2VzdHVy
ZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUYXBHZXN0
dXJlUmVjb2duaXplci5oCkBAIC0zNCw5ICszNCw5IEBACiAvLyBGSVhNRTogVGhlc2UgY29uc3Rh
bnRzIHNob3VsZCBwb3NzaWJseSBkZXBlbmQgb24gRFBJLgogY29uc3QgaW50IG1heFBhbkRpc3Rh
bmNlID0gMTA7CiBjb25zdCBpbnQgbWF4RG91YmxlVGFwRGlzdGFuY2UgPSAxMjA7Ci1jb25zdCBp
bnQgdGFwQW5kSG9sZFRpbWUgPSA4MDA7Ci1jb25zdCBpbnQgbWF4RG91YmxlVGFwSW50ZXJ2YWwg
PSA0MDA7Ci1jb25zdCBpbnQgaGlnaGxpZ2h0RGVsYXkgPSA4MDsKK2NvbnN0IGludCB0YXBBbmRI
b2xkVGltZSA9IDEwMDA7Citjb25zdCBpbnQgbWF4RG91YmxlVGFwSW50ZXJ2YWwgPSA1MDA7Citj
b25zdCBpbnQgaGlnaGxpZ2h0RGVsYXkgPSAxMDA7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC00NSw3ICs0NSw4IEBAIGNsYXNzIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjsKIGNsYXNzIFF0VGFw
R2VzdHVyZVJlY29nbml6ZXIgOiBwdWJsaWMgUU9iamVjdCwgcHJpdmF0ZSBRdEdlc3R1cmVSZWNv
Z25pemVyIHsKIHB1YmxpYzoKICAgICBRdFRhcEdlc3R1cmVSZWNvZ25pemVyKFF0V2ViUGFnZUV2
ZW50SGFuZGxlciopOwotICAgIGJvb2wgdXBkYXRlKFFFdmVudDo6VHlwZSBldmVudFR5cGUsIGNv
bnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7CisgICAgdm9pZCB1cGRhdGUoY29uc3QgUVRv
dWNoRXZlbnQ6OlRvdWNoUG9pbnQmKTsKKyAgICB2b2lkIGZpbmlzaChjb25zdCBRVG91Y2hFdmVu
dDo6VG91Y2hQb2ludCYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKIHByb3RlY3RlZDoKQEAgLTY0
LDkgKzY1LDggQEAgcHJpdmF0ZToKICAgICBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCBtX2xhc3RU
b3VjaFBvaW50OwogCiAgICAgZW51bSB7Ci0gICAgICAgIEludmFsaWQsCiAgICAgICAgIFNpbmds
ZVRhcENhbmRpZGF0ZSwKLSAgICAgICAgRG91YmxlVGFwQ2FuZGlkYXRlLAorICAgICAgICBEb3Vi
bGVUYXBDYW5kaWRhdGUKICAgICB9IG1fY2FuZGlkYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcAppbmRleCBi
YmRjM2E2M2I3MmUzYjY1YzQyM2NhZDI4ODIwMjNmODAzNGViNmNkLi43MDM4N2U5ZjcwZDU2MGJm
MTNmMTgwNzI5YWFjMWE3NGQwODdmOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcApAQCAtOTgsNiArOTgsNyBAQCBR
dFdlYlBhZ2VFdmVudEhhbmRsZXI6OlF0V2ViUGFnZUV2ZW50SGFuZGxlcihXS1BhZ2VSZWYgcGFn
ZVJlZiwgUVF1aWNrV2ViUGFnZSogcQogICAgICwgbV9wcmV2aW91c0NsaWNrQnV0dG9uKFF0OjpO
b0J1dHRvbikKICAgICAsIG1fY2xpY2tDb3VudCgwKQogICAgICwgbV9wb3N0cG9uZVRleHRJbnB1
dFN0YXRlQ2hhbmdlZChmYWxzZSkKKyAgICAsIG1faXNUYXBIaWdobGlnaHRBY3RpdmUoZmFsc2Up
CiB7CiAgICAgY29ubmVjdChxQXBwLT5pbnB1dFBhbmVsKCksIFNJR05BTCh2aXNpYmxlQ2hhbmdl
ZCgpKSwgdGhpcywgU0xPVChpbnB1dFBhbmVsVmlzaWJsZUNoYW5nZWQoKSkpOwogfQpAQCAtMjI3
LDIzICsyMjgsMzIgQEAgdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZURyb3BFdmVu
dChRRHJvcEV2ZW50KiBldikKICAgICBldi0+c2V0QWNjZXB0ZWQoYWNjZXB0ZWQpOwogfQogCi12
b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlUG90ZW50aWFsU2luZ2xlVGFwRXZlbnQo
Y29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50KQordm9pZCBRdFdlYlBhZ2VFdmVu
dEhhbmRsZXI6OmFjdGl2YXRlVGFwSGlnaGxpZ2h0KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBv
aW50JiBwb2ludCkKIHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChwb2ludC5w
b3MoKSA9PSBRUG9pbnRGKCkpIHsKLSAgICAgICAgLy8gQW4gZW1wdHkgcG9pbnQgZGVhY3RpdmF0
ZXMgdGhlIGhpZ2hsaWdodGluZy4KLSAgICAgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVBvdGVu
dGlhbEFjdGl2YXRpb24oSW50UG9pbnQoKSwgSW50U2l6ZSgpKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1G
cm9tSXRlbSgpOwotICAgICAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlUG90ZW50aWFsQWN0aXZh
dGlvbihJbnRQb2ludChmcm9tSXRlbVRyYW5zZm9ybS5tYXAocG9pbnQucG9zKCkpLnRvUG9pbnQo
KSksIEludFNpemUocG9pbnQucmVjdCgpLnNpemUoKS50b1NpemUoKSkpOwotICAgIH0KKyAgICBB
U1NFUlQoIXBvaW50LnBvcygpLnRvUG9pbnQoKS5pc051bGwoKSk7CisgICAgQVNTRVJUKCFtX2lz
VGFwSGlnaGxpZ2h0QWN0aXZlKTsKKyAgICBtX2lzVGFwSGlnaGxpZ2h0QWN0aXZlID0gdHJ1ZTsK
KyAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1G
cm9tSXRlbSgpOworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVQb3RlbnRpYWxBY3RpdmF0aW9u
KEludFBvaW50KGZyb21JdGVtVHJhbnNmb3JtLm1hcChwb2ludC5wb3MoKSkudG9Qb2ludCgpKSwg
SW50U2l6ZShwb2ludC5yZWN0KCkuc2l6ZSgpLnRvU2l6ZSgpKSk7CiAjZWxzZQogICAgIFFfVU5V
U0VEKHBvaW50KTsKICNlbmRpZgogfQogCit2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6ZGVh
Y3RpdmF0ZVRhcEhpZ2hsaWdodCgpCit7CisgICAgaWYgKCFtX2lzVGFwSGlnaGxpZ2h0QWN0aXZl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbiBlbXB0eSBwb2ludCBkZWFjdGl2YXRlcyB0
aGUgaGlnaGxpZ2h0aW5nLgorICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVQb3RlbnRpYWxBY3Rp
dmF0aW9uKEludFBvaW50KCksIEludFNpemUoKSk7CisgICAgbV9pc1RhcEhpZ2hsaWdodEFjdGl2
ZSA9IGZhbHNlOworfQorCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlU2luZ2xl
VGFwRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50KQogeworICAgIGRl
YWN0aXZhdGVUYXBIaWdobGlnaHQoKTsKICAgICBtX3Bvc3Rwb25lVGV4dElucHV0U3RhdGVDaGFu
Z2VkID0gdHJ1ZTsKIAogICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBh
Z2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CkBAIC0yNTMsNiArMjYzLDcgQEAgdm9pZCBRdFdlYlBh
Z2VFdmVudEhhbmRsZXI6OmhhbmRsZVNpbmdsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpU
b3VjaFBvaW50JgogCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRG91YmxlVGFw
RXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50KQogeworICAgIGRlYWN0
aXZhdGVUYXBIaWdobGlnaHQoKTsKICAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0g
bV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOwogICAgIG1fd2ViUGFnZVByb3h5LT5maW5k
Wm9vbWFibGVBcmVhRm9yUG9pbnQoZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKHBvaW50LnBvcygpKS50
b1BvaW50KCksIEludFNpemUocG9pbnQucmVjdCgpLnNpemUoKS50b1NpemUoKSkpOwogfQpAQCAt
NDkwLDcgKzUwMSw3IEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpkb25lV2l0aFRvdWNo
RXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsCiAgICAgICAgIGlmICh0b3Vj
aFBvaW50Q291bnQgPT0gMSkgewogICAgICAgICAgICAgLy8gTm8gYWN0aXZlIHRvdWNoIHBvaW50
cywgb25lIGZpbmdlciByZWxlYXNlZC4KICAgICAgICAgICAgIGlmICghbV9wYW5HZXN0dXJlUmVj
b2duaXplci5pc1JlY29nbml6ZWQoKSkKLSAgICAgICAgICAgICAgICBtX3RhcEdlc3R1cmVSZWNv
Z25pemVyLnVwZGF0ZShldi0+dHlwZSgpLCB0b3VjaFBvaW50cy5maXJzdCgpKTsKKyAgICAgICAg
ICAgICAgICBtX3RhcEdlc3R1cmVSZWNvZ25pemVyLmZpbmlzaCh0b3VjaFBvaW50cy5maXJzdCgp
KTsKICAgICAgICAgICAgIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIuZmluaXNoKHRvdWNoUG9pbnRz
LmZpcnN0KCksIGV2ZW50VGltZXN0YW1wTWlsbGlzKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBtX3BpbmNoR2VzdHVyZVJlY29nbml6ZXIuZmluaXNoKCk7CkBAIC01MTEsNyArNTIyLDcg
QEAgdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwKICAgICBpZiAobV9wYW5HZXN0dXJlUmVjb2duaXpl
ci5pc1JlY29nbml6ZWQoKSB8fCBtX3BpbmNoR2VzdHVyZVJlY29nbml6ZXIuaXNSZWNvZ25pemVk
KCkgfHwgbV93ZWJWaWV3LT5pc01vdmluZygpKQogICAgICAgICBtX3RhcEdlc3R1cmVSZWNvZ25p
emVyLmNhbmNlbCgpOwogICAgIGVsc2UgaWYgKHRvdWNoUG9pbnRDb3VudCA9PSAxKQotICAgICAg
ICBtX3RhcEdlc3R1cmVSZWNvZ25pemVyLnVwZGF0ZShldi0+dHlwZSgpLCB0b3VjaFBvaW50cy5m
aXJzdCgpKTsKKyAgICAgICAgbV90YXBHZXN0dXJlUmVjb2duaXplci51cGRhdGUodG91Y2hQb2lu
dHMuZmlyc3QoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5oCmluZGV4IDc0YWNkYjc3ZTJjNjQ2ZjA3MzM0
ZTE1NmRjM2Q1YTA1NTM2M2QxYWUuLjE2MDJiYzhjM2JiNDkwYjc3OWM0MzNjOGQwYjE5NDRiNGMx
ZDJiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VF
dmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
RXZlbnRIYW5kbGVyLmgKQEAgLTc3LDcgKzc3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSopOwog
Ci0gICAgdm9pZCBoYW5kbGVQb3RlbnRpYWxTaW5nbGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVu
dDo6VG91Y2hQb2ludCYpOworICAgIHZvaWQgYWN0aXZhdGVUYXBIaWdobGlnaHQoY29uc3QgUVRv
dWNoRXZlbnQ6OlRvdWNoUG9pbnQmKTsKKyAgICB2b2lkIGRlYWN0aXZhdGVUYXBIaWdobGlnaHQo
KTsKICAgICB2b2lkIGhhbmRsZVNpbmdsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3Vj
aFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVEb3VibGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVu
dDo6VG91Y2hQb2ludCYpOwogCkBAIC0xMTMsNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBRdDo6
TW91c2VCdXR0b24gbV9wcmV2aW91c0NsaWNrQnV0dG9uOwogICAgIGludCBtX2NsaWNrQ291bnQ7
CiAgICAgYm9vbCBtX3Bvc3Rwb25lVGV4dElucHV0U3RhdGVDaGFuZ2VkOworICAgIGJvb2wgbV9p
c1RhcEhpZ2hsaWdodEFjdGl2ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>