<?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>54898</bug_id>
          
          <creation_ts>2011-02-21 11:55:36 -0800</creation_ts>
          <short_desc>InjectedBundleNodeHandle dies too early in WKBundleHitTestResultGetNodeHandle</short_desc>
          <delta_ts>2011-02-28 20:45:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Alice Liu">alice.barraclough</reporter>
          <assigned_to name="Alice Liu">alice.barraclough</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>354716</commentid>
    <comment_count>0</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2011-02-21 11:55:36 -0800</bug_when>
    <thetext>When asking a WKBundleHitTestResultRef for its nodeHandle, the InjectedBundleNodeHandle dies too early in WKBundleHitTestResultGetNodeHandle.

 	WebKit.dll!WebKit::InjectedBundleNodeHandle::~InjectedBundleNodeHandle()  Line 90	C++
 	WebKit.dll!WebKit::InjectedBundleNodeHandle::`scalar deleting destructor&apos;()  + 0x16 bytes	C++
 	WebKit.dll!WTF::RefCounted&lt;WebKit::APIObject&gt;::deref()  Line 141 + 0x3a bytes	C++
 	WebKit.dll!WTF::derefIfNotNull&lt;WebKit::InjectedBundleNodeHandle&gt;(WebKit::InjectedBundleNodeHandle * ptr=0x03194368)  Line 60	C++
 	WebKit.dll!WTF::RefPtr&lt;WebKit::InjectedBundleNodeHandle&gt;::~RefPtr&lt;WebKit::InjectedBundleNodeHandle&gt;()  Line 58 + 0x19 bytes	C++
&gt;	WebKit.dll!WKBundleHitTestResultGetNodeHandle(const OpaqueWKBundleHitTestResult * hitTestResultRef=0x0323a848)  Line 44 + 0x1c bytes	C++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354717</commentid>
    <comment_count>1</comment_count>
      <attachid>83200</attachid>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2011-02-21 11:58:49 -0800</bug_when>
    <thetext>Created attachment 83200
patch

I don&apos;t know if this is right... the other functions that use release().leakRef() or release.releaseRef() that return WKBundleNodeHandleRef seem to have &quot;copy&quot; in their function names, but not WKBundleHitTestResultGetNodeHandle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354721</commentid>
    <comment_count>2</comment_count>
      <attachid>83200</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-21 12:05:36 -0800</bug_when>
    <thetext>Comment on attachment 83200
patch

My guess is that you&apos;re fixing a crash. It would be good to have &quot;crash&quot; somewhere in the bug title (which would also get it into your ChangeLog).

As you suspected, this change makes WKBundleHitTestResultGetNodeHandle follow the Create or Copy pattern, so its name will have to be changed.

The actual code change seems fine. Is it possible to make a test for this? I&apos;d imagine it is, by using TestWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355658</commentid>
    <comment_count>3</comment_count>
      <attachid>83402</attachid>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2011-02-22 15:40:55 -0800</bug_when>
    <thetext>Created attachment 83402
API test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356264</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-23 11:47:09 -0800</bug_when>
    <thetext>Attachment 83402 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/In...&quot; exit_code: 1

Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp:47:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 8 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>356376</commentid>
    <comment_count>5</comment_count>
      <attachid>83402</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-23 13:41:19 -0800</bug_when>
    <thetext>Comment on attachment 83402
API test

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

Awesome that you got a test working!

&gt; Tools/TestWebKitAPI/PlatformWebView.h:65
&gt; +    void simulateRightClick(CGPoint pt);

No need for &quot;pt&quot; here. (If you did need an argument name, &quot;point&quot; would be better.) Maybe it should be a const CGPoint&amp;?

It&apos;s slightly unfortunate to use CG types in cross-platform code, as this will make it harder for other ports to build TestWebKitAPI. Maybe two unsigneds would be better.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp:70
&gt; +    WKContextInjectedBundleClient injectedBundleClient;
&gt; +    memset(&amp;injectedBundleClient, 0, sizeof(injectedBundleClient));
&gt; +    injectedBundleClient.version = 0;
&gt; +    injectedBundleClient.clientInfo = 0;
&gt; +    injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
&gt; +    WKContextSetInjectedBundleClient(context.get(), &amp;injectedBundleClient);

A separate setInjectedBundleClient function would make the main test logic easier to follow.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp:82
&gt; +    TEST_ASSERT(done);

No need for this assertion, as it will never be reached if done is still false.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp:49
&gt; +        WKRetainPtr&lt;WKStringRef&gt; doneMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;HitTestResultNodeHandleTestDoneMessageName&quot;));
&gt; +        WKRetainPtr&lt;WKStringRef&gt; doneMessageBody(AdoptWK, WKStringCreateWithUTF8CString(&quot;HitTestResultNodeHandleTestDoneMessageBody&quot;));

You can use the Util::toWK function here instead.

&gt; Tools/TestWebKitAPI/win/PlatformWebViewWin.cpp:109
&gt; +    ::SendMessage(window, WM_RBUTTONDOWN, 0, MAKELPARAM(pt.x, pt.y));
&gt; +    ::SendMessage(window, WM_RBUTTONUP, 0, MAKELPARAM(pt.x, pt.y));

Please use ::SendMessageW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356427</commentid>
    <comment_count>6</comment_count>
      <attachid>83402</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-23 14:30:14 -0800</bug_when>
    <thetext>Comment on attachment 83402
API test

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp:44
&gt; +        WKBundleNodeHandleRef nodeHandle = WKBundleHitTestResultGetNodeHandle(hitTestResult);

Presumably you&apos;re leaking this nodeHandle, now that you&apos;ve changed the API to a Copy-style API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359545</commentid>
    <comment_count>7</comment_count>
      <attachid>84163</attachid>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2011-02-28 17:43:16 -0800</bug_when>
    <thetext>Created attachment 84163
all-in-one patch

Made a tweak to the test.  changed to use a WKRetainPtr so that the object that is returned from the (fixed) API call is ref&apos;ed, so that it will crash in builds where the API call is not fixed.  

also renamed function and other suggestions adam made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359546</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-28 17:45:04 -0800</bug_when>
    <thetext>Attachment 84163 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp:47:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 11 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>359552</commentid>
    <comment_count>9</comment_count>
      <attachid>84164</attachid>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2011-02-28 17:49:03 -0800</bug_when>
    <thetext>Created attachment 84164
same as above, but fixed whitespace style nit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359612</commentid>
    <comment_count>10</comment_count>
      <attachid>84164</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-02-28 19:41:51 -0800</bug_when>
    <thetext>Comment on attachment 84164
same as above, but fixed whitespace style nit

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359642</commentid>
    <comment_count>11</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2011-02-28 20:45:22 -0800</bug_when>
    <thetext>committed http://trac.webkit.org/changeset/79966</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83200</attachid>
            <date>2011-02-21 11:58:49 -0800</date>
            <delta_ts>2011-02-28 17:43:16 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch-54898.txt</filename>
            <type>text/plain</type>
            <size>1528</size>
            <attacher name="Alice Liu">alice.barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MjQyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDItMjEgIEFsaWNlIExp
dSAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU0ODk4CisgICAgICAgIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSBkaWVzIHRvbyBlYXJseSBp
biBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXROb2RlSGFuZGxlCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAg
ICAgIChXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXROb2RlSGFuZGxlKToKKyAgICAgICAgSW5zdGVh
ZCBvZiAuZ2V0KCksIGNhbGwgLnJlbGVhc2UubGVha1JlZigpIGxpa2Ugb3RoZXIgZnVuY3Rpb25z
IHRoYXQgcmV0dXJuIFdLQnVuZGxlTm9kZUhhbmRsZVJlZi4KKwogMjAxMS0wMi0yMSAgR2F2aW4g
QmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVz
dFJlc3VsdC5jcHAJKHJldmlzaW9uIDc4NjcxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdl
dFR5cGVJRCgKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRO
b2RlSGFuZGxlKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0UmVmKQogewog
ICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSB0b0ltcGwo
aGl0VGVzdFJlc3VsdFJlZiktPm5vZGVIYW5kbGUoKTsKLSAgICByZXR1cm4gdG9BUEkobm9kZUhh
bmRsZS5nZXQoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0RnJh
bWUoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYpCg==
</data>
<flag name="review"
          id="74966"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83402</attachid>
            <date>2011-02-22 15:40:55 -0800</date>
            <delta_ts>2011-02-28 17:43:16 -0800</delta_ts>
            <desc>API test</desc>
            <filename>patch-54898-test.txt</filename>
            <type>text/plain</type>
            <size>16903</size>
            <attacher name="Alice Liu">alice.barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc5MzY1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTEtMDItMjIgIEFsaWNlIExpdSAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0ODk4CisgICAgICAgIElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZSBkaWVzIHRvbyBlYXJseSBpbiBXS0J1bmRsZUhpdFRlc3RS
ZXN1bHRHZXROb2RlSGFuZGxlCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0luamVjdGVkQnVu
ZGxlQ29udHJvbGxlci5oOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVD
b250cm9sbGVyOjpidW5kbGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJW
aWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hp
dFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
c2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSGl0VGVzdFJlc3VsdE5vZGVIYW5k
bGVfQnVuZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIaXRUZXN0UmVz
dWx0Tm9kZUhhbmRsZVRlc3Q6OkhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3Q6OmdldENvbnRleHRN
ZW51RnJvbURlZmF1bHRNZW51KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhpdFRlc3RSZXN1
bHROb2RlSGFuZGxlVGVzdDo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
bGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlUmlnaHRDbGljayk6CisKIDIwMTEtMDItMTggIE1paGFp
IFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
T2phbiBWYWZhaS4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXIuaAkocmV2aXNpb24gNzkzNjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0lu
amVjdGVkQnVuZGxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEluamVjdGVkQnVuZGxlVGVzdCogKCpDcmVhdGVJbmplY3Rl
ZEJ1bmRsZVRlc3RGdW5jdGlvbikoY29uc3Qgc3RkOjpzdHJpbmcmKTsKICAgICB2b2lkIHJlZ2lz
dGVyQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcmLCBD
cmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbik7CiAKKyAgICBXS0J1bmRsZVJlZiBidW5k
bGUoKSBjb25zdCB7IHJldHVybiBtX2J1bmRsZTsgfQorICAgIAogcHJpdmF0ZToKICAgICBJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXIoKTsKICAgICB+SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKCk7
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgJKHJldmlzaW9uIDc5MzY0
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQbGF0Zm9ybVdlYlZpZXdfaAogCiAjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4K
IAogI2lmZGVmIF9fQVBQTEVfXwogI2lmZGVmIF9fT0JKQ19fCkBAIC02MSw2ICs2Miw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2ltdWxhdGVTcGFjZWJhcktleVByZXNzKCk7CiAgICAgdm9pZCBz
aW11bGF0ZUFsdEtleVByZXNzKCk7CisgICAgdm9pZCBzaW11bGF0ZVJpZ2h0Q2xpY2soQ0dQb2lu
dCBwdCk7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBzZXRQYXJlbnRXaW5kb3dNZXNz
YWdlT2JzZXJ2ZXIoV2luZG93TWVzc2FnZU9ic2VydmVyKiBvYnNlcnZlcikgeyBtX3BhcmVudFdp
bmRvd01lc3NhZ2VPYnNlcnZlciA9IG9ic2VydmVyOyB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNzkzNjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMs
OCBAQAogCQkxQURCRUZBRTEzMEM2ODlDMDBENjFEMTkgLyogRm9yY2VSZXBhaW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBREJFRkFEMTMwQzY4
OUMwMEQ2MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3BwICovOyB9OwogCQkxQURCRUZFMzEzMEM2QUEx
MDBENjFEMTkgLyogc2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFEQkVGQkMxMzBD
NkEwMTAwRDYxRDE5IC8qIHNpbXBsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sICovOyB9
OwogCQkzMzNCOUNFMjEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0I5Q0Ux
MTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwICovOyB9OworCQk0
QkZERkZBNzEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRG
RkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3Bw
ICovOyB9OworCQk0QkZERkZBOTEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVI
YW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEJGREZGQTgxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCAq
LzsgfTsKIAkJQkMxMzE4ODUxMTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMzE4
ODQxMTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tICovOyB9OwogCQlC
QzEzMUE5QjExNzEzMTY5MDBCNjk3MjcgLyogbWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTMxQTlBMTE3MTMxNjkwMEI2OTcyNyAvKiBtYWlu
Lm1tICovOyB9OwogCQlCQzEzMUFBOTExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTMx
QUE4MTE3MTMxRkMwMEI2OTcyNyAvKiBUZXN0c0NvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtOTgs
NiArMTAwLDggQEAKIAkJMUFEQkVGQUQxMzBDNjg5QzAwRDYxRDE5IC8qIEZvcmNlUmVwYWludC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JjZVJlcGFpbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQURCRUZCQzEzMEM2QTAxMDBENjFEMTkg
Lyogc2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAic2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVu
dEVtcHR5VXNlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0VGVzdFJlc3Vs
dE5vZGVIYW5kbGVfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEJG
REZGQTgxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RSZXN1bHROb2RlSGFuZGxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOERENzZGQTEwNDg2QUE3NjAwRDk2
QjVFIC8qIFRlc3RXZWJLaXRBUEkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IFRlc3RXZWJLaXRBUEk7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCUJDMTMxODgzMTE3MTE0QTgwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxpdGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVV0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzEzMTg4NDExNzExNEI2MDBCNjk3MjcgLyog
UGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1Nyw2ICsyNjEsOCBAQAogCQkJCTFBREJFRkFEMTMwQzY4OUMwMEQ2MUQxOSAvKiBG
b3JjZVJlcGFpbnQuY3BwICovLAogCQkJCUJDQkQzNzBGMTI1QUEyRUIwMEQyQzI5RiAvKiBGcmFt
ZU1JTUVUeXBlSFRNTC5jcHAgKi8sCiAJCQkJQkNCRDM3NjAxMjVBQkNGRTAwRDJDMjlGIC8qIEZy
YW1lTUlNRVR5cGVQTkcuY3BwICovLAorCQkJCTRCRkRGRkE4MTMxNDc3NzcwMDYxRjI0QiAvKiBI
aXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi8sCisJCQkJNEJGREZGQTYxMzE0Nzc2QzAwNjFG
MjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi8sCiAJCQkJQkM1NzVB
QUMxMjZFODNCOTAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlQmFzaWMuY3BwICovLAogCQkJCUJD
NTc1QUFGMTI2RTgzQzgwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2ljX0J1bmRsZS5jcHAg
Ki8sCiAJCQkJQkM5MDk3NzkxMjU1NzFBQjAwMDgzNzU2IC8qIFBhZ2VMb2FkQmFzaWMuY3BwICov
LApAQCAtNDE1LDYgKzQyMSw3IEBACiAJCQkJQzBBREJFN0MxMkZDQTREMDAwRDJDMTI5IC8qIEph
dmFTY3JpcHRUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwQURCRTgzMTJGQ0E2QUEwMEQy
QzEyOSAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBREJFRkFFMTMwQzY4OUMwMEQ2MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNEJGREZGQTkxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RS
ZXN1bHROb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDI4LDYgKzQzNSw3IEBACiAJ
CQkJQkM1NzVCRDkxMjZGNThFMjAwNkYwRjEyIC8qIFBsYXRmb3JtVXRpbGl0aWVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDNTc1QkUwMTI2RjU5MEQwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxp
dGllc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQjY4MDQyMTI2RkJGRjEwMDY0MkE2MSAv
KiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTRCRkRGRkE3MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhh
bmRsZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9IaXRUZXN0UmVzdWx0Tm9kZUhhbmRs
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
SGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlRlc3QuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSA8V2ViS2l0
Mi9XZWJLaXQyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRvbmU7CitzdGF0aWMgYm9vbCBtZXNz
YWdlUmVjZWl2ZWQ7CitzdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOworCitzdGF0aWMgdm9pZCBk
aWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNv
bnN0IHZvaWQqKQoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBtZXNzYWdlUmVjZWl2ZWQgPSB0cnVlOworICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCJIaXRUZXN0UmVzdWx0
Tm9kZUhhbmRsZVRlc3REb25lTWVzc2FnZU5hbWUiKSkKKyAgICAgICAgZG9uZSA9IHRydWU7Cit9
CisKK3N0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7Cisg
ICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNs
aWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworICAgIGxvYWRlckNsaWVudC52ZXJzaW9u
ID0gMDsKKyAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNo
TG9hZEZvckZyYW1lOworCisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9h
ZGVyQ2xpZW50KTsKK30KKworVEVTVChXZWJLaXQyLCBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZSkK
K3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6
Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSGl0VGVzdFJlc3VsdE5vZGVIYW5k
bGVUZXN0IikpOworCisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgaW5qZWN0ZWRC
dW5kbGVDbGllbnQ7CisgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9m
KGluamVjdGVkQnVuZGxlQ2xpZW50KSk7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQudmVyc2lv
biA9IDA7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuY2xpZW50SW5mbyA9IDA7CisgICAgaW5q
ZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBXS0NvbnRleHRTZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQpOwor
CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFn
ZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZp
ZXcucGFnZSgpLCBVdGlsOjphZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1w
bGUiLCAiaHRtbCIpKS5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAg
ICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CisKKyAgICB3ZWJWaWV3LnNpbXVsYXRlUmlnaHRDbGlj
ayhDR1BvaW50TWFrZSgxMCwgMTApKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgVEVT
VF9BU1NFUlQoZG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9IaXRUZXN0UmVzdWx0Tm9kZUhhbmRs
ZV9CdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9IaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRlc3RSZXN1bHROb2RlSGFuZGxl
X0J1bmRsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVD
b250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tS
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitjbGFzcyBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3QgOiBwdWJs
aWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBIaXRUZXN0UmVzdWx0Tm9kZUhh
bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSW5qZWN0
ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lk
IGdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1
bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCwgV0tBcnJheVJlZiBkZWZhdWx0TWVu
dSwgV0tBcnJheVJlZiogbmV3TWVudSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKKyAgICB7CisgICAgICAgIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFu
ZGxlID0gV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0Tm9kZUhhbmRsZShoaXRUZXN0UmVzdWx0KTsK
KyAgICAgICAgaWYgKCFub2RlSGFuZGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRvbmVNZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVU
ZXN0RG9uZU1lc3NhZ2VOYW1lIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
ZG9uZU1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJI
aXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3REb25lTWVzc2FnZUJvZHkiKSk7CisgICAgICAgIFdL
QnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5k
bGUoKSwgZG9uZU1lc3NhZ2VOYW1lLmdldCgpLCBkb25lTWVzc2FnZUJvZHkuZ2V0KCkpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tCdW5kbGVQYWdlUmVmIHBhZ2UpCisgICAgeworICAgICAgICBXS0J1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudCBjb250ZXh0TWVudUNsaWVudDsKKyAgICAgICAgbWVtc2V0KCZjb250ZXh0TWVu
dUNsaWVudCwgMCwgc2l6ZW9mKGNvbnRleHRNZW51Q2xpZW50KSk7CisgICAgICAgIGNvbnRleHRN
ZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51ID0gZ2V0Q29udGV4dE1lbnVG
cm9tRGVmYXVsdE1lbnU7CisgICAgCisgICAgICAgIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51
Q2xpZW50KHBhZ2UsICZjb250ZXh0TWVudUNsaWVudCk7CisgICAgfQorfTsKKworc3RhdGljIElu
amVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8SGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0PiBy
ZWdpc3RyYXIoIkhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdCIpOworCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdl
YlZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZv
cm1XZWJWaWV3TWFjLm1tCShyZXZpc2lvbiA3OTM2NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTQsNCArOTQsMzMg
QEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlU3BhY2ViYXJLZQogICAgIFttX3ZpZXcg
a2V5VXA6ZXZlbnRdOwogfQogCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVSaWdodENs
aWNrKENHUG9pbnQgcHQpCit7CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2
ZW50V2l0aFR5cGU6TlNSaWdodE1vdXNlRG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KHB0LngsIHB0LnkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6MAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3dpbmRv
dyB3aW5kb3dOdW1iZXJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50TnVtYmVyOjAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpY2tDb3VudDowCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJlc3N1cmU6MF07CisKKworICAgIFttX3ZpZXcgcmlnaHRNb3Vz
ZURvd246ZXZlbnRdOworCisgICAgZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6
TlNSaWdodE1vdXNlVXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpO
U01ha2VQb2ludChwdC54LCBwdC55KQorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll
ckZsYWdzOjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJy
ZW50RXZlbnRUaW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpb
bV93aW5kb3cgd2luZG93TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBldmVudE51bWJlcjowCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaWNrQ291bnQ6MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNzdXJlOjBd
OworCisgICAgW21fdmlldyByaWdodE1vdXNlVXA6ZXZlbnRdOworCit9CisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxh
dGZvcm1XZWJWaWV3V2luLmNwcAkocmV2aXNpb24gNzkzNjQpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiAr
MTAxLDE0IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZUFsdEtleVByZXMKICAgICA6
OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX1NZU0tFWVVQLCBWS19NRU5VLCAoMSA8PCByZXBlYXRD
b3VudEJpdE9mZnNldCkgfCAoMzggPDwgc2NhbkNvZGVCaXRPZmZzZXQpIHwgKDEgPDwgcHJldmlv
dXNTdGF0ZUJpdE9mZnNldCkgfCAoMSA8PCB0cmFuc2l0aW9uU3RhdGVCaXRPZmZzZXQpKTsKIH0K
IAordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlUmlnaHRDbGljayhDR1BvaW50IHB0KQor
eworICAgIEhXTkQgd2luZG93ID0gV0tWaWV3R2V0V2luZG93KG1fdmlldyk7CisKKyAgICA6OlNl
bmRNZXNzYWdlKHdpbmRvdywgV01fUkJVVFRPTkRPV04sIDAsIE1BS0VMUEFSQU0ocHQueCwgcHQu
eSkpOworICAgIDo6U2VuZE1lc3NhZ2Uod2luZG93LCBXTV9SQlVUVE9OVVAsIDAsIE1BS0VMUEFS
QU0ocHQueCwgcHQueSkpOworfQorCiBMUkVTVUxUIFBsYXRmb3JtV2ViVmlldzo6d25kUHJvYyhI
V05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsK
ICAgICBQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXc7Cg==
</data>
<flag name="review"
          id="75346"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84163</attachid>
            <date>2011-02-28 17:43:16 -0800</date>
            <delta_ts>2011-02-28 17:49:03 -0800</delta_ts>
            <desc>all-in-one patch</desc>
            <filename>patchbug54898.txt</filename>
            <type>text/plain</type>
            <size>19554</size>
            <attacher name="Alice Liu">alice.barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5OTQ5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDItMjggIEFsaWNlIExp
dSAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU0ODk4CisgICAgICAgIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSBkaWVzIHRvbyBlYXJseSBp
biBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXROb2RlSGFuZGxlCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAg
ICAgIChXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5Tm9kZUhhbmRsZSk6IAorICAgICAgICBJbnN0
ZWFkIG9mIC5nZXQoKSwgY2FsbCAucmVsZWFzZS5sZWFrUmVmKCkgbGlrZSBvdGhlciBmdW5jdGlv
bnMgdGhhdCByZXR1cm4gV0tCdW5kbGVOb2RlSGFuZGxlUmVmLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAg
IFJlbmFtZWQgZnJvbSAiZ2V0IiB0byAiY29weSIsIGJlY2F1c2UgaXQgbGVha3NSZWYuCisKIDIw
MTEtMDItMjggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9u
IDc5ODk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgs
MTAgQEAgV0tUeXBlSUQgV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0VHlwZUlEKAogICAgIHJldHVy
biB0b0FQSShJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OkFQSVR5cGUpOwogfQogCi1XS0J1
bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0Tm9kZUhhbmRsZShXS0J1
bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKK1dLQnVuZGxlTm9kZUhhbmRs
ZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5Tm9kZUhhbmRsZShXS0J1bmRsZUhpdFRlc3RS
ZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPiBub2RlSGFuZGxlID0gdG9JbXBsKGhpdFRlc3RSZXN1bHRSZWYpLT5ub2RlSGFu
ZGxlKCk7Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUuZ2V0KCkpOworICAgIHJldHVybiB0
b0FQSShub2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZUZyYW1l
UmVmIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldEZyYW1lKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJl
ZiBoaXRUZXN0UmVzdWx0UmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0
VGVzdFJlc3VsdC5oCShyZXZpc2lvbiA3OTg5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJ
RCBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXROb2RlSGFuZGxlKFdLQnVuZGxl
SGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0KTsKK1dLX0VYUE9SVCBXS0J1bmRsZU5vZGVI
YW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUoV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQpOwogCiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJl
ZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRGcmFtZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYg
aGl0VGVzdFJlc3VsdCk7CiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUhpdFRl
c3RSZXN1bHRHZXRUYXJnZXRGcmFtZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJl
c3VsdCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3OTk0OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDExLTAyLTI4ICBBbGljZSBMaXUgIDxhbGljZS5saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDg5OAorICAg
ICAgICBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUgZGllcyB0b28gZWFybHkgaW4gV0tCdW5kbGVI
aXRUZXN0UmVzdWx0R2V0Tm9kZUhhbmRsZQorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Jbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVk
QnVuZGxlQ29udHJvbGxlcjo6YnVuZGxlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRm
b3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9IaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRlc3RSZXN1bHRO
b2RlSGFuZGxlX0J1bmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0OjpIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6SGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0OjpnZXRD
b250ZXh0TWVudUZyb21EZWZhdWx0TWVudSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIaXRU
ZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3Q6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVSaWdodENsaWNrKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2spOgorCiAyMDExLTAyLTI4
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFydCBydW5uaW5n
IEluamVjdGVkQnVuZGxlIEFQSSB0ZXN0cyBvbiBXaW5kb3dzCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgJKHJldmlzaW9uIDc5OTQ4KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbmplY3RlZEJ1
bmRsZVRlc3QqICgqQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24pKGNvbnN0IHN0ZDo6
c3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0
aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiwgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24p
OwogCisgICAgV0tCdW5kbGVSZWYgYnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9idW5kbGU7IH0K
KyAgICAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKCk7CiAgICAgfklu
amVjdGVkQnVuZGxlQ29udHJvbGxlcigpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVdlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
V2ViVmlldy5oCShyZXZpc2lvbiA3OTk0OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGxh
dGZvcm1XZWJWaWV3X2gKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPENv
cmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAKICNpZmRlZiBfX0FQUExFX18KICNpZmRlZiBfX09C
SkNfXwpAQCAtNjEsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNpbXVsYXRlU3BhY2Vi
YXJLZXlQcmVzcygpOwogICAgIHZvaWQgc2ltdWxhdGVBbHRLZXlQcmVzcygpOworICAgIHZvaWQg
c2ltdWxhdGVSaWdodENsaWNrKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHkpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHZvaWQgc2V0UGFyZW50V2luZG93TWVzc2FnZU9ic2VydmVyKFdpbmRvd01l
c3NhZ2VPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9wYXJlbnRXaW5kb3dNZXNzYWdlT2JzZXJ2ZXIg
PSBvYnNlcnZlcjsgfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc5OTQ4
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDggQEAKIAkJMUFEQkVGQUUxMzBD
Njg5QzAwRDYxRDE5IC8qIEZvcmNlUmVwYWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQURCRUZBRDEzMEM2ODlDMDBENjFEMTkgLyogRm9yY2VS
ZXBhaW50LmNwcCAqLzsgfTsKIAkJMUFEQkVGRTMxMzBDNkFBMTAwRDYxRDE5IC8qIHNpbXBsZS1h
Y2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBREJFRkJDMTMwQzZBMDEwMEQ2MUQxOSAvKiBzaW1w
bGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcuaHRtbCAqLzsgfTsKIAkJMzMzQjlDRTIxMjc3RjIz
MTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyog
UHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLzsgfTsKKwkJNEJGREZGQTcxMzE0Nzc2QzAwNjFG
MjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIg
LyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJNEJGREZGQTkx
MzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE4MTMxNDc3NzcwMDYx
RjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi87IH07CiAJCUJDMTMxODg1MTE3
MTE0QjYwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTMxODg0MTE3MTE0QjYwMEI2OTcyNyAv
KiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSAqLzsgfTsKIAkJQkMxMzFBOUIxMTcxMzE2OTAwQjY5
NzI3IC8qIG1haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzEzMUE5QTExNzEzMTY5MDBCNjk3MjcgLyogbWFpbi5tbSAqLzsgfTsKIAkJQkMxMzFB
QTkxMTcxMzFGQzAwQjY5NzI3IC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEzMUFBODExNzEzMUZDMDBCNjk3Mjcg
LyogVGVzdHNDb250cm9sbGVyLmNwcCAqLzsgfTsKQEAgLTk4LDYgKzEwMCw4IEBACiAJCTFBREJF
RkFEMTMwQzY4OUMwMEQ2MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9yY2VSZXBhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFEQkVGQkMxMzBDNkEwMTAwRDYxRDE5IC8qIHNpbXBsZS1hY2NlbGVyYXRl
ZC1jb21wb3NpdGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNpbXBsZS1h
Y2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlVc2VyQWdl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkZERkZBNjEzMTQ3NzZDMDA2
MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCRkRGRkE4MTMxNDc3NzcwMDYxRjI0
QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBUZXN0V2ViS2l0QVBJ
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBUZXN0V2Vi
S2l0QVBJOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlCQzEzMTg4MzEx
NzExNEE4MDBCNjk3MjcgLyogUGxhdGZvcm1VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1VdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMxMzE4ODQxMTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1VdGls
aXRpZXNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTcsNiArMjYxLDgg
QEAKIAkJCQkxQURCRUZBRDEzMEM2ODlDMDBENjFEMTkgLyogRm9yY2VSZXBhaW50LmNwcCAqLywK
IAkJCQlCQ0JEMzcwRjEyNUFBMkVCMDBEMkMyOUYgLyogRnJhbWVNSU1FVHlwZUhUTUwuY3BwICov
LAogCQkJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlUE5HLmNwcCAq
LywKKwkJCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5k
bGUuY3BwICovLAorCQkJCTRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0
Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovLAogCQkJCUJDNTc1QUFDMTI2RTgzQjkwMDZGMEYxMiAv
KiBJbmplY3RlZEJ1bmRsZUJhc2ljLmNwcCAqLywKIAkJCQlCQzU3NUFBRjEyNkU4M0M4MDA2RjBG
MTIgLyogSW5qZWN0ZWRCdW5kbGVCYXNpY19CdW5kbGUuY3BwICovLAogCQkJCUJDOTA5Nzc5MTI1
NTcxQUIwMDA4Mzc1NiAvKiBQYWdlTG9hZEJhc2ljLmNwcCAqLywKQEAgLTQxNSw2ICs0MjEsNyBA
QAogCQkJCUMwQURCRTdDMTJGQ0E0RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDMEFEQkU4MzEyRkNBNkFBMDBEMkMxMjkgLyogUmVzdG9yZVNlc3Np
b25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQURCRUZB
RTEzMEM2ODlDMDBENjFEMTkgLyogRm9yY2VSZXBhaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTRCRkRGRkE5MTMxNDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTQyOCw2ICs0MzUsNyBAQAogCQkJCUJDNTc1QkQ5MTI2RjU4RTIw
MDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzU3
NUJFMDEyNkY1OTBEMDA2RjBGMTIgLyogUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQ0I2ODA0MjEyNkZCRkYxMDA2NDJBNjEgLyogRG9jdW1lbnRTdGFydFVzZXJT
Y3JpcHRBbGVydENyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QkZERkZBNzEz
MTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRl
c3RSZXN1bHROb2RlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRlc3RSZXN1bHROb2RlSGFu
ZGxlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJUZXN0LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitzdGF0aWMgYm9vbCBkb25lOworc3RhdGljIGJvb2wgbWVzc2FnZVJlY2VpdmVkOworc3RhdGlj
IGJvb2wgZGlkRmluaXNoTG9hZDsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBk
aWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgbWVzc2FnZVJlY2VpdmVkID0gdHJ1ZTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwiSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0RG9uZU1l
c3NhZ2VOYW1lIikpCisgICAgICAgIGRvbmUgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzZXRQ
YWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQoreworICAgIFdLUGFnZUxvYWRlckNsaWVu
dCBsb2FkZXJDbGllbnQ7CisgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2Fk
ZXJDbGllbnQpKTsKKyAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xp
ZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKworICAg
IFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudCk7Cit9CisKK3N0
YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQor
eworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxlQ2xpZW50
OworICAgIG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmplY3RlZEJ1
bmRsZUNsaWVudCkpOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LnZlcnNpb24gPSAwOworICAg
IGluamVjdGVkQnVuZGxlQ2xpZW50LmNsaWVudEluZm8gPSAwOworICAgIGluamVjdGVkQnVuZGxl
Q2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQoY29udGV4dCwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKK30KKworVEVTVChXZWJLaXQy
LCBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxl
VGVzdCgiSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0IikpOworICAgIAorICAgIHNldEluamVj
dGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCkpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdl
YlZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBh
Z2UoKSk7CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBVdGlsOjphZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKS5nZXQoKSk7Cisg
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7
CisKKyAgICB3ZWJWaWV3LnNpbXVsYXRlUmlnaHRDbGljaygxMCwgMTApOworICAgIFV0aWw6OnJ1
bigmZG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9IaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5k
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9I
aXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRs
ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLQnVuZGxlUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVIaXRUZXN0UmVzdWx0
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V2ViS2l0Mi5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIEhpdFRlc3RS
ZXN1bHROb2RlSGFuZGxlVGVzdCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgeworcHVibGlj
OgorICAgIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRl
bnRpZmllcikKKyAgICAgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICB7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tRGVmYXVsdE1lbnUo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVz
dWx0LCBXS0FycmF5UmVmIGRlZmF1bHRNZW51LCBXS0FycmF5UmVmKiBuZXdNZW51LCBXS1R5cGVS
ZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorICAgIHsKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tCdW5kbGVOb2RlSGFuZGxlUmVmPiBub2RlSGFuZGxlKEFkb3B0V0ssIFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdENvcHlOb2RlSGFuZGxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAg
aWYgKCFub2RlSGFuZGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAg
V0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1
bmRsZSgpLCBVdGlsOjp0b1dLKCJIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3REb25lTWVzc2Fn
ZU5hbWUiKS5nZXQoKSwgVXRpbDo6dG9XSygiSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0RG9u
ZU1lc3NhZ2VCb2R5IikuZ2V0KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCisgICAgewor
ICAgICAgICBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCBjb250ZXh0TWVudUNsaWVudDsK
KyAgICAgICAgbWVtc2V0KCZjb250ZXh0TWVudUNsaWVudCwgMCwgc2l6ZW9mKGNvbnRleHRNZW51
Q2xpZW50KSk7CisgICAgICAgIGNvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbURl
ZmF1bHRNZW51ID0gZ2V0Q29udGV4dE1lbnVGcm9tRGVmYXVsdE1lbnU7CisgICAgCisgICAgICAg
IFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KHBhZ2UsICZjb250ZXh0TWVudUNsaWVu
dCk7CisgICAgfQorfTsKKworc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8SGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0PiByZWdpc3RyYXIoIkhpdFRlc3RSZXN1bHROb2RlSGFu
ZGxlVGVzdCIpOworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCShyZXZpc2lvbiA3OTk0
OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTQsNCArOTQsMzMgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVs
YXRlU3BhY2ViYXJLZQogICAgIFttX3ZpZXcga2V5VXA6ZXZlbnRdOwogfQogCit2b2lkIFBsYXRm
b3JtV2ViVmlldzo6c2ltdWxhdGVSaWdodENsaWNrKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHkpCit7
CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNSaWdo
dE1vdXNlRG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uOk5TTWFrZVBvaW50KHgsIHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVyRmxhZ3M6MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3dpbmRvdyB3aW5kb3dOdW1iZXJdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50TnVtYmVyOjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
Y2tDb3VudDowCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3N1
cmU6MF07CisKKworICAgIFttX3ZpZXcgcmlnaHRNb3VzZURvd246ZXZlbnRdOworCisgICAgZXZl
bnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNSaWdodE1vdXNlVXAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCh4LCB5KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOjAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV93aW5kb3cgd2luZG93TnVtYmVyXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE51bWJlcjowCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrQ291bnQ6MAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXNzdXJlOjBdOworCisgICAgW21fdmlldyByaWdodE1vdXNlVXA6
ZXZlbnRdOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAkocmV2aXNpb24g
Nzk5NDgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDE0IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3
OjpzaW11bGF0ZUFsdEtleVByZXMKICAgICA6OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX1NZU0tF
WVVQLCBWS19NRU5VLCAoMSA8PCByZXBlYXRDb3VudEJpdE9mZnNldCkgfCAoMzggPDwgc2NhbkNv
ZGVCaXRPZmZzZXQpIHwgKDEgPDwgcHJldmlvdXNTdGF0ZUJpdE9mZnNldCkgfCAoMSA8PCB0cmFu
c2l0aW9uU3RhdGVCaXRPZmZzZXQpKTsKIH0KIAordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVs
YXRlUmlnaHRDbGljayh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQoreworICAgIEhXTkQgd2luZG93
ID0gV0tWaWV3R2V0V2luZG93KG1fdmlldyk7CisKKyAgICA6OlNlbmRNZXNzYWdlVyh3aW5kb3cs
IFdNX1JCVVRUT05ET1dOLCAwLCBNQUtFTFBBUkFNKHgsIHkpKTsKKyAgICA6OlNlbmRNZXNzYWdl
Vyh3aW5kb3csIFdNX1JCVVRUT05VUCwgMCwgTUFLRUxQQVJBTSh4LCB5KSk7Cit9CisKIExSRVNV
TFQgUGxhdGZvcm1XZWJWaWV3Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewogICAgIFBsYXRmb3JtV2ViVmlldyogd2ViVmll
dzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84164</attachid>
            <date>2011-02-28 17:49:03 -0800</date>
            <delta_ts>2011-02-28 19:41:51 -0800</delta_ts>
            <desc>same as above, but fixed whitespace style nit</desc>
            <filename>patchbug54898.txt</filename>
            <type>text/plain</type>
            <size>19555</size>
            <attacher name="Alice Liu">alice.barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5OTQ5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDItMjggIEFsaWNlIExp
dSAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU0ODk4CisgICAgICAgIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSBkaWVzIHRvbyBlYXJseSBp
biBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXROb2RlSGFuZGxlCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAg
ICAgIChXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5Tm9kZUhhbmRsZSk6IAorICAgICAgICBJbnN0
ZWFkIG9mIC5nZXQoKSwgY2FsbCAucmVsZWFzZS5sZWFrUmVmKCkgbGlrZSBvdGhlciBmdW5jdGlv
bnMgdGhhdCByZXR1cm4gV0tCdW5kbGVOb2RlSGFuZGxlUmVmLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAg
IFJlbmFtZWQgZnJvbSAiZ2V0IiB0byAiY29weSIsIGJlY2F1c2UgaXQgbGVha3NSZWYuCisKIDIw
MTEtMDItMjggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9u
IDc5ODk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgs
MTAgQEAgV0tUeXBlSUQgV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0VHlwZUlEKAogICAgIHJldHVy
biB0b0FQSShJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OkFQSVR5cGUpOwogfQogCi1XS0J1
bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0Tm9kZUhhbmRsZShXS0J1
bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKK1dLQnVuZGxlTm9kZUhhbmRs
ZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5Tm9kZUhhbmRsZShXS0J1bmRsZUhpdFRlc3RS
ZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPiBub2RlSGFuZGxlID0gdG9JbXBsKGhpdFRlc3RSZXN1bHRSZWYpLT5ub2RlSGFu
ZGxlKCk7Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUuZ2V0KCkpOworICAgIHJldHVybiB0
b0FQSShub2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZUZyYW1l
UmVmIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldEZyYW1lKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJl
ZiBoaXRUZXN0UmVzdWx0UmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0
VGVzdFJlc3VsdC5oCShyZXZpc2lvbiA3OTg5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJ
RCBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXROb2RlSGFuZGxlKFdLQnVuZGxl
SGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0KTsKK1dLX0VYUE9SVCBXS0J1bmRsZU5vZGVI
YW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUoV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQpOwogCiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJl
ZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRGcmFtZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYg
aGl0VGVzdFJlc3VsdCk7CiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUhpdFRl
c3RSZXN1bHRHZXRUYXJnZXRGcmFtZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJl
c3VsdCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3OTk0OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDExLTAyLTI4ICBBbGljZSBMaXUgIDxhbGljZS5saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDg5OAorICAg
ICAgICBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUgZGllcyB0b28gZWFybHkgaW4gV0tCdW5kbGVI
aXRUZXN0UmVzdWx0R2V0Tm9kZUhhbmRsZQorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Jbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVk
QnVuZGxlQ29udHJvbGxlcjo6YnVuZGxlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRm
b3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9IaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRlc3RSZXN1bHRO
b2RlSGFuZGxlX0J1bmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SGl0
VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0OjpIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6SGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0OjpnZXRD
b250ZXh0TWVudUZyb21EZWZhdWx0TWVudSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIaXRU
ZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3Q6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVSaWdodENsaWNrKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2spOgorCiAyMDExLTAyLTI4
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTdGFydCBydW5uaW5n
IEluamVjdGVkQnVuZGxlIEFQSSB0ZXN0cyBvbiBXaW5kb3dzCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgJKHJldmlzaW9uIDc5OTQ4KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbmplY3RlZEJ1
bmRsZVRlc3QqICgqQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24pKGNvbnN0IHN0ZDo6
c3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0
aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiwgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24p
OwogCisgICAgV0tCdW5kbGVSZWYgYnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9idW5kbGU7IH0K
KyAgICAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKCk7CiAgICAgfklu
amVjdGVkQnVuZGxlQ29udHJvbGxlcigpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVdlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
V2ViVmlldy5oCShyZXZpc2lvbiA3OTk0OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGxh
dGZvcm1XZWJWaWV3X2gKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPENv
cmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAKICNpZmRlZiBfX0FQUExFX18KICNpZmRlZiBfX09C
SkNfXwpAQCAtNjEsNiArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNpbXVsYXRlU3BhY2Vi
YXJLZXlQcmVzcygpOwogICAgIHZvaWQgc2ltdWxhdGVBbHRLZXlQcmVzcygpOworICAgIHZvaWQg
c2ltdWxhdGVSaWdodENsaWNrKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHkpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHZvaWQgc2V0UGFyZW50V2luZG93TWVzc2FnZU9ic2VydmVyKFdpbmRvd01l
c3NhZ2VPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9wYXJlbnRXaW5kb3dNZXNzYWdlT2JzZXJ2ZXIg
PSBvYnNlcnZlcjsgfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc5OTQ4
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDggQEAKIAkJMUFEQkVGQUUxMzBD
Njg5QzAwRDYxRDE5IC8qIEZvcmNlUmVwYWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQURCRUZBRDEzMEM2ODlDMDBENjFEMTkgLyogRm9yY2VS
ZXBhaW50LmNwcCAqLzsgfTsKIAkJMUFEQkVGRTMxMzBDNkFBMTAwRDYxRDE5IC8qIHNpbXBsZS1h
Y2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBREJFRkJDMTMwQzZBMDEwMEQ2MUQxOSAvKiBzaW1w
bGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcuaHRtbCAqLzsgfTsKIAkJMzMzQjlDRTIxMjc3RjIz
MTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyog
UHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLzsgfTsKKwkJNEJGREZGQTcxMzE0Nzc2QzAwNjFG
MjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIg
LyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJNEJGREZGQTkx
MzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE4MTMxNDc3NzcwMDYx
RjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi87IH07CiAJCUJDMTMxODg1MTE3
MTE0QjYwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTMxODg0MTE3MTE0QjYwMEI2OTcyNyAv
KiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSAqLzsgfTsKIAkJQkMxMzFBOUIxMTcxMzE2OTAwQjY5
NzI3IC8qIG1haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzEzMUE5QTExNzEzMTY5MDBCNjk3MjcgLyogbWFpbi5tbSAqLzsgfTsKIAkJQkMxMzFB
QTkxMTcxMzFGQzAwQjY5NzI3IC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEzMUFBODExNzEzMUZDMDBCNjk3Mjcg
LyogVGVzdHNDb250cm9sbGVyLmNwcCAqLzsgfTsKQEAgLTk4LDYgKzEwMCw4IEBACiAJCTFBREJF
RkFEMTMwQzY4OUMwMEQ2MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9yY2VSZXBhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFEQkVGQkMxMzBDNkEwMTAwRDYxRDE5IC8qIHNpbXBsZS1hY2NlbGVyYXRl
ZC1jb21wb3NpdGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNpbXBsZS1h
Y2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlVc2VyQWdl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkZERkZBNjEzMTQ3NzZDMDA2
MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCRkRGRkE4MTMxNDc3NzcwMDYxRjI0
QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBUZXN0V2ViS2l0QVBJ
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBUZXN0V2Vi
S2l0QVBJOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlCQzEzMTg4MzEx
NzExNEE4MDBCNjk3MjcgLyogUGxhdGZvcm1VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1VdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMxMzE4ODQxMTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1VdGls
aXRpZXNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTcsNiArMjYxLDgg
QEAKIAkJCQkxQURCRUZBRDEzMEM2ODlDMDBENjFEMTkgLyogRm9yY2VSZXBhaW50LmNwcCAqLywK
IAkJCQlCQ0JEMzcwRjEyNUFBMkVCMDBEMkMyOUYgLyogRnJhbWVNSU1FVHlwZUhUTUwuY3BwICov
LAogCQkJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlUE5HLmNwcCAq
LywKKwkJCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5k
bGUuY3BwICovLAorCQkJCTRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0
Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovLAogCQkJCUJDNTc1QUFDMTI2RTgzQjkwMDZGMEYxMiAv
KiBJbmplY3RlZEJ1bmRsZUJhc2ljLmNwcCAqLywKIAkJCQlCQzU3NUFBRjEyNkU4M0M4MDA2RjBG
MTIgLyogSW5qZWN0ZWRCdW5kbGVCYXNpY19CdW5kbGUuY3BwICovLAogCQkJCUJDOTA5Nzc5MTI1
NTcxQUIwMDA4Mzc1NiAvKiBQYWdlTG9hZEJhc2ljLmNwcCAqLywKQEAgLTQxNSw2ICs0MjEsNyBA
QAogCQkJCUMwQURCRTdDMTJGQ0E0RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDMEFEQkU4MzEyRkNBNkFBMDBEMkMxMjkgLyogUmVzdG9yZVNlc3Np
b25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQURCRUZB
RTEzMEM2ODlDMDBENjFEMTkgLyogRm9yY2VSZXBhaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTRCRkRGRkE5MTMxNDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTQyOCw2ICs0MzUsNyBAQAogCQkJCUJDNTc1QkQ5MTI2RjU4RTIw
MDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzU3
NUJFMDEyNkY1OTBEMDA2RjBGMTIgLyogUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQ0I2ODA0MjEyNkZCRkYxMDA2NDJBNjEgLyogRG9jdW1lbnRTdGFydFVzZXJT
Y3JpcHRBbGVydENyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QkZERkZBNzEz
MTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRl
c3RSZXN1bHROb2RlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRlc3RSZXN1bHROb2RlSGFu
ZGxlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJUZXN0LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitzdGF0aWMgYm9vbCBkb25lOworc3RhdGljIGJvb2wgbWVzc2FnZVJlY2VpdmVkOworc3RhdGlj
IGJvb2wgZGlkRmluaXNoTG9hZDsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBk
aWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgbWVzc2FnZVJlY2VpdmVkID0gdHJ1ZTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdERvbmVN
ZXNzYWdlTmFtZSIpKQorICAgICAgICBkb25lID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgc2V0
UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKK3sKKyAgICBXS1BhZ2VMb2FkZXJDbGll
bnQgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7CisgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24gPSAwOworICAgIGxvYWRlckNs
aWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CisKKyAg
ICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQpOworfQorCitz
dGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCkK
K3sKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBpbmplY3RlZEJ1bmRsZUNsaWVu
dDsKKyAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5qZWN0ZWRC
dW5kbGVDbGllbnQpKTsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC52ZXJzaW9uID0gMDsKKyAg
ICBpbmplY3RlZEJ1bmRsZUNsaWVudC5jbGllbnRJbmZvID0gMDsKKyAgICBpbmplY3RlZEJ1bmRs
ZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxl
Q2xpZW50KGNvbnRleHQsICZpbmplY3RlZEJ1bmRsZUNsaWVudCk7Cit9CisKK1RFU1QoV2ViS2l0
MiwgSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUpCit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRs
ZVRlc3QoIkhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdCIpKTsKKyAgICAKKyAgICBzZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5w
YWdlKCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgVXRpbDo6YWRvcHRX
SyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSkuZ2V0KCkpOwor
ICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNl
OworCisgICAgd2ViVmlldy5zaW11bGF0ZVJpZ2h0Q2xpY2soMTAsIDEwKTsKKyAgICBVdGlsOjpy
dW4oJmRvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVu
ZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
SGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9IaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5k
bGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSGl0VGVzdFJlc3Vs
dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dlYktpdDIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBIaXRUZXN0
UmVzdWx0Tm9kZUhhbmRsZVRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1Ymxp
YzoKKyAgICBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlk
ZW50aWZpZXIpCisgICAgICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAg
eworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJl
c3VsdCwgV0tBcnJheVJlZiBkZWZhdWx0TWVudSwgV0tBcnJheVJlZiogbmV3TWVudSwgV0tUeXBl
UmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKKyAgICB7CisgICAgICAgIFdL
UmV0YWluUHRyPFdLQnVuZGxlTm9kZUhhbmRsZVJlZj4gbm9kZUhhbmRsZShBZG9wdFdLLCBXS0J1
bmRsZUhpdFRlc3RSZXN1bHRDb3B5Tm9kZUhhbmRsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAg
IGlmICghbm9kZUhhbmRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAg
IFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5i
dW5kbGUoKSwgVXRpbDo6dG9XSygiSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVUZXN0RG9uZU1lc3Nh
Z2VOYW1lIikuZ2V0KCksIFV0aWw6OnRvV0soIkhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdERv
bmVNZXNzYWdlQm9keSIpLmdldCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKQorICAgIHsK
KyAgICAgICAgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgY29udGV4dE1lbnVDbGllbnQ7
CisgICAgICAgIG1lbXNldCgmY29udGV4dE1lbnVDbGllbnQsIDAsIHNpemVvZihjb250ZXh0TWVu
dUNsaWVudCkpOworICAgICAgICBjb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVudUZyb21E
ZWZhdWx0TWVudSA9IGdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51OworICAgIAorICAgICAg
ICBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChwYWdlLCAmY29udGV4dE1lbnVDbGll
bnQpOworICAgIH0KK307CisKK3N0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPEhp
dFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdD4gcmVnaXN0cmFyKCJIaXRUZXN0UmVzdWx0Tm9kZUhh
bmRsZVRlc3QiKTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2aXNpb24gNzk5
NDgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTk0LDQgKzk0LDMzIEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11
bGF0ZVNwYWNlYmFyS2UKICAgICBbbV92aWV3IGtleVVwOmV2ZW50XTsKIH0KIAordm9pZCBQbGF0
Zm9ybVdlYlZpZXc6OnNpbXVsYXRlUmlnaHRDbGljayh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQor
eworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOk5TUmln
aHRNb3VzZURvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbjpOU01ha2VQb2ludCh4LCB5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RpZmllckZsYWdzOjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV93aW5kb3cgd2luZG93TnVtYmVyXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29u
dGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBldmVudE51bWJlcjowCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWNrQ291bnQ6MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNz
dXJlOjBdOworCisKKyAgICBbbV92aWV3IHJpZ2h0TW91c2VEb3duOmV2ZW50XTsKKworICAgIGV2
ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOk5TUmlnaHRNb3VzZVVwCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoeCwgeSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczowCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21fd2luZG93IHdpbmRvd051bWJlcl0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3Vy
cmVudENvbnRleHRdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnROdW1iZXI6MAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja0NvdW50OjAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVzc3VyZTowXTsKKworICAgIFttX3ZpZXcgcmlnaHRNb3VzZVVw
OmV2ZW50XTsKKworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHJldmlzaW9u
IDc5OTQ4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwxNCBAQCB2b2lkIFBsYXRmb3JtV2ViVmll
dzo6c2ltdWxhdGVBbHRLZXlQcmVzCiAgICAgOjpTZW5kTWVzc2FnZVcod2luZG93LCBXTV9TWVNL
RVlVUCwgVktfTUVOVSwgKDEgPDwgcmVwZWF0Q291bnRCaXRPZmZzZXQpIHwgKDM4IDw8IHNjYW5D
b2RlQml0T2Zmc2V0KSB8ICgxIDw8IHByZXZpb3VzU3RhdGVCaXRPZmZzZXQpIHwgKDEgPDwgdHJh
bnNpdGlvblN0YXRlQml0T2Zmc2V0KSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11
bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQgeCwgdW5zaWduZWQgeSkKK3sKKyAgICBIV05EIHdpbmRv
dyA9IFdLVmlld0dldFdpbmRvdyhtX3ZpZXcpOworCisgICAgOjpTZW5kTWVzc2FnZVcod2luZG93
LCBXTV9SQlVUVE9ORE9XTiwgMCwgTUFLRUxQQVJBTSh4LCB5KSk7CisgICAgOjpTZW5kTWVzc2Fn
ZVcod2luZG93LCBXTV9SQlVUVE9OVVAsIDAsIE1BS0VMUEFSQU0oeCwgeSkpOworfQorCiBMUkVT
VUxUIFBsYXRmb3JtV2ViVmlldzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BB
UkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHdlYlZp
ZXc7Cg==
</data>
<flag name="review"
          id="76128"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>