<?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>42049</bug_id>
          
          <creation_ts>2010-07-11 16:58:08 -0700</creation_ts>
          <short_desc>Implement waitUntilDone and notifyDone for WebKitTestRunner</short_desc>
          <delta_ts>2010-07-11 20:41:28 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249664</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-11 16:58:08 -0700</bug_when>
    <thetext>Implement waitUntilDone and notifyDone for WebKitTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249675</commentid>
    <comment_count>1</comment_count>
      <attachid>61187</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-11 19:13:09 -0700</bug_when>
    <thetext>Created attachment 61187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249676</commentid>
    <comment_count>2</comment_count>
      <attachid>61187</attachid>
    <who name="">mitz</who>
    <bug_when>2010-07-11 19:29:05 -0700</bug_when>
    <thetext>Comment on attachment 61187
Patch

&gt; +static const CFTimeInterval waitToDumpWatchdogInterval = 30.0;

Current style is to omit the “.0”.

&gt; +void LayoutTestController::setWaitToDump(bool waitUntilDone)
&gt; +{
&gt; +    m_waitToDump = waitUntilDone;
&gt; +    if (m_waitToDump &amp;&amp; !m_waitToDumpWatchdog) {
&gt; +        m_waitToDumpWatchdog.adoptCF(CFRunLoopTimerCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + waitToDumpWatchdogInterval, 
&gt; +                                                      0, 0, 0, waitUntilDoneWatchdogFired, NULL));
&gt; +        CFRunLoopAddTimer(CFRunLoopGetCurrent(), m_waitToDumpWatchdog.get(), kCFRunLoopCommonModes);
&gt; +    }
&gt; +}

It’s not clear that this method does the right thing when waitUntilDone is false. Fortunately, it’s always passed true. (In particular, if it were ever possible for this to get called with false, wouldn’t it need to invalidate the watchdog timer and dump if the page has already finished loading?). Anyway, this is the same in DRT.

&gt; +static JSValueRef waitUntilDoneCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
&gt; +{
&gt; +    // Has mac &amp; windows implementation
&gt; +    LayoutTestController* controller = static_cast&lt;LayoutTestController*&gt;(JSObjectGetPrivate(thisObject));
&gt; +    controller-&gt;setWaitToDump(true);
&gt; +
&gt; +    return JSValueMakeUndefined(context);
&gt; +}
&gt; +
&gt; +static JSValueRef notifyDoneCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
&gt; +{
&gt; +    LayoutTestController* controller = static_cast&lt;LayoutTestController*&gt;(JSObjectGetPrivate(thisObject));
&gt; +    controller-&gt;notifyDone();
&gt; +    return JSValueMakeUndefined(context);
&gt; +}

I am not sure why one of these deserves a comment and an empty line before the return statement and the other doesn’t.

&gt; +    bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called.

Shouldn’t this member variable be initialized to false in the constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249677</commentid>
    <comment_count>3</comment_count>
      <attachid>61187</attachid>
    <who name="">mitz</who>
    <bug_when>2010-07-11 19:33:07 -0700</bug_when>
    <thetext>Comment on attachment 61187
Patch

r+ based on changes Maciej said he’d make before landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249680</commentid>
    <comment_count>4</comment_count>
      <attachid>61188</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-11 19:39:37 -0700</bug_when>
    <thetext>Created attachment 61188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249681</commentid>
    <comment_count>5</comment_count>
      <attachid>61188</attachid>
    <who name="">mitz</who>
    <bug_when>2010-07-11 19:41:54 -0700</bug_when>
    <thetext>Comment on attachment 61188
Patch


&gt; +
&gt; +2010-07-11  Maciej Stachowiak  &lt;mjs@apple.com&gt;
&gt; +
&gt; +        * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
&gt; +

Stray changelog entry.

&gt; +static const CFTimeInterval waitToDumpWatchdogInterval = 30.0;

Current style is to omit the “.0”.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249685</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-11 20:41:28 -0700</bug_when>
    <thetext>Committed r63061: &lt;http://trac.webkit.org/changeset/63061&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61187</attachid>
            <date>2010-07-11 19:13:09 -0700</date>
            <delta_ts>2010-07-11 19:39:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42049-20100711191308.patch</filename>
            <type>text/plain</type>
            <size>12039</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYzMDU5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMDctMTEgIE1hY2llaiBTdGFjaG93aWFr
ICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnQgd2FpdFVudGlsRG9uZSBhbmQgbm90aWZ5RG9uZSBmb3IgV2Vi
S2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDIwNDkKKworICAgICAgICBXaXRoIHRoaXMgZml4LCBtb3N0IG9mIHRoZSBET00gdGVz
dHMgcGFzcy4KKyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpk
aWRDcmVhdGVQYWdlKTogVHJhY2sgdGhlIG1haW4gcGFnZS4gTm90CisgICAgICAgIGEgZ3JlYXQg
d2F5IHRvIGRvIGl0IGluIHRoZSBmdXR1cmUgY2FzZSB3aGVyZSB3ZSBtYXkgZ2V0IG11bHRpcGxl
CisgICAgICAgIHBhZ2VzIC0gd2UgcmVhbGx5IG5lZWQgYSB3YXkgdG8gc2VuZCBpdCBvdmVyIGZy
b20gdGhlIHVpIHByb2Nlc3MuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cGFn
ZSk6IEEgd2F5IHRvIGdldCB0aGUgbWFpbiBwYWdlLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogVHJh
Y2sgdGhhdCB3ZQorICAgICAgICBhcmUgbG9hZGluZy4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpkdW1wKTogRmFjdG9yIGludG8gYSBtZXRob2Qgc28gdGhpcyBjYW4gYmUKKyAg
ICAgICAgY2FsbGVkIGJ5IHRoZSBsYXlvdXQgdGVzdCBjb250cm9sbGVyLiBBbHNvLCBjYW5jZWwg
YW55IHBlbmRpbmcgd2F0Y2hkb2dzLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IE5vdGUgdGhhdCB3ZSBhcmUgZG9uZSBsb2FkaW5nLgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5oOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6
OmlzTG9hZGluZyk6IEEgd2F5IHRvIHRyYWNrIGlmIHdlIGFyZSBsb2FkaW5nLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6aW52YWxpZGF0ZVdhaXRUb0R1
bXBXYXRjaGRvZyk6IEludmFsaWRhdGUgCisgICAgICAgIHRoZSB3YXRjaGRvZy4KKyAgICAgICAg
KFdUUjo6d2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQpOiBTdGF0aWMgaGVscGVyIGZvciB0aGUg
d2F0Y2hkb2cgdGltZXIuCisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRX
YWl0VG9EdW1wKTogU2V0IHRoZSBmbGFnLgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJv
bGxlcjo6d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCk6IEhhbmRsZSB0aGUgY2FzZQorICAg
ICAgICB3aGVyZSB3YWl0VW50aWxEb25lIHRpbWVzIG91dC4KKyAgICAgICAgKFdUUjo6TGF5b3V0
VGVzdENvbnRyb2xsZXI6Om5vdGlmeURvbmUpOiBEdW1wLCBpZiBsb2FkaW5nIGlzIGRvbmUuCisg
ICAgICAgIChXVFI6OndhaXRVbnRpbERvbmVDYWxsYmFjayk6IEpTIGdsdWUgZm9yIHdhaXRVbnRp
bERvbmUuCisgICAgICAgIChXVFI6Om5vdGlmeURvbmVDYWxsYmFjayk6IEpTIGdsdWUgZm9yIG5v
dGlmeURvbmUuCisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5j
dGlvbnMpOiBBZGQgd2FpdFVudGlsRG9uZSBhbmQgbm90aWZ5RG9uZQorICAgICAgICB0byB0aGUg
bGF5b3V0Q29udHJvbGxlci4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250
cm9sbGVyOjp3YWl0VG9EdW1wKTogSW5saW5lIG1ldGhvZCB0byBnZXQgdGhlIHdhaXQgc3RhdGUu
CisKKzIwMTAtMDctMTEgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwOgorCiAyMDEwLTA3LTA5ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDog
V2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDYzMDI0KQorKysgV2ViS2l0VG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZG9uZSgp
CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UpCiB7Ci0gICAgbV9wYWdlcy5hZGQocGFnZSwgbmV3IEluamVjdGVkQnVuZGxlUGFnZShwYWdl
KSk7CisgICAgLy8gRklYTUU6IHdlIHJlYWxseSBuZWVkIHRoZSBtYWluIHBhZ2UgcmVmIHRvIGJl
IHNlbnQgb3ZlciBmcm9tIHRoZSB1aSBwcm9jZXNzCisgICAgbV9tYWluUGFnZSA9IG5ldyBJbmpl
Y3RlZEJ1bmRsZVBhZ2UocGFnZSk7CisgICAgbV9wYWdlcy5hZGQocGFnZSwgbV9tYWluUGFnZSk7
CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSkKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHJldmlzaW9uIDYzMDI0KQor
KysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRvbmUoKTsKIAogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBsYXlvdXRUZXN0Q29udHJvbGxl
cigpIHsgcmV0dXJuIG1fbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBJbmplY3Rl
ZEJ1bmRsZVBhZ2UqIHBhZ2UoKSB7IHJldHVybiBtX21haW5QYWdlOyB9CiAKICAgICBzdGQ6Om9z
dHJpbmdzdHJlYW0mIG9zKCkgeyByZXR1cm4gbV9vdXRwdXRTdHJlYW07IH0KIApAQCAtNjcsNiAr
NjgsNyBAQCBwcml2YXRlOgogCiAgICAgV0tCdW5kbGVSZWYgbV9idW5kbGU7CiAgICAgSGFzaE1h
cDxXS0J1bmRsZVBhZ2VSZWYsIEluamVjdGVkQnVuZGxlUGFnZSo+IG1fcGFnZXM7CisgICAgSW5q
ZWN0ZWRCdW5kbGVQYWdlKiBtX21haW5QYWdlOwogCiAgICAgUmVmUHRyPExheW91dFRlc3RDb250
cm9sbGVyPiBtX2xheW91dFRlc3RDb250cm9sbGVyOwogCkluZGV4OiBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA2MzAyNCkKKysrIFdlYktpdFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpfZGlk
Q2xlYXJXaW5kb3cKIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKIHsKKyAgICBpZiAoZnJhbWUg
PT0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKG1fcGFnZSkpCisgICAgICAgIG1faXNMb2FkaW5n
ID0gdHJ1ZTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUp
CkBAIC0xMzcsMTQgKzEzOSwxMyBAQCBzdGF0aWMgc3RkOjphdXRvX3B0cjxWZWN0b3I8Y2hhcj4g
PiBXS1N0CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQordm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogewotICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZy
YW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5pbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nKCk7
CiAKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVy
KCktPmR1bXBBc1RleHQoKSkgewogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBkdW1waW5nIHN1
YmZyYW1lcyB3aGVuIGxheW91dFRlc3RDb250cm9sbGVyKCktPmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpIGlzIHRydWUuCi0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpbm5lclRleHQo
QWRvcHRXSywgV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoZnJhbWUpKTsKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGlubmVyVGV4dChBZG9wdFdLLCBXS0J1bmRsZUZyYW1lQ29w
eUlubmVyVGV4dChXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUobV9wYWdlKSkpOwogICAgICAgICBz
dGQ6OmF1dG9fcHRyPFZlY3RvcjxjaGFyPiA+IHV0ZjhJbm5lclRleHQgPSBXS1N0cmluZ1RvVVRG
OChpbm5lclRleHQuZ2V0KCkpOwogICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3Mo
KSA8PCB1dGY4SW5uZXJUZXh0LT5kYXRhKCkgPDwgIlxuIjsKICAgICB9IGVsc2UgewpAQCAtMTU1
LDExICsxNTYsMjYgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZpbmlzaExvYWRGbwog
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5kb25lKCk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkK
K3sKKyAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1faXNMb2FkaW5nID0gZmFsc2U7CisKKyAgICBpZiAoSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPndhaXRUb0R1bXAoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZHVtcCgpOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogewog
ICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgbV9pc0xvYWRpbmcgPSBmYWxzZTsKKwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5kb25lKCk7CiB9CiAKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAko
cmV2aXNpb24gNjMwMjQpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw5
IEBAIHB1YmxpYzoKICAgICB+SW5qZWN0ZWRCdW5kbGVQYWdlKCk7CiAKICAgICBXS0J1bmRsZVBh
Z2VSZWYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIHZvaWQgZHVtcCgpOwor
CisgICAgYm9vbCBpc0xvYWRpbmcoKSB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogCiBwcml2YXRl
OgogICAgIC8vIExvYWRlciBDbGllbnQKQEAgLTYxLDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSwgdWludDMyX3QgbGlu
ZU51bWJlcik7CiAKICAgICBXS0J1bmRsZVBhZ2VSZWYgbV9wYWdlOworICAgIGJvb2wgbV9pc0xv
YWRpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MzAyNCkKKysrIFdlYktpdFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAgKi8KIAogI2luY2x1ZGUgIkxheW91dFRl
c3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVBhZ2UuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWlu
UHRyLmg+CiAKQEAgLTQ0LDYgKzQ2LDQ3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjp+TGF5b3V0
VGVzdENvbnRyb2wKIHsKIH0KIAorc3RhdGljIGNvbnN0IENGVGltZUludGVydmFsIHdhaXRUb0R1
bXBXYXRjaGRvZ0ludGVydmFsID0gMzAuMDsKKworCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nKCkKK3sKKyAgICBpZiAobV93YWl0VG9EdW1w
V2F0Y2hkb2cpIHsKKyAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fd2FpdFRvRHVt
cFdhdGNoZG9nLmdldCgpKTsKKyAgICAgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2cgPSAwOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQoQ0ZSdW5Mb29w
VGltZXJSZWYgdGltZXIsIHZvaWQqIGluZm8pCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQo
KTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2FpdFRvRHVtcChib29sIHdh
aXRVbnRpbERvbmUpCit7CisgICAgbV93YWl0VG9EdW1wID0gd2FpdFVudGlsRG9uZTsKKyAgICBp
ZiAobV93YWl0VG9EdW1wICYmICFtX3dhaXRUb0R1bXBXYXRjaGRvZykgeworICAgICAgICBtX3dh
aXRUb0R1bXBXYXRjaGRvZy5hZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgd2FpdFRvRHVtcFdhdGNoZG9n
SW50ZXJ2YWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQsIE5VTEwpKTsKKyAg
ICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtX3dhaXRUb0R1
bXBXYXRjaGRvZy5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICB9Cit9CisKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKQor
eworICAgIGludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2coKTsKKyAgICBjb25zdCBjaGFyKiBt
ZXNzYWdlID0gIkZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNh
bGxlZFxuIjsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCBtZXNzYWdlIDw8
ICJcbiI7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmRvbmUoKTsKK30KKwordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCit7CisgICAgaWYgKG1fd2FpdFRvRHVt
cCAmJiAhSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+aXNMb2FkaW5nKCkpCisgICAg
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPmR1bXAoKTsKKyAgICBtX3dhaXRU
b0R1bXAgPSBmYWxzZTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcEFzVGV4dENhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTUxLDYgKzk0LDIyIEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGR1bXBBc1RleHRDYWxsYmFjayhKU0MKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHdhaXRVbnRpbERvbmVDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8gSGFzIG1hYyAmIHdp
bmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRXYWl0VG9EdW1wKHRydWUpOworCisg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNW
YWx1ZVJlZiBub3RpZnlEb25lQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5
b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAg
IGNvbnRyb2xsZXItPm5vdGlmeURvbmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Cit9CisKIC8vIE9iamVjdCBGaW5hbGl6YXRpb24KIAogc3RhdGljIHZvaWQg
bGF5b3V0VGVzdENvbnRyb2xsZXJPYmplY3RGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCkBA
IC04OCw2ICsxNDcsOCBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
CiB7CiAgICAgc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAg
ICAgICAgIHsgImR1bXBBc1RleHQiLCBkdW1wQXNUZXh0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAg
ICAgeyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7
ICJ3YWl0VW50aWxEb25lIiwgd2FpdFVudGlsRG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgMCwgMCwgMCB9CiAgICAgfTsKIApJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAkocmV2aXNpb24gNjMwMjQpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiBuYW1l
c3BhY2UgV1RSIHsKQEAgLTQzLDEzICs0NCwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkdW1wQXNU
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQXNUZXh0OyB9CiAgICAgdm9pZCBzZXREdW1wQXNU
ZXh0KGJvb2wgZHVtcEFzVGV4dCkgeyBtX2R1bXBBc1RleHQgPSBkdW1wQXNUZXh0OyB9CiAKKyAg
ICBib29sIHdhaXRUb0R1bXAoKSBjb25zdCB7IHJldHVybiBtX3dhaXRUb0R1bXA7IH0KKyAgICB2
b2lkIHNldFdhaXRUb0R1bXAoYm9vbCB3YWl0VG9EdW1wKTsKKyAgICB2b2lkIHdhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hk
b2coKTsKKyAgICB2b2lkIG5vdGlmeURvbmUoKTsKKwogcHJpdmF0ZToKICAgICBMYXlvdXRUZXN0
Q29udHJvbGxlcihjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCk7CiAKICAgICBib29s
IG1fZHVtcEFzVGV4dDsKKyAgICBib29sIG1fd2FpdFRvRHVtcDsgLy8gVHJ1ZSBpZiB3YWl0VW50
aWxEb25lKCkgaGFzIGJlZW4gY2FsbGVkLCBidXQgbm90aWZ5RG9uZSgpIGhhcyBub3QgeWV0IGJl
ZW4gY2FsbGVkLgogCiAgICAgc3RkOjpzdHJpbmcgbV90ZXN0UGF0aE9yVVJMOwogICAgIAorICAg
IFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV93YWl0VG9EdW1wV2F0Y2hkb2c7CisKICAg
ICBzdGF0aWMgSlNDbGFzc1JlZiBnZXRKU0NsYXNzKCk7CiAgICAgc3RhdGljIEpTU3RhdGljVmFs
dWUqIHN0YXRpY1ZhbHVlcygpOwogICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNG
dW5jdGlvbnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61188</attachid>
            <date>2010-07-11 19:39:37 -0700</date>
            <delta_ts>2010-07-11 19:41:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42049-20100711193935.patch</filename>
            <type>text/plain</type>
            <size>12569</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYzMDU5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMDctMTEgIE1hY2llaiBTdGFjaG93aWFr
ICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnQgd2FpdFVudGlsRG9uZSBhbmQgbm90aWZ5RG9uZSBmb3IgV2Vi
S2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDIwNDkKKworICAgICAgICBXaXRoIHRoaXMgZml4LCBtb3N0IG9mIHRoZSBET00gdGVz
dHMgcGFzcy4KKyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpk
aWRDcmVhdGVQYWdlKTogVHJhY2sgdGhlIG1haW4gcGFnZS4gTm90CisgICAgICAgIGEgZ3JlYXQg
d2F5IHRvIGRvIGl0IGluIHRoZSBmdXR1cmUgY2FzZSB3aGVyZSB3ZSBtYXkgZ2V0IG11bHRpcGxl
CisgICAgICAgIHBhZ2VzIC0gd2UgcmVhbGx5IG5lZWQgYSB3YXkgdG8gc2VuZCBpdCBvdmVyIGZy
b20gdGhlIHVpIHByb2Nlc3MuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cGFn
ZSk6IEEgd2F5IHRvIGdldCB0aGUgbWFpbiBwYWdlLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOiBJbml0aWFsaXplIG1faXNM
b2FkaW5nIHRvIGZhbHNlLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOiBUcmFjayB0aGF0IHdlCisgICAgICAgIGFyZSBs
b2FkaW5nLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXApOiBGYWN0b3Ig
aW50byBhIG1ldGhvZCBzbyB0aGlzIGNhbiBiZQorICAgICAgICBjYWxsZWQgYnkgdGhlIGxheW91
dCB0ZXN0IGNvbnRyb2xsZXIuIEFsc28sIGNhbmNlbCBhbnkgcGVuZGluZyB3YXRjaGRvZ3MuCisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKTog
Tm90ZSB0aGF0IHdlIGFyZSBkb25lIGxvYWRpbmcuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6IERpdHRvLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6aXNMb2FkaW5nKTogQSB3YXkgdG8gdHJh
Y2sgaWYgd2UgYXJlIGxvYWRpbmcuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRl
c3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6IEluaXRpYWxpemUgbV93YWl0VG9E
dW1wCisgICAgICAgIHRvIGZhbHNlLgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxl
cjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZyk6IEludmFsaWRhdGUgCisgICAgICAgIHRo
ZSB3YXRjaGRvZy4KKyAgICAgICAgKFdUUjo6d2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQpOiBT
dGF0aWMgaGVscGVyIGZvciB0aGUgd2F0Y2hkb2cgdGltZXIuCisgICAgICAgIChXVFI6OkxheW91
dFRlc3RDb250cm9sbGVyOjpzZXRXYWl0VG9EdW1wKTogU2V0IHRoZSBmbGFnLgorICAgICAgICAo
V1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCk6
IEhhbmRsZSB0aGUgY2FzZQorICAgICAgICB3aGVyZSB3YWl0VW50aWxEb25lIHRpbWVzIG91dC4K
KyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6Om5vdGlmeURvbmUpOiBEdW1wLCBp
ZiBsb2FkaW5nIGlzIGRvbmUuCisgICAgICAgIChXVFI6OndhaXRVbnRpbERvbmVDYWxsYmFjayk6
IEpTIGdsdWUgZm9yIHdhaXRVbnRpbERvbmUuCisgICAgICAgIChXVFI6Om5vdGlmeURvbmVDYWxs
YmFjayk6IEpTIGdsdWUgZm9yIG5vdGlmeURvbmUuCisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOiBBZGQgd2FpdFVudGlsRG9uZSBhbmQgbm90aWZ5
RG9uZQorICAgICAgICB0byB0aGUgbGF5b3V0Q29udHJvbGxlci4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAg
IChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjp3YWl0VG9EdW1wKTogSW5saW5lIG1ldGhvZCB0
byBnZXQgdGhlIHdhaXQgc3RhdGUuCisKKzIwMTAtMDctMTEgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorCiAyMDEwLTA3LTA5ICBCcmlhbiBXZWluc3Rl
aW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBE
YW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9u
IDYzMDI0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDkgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6ZG9uZSgpCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBh
Z2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgbV9wYWdlcy5hZGQocGFnZSwgbmV3IElu
amVjdGVkQnVuZGxlUGFnZShwYWdlKSk7CisgICAgLy8gRklYTUU6IHdlIHJlYWxseSBuZWVkIHRo
ZSBtYWluIHBhZ2UgcmVmIHRvIGJlIHNlbnQgb3ZlciBmcm9tIHRoZSB1aSBwcm9jZXNzCisgICAg
bV9tYWluUGFnZSA9IG5ldyBJbmplY3RlZEJ1bmRsZVBhZ2UocGFnZSk7CisgICAgbV9wYWdlcy5h
ZGQocGFnZSwgbV9tYWluUGFnZSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OndpbGxEZXN0
cm95UGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgJKHJldmlzaW9uIDYzMDI0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvbmUoKTsKIAogICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBsYXlvdXRUZXN0Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fbGF5b3V0VGVzdENvbnRyb2xsZXIu
Z2V0KCk7IH0KKyAgICBJbmplY3RlZEJ1bmRsZVBhZ2UqIHBhZ2UoKSB7IHJldHVybiBtX21haW5Q
YWdlOyB9CiAKICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0mIG9zKCkgeyByZXR1cm4gbV9vdXRwdXRT
dHJlYW07IH0KIApAQCAtNjcsNiArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgV0tCdW5kbGVSZWYg
bV9idW5kbGU7CiAgICAgSGFzaE1hcDxXS0J1bmRsZVBhZ2VSZWYsIEluamVjdGVkQnVuZGxlUGFn
ZSo+IG1fcGFnZXM7CisgICAgSW5qZWN0ZWRCdW5kbGVQYWdlKiBtX21haW5QYWdlOwogCiAgICAg
UmVmUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBtX2xheW91dFRlc3RDb250cm9sbGVyOwogCklu
ZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA2MzAyNCkK
KysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2Ug
V1RSIHsKIAogSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faXNMb2FkaW5nKGZhbHNl
KQogewogICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQgPSB7CiAgICAg
ICAgIDAsCkBAIC0xMTAsNiArMTExLDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6Ol9kaWRD
bGVhcldpbmRvdwogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogeworICAgIGlmIChmcmFtZSA9
PSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUobV9wYWdlKSkKKyAgICAgICAgbV9pc0xvYWRpbmcg
PSB0cnVlOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkK
QEAgLTEzNywxNCArMTQwLDEzIEBAIHN0YXRpYyBzdGQ6OmF1dG9fcHRyPFZlY3RvcjxjaGFyPiA+
IFdLU3QKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZHVtcCgpCiB7Ci0gICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJh
bWUoZnJhbWUpKQotICAgICAgICByZXR1cm47CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LmxheW91dFRlc3RDb250cm9sbGVyKCktPmludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2coKTsK
IAogICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIo
KS0+ZHVtcEFzVGV4dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGR1bXBpbmcgc3Vi
ZnJhbWVzIHdoZW4gbGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+ZHVtcENoaWxkRnJhbWVzQXNUZXh0
KCkgaXMgdHJ1ZS4KLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGlubmVyVGV4dChB
ZG9wdFdLLCBXS0J1bmRsZUZyYW1lQ29weUlubmVyVGV4dChmcmFtZSkpOworICAgICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gaW5uZXJUZXh0KEFkb3B0V0ssIFdLQnVuZGxlRnJhbWVDb3B5
SW5uZXJUZXh0KFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShtX3BhZ2UpKSk7CiAgICAgICAgIHN0
ZDo6YXV0b19wdHI8VmVjdG9yPGNoYXI+ID4gdXRmOElubmVyVGV4dCA9IFdLU3RyaW5nVG9VVEY4
KGlubmVyVGV4dC5nZXQoKSk7CiAgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygp
IDw8IHV0ZjhJbm5lclRleHQtPmRhdGEoKSA8PCAiXG4iOwogICAgIH0gZWxzZSB7CkBAIC0xNTUs
MTEgKzE1NywyNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoTG9hZEZvCiAg
ICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmRvbmUoKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQor
eworICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9pc0xvYWRpbmcgPSBmYWxzZTsKKworICAgIGlmIChJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+d2FpdFRvRHVtcCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBkdW1wKCk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiB7CiAg
ICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBtX2lzTG9hZGluZyA9IGZhbHNlOworCiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLmRvbmUoKTsKIH0KIApJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCShy
ZXZpc2lvbiA2MzAyNCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDkg
QEAgcHVibGljOgogICAgIH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKIAogICAgIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisgICAgdm9pZCBkdW1wKCk7CisK
KyAgICBib29sIGlzTG9hZGluZygpIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAKIHByaXZhdGU6
CiAgICAgLy8gTG9hZGVyIENsaWVudApAQCAtNjEsNiArNjQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZShXS1N0cmluZ1JlZiBtZXNzYWdlLCB1aW50MzJfdCBsaW5l
TnVtYmVyKTsKIAogICAgIFdLQnVuZGxlUGFnZVJlZiBtX3BhZ2U7CisgICAgYm9vbCBtX2lzTG9h
ZGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDYzMDI0KQorKysgV2ViS2l0VG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAKICAqLwogCiAjaW5jbHVkZSAiTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUGFnZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KIApAQCAtMzYsNiArMzgsNyBAQCBQYXNzUmVmUHRyPExheW91dFRlc3RDb250cm9sbGVy
PiBMYXlvdXRUCiAKIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihj
b25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCkKICAgICA6IG1fZHVtcEFzVGV4dChmYWxz
ZSkKKyAgICAsIG1fd2FpdFRvRHVtcChmYWxzZSkKICAgICAsIG1fdGVzdFBhdGhPclVSTCh0ZXN0
UGF0aE9yVVJMKQogewogfQpAQCAtNDQsNiArNDcsNDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6
On5MYXlvdXRUZXN0Q29udHJvbAogewogfQogCitzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwg
d2FpdFRvRHVtcFdhdGNoZG9nSW50ZXJ2YWwgPSAzMC4wOworCisKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2coKQoreworICAgIGlmIChtX3dh
aXRUb0R1bXBXYXRjaGRvZykgeworICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV93
YWl0VG9EdW1wV2F0Y2hkb2cuZ2V0KCkpOworICAgICAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZyA9
IDA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3YWl0VW50aWxEb25lV2F0Y2hkb2dGaXJlZChD
RlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCogaW5mbykKK3sKKyAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+d2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXJGaXJlZCgpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXYWl0VG9EdW1w
KCkKK3sKKyAgICBtX3dhaXRUb0R1bXAgPSB0cnVlOworICAgIGlmICghbV93YWl0VG9EdW1wV2F0
Y2hkb2cpIHsKKyAgICAgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2cuYWRvcHRDRihDRlJ1bkxvb3BU
aW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQo
KSArIHdhaXRUb0R1bXBXYXRjaGRvZ0ludGVydmFsLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIHdhaXRVbnRpbERvbmVXYXRj
aGRvZ0ZpcmVkLCBOVUxMKSk7CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdl
dEN1cnJlbnQoKSwgbV93YWl0VG9EdW1wV2F0Y2hkb2cuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7CisgICAgfQorfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0VG9EdW1w
V2F0Y2hkb2dUaW1lckZpcmVkKCkKK3sKKyAgICBpbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9n
KCk7CisgICAgY29uc3QgY2hhciogbWVzc2FnZSA9ICJGQUlMOiBUaW1lZCBvdXQgd2FpdGluZyBm
b3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWRcbiI7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLm9zKCkgPDwgbWVzc2FnZSA8PCAiXG4iOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5kb25lKCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om5vdGlmeURvbmUoKQor
eworICAgIGlmIChtX3dhaXRUb0R1bXAgJiYgIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
KCktPmlzTG9hZGluZygpKQorICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgp
LT5kdW1wKCk7CisgICAgbV93YWl0VG9EdW1wID0gZmFsc2U7Cit9CisKIHN0YXRpYyBKU1ZhbHVl
UmVmIGR1bXBBc1RleHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC01MSw2
ICs5NSwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wQXNUZXh0Q2FsbGJhY2soSlNDCiAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1
ZVJlZiB3YWl0VW50aWxEb25lQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5
b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAg
IGNvbnRyb2xsZXItPnNldFdhaXRUb0R1bXAoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIG5vdGlmeURvbmVDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+bm90aWZ5RG9uZSgp
OworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogLy8gT2Jq
ZWN0IEZpbmFsaXphdGlvbgogCiBzdGF0aWMgdm9pZCBsYXlvdXRUZXN0Q29udHJvbGxlck9iamVj
dEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKQEAgLTg4LDYgKzE0Niw4IEBAIEpTU3RhdGlj
RnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKIHsKICAgICBzdGF0aWMgSlNTdGF0aWNG
dW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKICAgICAgICAgeyAiZHVtcEFzVGV4dCIsIGR1
bXBBc1RleHRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJub3RpZnlEb25lIiwgbm90aWZ5
RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgIndhaXRVbnRpbERvbmUiLCB3YWl0VW50
aWxEb25lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwogCklu
ZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA2MzAyNCkK
KysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNDMsMTMgKzQ0
LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGR1bXBBc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2R1
bXBBc1RleHQ7IH0KICAgICB2b2lkIHNldER1bXBBc1RleHQoYm9vbCBkdW1wQXNUZXh0KSB7IG1f
ZHVtcEFzVGV4dCA9IGR1bXBBc1RleHQ7IH0KIAorICAgIGJvb2wgd2FpdFRvRHVtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2FpdFRvRHVtcDsgfQorICAgIHZvaWQgc2V0V2FpdFRvRHVtcCgpOworICAg
IHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOworICAgIHZvaWQgaW52YWxpZGF0
ZVdhaXRUb0R1bXBXYXRjaGRvZygpOworICAgIHZvaWQgbm90aWZ5RG9uZSgpOworCiBwcml2YXRl
OgogICAgIExheW91dFRlc3RDb250cm9sbGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9y
VVJMKTsKIAogICAgIGJvb2wgbV9kdW1wQXNUZXh0OworICAgIGJvb2wgbV93YWl0VG9EdW1wOyAv
LyBUcnVlIGlmIHdhaXRVbnRpbERvbmUoKSBoYXMgYmVlbiBjYWxsZWQsIGJ1dCBub3RpZnlEb25l
KCkgaGFzIG5vdCB5ZXQgYmVlbiBjYWxsZWQuCiAKICAgICBzdGQ6OnN0cmluZyBtX3Rlc3RQYXRo
T3JVUkw7CiAgICAgCisgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBtX3dhaXRUb0R1
bXBXYXRjaGRvZzsKKwogICAgIHN0YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKICAgICBz
dGF0aWMgSlNTdGF0aWNWYWx1ZSogc3RhdGljVmFsdWVzKCk7CiAgICAgc3RhdGljIEpTU3RhdGlj
RnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9ucygpOwo=
</data>
<flag name="review"
          id="49171"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>