<?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>48382</bug_id>
          
          <creation_ts>2010-10-26 15:14:27 -0700</creation_ts>
          <short_desc>Autofilled form elements are assigned fixed background color but not text color</short_desc>
          <delta_ts>2011-03-15 11:03:29 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://trac.webkit.org/browser/trunk/WebCore/css/html.css</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="Will Hirsch">webkit</reporter>
          <assigned_to name="Ilya Sherman">isherman</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>hyatt</cc>
    
    <cc>isherman</cc>
    
    <cc>jorlow</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>rniwa</cc>
    
    <cc>staikos</cc>
    
    <cc>sullivan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>299838</commentid>
    <comment_count>0</comment_count>
    <who name="Will Hirsch">webkit</who>
    <bug_when>2010-10-26 15:14:27 -0700</bug_when>
    <thetext>This bug was reported as Chromium Issue 52993 - http://code.google.com/p/chromium/issues/detail?id=52993

The default html.css (and wml.css) stylesheet in WebCore assigns a background-color to elements assigned the -webkit-autofill pseudo style (i.e. that have been autofilled by the browser) but not a text color. This leads to accessibility and aesthetic issues when the inherited text color does not complement the default background color (pastel yellow).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300618</commentid>
    <comment_count>1</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-10-27 15:07:24 -0700</bug_when>
    <thetext>I think an ideal approach would be to change the text color to black only if the normal text color would not contrast enough with the autofill background color. I also think changing the text color to black in all cases would be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301133</commentid>
    <comment_count>2</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-10-28 10:10:13 -0700</bug_when>
    <thetext>For security purposes, having a standard foreground color is best, since we dont want the evil guy to pick shades near yellow and confusing the user what is getting autofilled. Also, we should track this as low severity security bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301228</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-28 12:19:33 -0700</bug_when>
    <thetext>Given the large number of other ways to obscure what’s filled in -- putting elements in front, surrounding with distractions, making the fields small, transforming the field to make it tiny -- restricting the color does not seem like an effective security measure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301231</commentid>
    <comment_count>4</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-10-28 12:25:14 -0700</bug_when>
    <thetext>Yeah, you are right. Plus, the filled value is already in the DOM at that point, so no obscurity is required, attacker has that anyway. removing the security tags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301590</commentid>
    <comment_count>5</comment_count>
      <attachid>72295</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2010-10-28 22:52:40 -0700</bug_when>
    <thetext>Created attachment 72295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301591</commentid>
    <comment_count>6</comment_count>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2010-10-28 22:54:27 -0700</bug_when>
    <thetext>I didn&apos;t find an existing (set of) layout test(s) to modify or add to -- could someone please point me in the right direction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304189</commentid>
    <comment_count>7</comment_count>
      <attachid>72295</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-03 12:15:02 -0700</bug_when>
    <thetext>Comment on attachment 72295
Patch

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

&gt; WebCore/ChangeLog:9
&gt; +        No new tests. (OOPS!)

We&apos;re going to need a test for this patch.  I&apos;m not sure how to write one, but someone on #webkit should be able to help you.  Generally, we don&apos;t accept any patches without tests.  In some sense, the tests are the most important part of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360683</commentid>
    <comment_count>8</comment_count>
      <attachid>84391</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-02 02:42:30 -0800</bug_when>
    <thetext>Created attachment 84391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360685</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-02 02:44:31 -0800</bug_when>
    <thetext>Attachment 84391 did not pass style-queue:

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

Source/WebKit/mac/WebView/WebViewPrivate.h:680:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 17 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>360686</commentid>
    <comment_count>10</comment_count>
      <attachid>84391</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-02 02:47:33 -0800</bug_when>
    <thetext>Comment on attachment 84391
Patch

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

2 lines of CSS, 130 lines of test code

&gt; Source/WebKit/mac/WebView/WebView.mm:6253
&gt; +- (void)_setAutofilled:(bool)isAutofilled forElement:(JSValueRef)element inContext:(JSContextRef)context

AFAICT, there is absolutely no platform-specific code here.  However, when I tried to implement this directly in DumpRenderTree/LayoutTestController.cpp, I got errors like the following when trying to include the appropriate header.

&quot;.../WebKit/WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/JSValue.h:29:0 .../WebKit/WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/JSValue.h:29:30: error: wtf/AlwaysInline.h: No such file or directory&quot;

I&apos;d like to share this implementation across platforms if possible, but I&apos;m not sure how to; suggestions appreciated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360988</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-02 12:36:15 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 84391 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84391&amp;action=review
&gt; 
&gt; 2 lines of CSS, 130 lines of test code
&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:6253
&gt; &gt; +- (void)_setAutofilled:(bool)isAutofilled forElement:(JSValueRef)element inContext:(JSContextRef)context
&gt; 
&gt; AFAICT, there is absolutely no platform-specific code here.  However, when I tried to implement this directly in DumpRenderTree/LayoutTestController.cpp, I got errors like the following when trying to include the appropriate header.

DumpRenderTree uses the WebKit API exposed by the various ports in Source/WebKit/.  DRT can&apos;t reach into WebCore directly.

One option is to move the common code into WebCore and each WebKit API can have a method that passes the call through.  Examples of this are WebFrame::markerTextForListItem or WebFrame::selectionStartHasSpellingMarkerFor.

Also, you might want to just pass a string with the element ID and a bool to setAutofilled.  This is more like the existing test methods (e.g., elementDoesAutoCompleteForElementWithId or pauseAnimationAtTimeOnElementWithId).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361433</commentid>
    <comment_count>12</comment_count>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-03 01:14:08 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; One option is to move the common code into WebCore and each WebKit API can have a method that passes the call through.  Examples of this are WebFrame::markerTextForListItem or WebFrame::selectionStartHasSpellingMarkerFor.

Hmm, pretty much all of the work involved is teasing the HTMLInputElement out of the JSValueRef.  Is there a good place for this sort of logic to live in WebCore?  If not, it might not be worth the effort to share this code.

It does seem odd, though, that DumpRenderTree can e.g. convert a JSValueRef to a boolean, but not to a JSValue.

&gt; Also, you might want to just pass a string with the element ID and a bool to setAutofilled.  This is more like the existing test methods (e.g., elementDoesAutoCompleteForElementWithId or pauseAnimationAtTimeOnElementWithId).

I modeled this code after the test method computedStyleIncludingVisitedInfo, which takes an element as a parameter directly.  On the whole, I find that the resulting implementation is somewhat cleaner, which is nice.  It&apos;s also a little bit more flexible, but I guess that doesn&apos;t matter as much for tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361844</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-03 12:38:52 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; One option is to move the common code into WebCore and each WebKit API can have a method that passes the call through.  Examples of this are WebFrame::markerTextForListItem or WebFrame::selectionStartHasSpellingMarkerFor.
&gt; 
&gt; Hmm, pretty much all of the work involved is teasing the HTMLInputElement out of the JSValueRef. Is there a good place for this sort of logic to live in WebCore? If not, it might not be worth the effort to share this code.

Please look at the markerTextForListItem code. You’ll see there is already code that does what you need to get to DOMElement. Getting from DOMElement to DOMHTMLInputElement is trivial.

&gt; I modeled this code after the test method computedStyleIncludingVisitedInfo

Please model it after markerTextForListItem instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362672</commentid>
    <comment_count>14</comment_count>
      <attachid>84391</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-04 13:10:46 -0800</bug_when>
    <thetext>Comment on attachment 84391
Patch

It sounds as if there are things to be addressed in the comments before this should go in so r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365795</commentid>
    <comment_count>15</comment_count>
      <attachid>85433</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-10 20:37:05 -0800</bug_when>
    <thetext>Created attachment 85433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365858</commentid>
    <comment_count>16</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-11 00:29:31 -0800</bug_when>
    <thetext>Attachment 85433 did not build on gtk:
Build output: http://queues.webkit.org/results/8133198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366166</commentid>
    <comment_count>17</comment_count>
      <attachid>85501</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-11 11:38:05 -0800</bug_when>
    <thetext>Created attachment 85501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366246</commentid>
    <comment_count>18</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-11 12:47:41 -0800</bug_when>
    <thetext>Attachment 85501 did not build on gtk:
Build output: http://queues.webkit.org/results/8131368</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366301</commentid>
    <comment_count>19</comment_count>
      <attachid>85529</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-11 13:57:01 -0800</bug_when>
    <thetext>Created attachment 85529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367178</commentid>
    <comment_count>20</comment_count>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-14 13:29:11 -0700</bug_when>
    <thetext>PTAL =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367278</commentid>
    <comment_count>21</comment_count>
      <attachid>85529</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-14 15:08:19 -0700</bug_when>
    <thetext>Comment on attachment 85529
Patch

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

If you fix the 2 minor issues mentioned below and upload a new patch, I&apos;ll r+ and cq+.

&gt; LayoutTests/platform/win/fast/forms/input-autofilled-expected.txt:3
&gt; +This tests that foreground and background colors properly change for autofilled inputs. It can only be run using DumpRenderTree.
&gt; +
&gt; +FAIL Foreground color did not change when autofilled.

I would remove this file and just add the file to LayoutTests/platform/win/Skipped with a comment saying that layoutTestController.setAutofilled needs to be implemented.

&gt; Tools/DumpRenderTree/LayoutTestController.cpp:2121
&gt; +        { &quot;setAutofilled&quot;, setAutofilledCallback, kJSPropertyAttributeDontDelete },

Should we also set kJSPropertyAttributeReadOnly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367293</commentid>
    <comment_count>22</comment_count>
      <attachid>85731</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-14 15:34:02 -0700</bug_when>
    <thetext>Created attachment 85731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367294</commentid>
    <comment_count>23</comment_count>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-14 15:34:15 -0700</bug_when>
    <thetext>Tony, thanks for your comments =)

(In reply to comment #21)
&gt; I would remove this file and just add the file to LayoutTests/platform/win/Skipped with a comment saying that layoutTestController.setAutofilled needs to be implemented.

I tend to agree with you, but it seems that more reviewers prefer adding expectations for tests with consistent results -- please take a look at the comments on https://bugs.webkit.org/show_bug.cgi?id=55834

&gt; &gt; Tools/DumpRenderTree/LayoutTestController.cpp:2121
&gt; &gt; +        { &quot;setAutofilled&quot;, setAutofilledCallback, kJSPropertyAttributeDontDelete },
&gt; 
&gt; Should we also set kJSPropertyAttributeReadOnly?

Ah, I was misunderstanding what this flag means.  Thanks for pointing that out =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367300</commentid>
    <comment_count>24</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-14 15:41:52 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Tony, thanks for your comments =)
&gt; 
&gt; (In reply to comment #21)
&gt; &gt; I would remove this file and just add the file to LayoutTests/platform/win/Skipped with a comment saying that layoutTestController.setAutofilled needs to be implemented.
&gt; 
&gt; I tend to agree with you, but it seems that more reviewers prefer adding expectations for tests with consistent results -- please take a look at the comments on https://bugs.webkit.org/show_bug.cgi?id=55834

Ah, OK, that seems fine.  I&apos;m going to wait a bit before r+ cq+&apos;ing so that the GTK+ bot can run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367509</commentid>
    <comment_count>25</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-14 22:20:56 -0700</bug_when>
    <thetext>Attachment 85731 did not build on gtk:
Build output: http://queues.webkit.org/results/8153015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367537</commentid>
    <comment_count>26</comment_count>
      <attachid>85781</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-03-14 23:50:02 -0700</bug_when>
    <thetext>Created attachment 85781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367788</commentid>
    <comment_count>27</comment_count>
      <attachid>85781</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-15 11:03:22 -0700</bug_when>
    <thetext>Comment on attachment 85781
Patch

Clearing flags on attachment: 85781

Committed r81155: &lt;http://trac.webkit.org/changeset/81155&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367789</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-15 11:03:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72295</attachid>
            <date>2010-10-28 22:52:40 -0700</date>
            <delta_ts>2011-03-02 02:42:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48382-20101028225239.patch</filename>
            <type>text/plain</type>
            <size>1655</size>
            <attacher name="Ilya Sherman">isherman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWNkMzUwM2JmZjAzNzMxYjMyYzNmZWRiYTRiZTgzYWIzN2U3NzJjMS4uNDA3NWQzZGI0M2QwZTMy
MzA4NjlkODhiMGQ1ZGZmMTg3YjA5MzkzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0xMC0yOCAgSWx5
YSBTaGVybWFuICA8aXNoZXJtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF1dG9maWxsZWQgZm9ybSBlbGVtZW50cyBhcmUg
YXNzaWduZWQgZml4ZWQgYmFja2dyb3VuZDsgdGhpcyBwYXRjaCBhc3NpZ25zCisgICAgICAgIGEg
Zm9yZWdyb3VuZCBjb2xvciBhcyB3ZWxsLCBzbyB0aGF0IHRoZSB0ZXh0IGlzIHJlYWRhYmxlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9odG1sLmNzczoK
KyAgICAgICAgKGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwpOgorICAgICAgICAqIGNzcy93bWwuY3Nz
OgorICAgICAgICAoaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCk6CisKIDIwMTAtMTAtMjggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1dlYkNvcmUv
Y3NzL2h0bWwuY3NzCmluZGV4IDAyZmE2MjBiNzQ5MzI1YzEyYjJmMjg2ODIxNWY3ZDRlMDNiY2U2
NmEuLmNkZjQ2NWJhY2I4ODU1NDM0ODI1MTk4Mzk2NmM5OGEwZWFmYTc4N2IgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC00MjIs
NiArNDIyLDcgQEAgaW5wdXRbdHlwZT0iZmlsZSJdIHsKIGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwg
ewogICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZGQkQgIWltcG9ydGFudDsKICAgICBiYWNrZ3Jv
dW5kLWltYWdlOm5vbmUgIWltcG9ydGFudDsKKyAgICBjb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50
OwogfQogCiBpbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvY3NzL3dtbC5jc3MgYi9XZWJDb3JlL2Nzcy93bWwuY3NzCmluZGV4
IDU0ZTVhOTdkNDdmYjNlNTBiZThmYTkwZDc0Y2NmOTk5MTc5MmQwYmUuLmRmOWM4YzY4OGQwZmVm
ZDM2NDYxYmY1MGVhYTY2ZGM3ZjdlMzA2ZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL3dtbC5j
c3MKKysrIGIvV2ViQ29yZS9jc3Mvd21sLmNzcwpAQCAtMTQ3LDYgKzE0Nyw3IEBAIGlucHV0W3R5
cGU9InBhc3N3b3JkIl0gewogaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCB7CiAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogI0ZBRkZCRCAhaW1wb3J0YW50OwogICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZSAh
aW1wb3J0YW50OworICAgIGNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiB9CiAKIGRvOmRpc2Fi
bGVkLCBzZWxlY3Q6ZGlzYWJsZWQsIG9wdGdyb3VwOmRpc2FibGVkLCBvcHRpb246ZGlzYWJsZWQg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84391</attachid>
            <date>2011-03-02 02:42:30 -0800</date>
            <delta_ts>2011-03-10 20:37:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48382-20110302024229.patch</filename>
            <type>text/plain</type>
            <size>17306</size>
            <attacher name="Ilya Sherman">isherman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAwMDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZDE3YzE3NDQ1YjU0OTI2NzJlYTU2
NmRiMzg2Y2M5YjY1YThhMTlhLi5hZmQ2ZmY2YWM4Yjc2YzJkNTEwYzUyOWQxOGU0MzdjYmJlOTk2
OWMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMDIgIElseWEgU2hlcm1hbiAgPGlz
aGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVk
IGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTAxICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1
cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0
LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1h
dXRvZmlsbGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmMyNTBmM2FlOTI1ZjdjODYwZTBm
NmZlOWVmMWMyNzg4N2EyMDVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMg
dGVzdHMgdGhhdCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBwcm9wZXJseSBjaGFu
Z2UgZm9yIGF1dG9maWxsZWQgaW5wdXRzLiBJdCBjYW4gb25seSBiZSBydW4gdXNpbmcgRHVtcFJl
bmRlclRyZWUuCisKK1BBU1MgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtYXV0b2ZpbGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRv
ZmlsbGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhZTM2MDIwYWEwOGU3MGRkNGRlNTBiNjgxNTNhYWZj
YjRiYzE0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQt
YXV0b2ZpbGxlZC5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgdGYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGYnKTsKKyAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRmKTsKKyAgICAgICAgdmFyIG9yaWdpbmFsRm9yZWdy
b3VuZCA9IGNvbXB1dGVkU3R5bGUuY29sb3I7CisgICAgICAgIHZhciBvcmlnaW5hbEJhY2tncm91
bmQgPSBjb21wdXRlZFN0eWxlLmJhY2tncm91bmRDb2xvcjsKKworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRBdXRvZmlsbGVkKHRmLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJvdGgg
dGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzIHNob3VsZCBjaGFuZ2UuCisgICAg
ICAgIGNvbXB1dGVkU3R5bGUgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KHRmKTsKKyAgICAgICAgdmFyIGF1dG9maWxsZWRGb3JlZ3JvdW5kID0gY29tcHV0ZWRTdHlsZS5j
b2xvcjsKKyAgICAgICAgdmFyIGF1dG9maWxsZWRCYWNrZ3JvdW5kID0gY29tcHV0ZWRTdHlsZS5i
YWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIGlmIChhdXRvZmlsbGVkRm9yZWdyb3VuZCA9PSBvcmln
aW5hbEZvcmVncm91bmQpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0ZvcmVncm91bmQgY29s
b3IgZGlkIG5vdCBjaGFuZ2Ugd2hlbiBhdXRvZmlsbGVkLicpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChhdXRvZmlsbGVkQmFja2dyb3VuZCA9PSBvcmlnaW5h
bEJhY2tncm91bmQpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0JhY2tncm91bmQgY29sb3Ig
ZGlkIG5vdCBjaGFuZ2Ugd2hlbiBhdXRvZmlsbGVkLicpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0b2ZpbGxlZCh0ZiwgZmFsc2Up
OworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29sb3JzIHNob3VsZCBiZSByZXN0b3JlZC4KKyAg
ICAgICAgY29tcHV0ZWRTdHlsZSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUodGYpOworICAgICAgICBpZiAoY29tcHV0ZWRTdHlsZS5jb2xvciAhPSBvcmlnaW5hbEZvcmVn
cm91bmQpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0ZvcmVncm91bmQgY29sb3IgZGlkIG5v
dCByZXZlcnQgd2hlbiB1bi1hdXRvZmlsbGVkLicpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGlmIChjb21wdXRlZFN0eWxlLmJhY2tncm91bmRDb2xvciAhPSBvcmln
aW5hbEJhY2tncm91bmQpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0JhY2tncm91bmQgY29s
b3IgZGlkIG5vdCByZXZlcnQgd2hlbiB1bi1hdXRvZmlsbGVkLicpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGVzdFBhc3NlZCgnJyk7CisgICAgfQorICAgIDwv
c2NyaXB0PgorCisgICAgPHN0eWxlPgorICAgICN0ZiB7CisgICAgICBjb2xvcjogI0ZGRkZGRjsK
KyAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7CisgICAgfQorICAgIDwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CisgICAgVGhpcyB0ZXN0cyB0aGF0IGZvcmVn
cm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzIHByb3Blcmx5IGNoYW5nZSBmb3IgYXV0b2ZpbGxl
ZCBpbnB1dHMuICBJdCBjYW4gb25seSBiZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUuPGJyPgor
ICAgIDxmb3JtIG5hbWU9ImZtIj4KKyAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZiIg
dmFsdWU9IkZpZWxkIHZhbHVlIiAvPgorICAgIDwvZm9ybT4KKyAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOTU2YTY1MWEyNTk0NDQ5
ZTk5NGFkMmZjOGIxZDg0Mzg1M2M3NzA1Li5jNjM4ZWVjNGJiYmQ4MmNhYzE1NWRiMGE4NWQ0NzVi
ODhmN2I1MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMDIgIElseWEg
U2hlcm1hbiAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMgYXJlIGFz
c2lnbmVkIGZpeGVkIGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dDotd2Vi
a2l0LWF1dG9maWxsKTogQWRkZWQgZm9yZWdyb3VuZCBjb2xvcjogIzAwMDAwMAorICAgICAgICAq
IGNzcy93bWwuY3NzOgorICAgICAgICAoaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCk6IEFkZGVkIGZv
cmVncm91bmQgY29sb3I6ICMwMDAwMDAKKwogMjAxMS0wMy0wMSAgSWx5YSBUaWtob25vdnNreSAg
PGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1h
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOTliNWU4NDQ5MmQ4NWRlNTM3MjY0NjZkMmY2ODJi
NGE0YzBjODJlYi4uMGIwYTQxM2MzMzM2NTUxZmY5YTBmZjNlNDc0ZTRhOTJmMWI2ODdhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KQEAgLTM2Myw2ICszNjMsNyBAQCBfX1pON1dlYkNvcmUxNFNlY3Vy
aXR5T3JpZ2luMzJyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS1MwX1JLTjNXVEY2
U3RyaQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjQwc2V0RG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbkZvclVSTFNjaGVtZUViUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3Vy
aXR5T3JpZ2luNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9pCiBfX1pON1dlYkNvcmUxNFNlY3Vy
aXR5T3JpZ2luNmNyZWF0ZUVSS05TXzRLVVJMRWkKK19fWk43V2ViQ29yZTE0dG9JbnB1dEVsZW1l
bnRFUE5TXzdFbGVtZW50RQogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4z
V1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05TMV82U3Ry
aW5nRVNBX1NBX1JLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMTVET01XcmFw
cGVyV29ybGQxM2NsZWFyV3JhcHBlcnNFdgogX19aTjdXZWJDb3JlMTVET01XcmFwcGVyV29ybGRE
MUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvaHRtbC5jc3MKaW5kZXggMGYxM2ZjYjczOTQ5NzcyYzcyM2JkYTkwZjg5MDJmOTA1
MTZlY2YyMC4uMGIwYTAxNmEwZjFiNTQwNGNkZTJkODUzMGRjMDIzY2ViNTVmNzg2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9odG1sLmNzcwpAQCAtNDc4LDYgKzQ3OCw3IEBAIGlucHV0W3R5cGU9ImZpbGUiXSB7CiBpbnB1
dDotd2Via2l0LWF1dG9maWxsIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkFGRkJEICFpbXBv
cnRhbnQ7CiAgICAgYmFja2dyb3VuZC1pbWFnZTpub25lICFpbXBvcnRhbnQ7CisgICAgY29sb3I6
ICMwMDAwMDAgIWltcG9ydGFudDsKIH0KIAogaW5wdXRbdHlwZT0icmFkaW8iXSwgaW5wdXRbdHlw
ZT0iY2hlY2tib3giXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mvd21sLmNzcyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzCmluZGV4IDRiY2YwOGY1NmE5MzFkNDVlODcwNzEw
ZDljMThhN2VmYzM1OTdkNmUuLjM4MTY5ZmNhMmE5ZDY3NWZhMDhlNmMyYzg1NzdkM2Q4MWJiZmI5
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy93bWwuY3NzCkBAIC0xNDcsNiArMTQ3LDcgQEAgaW5wdXRbdHlwZT0icGFzc3dv
cmQiXSB7CiBpbnB1dDotd2Via2l0LWF1dG9maWxsIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
RkFGRkJEICFpbXBvcnRhbnQ7CiAgICAgYmFja2dyb3VuZC1pbWFnZTpub25lICFpbXBvcnRhbnQ7
CisgICAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKIH0KIAogZG86ZGlzYWJsZWQsIHNlbGVj
dDpkaXNhYmxlZCwgb3B0Z3JvdXA6ZGlzYWJsZWQsIG9wdGlvbjpkaXNhYmxlZCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggYmZmMDExYmU2MDU3NjIzYjEzMmNkYTYzMTUxYzU3N2ZjMWNkMDMxNy4uZDVk
NzYyNGJkMzEzZTA2ZjMzYmY4NjU5YjcxNzAxNmRmZDhlMzY3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDExLTAzLTAyICBJbHlhIFNoZXJtYW4gIDxpc2hlcm1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCBmaXhlZCBiYWNrZ3JvdW5k
IGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV2ViVmlldyBfc2V0QXV0b2ZpbGxlZDpmb3JFbGVtZW50OmluQ29udGV4dDpd
KTogV3JhcHBlciBhcm91bmQgSFRNTElucHV0RWxlbWVudDo6c2V0QXV0b2ZpbGxlZC4KKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaDoKKwogMjAxMS0wMi0yNSBTdGV2ZSBCbG9jayA8c3RldmVibG9ja0Bnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCA4ZmIwNmQ2NjQ0ZTc5Y2RlZTBlNWJmYzFhZWNjYTkyMzM2
NDcwNTcwLi41ZTZkYmMyYTAwMGJiZTBkODkwYmZlNWFhODY5OWM4YTFkMzU1MzU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMjcsNiArMTI3LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVUcmVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9HQ0NvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTElucHV0
RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgpA
QCAtNjI0Nyw2ICs2MjQ4LDI3IEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2Fs
bGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiAKIEBlbmQKIAor
QGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU2V0QXV0b2ZpbGxlZCkKKwor
LSAodm9pZClfc2V0QXV0b2ZpbGxlZDooYm9vbClpc0F1dG9maWxsZWQgZm9yRWxlbWVudDooSlNW
YWx1ZVJlZillbGVtZW50IGluQ29udGV4dDooSlNDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgRXhlY1N0YXRlKiBleGVj
ID0gdG9KUyhjb250ZXh0KTsKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIGVsZW1l
bnQpOworICAgIGlmICghanNWYWx1ZS5pbmhlcml0cygmSlNFbGVtZW50OjpzX2luZm8pKQorICAg
ICAgICByZXR1cm47CisKKyAgICBKU0VsZW1lbnQqIGpzRWxlbWVudCA9IHN0YXRpY19jYXN0PEpT
RWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4odG9JbnB1dEVsZW1lbnQo
anNFbGVtZW50LT5pbXBsKCkpKTsKKyAgICBpZiAoIWlucHV0RWxlbWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW5wdXRFbGVtZW50LT5zZXRBdXRvZmlsbGVkKGlzQXV0b2ZpbGxlZCk7Cit9
CisKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlTm9kZXNG
cm9tUmVjdCkKIAogLSAoSlNWYWx1ZVJlZilfbm9kZXNGcm9tUmVjdDooSlNDb250ZXh0UmVmKWNv
bnRleHQgZm9yRG9jdW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUgeDooaW50KXggIHk6KGludCl5IHRv
cDoodW5zaWduZWQpdG9wIHJpZ2h0Oih1bnNpZ25lZClyaWdodCBib3R0b206KHVuc2lnbmVkKWJv
dHRvbSBsZWZ0Oih1bnNpZ25lZClsZWZ0IGlnbm9yZUNsaXBwaW5nOihCT09MKWlnbm9yZUNsaXBw
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA1
NTVjNGQxMTBlZDBiZmM5Y2ZiNjVkYzk2MmYwYjI4MTEwOTcyNzg3Li5hMjMxMDI0NWFkOWIwZDQy
N2NjZGY1MzkyY2RmNjQ1MDI5ODJiNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKQEAgLTE5NCw2ICsxOTQsNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAtICh2b2lkKV9mdWxsU2NyZWVuUmVuZGVyZXJDaGFuZ2VkOihXZWJDb3JlOjpSZW5kZXJCb3gq
KXJlbmRlcmVyOwogI2VuZGlmCiAKLS0gKEpTVmFsdWVSZWYpX2NvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbzooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRWxlbWVudDooSlNWYWx1ZVJl
Zil2YWx1ZTsKLQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IGE0ZWE4MDliMDAxZGJjNmE2NzIzNGYxNzJmMDIwYmMzNGNmN2U4NGMuLjg5NTcx
ODUxYzM0ZWQwMDFhOGZjMzNiNTc3YjQ4NmVkNTVlODU1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTY3Nyw2ICs2NzcsMTAgQEAgQ291bGQgYmUg
d29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtIChKU1ZhbHVlUmVmKV9jb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250ZXh0IGZvckVsZW1lbnQ6KEpTVmFs
dWVSZWYpdmFsdWU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaXZhdGVT
ZXRBdXRvZmlsbGVkKQorLSAodm9pZClfc2V0QXV0b2ZpbGxlZDooYm9vbClpc0F1dG9maWxsZWQg
Zm9yRWxlbWVudDooSlNWYWx1ZVJlZillbGVtZW50IGluQ29udGV4dDooSlNDb250ZXh0UmVmKWNv
bnRleHQ7CitAZW5kCisKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaXZhdGVOb2Rlc0Zy
b21SZWN0KQogLSAoSlNWYWx1ZVJlZilfbm9kZXNGcm9tUmVjdDooSlNDb250ZXh0UmVmKWNvbnRl
eHQgZm9yRG9jdW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUgeDooaW50KXggIHk6KGludCl5IHRvcDoo
dW5zaWduZWQpdG9wIHJpZ2h0Oih1bnNpZ25lZClyaWdodCBib3R0b206KHVuc2lnbmVkKWJvdHRv
bSBsZWZ0Oih1bnNpZ25lZClsZWZ0IGlnbm9yZUNsaXBwaW5nOihCT09MKWlnbm9yZUNsaXBwaW5n
OwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGEyZjEzOTQyOTY0ODc4NTdkZDUwNGQzNjMxNzI3ODFmNzA0ODRiZDQuLmM5OGI3ZjVkNWIw
MjU0NmU3YzYxODhmMDhhY2VjZGU1YzZmY2RmMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wMy0wMiAgSWx5
YSBTaGVybWFuICA8aXNoZXJtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF1dG9maWxsZWQgZm9ybSBlbGVtZW50cyBhcmUg
YXNzaWduZWQgZml4ZWQgYmFja2dyb3VuZCBjb2xvciBidXQgbm90IHRleHQgY29sb3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzgyCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChz
ZXRBdXRvZmlsbGVkQ2FsbGJhY2spOiBBZGRlZDsganVzdCBhIHdyYXBwZXIuCisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKTogQWRkZWQgc2V0QXV0b2ZpbGxl
ZENhbGxiYWNrLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKTogU3R1
YjsgbmVlZHMgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEF1dG9maWxsZWQpOiBXcmFwcGVyIGFyb3VuZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRBdXRv
ZmlsbGVkKCkKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQp
OiBTdHViOyBuZWVkcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBdXRvZmlsbGVkKTogU3R1YjsgbmVlZHMgaW1wbGVtZW50YXRpb24uCisKIDIwMTEt
MDMtMDEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRlc3QgdGhh
dCB0aGUgV2ViS2l0MiByZXNwb25zaXZlbmVzcyB0aW1lciBkb2Vzbid0IGZpcmUgdG9vIGVhcmx5
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
NDE2YjlmY2IxMDg1ZmUxY2Q0ODNmZGQ5MmM2NmQ0YjVkYmE4Njg2ZC4uMzEyMTg1Yzc0ZjI1NjI2
ZjZmMTFhZjI5OTIyZmI5ODFjZWI4NDBmOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTAzOSw2ICsxMDM5LDE4IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwog
fQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBdXRvZmlsbGVkQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KKyAgICBp
ZiAoYXJndW1lbnRDb3VudCAhPSAyIHx8ICFhcmd1bWVudHNbMF0pCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldEF1dG9maWxsZWQo
Y29udGV4dCwgYXJndW1lbnRzWzBdLCBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50
c1sxXSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQor
CiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRDYWNoZU1vZGVsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBNYWMgaW1wbGVtZW50YXRpb24uCkBAIC0yMDky
LDYgKzIxMDQsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Rh
dGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0QXV0aGVudGljYXRpb25QYXNzd29yZCIsIHNl
dEF1dGhlbnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRB
dXRoZW50aWNhdGlvblVzZXJuYW1lIiwgc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwgc2V0
QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJz
ZXRBdXRvZmlsbGVkIiwgc2V0QXV0b2ZpbGxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Q2FjaGVNb2RlbCIsIHNldENhY2hlTW9kZWxD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWxsQ2xvc2VPbldlYlZpZXdzIiwgc2V0
Q2FsbENsb3NlT25XZWJWaWV3c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhbk9w
ZW5XaW5kb3dzIiwgc2V0Q2FuT3BlbldpbmRvd3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOGEyMDUwMDU5MWUxYTQ5
YzdiZmExYjM0YmY3NzI4YmY1MTYxMGI5NS4uOWY5NGIxZmYxYjY1MzliNDk5MzRiMzEyODMxNTE1
NjE2YzI5NTBmZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCkBAIC04OSw2ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11
bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0
QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRBdXRvZmlsbGVk
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCk7CiAg
ICAgdm9pZCBzZXRDYWNoZU1vZGVsKGludCk7CiAgICAgdm9pZCBzZXRDdXN0b21Qb2xpY3lEZWxl
Z2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpOwogICAgIHZvaWQgc2V0RGF0
YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMGJiYWI4
NjdlZmIwMDUzNDNlZGFlOTk5ODk2MmM0YjQ5OGRmZmY2YS4uNWU4YzBlZTgxNWVlOTMyY2UxYTEz
ZGY5ZWMwODk2ZmNkYmY3YzUxNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC00NTQsNiArNDU0LDExIEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wg
ZmxhZykKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIGVsZW1lbnQsIGJv
b2wgaXNBdXRvZmlsbGVkKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZygpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgdGVzdGluZyBmaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzg5NgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGJjOWRiYjdjODI4OWMyYzMzMWZlYThk
MWYxZjVhNjBlMDYxYWQxM2MuLmI5ZmYyYmE4YTFhYmNlZjdiYmIxZDg3ZDQ0Mjg3NTdhNmMxZWQ4
NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0KQEAgLTMyMCw2ICszMjAsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIFtbW21haW5G
cmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQ6
ZmxhZ107CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQp
Cit7CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NldEF1dG9maWxsZWQ6aXNBdXRvZmlsbGVk
IGZvckVsZW1lbnQ6ZWxlbWVudCBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wgc2V0RGVsZWdhdGUs
IGJvb2wgcGVybWlzc2l2ZSkKIHsKICAgICBpZiAoc2V0RGVsZWdhdGUpIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4
IDgwODYyZWIyMWI2YjdiMWY1Yzk2ZjVhOTk3M2QwODBiNDMwY2YzYmUuLmE4M2E0ZDZkNzI0MDFh
ZDNkOGI5ZjMyOTRmNzczZDE2Y2Q4YmJmMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMzc0LDYgKzM3NCwxMSBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZChib29sIGZsYWcpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5h
YmxlZChmbGFnKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxl
ZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3Np
dmUpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCAxMGUxMTA3MTE2
YmQ0YzYzMDFlNjQxY2VkYzdhM2YxM2E2ZjRjNmZhLi5mYTc2NjIxNTc1OGIyN2RjMTNmYzJlNTlh
MDc0NDNkZTI2MGI2MzU2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlv
dXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlv
dXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMjAyLDYgKzIwMiwxMSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAg
ICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50LCBib29sIGlzQXV0
b2ZpbGxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcG9wdXBCbG9ja2luZ0Vu
YWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85433</attachid>
            <date>2011-03-10 20:37:05 -0800</date>
            <delta_ts>2011-03-11 11:38:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48382-20110310203704.patch</filename>
            <type>text/plain</type>
            <size>20641</size>
            <attacher name="Ilya Sherman">isherman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2OTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkY2Y1ZmY0Nzg0N2ZiODgzMjczNmUx
NTdjZTRmOTJhY2MzNmQ0ODU0Li5hMzA0NzI5YTk1YmM3N2NhMmI5YWZkZjkxYTI4MWRmMzJkNDQy
MmZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTAgIElseWEgU2hlcm1hbiAgPGlz
aGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVk
IGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTA5ICBSb2xhbmQg
U3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQ6IHR3ZWFraW5nIG9mIENocm9taXVtIHRlc3RfZXhwZWN0YXRpb25zLnR4dApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzJjMjUwZjNhZTkyNWY3Yzg2MGUwZjZmZTllZjFjMjc4ODdhMjA1ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3RzIHRoYXQgZm9yZWdyb3VuZCBhbmQg
YmFja2dyb3VuZCBjb2xvcnMgcHJvcGVybHkgY2hhbmdlIGZvciBhdXRvZmlsbGVkIGlucHV0cy4g
SXQgY2FuIG9ubHkgYmUgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlLgorCitQQVNTIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYx
YWUzNjAyMGFhMDhlNzBkZDRkZTUwYjY4MTUzYWFmY2I0YmMxNGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbApAQCAtMCwwICsx
LDY1IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIHRmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RmJyk7CisgICAgICAgIHZh
ciBjb21wdXRlZFN0eWxlID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0
Zik7CisgICAgICAgIHZhciBvcmlnaW5hbEZvcmVncm91bmQgPSBjb21wdXRlZFN0eWxlLmNvbG9y
OworICAgICAgICB2YXIgb3JpZ2luYWxCYWNrZ3JvdW5kID0gY29tcHV0ZWRTdHlsZS5iYWNrZ3Jv
dW5kQ29sb3I7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0b2ZpbGxlZCh0ZiwgdHJ1ZSk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBCb3RoIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3Jv
dW5kIGNvbG9ycyBzaG91bGQgY2hhbmdlLgorICAgICAgICBjb21wdXRlZFN0eWxlID0gZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0Zik7CisgICAgICAgIHZhciBhdXRvZmls
bGVkRm9yZWdyb3VuZCA9IGNvbXB1dGVkU3R5bGUuY29sb3I7CisgICAgICAgIHZhciBhdXRvZmls
bGVkQmFja2dyb3VuZCA9IGNvbXB1dGVkU3R5bGUuYmFja2dyb3VuZENvbG9yOworICAgICAgICBp
ZiAoYXV0b2ZpbGxlZEZvcmVncm91bmQgPT0gb3JpZ2luYWxGb3JlZ3JvdW5kKSB7CisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCdGb3JlZ3JvdW5kIGNvbG9yIGRpZCBub3QgY2hhbmdlIHdoZW4gYXV0
b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
YXV0b2ZpbGxlZEJhY2tncm91bmQgPT0gb3JpZ2luYWxCYWNrZ3JvdW5kKSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCdCYWNrZ3JvdW5kIGNvbG9yIGRpZCBub3QgY2hhbmdlIHdoZW4gYXV0b2Zp
bGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldEF1dG9maWxsZWQodGYsIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IENvbG9ycyBzaG91bGQgYmUgcmVzdG9yZWQuCisgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRmKTsKKyAgICAgICAgaWYgKGNvbXB1
dGVkU3R5bGUuY29sb3IgIT0gb3JpZ2luYWxGb3JlZ3JvdW5kKSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCdGb3JlZ3JvdW5kIGNvbG9yIGRpZCBub3QgcmV2ZXJ0IHdoZW4gdW4tYXV0b2ZpbGxl
ZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29tcHV0
ZWRTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgIT0gb3JpZ2luYWxCYWNrZ3JvdW5kKSB7CisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCdCYWNrZ3JvdW5kIGNvbG9yIGRpZCBub3QgcmV2ZXJ0IHdoZW4gdW4t
YXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHRlc3RQYXNzZWQoJycpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKworICAgIDxzdHlsZT4KKyAg
ICAjdGYgeworICAgICAgY29sb3I6ICNGRkZGRkY7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
RkZGRkZGOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0
KCkiPgorICAgIFRoaXMgdGVzdHMgdGhhdCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9y
cyBwcm9wZXJseSBjaGFuZ2UgZm9yIGF1dG9maWxsZWQgaW5wdXRzLiAgSXQgY2FuIG9ubHkgYmUg
cnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlLjxicj4KKyAgICA8Zm9ybSBuYW1lPSJmbSI+CisgICAg
ICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGYiIHZhbHVlPSJGaWVsZCB2YWx1ZSIgLz4KKyAg
ICA8L2Zvcm0+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMzBiMWRjZGRjZGUzODhhZTFjYTljYTNiOWIzNjZmMDI3MzVmN2I2MS4u
ZjBmNmUzMTFlNjA5NzJkY2E0NTUyZjZmNjE0ODFhMjYwODg1MDBhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDExLTAzLTEwICBJbHlhIFNoZXJtYW4gIDxpc2hlcm1hbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCBmaXhlZCBiYWNrZ3JvdW5kIGNv
bG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL2lucHV0LWF1
dG9maWxsZWQuaHRtbAorCisgICAgICAgICogY3NzL2h0bWwuY3NzOgorICAgICAgICAoaW5wdXQ6
LXdlYmtpdC1hdXRvZmlsbCk6IEFkZGVkIGZvcmVncm91bmQgY29sb3I6ICMwMDAwMDAKKyAgICAg
ICAgKiBjc3Mvd21sLmNzczoKKyAgICAgICAgKGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwpOiBBZGRl
ZCBmb3JlZ3JvdW5kIGNvbG9yOiAjMDAwMDAwCisKIDIwMTEtMDMtMDkgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNz
cwppbmRleCA2MTE3OGQwZDk1OGMwZGQ0OWE4ZDRhNWI4ZDBmOWI4YmY0NjIxYmYzLi5iOWJlNTBl
NjMwYTM1OWE3N2U3YzhlYTBjNTVhYzA0ODA5OWFlZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC00
NzYsNiArNDc2LDcgQEAgaW5wdXRbdHlwZT0iZmlsZSJdIHsKIGlucHV0Oi13ZWJraXQtYXV0b2Zp
bGwgewogICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZGQkQgIWltcG9ydGFudDsKICAgICBiYWNr
Z3JvdW5kLWltYWdlOm5vbmUgIWltcG9ydGFudDsKKyAgICBjb2xvcjogIzAwMDAwMCAhaW1wb3J0
YW50OwogfQogCiBpbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3dtbC5jc3MKaW5kZXggNGJjZjA4ZjU2YTkzMWQ0NWU4NzA3MTBkOWMxOGE3ZWZjMzU5N2Q2
ZS4uMzgxNjlmY2EyYTlkNjc1ZmEwOGU2YzJjODU3N2QzZDgxYmJmYjkzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3dtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3dtbC5j
c3MKQEAgLTE0Nyw2ICsxNDcsNyBAQCBpbnB1dFt0eXBlPSJwYXNzd29yZCJdIHsKIGlucHV0Oi13
ZWJraXQtYXV0b2ZpbGwgewogICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZGQkQgIWltcG9ydGFu
dDsKICAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmUgIWltcG9ydGFudDsKKyAgICBjb2xvcjogIzAw
MDAwMCAhaW1wb3J0YW50OwogfQogCiBkbzpkaXNhYmxlZCwgc2VsZWN0OmRpc2FibGVkLCBvcHRn
cm91cDpkaXNhYmxlZCwgb3B0aW9uOmRpc2FibGVkIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0MDhk
YWI1YjI5YWJmNjJlOTBkOGZkZGRhMGY4Njg0YjA2MWEyNzBkLi40Nzc2NmU5MThmNmE1NmY2NTUy
Y2ZlMjc0ZGZjZmY0YTU4YzI3NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDMtMTAgIElseWEgU2hlcm1hbiAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZmlsbGVkIGZv
cm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVkIGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0
ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2ZpbGxl
ZCk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5oOgorCiAyMDExLTAzLTA5ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmNwcAppbmRleCBkZmUzMTkzYTU4MDJjZTg1OGY4YzI5OTZiOTU0YTVjYWM5ZTAwOWY1
Li5kNGQzZGQwZjE4NWJhZWJkMTY1ZWVlNDliYzVlNjEwMzVlZDQxNTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5jcHAKQEAgLTY2Niw2ICs2NjYsMTkgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OnNldE1pbmltdW1UaW1lckludGVydmFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGQKICAgICBjb3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFs
KGludGVydmFsKTsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldEF1dG9m
aWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBh
dXRvZmlsbGVkKQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsK
KyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkp
OworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gdG9JbnB1dEVsZW1lbnQoZWxlbWVudCk7CisgICAgaWYgKCFpbnB1dEVs
ZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihpbnB1dEVsZW1lbnQpLT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOworfQorCiB2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQogewogICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmgKaW5kZXggYmM0NTQ0ZjBlNGRjYzQ0YTljODRiODYzYmYwNjBkZTRmOGVkNmExZS4uN2FkNWFm
NjBlMjk3MGM4M2UyNGM2MjQxZGY4NTllMmE4M2ZhODYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBBdGtPYmplY3QqIGdldEZv
Y3VzZWRBY2Nlc3NpYmxlRWxlbWVudChXZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBBdGtP
YmplY3QqIGdldFJvb3RBY2Nlc3NpYmxlRWxlbWVudChXZWJLaXRXZWJGcmFtZSopOwogICAgIHN0
YXRpYyB2b2lkIGxheW91dEZyYW1lKFdlYktpdFdlYkZyYW1lKik7CisgICAgc3RhdGljIHZvaWQg
c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIGJvb2wpOwogICAgIHN0YXRp
YyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTU3RyaW5n
UmVmKTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA3YzBkODU4
NTViMTQxYjg1NWI0ZGM3YWRhMzE4Y2EzOThhYWYzNDQxLi43NDY4MzdkNjVhOGJjNTU1NWM0ZjYx
YzRjODAwNDg3NzUxZWM4MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTEtMDMtMTAgIElseWEgU2hlcm1hbiAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0g
ZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVkIGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0
IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODM4MgorCisgICAgICAgICogRE9NL1dlYkRPTU9wZXJhdGlvbnMubW06CisgICAgICAgICgtW0RP
TUhUTUxJbnB1dEVsZW1lbnQgX3NldEF1dG9maWxsZWQ6XSk6IEFkZGVkICh3cmFwcGVyKS4KKyAg
ICAgICAgKiBET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaDoKKwogMjAxMS0wMy0wOSAgSmVz
c2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gUm9iZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0
aW9ucy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCmluZGV4
IGVlZTQ5MTk2ZWViOTM4MjE1MDJmMmUwYzdkOGQ2YzJjYmI4NjM5ZTYuLjk3OTQzM2Q2ZWIzZTQz
MjliNzY0YzFhYjQwM2ZiMWQyMzI0ODhlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9XZWJET01PcGVyYXRpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJE
T01PcGVyYXRpb25zLm1tCkBAIC0xOTcsNiArMTk3LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIEBpbXBsZW1lbnRhdGlvbiBET01IVE1MSW5wdXRFbGVtZW50IChXZWJET01IVE1MSW5wdXRF
bGVtZW50T3BlcmF0aW9uc1ByaXZhdGUpCiAKKy0gKHZvaWQpX3NldEF1dG9maWxsZWQ6KEJPT0wp
YXV0b2ZpbGxlZAoreworICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb3JlKChE
T01FbGVtZW50ICopc2VsZikpLT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOworfQorCiAtICh2
b2lkKV9zZXRWYWx1ZUZvclVzZXI6KE5TU3RyaW5nICopdmFsdWUKIHsKICAgICBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oY29yZSgoRE9NRWxlbWVudCAqKXNlbGYpKS0+c2V0VmFsdWVG
b3JVc2VyKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01P
cGVyYXRpb25zUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlv
bnNQcml2YXRlLmgKaW5kZXggZGMxYWFmODMxYzZmNGJlYjlkNDI5YWRkMzY1N2VjYjZmZjM2Zjcy
ZC4uYjU3OWE2Zjg3ZDAxZjE5YTNmM2Y5YzA4OTYyMGU2NDkzZGIyNTJlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgKQEAgLTM5LDYgKzM5
LDcgQEAKIEBlbmQKIAogQGludGVyZmFjZSBET01IVE1MSW5wdXRFbGVtZW50IChXZWJET01IVE1M
SW5wdXRFbGVtZW50T3BlcmF0aW9uc1ByaXZhdGUpCistICh2b2lkKV9zZXRBdXRvZmlsbGVkOihC
T09MKWF1dG9maWxsZWQ7CiAtICh2b2lkKV9zZXRWYWx1ZUZvclVzZXI6KE5TU3RyaW5nICopdmFs
dWU7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMTJjMDY2ODMwNTc2MTdmNDM2ODMzNTE5MmViMWMwN2M1ZTYzN2EwLi43NWYyNzI4
MWIyYTcwNmY5OTg2ZTI0YzdkYzFmMDBjYTQ2NzlhNjE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDMtMTAg
IElseWEgU2hlcm1hbiAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMg
YXJlIGFzc2lnbmVkIGZpeGVkIGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoc2V0QXV0b2ZpbGxlZENhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpM
YXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QXV0b2ZpbGxlZCk6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRBdXRvZmlsbGVkKTogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEF1dG9maWxsZWQpOiBBZGRlZC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRW
YWx1ZUZvclVzZXIpOiBTdHlsZSB0d2Vhay4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEF1dG9maWxsZWQpOiBBZGRlZCAoc3R1YikuCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QXV0b2ZpbGxlZCk6IEFkZGVkIChzdHViKS4KKwogMjAxMS0wMy0wOSAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgSGlkZSBMZWFrcyBWaWV3ZXIn
cyBVUkwgcHJvbXB0IGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAppbmRleCA5ZjE4NzdjMzcxYzA2YjQzZTViMzU0MzJiNjY2YzgxNGJl
OGZiOGJjLi5lZTQyNDdiN2UxNWI2NWNkMTUzZDJkNzg0ZjNjNWM3MDMxYTI1YTljIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDM5LDYg
KzEwMzksMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlMKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEF1dG9maWxs
ZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgIT0gMiB8fCAhYXJndW1lbnRzWzBdKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJv
bGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2
YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRBdXRvZmlsbGVkKGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMV0pKTsK
KworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgc2V0Q2FjaGVNb2RlbENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKICAgICAvLyBIYXMgTWFjIGltcGxlbWVudGF0aW9uLgpAQCAtMjEwNyw2ICsyMTE4
LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0
aW9ucygpCiAgICAgICAgIHsgInNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQiLCBzZXRBdXRoZW50
aWNhdGlvblBhc3N3b3JkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXV0aGVudGlj
YXRpb25Vc2VybmFtZSIsIHNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWVDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCIsIHNldEF1dGhvckFu
ZFVzZXJTdHlsZXNFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0QXV0b2Zp
bGxlZCIsIHNldEF1dG9maWxsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldENhY2hlTW9kZWwiLCBzZXRDYWNoZU1vZGVsQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic2V0Q2FsbENsb3NlT25XZWJWaWV3cyIsIHNldENhbGxDbG9z
ZU9uV2ViVmlld3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYW5PcGVuV2luZG93
cyIsIHNldENhbk9wZW5XaW5kb3dzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDRiMWMwNGUzZjY2OWE5OGMyODA0NDVl
MzViOTFiMTA4OWVjNmQ3NjAuLjkxZGZiZDBlZjMwYWU2OWZkN2Q1ZjVhM2Y1MDMwYWI0NGFmYzA3
OTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAt
ODksNiArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVu
c2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEF1dGhvckFu
ZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKTsKICAgICB2b2lk
IHNldENhY2hlTW9kZWwoaW50KTsKICAgICB2b2lkIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJv
b2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSk7CiAgICAgdm9pZCBzZXREYXRhYmFzZVF1
b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYjg5MWQxZWQy
YWJjOTk3NGZmMDBhNGNiZjdjMTZlMGZjZmY3ZjllNi4uOTRlYmQ4YzFlYmM3ZjhjNzU3ZjRjOTQ4
YzNlZTNkN2ZmYTQ5OTFkNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTM3LDYgKzEzNyw3IEBAIExheW91
dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQog
ICAgIGJpbmRNZXRob2QoInNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyk7
CiAgICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNjZXB0Q29va2llcyIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyk7CiAgICAgYmluZE1ldGhvZCgic2V0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhv
ckFuZFVzZXJTdHlsZXNFbmFibGVkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRBdXRvZmlsbGVkIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKTsKICAgICBiaW5kTWV0aG9kKCJz
ZXRDYW5PcGVuV2luZG93cyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q2FuT3BlbldpbmRv
d3MpOwogICAgIGJpbmRNZXRob2QoInNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0
ZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNv
bXBsZXRlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOwpAQCAtMTYwMiwzICsx
NjAzLDIxIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVy
dmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAgICAgIHJldHVybjsKICAgICBt
X3NoZWxsLT53ZWJWaWV3KCktPnNldHRpbmdzKCktPnNldE1pbmltdW1UaW1lckludGVydmFsKGFy
Z3VtZW50c1swXS50b0RvdWJsZSgpKTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QXV0b2ZpbGxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgIT0gMiB8fCAhYXJndW1lbnRzWzFdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBXZWJFbGVtZW50IGVsZW1lbnQ7CisgICAgaWYgKCFXZWJCaW5kaW5nczo6Z2V0RWxl
bWVudChhcmd1bWVudHNbMF0udmFsdWUub2JqZWN0VmFsdWUsICZlbGVtZW50KSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2ViSW5wdXRFbGVtZW50KiBpbnB1dCA9IHRvV2ViSW5wdXRFbGVtZW50
KCZlbGVtZW50KTsKKyAgICBpZiAoIWlucHV0KQorICAgICAgICByZXR1cm47CisKKyAgICBpbnB1
dC0+c2V0QXV0b2ZpbGxlZChhcmd1bWVudHNbMV0udmFsdWUuYm9vbFZhbHVlKTsKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CmluZGV4IDYxNTAxMzNlMDg2NjBjMmQ5MjZkOWVmOTBkZmQwOWY1NGY5MTRiYmMuLmEyN2ViZjAy
YTQzNWQxMGM4NWQxNzJkYTM4ZmFlNzA2ZmY1ZDdkOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzM3LDYgKzMz
NywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIEV4cGVjdHMgdGhlIGZp
cnN0IGFyZ3VtZW50IHRvIGJlIGFuIGlucHV0IGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQgYXJndW1l
bnQgdG8gYmUgYSBib29sZWFuLgorICAgIC8vIEZvcndhcmRzIHRoZSBzZXRBdXRvZmlsbGVkKCkg
Y2FsbCB0byB0aGUgZWxlbWVudC4KKyAgICB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBtZXRob2RzIGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIHZvaWQgc2V0V29y
a1F1ZXVlRnJvemVuKGJvb2wgZnJvemVuKSB7IG1fd29ya1F1ZXVlLnNldEZyb3plbihmcm96ZW4p
OyB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcAppbmRleCBlNzNlYjQ2MjMyNDQyNzY4ZDUxZjIzOGNhNmI1ZDIwMTkyNDhlZjc1
Li5lNTNhMjY4NWE2ZTBlNGZhMjY4YzY3MjRkZWZmZmI3NWVjMGM5YzU1IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAg
LTQ1OCw2ICs0NTgsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5k
VXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBpc0F1dG9maWxsZWQpCit7CisgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpzZXRBdXRvZmlsbGVkKGNvbnRleHQsIG5vZGVPYmplY3QsIGlz
QXV0b2ZpbGxlZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRpc2FibGVJbWFn
ZUxvYWRpbmcoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHRlc3RpbmcgZml4IGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4OTYKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRl
eCA3MmVjNzU5ODUzMGRlMDE0M2FhNjEwZDFkMjgyNDJlNTNmMDY3NzVjLi4zNGY4N2MwZmZlMTRi
YTgzZmU0NzUyNDdlMmMzYzM5NzI4MThkMWQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0zMjAsNiArMzIwLDE1IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVk
KGJvb2wgZmxhZykKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkOmZsYWddOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5v
ZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKK3sKKyAgICBET01FbGVtZW50ICplbGVtZW50ID0g
W0RPTUVsZW1lbnQgX0RPTUVsZW1lbnRGcm9tSlNDb250ZXh0OmNvbnRleHQgdmFsdWU6bm9kZU9i
amVjdF07CisgICAgaWYgKCFlbGVtZW50IHx8ICFbZWxlbWVudCBpc0tpbmRPZkNsYXNzOltET01I
VE1MSW5wdXRFbGVtZW50IGNsYXNzXV0pCisgICAgICAgIHJldHVybjsKKworICAgIFsoRE9NSFRN
TElucHV0RWxlbWVudCAqKWVsZW1lbnQgX3NldEF1dG9maWxsZWQ6YXV0b2ZpbGxlZF07Cit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wg
c2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSkKIHsKICAgICBpZiAoc2V0RGVsZWdhdGUpIHsK
QEAgLTQ4NCw3ICs0OTMsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZQogICAgIERPTUVsZW1l
bnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRleHQ6Y29udGV4
dCB2YWx1ZTpub2RlT2JqZWN0XTsKICAgICBpZiAoIWVsZW1lbnQgfHwgIVtlbGVtZW50IGlzS2lu
ZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgWyhET01I
VE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBfc2V0VmFsdWVGb3JVc2VyOihOU1N0cmluZyAqKXZh
bHVlQ0YuZ2V0KCldOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMTJhM2E1NWI4YWI2MjZkODIwMGNjMTQzNThk
ZjI4OWYwMjY2MTgyMS4uOTk4ODBjZTE3YzUwYzUyN2MxMzdlY2IzMWRkYTA3YTFlNTJjZTgzNCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCkBAIC0zNzQsNiArMzc0LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBwcmVmc1ByaXZh
dGUtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGZsYWcpOwogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBl
bGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJv
b2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+
IHdlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwCmluZGV4IGE5NWFhNTA1YWQ3Y2RkM2RhMDVmYzc4OTZlZDhiZmQ3MDhmODk1
ODAuLjk3YjA5MTAyMTkyNjY4MDA5ZTEzNzdlZGE2NDEzNjc2YjJjOTg5MmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0y
MDcsNiArMjA3LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVkKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2lu
Z0VuYWJsZWQoYm9vbCBwb3B1cEJsb2NraW5nRW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85501</attachid>
            <date>2011-03-11 11:38:05 -0800</date>
            <delta_ts>2011-03-11 13:56:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48382-20110311113803.patch</filename>
            <type>text/plain</type>
            <size>20673</size>
            <attacher name="Ilya Sherman">isherman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA4NjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMTU2OTlkZmU3NjkwMGY5NzFiMWM2
OTY1NzE4MGRmYWU2NWI4OTc2Li45ZGRmNmZmYWRhNDU2YjgwMzJmOTM1YzAzN2JiY2JmZTJlNzM2
YjAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIElseWEgU2hlcm1hbiAgPGlz
aGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVk
IGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTA4ICBEaW1pdHJp
IEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1h
dXRvZmlsbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0
b2ZpbGxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjMjUwZjNhZTkyNWY3Yzg2MGUwZjZm
ZTllZjFjMjc4ODdhMjA1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRl
c3RzIHRoYXQgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgcHJvcGVybHkgY2hhbmdl
IGZvciBhdXRvZmlsbGVkIGlucHV0cy4gSXQgY2FuIG9ubHkgYmUgcnVuIHVzaW5nIER1bXBSZW5k
ZXJUcmVlLgorCitQQVNTIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LWF1dG9maWxsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2Zp
bGxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYWUzNjAyMGFhMDhlNzBkZDRkZTUwYjY4MTUzYWFmY2I0
YmMxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1
dG9maWxsZWQuaHRtbApAQCAtMCwwICsxLDY1IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQ+CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRmID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RmJyk7CisgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0Zik7CisgICAgICAgIHZhciBvcmlnaW5hbEZvcmVncm91
bmQgPSBjb21wdXRlZFN0eWxlLmNvbG9yOworICAgICAgICB2YXIgb3JpZ2luYWxCYWNrZ3JvdW5k
ID0gY29tcHV0ZWRTdHlsZS5iYWNrZ3JvdW5kQ29sb3I7CisKKyAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0QXV0b2ZpbGxlZCh0ZiwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCb3RoIHRo
ZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBzaG91bGQgY2hhbmdlLgorICAgICAg
ICBjb21wdXRlZFN0eWxlID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0
Zik7CisgICAgICAgIHZhciBhdXRvZmlsbGVkRm9yZWdyb3VuZCA9IGNvbXB1dGVkU3R5bGUuY29s
b3I7CisgICAgICAgIHZhciBhdXRvZmlsbGVkQmFja2dyb3VuZCA9IGNvbXB1dGVkU3R5bGUuYmFj
a2dyb3VuZENvbG9yOworICAgICAgICBpZiAoYXV0b2ZpbGxlZEZvcmVncm91bmQgPT0gb3JpZ2lu
YWxGb3JlZ3JvdW5kKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdGb3JlZ3JvdW5kIGNvbG9y
IGRpZCBub3QgY2hhbmdlIHdoZW4gYXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAoYXV0b2ZpbGxlZEJhY2tncm91bmQgPT0gb3JpZ2luYWxC
YWNrZ3JvdW5kKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdCYWNrZ3JvdW5kIGNvbG9yIGRp
ZCBub3QgY2hhbmdlIHdoZW4gYXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQodGYsIGZhbHNlKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIENvbG9ycyBzaG91bGQgYmUgcmVzdG9yZWQuCisgICAg
ICAgIGNvbXB1dGVkU3R5bGUgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KHRmKTsKKyAgICAgICAgaWYgKGNvbXB1dGVkU3R5bGUuY29sb3IgIT0gb3JpZ2luYWxGb3JlZ3Jv
dW5kKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdGb3JlZ3JvdW5kIGNvbG9yIGRpZCBub3Qg
cmV2ZXJ0IHdoZW4gdW4tYXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoY29tcHV0ZWRTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgIT0gb3JpZ2lu
YWxCYWNrZ3JvdW5kKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdCYWNrZ3JvdW5kIGNvbG9y
IGRpZCBub3QgcmV2ZXJ0IHdoZW4gdW4tYXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3RQYXNzZWQoJycpOworICAgIH0KKyAgICA8L3Nj
cmlwdD4KKworICAgIDxzdHlsZT4KKyAgICAjdGYgeworICAgICAgY29sb3I6ICNGRkZGRkY7Cisg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorICAgIFRoaXMgdGVzdHMgdGhhdCBmb3JlZ3Jv
dW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBwcm9wZXJseSBjaGFuZ2UgZm9yIGF1dG9maWxsZWQg
aW5wdXRzLiAgSXQgY2FuIG9ubHkgYmUgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlLjxicj4KKyAg
ICA8Zm9ybSBuYW1lPSJmbSI+CisgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGYiIHZh
bHVlPSJGaWVsZCB2YWx1ZSIgLz4KKyAgICA8L2Zvcm0+CisgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgwYjk4MmE5ODk1ZmQ3Zjk4
OWI2MDAyMDA2MjJjN2FlNjFlNTgwZC4uODE5ZmQ4MzIwNWEwZWNiODE1NjJhMmYxMTg1NTE0Nzdm
MWNmZmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTExICBJbHlhIFNo
ZXJtYW4gIDxpc2hlcm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3Np
Z25lZCBmaXhlZCBiYWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICBU
ZXN0OiBmYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAorCisgICAgICAgICogY3NzL2h0
bWwuY3NzOgorICAgICAgICAoaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCk6IEFkZGVkIGZvcmVncm91
bmQgY29sb3I6ICMwMDAwMDAKKyAgICAgICAgKiBjc3Mvd21sLmNzczoKKyAgICAgICAgKGlucHV0
Oi13ZWJraXQtYXV0b2ZpbGwpOiBBZGRlZCBmb3JlZ3JvdW5kIGNvbG9yOiAjMDAwMDAwCisKIDIw
MTEtMDMtMDkgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRt
bC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKaW5kZXggNjExNzhkMGQ5NThjMGRk
NDlhOGQ0YTViOGQwZjliOGJmNDYyMWJmMy4uYjliZTUwZTYzMGEzNTlhNzdlN2M4ZWEwYzU1YWMw
NDgwOTlhZWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNDc2LDYgKzQ3Niw3IEBAIGlucHV0W3R5
cGU9ImZpbGUiXSB7CiBpbnB1dDotd2Via2l0LWF1dG9maWxsIHsKICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiAjRkFGRkJEICFpbXBvcnRhbnQ7CiAgICAgYmFja2dyb3VuZC1pbWFnZTpub25lICFpbXBv
cnRhbnQ7CisgICAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKIH0KIAogaW5wdXRbdHlwZT0i
cmFkaW8iXSwgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3Mvd21sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzCmluZGV4IDRiY2Yw
OGY1NmE5MzFkNDVlODcwNzEwZDljMThhN2VmYzM1OTdkNmUuLjM4MTY5ZmNhMmE5ZDY3NWZhMDhl
NmMyYzg1NzdkM2Q4MWJiZmI5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwu
Y3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzCkBAIC0xNDcsNiArMTQ3LDcgQEAg
aW5wdXRbdHlwZT0icGFzc3dvcmQiXSB7CiBpbnB1dDotd2Via2l0LWF1dG9maWxsIHsKICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiAjRkFGRkJEICFpbXBvcnRhbnQ7CiAgICAgYmFja2dyb3VuZC1pbWFn
ZTpub25lICFpbXBvcnRhbnQ7CisgICAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKIH0KIAog
ZG86ZGlzYWJsZWQsIHNlbGVjdDpkaXNhYmxlZCwgb3B0Z3JvdXA6ZGlzYWJsZWQsIG9wdGlvbjpk
aXNhYmxlZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNDNjNzRmM2EwN2M2MjNkZjg3NDFhN2UxZmU5
YTU0ZDcwZGM0OTEyMy4uMTM4NzdjNWZjZTlmNjA3NjA2MjUwM2NlZjQ1Yzc3NGUxNWE4NmY0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTAzLTExICBJbHlhIFNoZXJt
YW4gIDxpc2hlcm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3NpZ25l
ZCBmaXhlZCBiYWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldEF1dG9maWxsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKwogMjAxMS0wMy0xMSAg
TWFyY28gUGVlcmVib29tICA8bWFyY29AcGVlcmVib29tLnVzPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4
IGYwMDAwYjg0NzgwOGY0NDEyNjQyNzY5ZDRkZjVhOTU4NjE3YWU2MTIuLjg3NzVmNzkxNmMxNDJk
YzI1M2IzOWUxMjE0YjcyZTIyMjIwNjZhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApA
QCAtNjY2LDYgKzY2NiwxOSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZAogICAgIGNvcmUod2Vi
VmlldyktPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOwogfQog
Cit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpCit7Cisg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0KSk7CisgICAgaWYgKCFlbGVt
ZW50KQorICAgICAgICByZXR1cm47CisgICAgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBl
bGVtZW50LT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghaW5wdXRFbGVtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaW5wdXRFbGVt
ZW50KS0+c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKIHsKICAgICBKU0M6OkV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IGJjNDU0
NGYwZTRkY2M0NGE5Yzg0Yjg2M2JmMDYwZGU0ZjhlZDZhMWUuLjdhZDVhZjYwZTI5NzBjODNlMjRj
NjI0MWRmODU5ZTJhODNmYTg2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC04NCw2ICs4
NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRGb2N1c2VkQWNjZXNzaWJs
ZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRSb290
QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBsYXlv
dXRGcmFtZShXZWJLaXRXZWJGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQo
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1
ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZik7CiAKICAgICAv
LyBXZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNjc2NTM0ZDlkMDdiMWQzODBlNDU3
ZDczOTFkZTlhMDhhZTAyMmViZi4uZjliYzY2MGYzODI1YjE5ZGNmNjFmZTQxMzM1NzdjNWNhY2Yx
NzkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTAzLTExICBJbHlh
IFNoZXJtYW4gIDxpc2hlcm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBh
c3NpZ25lZCBmaXhlZCBiYWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAg
ICAqIERPTS9XZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW5wdXRFbGVt
ZW50IF9zZXRBdXRvZmlsbGVkOl0pOiBBZGRlZCAod3JhcHBlcikuCisgICAgICAgICogRE9NL1dl
YkRPTU9wZXJhdGlvbnNQcml2YXRlLmg6CisKIDIwMTEtMDMtMTAgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQppbmRleCBlZWU0OTE5NmVl
YjkzODIxNTAyZjJlMGM3ZDhkNmMyY2JiODYzOWU2Li45Nzk0MzNkNmViM2U0MzI5Yjc2NGMxYWI0
MDNmYjFkMjMyNDg4ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9N
T3BlcmF0aW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9u
cy5tbQpAQCAtMTk3LDYgKzE5NywxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBAaW1wbGVt
ZW50YXRpb24gRE9NSFRNTElucHV0RWxlbWVudCAoV2ViRE9NSFRNTElucHV0RWxlbWVudE9wZXJh
dGlvbnNQcml2YXRlKQogCistICh2b2lkKV9zZXRBdXRvZmlsbGVkOihCT09MKWF1dG9maWxsZWQK
K3sKKyAgICBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY29yZSgoRE9NRWxlbWVudCAq
KXNlbGYpKS0+c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKK30KKwogLSAodm9pZClfc2V0VmFs
dWVGb3JVc2VyOihOU1N0cmluZyAqKXZhbHVlCiB7CiAgICAgc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KGNvcmUoKERPTUVsZW1lbnQgKilzZWxmKSktPnNldFZhbHVlRm9yVXNlcih2YWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5o
CmluZGV4IGRjMWFhZjgzMWM2ZjRiZWI5ZDQyOWFkZDM2NTdlY2I2ZmYzNmY3MmQuLmI1NzlhNmY4
N2QwMWYxOWEzZjNmOWMwODk2MjBlNjQ5M2RiMjUyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oCkBAIC0zOSw2ICszOSw3IEBACiBAZW5k
CiAKIEBpbnRlcmZhY2UgRE9NSFRNTElucHV0RWxlbWVudCAoV2ViRE9NSFRNTElucHV0RWxlbWVu
dE9wZXJhdGlvbnNQcml2YXRlKQorLSAodm9pZClfc2V0QXV0b2ZpbGxlZDooQk9PTClhdXRvZmls
bGVkOwogLSAodm9pZClfc2V0VmFsdWVGb3JVc2VyOihOU1N0cmluZyAqKXZhbHVlOwogQGVuZAog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTBm
Mjg4ZDA4Zjc4NTA5NWMwYzU1NzRlNDA2NmU2NTllZDhjMmQ1ZS4uZTA2NDFmYzcyYmI4MGI3M2U0
ZDI5NDRiYzIwYTFmYzUwOWFjNDVmMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTAzLTExICBJbHlhIFNoZXJt
YW4gIDxpc2hlcm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3NpZ25l
ZCBmaXhlZCBiYWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldEF1dG9m
aWxsZWRDYWxsYmFjayk6IEFkZGVkLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0
YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENv
bnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQp
OiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxl
ZCk6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVk
KTogQWRkZWQuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2Vy
KTogU3R5bGUgdHdlYWsuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRv
ZmlsbGVkKTogQWRkZWQgKHN0dWIpLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91
dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEF1dG9maWxsZWQpOiBBZGRlZCAoc3R1YikuCisKIDIwMTEtMDMtMTEgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gdmlldyBhbGwg
bGVha3MgZnJvbSBhIGJ1aWxkIGF0IG9uY2UgaW4gTGVha3MgVmlld2VyCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOWYxODc3YzM3MWMwNmI0
M2U1YjM1NDMyYjY2NmM4MTRiZThmYjhiYy4uZWU0MjQ3YjdlMTViNjVjZDE1M2QyZDc4NGYzYzVj
NzAzMWEyNWE5YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcApAQCAtMTAzOSw2ICsxMDM5LDE3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEF1dGhv
ckFuZFVzZXJTdHlsZXNFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNW
YWx1ZVJlZiBzZXRBdXRvZmlsbGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDIgfHwgIWFyZ3VtZW50c1swXSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxl
cio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0
QXV0b2ZpbGxlZChjb250ZXh0LCBhcmd1bWVudHNbMF0sIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4
dCwgYXJndW1lbnRzWzFdKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldENhY2hlTW9kZWxDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIE1hYyBpbXBsZW1lbnRhdGlv
bi4KQEAgLTIxMDcsNiArMjExOCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250
cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRBdXRoZW50aWNhdGlvblBh
c3N3b3JkIiwgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUiLCBzZXRBdXRoZW50aWNhdGlvblVzZXJu
YW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWQiLCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgICAgIHsgInNldEF1dG9maWxsZWQiLCBzZXRBdXRvZmlsbGVkQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWNoZU1vZGVsIiwgc2V0
Q2FjaGVNb2RlbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhbGxDbG9zZU9uV2Vi
Vmlld3MiLCBzZXRDYWxsQ2xvc2VPbldlYlZpZXdzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0Q2FuT3BlbldpbmRvd3MiLCBzZXRDYW5PcGVuV2luZG93c0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA0YjFj
MDRlM2Y2NjlhOThjMjgwNDQ1ZTM1YjkxYjEwODllYzZkNzYwLi45MWRmYmQwZWYzMGFlNjlmZDdk
NWY1YTNmNTAzMGFiNDRhZmMwNzkwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBw
Q2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAg
ICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNl
dEF1dG9maWxsZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0
b2ZpbGxlZCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKGludCk7CiAgICAgdm9pZCBzZXRDdXN0
b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpOwogICAg
IHZvaWQgc2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDFkYjczNzA1YTQyZjc2NDA5MGIzMDEwOGU3MWUzMzgxYmNjODdlODkuLjRhN2Ji
MGRkNGE5Yjc4ZDEzZjNhYjdjZjc0NmIyZmQ3OGE4Mjg2NjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEz
Nyw2ICsxMzcsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIo
VGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHMpOwogICAgIGJpbmRNZXRob2QoInNldEFsd2F5c0FjY2VwdENvb2tp
ZXMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMpOwogICAg
IGJpbmRNZXRob2QoInNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCk7CisgICAgYmluZE1ldGhv
ZCgic2V0QXV0b2ZpbGxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZCk7
CiAgICAgYmluZE1ldGhvZCgic2V0Q2FuT3BlbldpbmRvd3MiLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldENhbk9wZW5XaW5kb3dzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmlu
Z1dpbmRvd3NXaGVuQ29tcGxldGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldENsb3NlUmVt
YWluaW5nV2luZG93c1doZW5Db21wbGV0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0Q3VzdG9tUG9s
aWN5RGVsZWdhdGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGVn
YXRlKTsKQEAgLTE2MjAsMyArMTYyMSwyMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRWYWx1ZUZvclVzZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcAogCiAg
ICAgaW5wdXQtPnNldFZhbHVlKGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pLCB0
cnVlKTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZChjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IHJlc3VsdC0+c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMiB8fCAh
YXJndW1lbnRzWzFdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJFbGVtZW50
IGVsZW1lbnQ7CisgICAgaWYgKCFXZWJCaW5kaW5nczo6Z2V0RWxlbWVudChhcmd1bWVudHNbMF0u
dmFsdWUub2JqZWN0VmFsdWUsICZlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2Vi
SW5wdXRFbGVtZW50KiBpbnB1dCA9IHRvV2ViSW5wdXRFbGVtZW50KCZlbGVtZW50KTsKKyAgICBp
ZiAoIWlucHV0KQorICAgICAgICByZXR1cm47CisKKyAgICBpbnB1dC0+c2V0QXV0b2ZpbGxlZChh
cmd1bWVudHNbMV0udmFsdWUuYm9vbFZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDNkYjNiNTNmMWYz
OTcyNGU3YThlMjRmODY4YTJiNjJlNjUwNjA3Y2EuLmJkMTgyN2VmZWRjNGRjOGE0MTMwYTMzZjhi
YTIxNWY4MWU0ZTEyZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzQxLDYgKzM0MSwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gRm9yd2FyZHMgdGhlIHNldFZhbHVlRm9yVXNlcigpIGNhbGwgdG8gdGhlIGVsZW1lbnQu
CiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCisgICAgLy8gRXhwZWN0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gaW5w
dXQgZWxlbWVudCBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBhIGJvb2xlYW4uCisgICAg
Ly8gRm9yd2FyZHMgdGhlIHNldEF1dG9maWxsZWQoKSBjYWxsIHRvIHRoZSBlbGVtZW50LgorICAg
IHZvaWQgc2V0QXV0b2ZpbGxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CisKIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5vdCBleHBvc2Vk
IHRvIEphdmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9vbCBmcm96ZW4p
IHsgbV93b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGU3M2ViNDYy
MzI0NDI3NjhkNTFmMjM4Y2E2YjVkMjAxOTI0OGVmNzUuLmU1M2EyNjg1YTZlMGU0ZmEyNjhjNjcy
NGRlZmZmYjc1ZWMwYzljNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDU4LDYgKzQ1OCwxMSBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZs
YWcpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBi
b29sIGlzQXV0b2ZpbGxlZCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldEF1
dG9maWxsZWQoY29udGV4dCwgbm9kZU9iamVjdCwgaXNBdXRvZmlsbGVkKTsKK30KKwogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZygpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgdGVzdGluZyBmaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzg5NgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDcyZWM3NTk4NTMwZGUwMTQzYWE2MTBk
MWQyODI0MmU1M2YwNjc3NWMuLjM0Zjg3YzBmZmUxNGJhODNmZTQ3NTI0N2UyYzNjMzk3MjgxOGQx
ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0KQEAgLTMyMCw2ICszMjAsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIFtbW21haW5G
cmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQ6
ZmxhZ107CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVk
KQoreworICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZy
b21KU0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKKyAgICBpZiAoIWVsZW1lbnQg
fHwgIVtlbGVtZW50IGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgWyhET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBf
c2V0QXV0b2ZpbGxlZDphdXRvZmlsbGVkXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJtaXNz
aXZlKQogewogICAgIGlmIChzZXREZWxlZ2F0ZSkgewpAQCAtNDg0LDcgKzQ5Myw3IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNWYWx1ZVJlZiBub2RlCiAgICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50
IF9ET01FbGVtZW50RnJvbUpTQ29udGV4dDpjb250ZXh0IHZhbHVlOm5vZGVPYmplY3RdOwogICAg
IGlmICghZWxlbWVudCB8fCAhW2VsZW1lbnQgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxl
bWVudCBjbGFzc11dKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHZhbHVlQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgdmFsdWUpKTsKICAgICBbKERPTUhUTUxJbnB1dEVsZW1lbnQgKillbGVtZW50
IF9zZXRWYWx1ZUZvclVzZXI6KE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKV07CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApp
bmRleCAxMmEzYTU1YjhhYjYyNmQ4MjAwY2MxNDM1OGRmMjg5ZjAyNjYxODIxLi45OTg4MGNlMTdj
NTBjNTI3YzEzN2VjYjMxZGRhMDdhMWU1MmNlODM0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTM3NCw2ICszNzQs
MTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWQoYm9vbCBmbGFnKQogICAgIHByZWZzUHJpdmF0ZS0+c2V0QXV0aG9yQW5kVXNlclN0eWxl
c0VuYWJsZWQoZmxhZyk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9m
aWxsZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVk
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJt
aXNzaXZlKQogewogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggYTk1YWE1
MDVhZDdjZGQzZGEwNWZjNzg5NmVkOGJmZDcwOGY4OTU4MC4uOTdiMDkxMDIxOTI2NjgwMDllMTM3
N2VkYTY0MTM2NzZiMmM5ODkyZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
TGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
TGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTIwNyw2ICsyMDcsMTEgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFn
KQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZWxlbWVudCwgYm9vbCBp
c0F1dG9maWxsZWQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIHBvcHVwQmxvY2tp
bmdFbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85529</attachid>
            <date>2011-03-11 13:57:01 -0800</date>
            <delta_ts>2011-03-14 15:33:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48382-20110311135700.patch</filename>
            <type>text/plain</type>
            <size>21502</size>
            <attacher name="Ilya Sherman">isherman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA4NjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMTU2OTlkZmU3NjkwMGY5NzFiMWM2
OTY1NzE4MGRmYWU2NWI4OTc2Li4zMjZiNTM5MmQ5OTM3MGNlYWIzYjA5MDE5YjU3OWU3N2RmNTc2
MDA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTEgIElseWEgU2hlcm1hbiAgPGlz
aGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVk
IGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MS0wMy0wOCAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYzI1MGYz
YWU5MjVmN2M4NjBlMGY2ZmU5ZWYxYzI3ODg3YTIwNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3Jz
IHByb3Blcmx5IGNoYW5nZSBmb3IgYXV0b2ZpbGxlZCBpbnB1dHMuIEl0IGNhbiBvbmx5IGJlIHJ1
biB1c2luZyBEdW1wUmVuZGVyVHJlZS4KKworUEFTUyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWFlMzYwMjBhYTA4ZTcwZGQ0
ZGU1MGI2ODE1M2FhZmNiNGJjMTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPGh0bWw+Cis8
aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0ZiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZicpOworICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9
IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGYpOworICAgICAgICB2YXIg
b3JpZ2luYWxGb3JlZ3JvdW5kID0gY29tcHV0ZWRTdHlsZS5jb2xvcjsKKyAgICAgICAgdmFyIG9y
aWdpbmFsQmFja2dyb3VuZCA9IGNvbXB1dGVkU3R5bGUuYmFja2dyb3VuZENvbG9yOworCisgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQodGYsIHRydWUpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gQm90aCB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgc2hvdWxk
IGNoYW5nZS4KKyAgICAgICAgY29tcHV0ZWRTdHlsZSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUodGYpOworICAgICAgICB2YXIgYXV0b2ZpbGxlZEZvcmVncm91bmQgPSBj
b21wdXRlZFN0eWxlLmNvbG9yOworICAgICAgICB2YXIgYXV0b2ZpbGxlZEJhY2tncm91bmQgPSBj
b21wdXRlZFN0eWxlLmJhY2tncm91bmRDb2xvcjsKKyAgICAgICAgaWYgKGF1dG9maWxsZWRGb3Jl
Z3JvdW5kID09IG9yaWdpbmFsRm9yZWdyb3VuZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgn
Rm9yZWdyb3VuZCBjb2xvciBkaWQgbm90IGNoYW5nZSB3aGVuIGF1dG9maWxsZWQuJyk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG9maWxsZWRCYWNrZ3Jv
dW5kID09IG9yaWdpbmFsQmFja2dyb3VuZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnQmFj
a2dyb3VuZCBjb2xvciBkaWQgbm90IGNoYW5nZSB3aGVuIGF1dG9maWxsZWQuJyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRvZmls
bGVkKHRmLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb2xvcnMgc2hvdWxkIGJl
IHJlc3RvcmVkLgorICAgICAgICBjb21wdXRlZFN0eWxlID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZSh0Zik7CisgICAgICAgIGlmIChjb21wdXRlZFN0eWxlLmNvbG9yICE9
IG9yaWdpbmFsRm9yZWdyb3VuZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnRm9yZWdyb3Vu
ZCBjb2xvciBkaWQgbm90IHJldmVydCB3aGVuIHVuLWF1dG9maWxsZWQuJyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbXB1dGVkU3R5bGUuYmFja2dyb3Vu
ZENvbG9yICE9IG9yaWdpbmFsQmFja2dyb3VuZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgn
QmFja2dyb3VuZCBjb2xvciBkaWQgbm90IHJldmVydCB3aGVuIHVuLWF1dG9maWxsZWQuJyk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0ZXN0UGFzc2VkKCcnKTsK
KyAgICB9CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c3R5bGU+CisgICAgI3RmIHsKKyAgICAgIGNv
bG9yOiAjRkZGRkZGOworICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKKyAgICB9Cisg
ICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKyAgICBUaGlzIHRl
c3RzIHRoYXQgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgcHJvcGVybHkgY2hhbmdl
IGZvciBhdXRvZmlsbGVkIGlucHV0cy4gIEl0IGNhbiBvbmx5IGJlIHJ1biB1c2luZyBEdW1wUmVu
ZGVyVHJlZS48YnI+CisgICAgPGZvcm0gbmFtZT0iZm0iPgorICAgICAgICA8aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9InRmIiB2YWx1ZT0iRmllbGQgdmFsdWUiIC8+CisgICAgPC9mb3JtPgorICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmls
bGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODU1OWZkNzA5OTY3ZjJjZmJkOGE1OTk0YmIw
OWUwODNkZTljYjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CitUaGlzIHRlc3RzIHRoYXQgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgcHJvcGVy
bHkgY2hhbmdlIGZvciBhdXRvZmlsbGVkIGlucHV0cy4gSXQgY2FuIG9ubHkgYmUgcnVuIHVzaW5n
IER1bXBSZW5kZXJUcmVlLgorCitGQUlMIEZvcmVncm91bmQgY29sb3IgZGlkIG5vdCBjaGFuZ2Ug
d2hlbiBhdXRvZmlsbGVkLgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgwYjk4MmE5ODk1ZmQ3Zjk4OWI2MDAy
MDA2MjJjN2FlNjFlNTgwZC4uODE5ZmQ4MzIwNWEwZWNiODE1NjJhMmYxMTg1NTE0NzdmMWNmZmJk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTExICBJbHlhIFNoZXJtYW4g
IDxpc2hlcm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCBm
aXhlZCBiYWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICBUZXN0OiBm
YXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAorCisgICAgICAgICogY3NzL2h0bWwuY3Nz
OgorICAgICAgICAoaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCk6IEFkZGVkIGZvcmVncm91bmQgY29s
b3I6ICMwMDAwMDAKKyAgICAgICAgKiBjc3Mvd21sLmNzczoKKyAgICAgICAgKGlucHV0Oi13ZWJr
aXQtYXV0b2ZpbGwpOiBBZGRlZCBmb3JlZ3JvdW5kIGNvbG9yOiAjMDAwMDAwCisKIDIwMTEtMDMt
MDkgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKaW5kZXggNjExNzhkMGQ5NThjMGRkNDlhOGQ0
YTViOGQwZjliOGJmNDYyMWJmMy4uYjliZTUwZTYzMGEzNTlhNzdlN2M4ZWEwYzU1YWMwNDgwOTlh
ZWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNDc2LDYgKzQ3Niw3IEBAIGlucHV0W3R5cGU9ImZp
bGUiXSB7CiBpbnB1dDotd2Via2l0LWF1dG9maWxsIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
RkFGRkJEICFpbXBvcnRhbnQ7CiAgICAgYmFja2dyb3VuZC1pbWFnZTpub25lICFpbXBvcnRhbnQ7
CisgICAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKIH0KIAogaW5wdXRbdHlwZT0icmFkaW8i
XSwgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3Mvd21sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzCmluZGV4IDRiY2YwOGY1NmE5
MzFkNDVlODcwNzEwZDljMThhN2VmYzM1OTdkNmUuLjM4MTY5ZmNhMmE5ZDY3NWZhMDhlNmMyYzg1
NzdkM2Q4MWJiZmI5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzCkBAIC0xNDcsNiArMTQ3LDcgQEAgaW5wdXRb
dHlwZT0icGFzc3dvcmQiXSB7CiBpbnB1dDotd2Via2l0LWF1dG9maWxsIHsKICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjRkFGRkJEICFpbXBvcnRhbnQ7CiAgICAgYmFja2dyb3VuZC1pbWFnZTpub25l
ICFpbXBvcnRhbnQ7CisgICAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKIH0KIAogZG86ZGlz
YWJsZWQsIHNlbGVjdDpkaXNhYmxlZCwgb3B0Z3JvdXA6ZGlzYWJsZWQsIG9wdGlvbjpkaXNhYmxl
ZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNDNjNzRmM2EwN2M2MjNkZjg3NDFhN2UxZmU5YTU0ZDcw
ZGM0OTEyMy4uMTM4NzdjNWZjZTlmNjA3NjA2MjUwM2NlZjQ1Yzc3NGUxNWE4NmY0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTAzLTExICBJbHlhIFNoZXJtYW4gIDxp
c2hlcm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCBmaXhl
ZCBiYWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnNldEF1dG9maWxsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKwogMjAxMS0wMy0xMSAgTWFyY28g
UGVlcmVib29tICA8bWFyY29AcGVlcmVib29tLnVzPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1
c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IGYwMDAw
Yjg0NzgwOGY0NDEyNjQyNzY5ZDRkZjVhOTU4NjE3YWU2MTIuLjBjZTk4NzZkMTdjMTQwMWY5ZjAy
MTVlZGZmNjcwZmE4MDg2OWVlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKQEAgLTY2Niw2ICs2NjcsMTkgQEAgdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1pbmltdW1UaW1lckludGVydmFsKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGQKICAgICBjb3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpLT5zZXRNaW5E
T01UaW1lckludGVydmFsKGludGVydmFsKTsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjb250ZXh0KTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhl
Yywgbm9kZU9iamVjdCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAg
IElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsK
KyAgICBpZiAoIWlucHV0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGlucHV0RWxlbWVudCktPnNldEF1dG9maWxsZWQoYXV0b2Zp
bGxlZCk7Cit9CisKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRWYWx1ZUZvclVz
ZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdS
ZWYgdmFsdWUpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCBiYzQ1NDRmMGU0ZGNjNDRhOWM4NGI4NjNiZjA2MGRl
NGY4ZWQ2YTFlLi43YWQ1YWY2MGUyOTcwYzgzZTI0YzYyNDFkZjg1OWUyYTgzZmE4NjA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEF0a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdlYkZyYW1lKik7
CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9vdEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdl
YkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgbGF5b3V0RnJhbWUoV2ViS2l0V2ViRnJhbWUqKTsK
KyAgICBzdGF0aWMgdm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwg
Ym9vbCk7CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiwgSlNTdHJpbmdSZWYpOwogCiAgICAgLy8gV2ViS2l0V2ViVmlldwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDY3NjUzNGQ5ZDA3YjFkMzgwZTQ1N2Q3MzkxZGU5YTA4YWUwMjJlYmYuLmY5YmM2
NjBmMzgyNWIxOWRjZjYxZmU0MTMzNTc3YzVjYWNmMTc5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMS0wMy0xMSAgSWx5YSBTaGVybWFuICA8aXNoZXJtYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEF1dG9maWxsZWQgZm9ybSBlbGVtZW50cyBhcmUgYXNzaWduZWQgZml4ZWQgYmFja2dyb3VuZCBj
b2xvciBidXQgbm90IHRleHQgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ4MzgyCisKKyAgICAgICAgKiBET00vV2ViRE9NT3BlcmF0aW9ucy5t
bToKKyAgICAgICAgKC1bRE9NSFRNTElucHV0RWxlbWVudCBfc2V0QXV0b2ZpbGxlZDpdKTogQWRk
ZWQgKHdyYXBwZXIpLgorICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oOgor
CiAyMDExLTAzLTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRP
TU9wZXJhdGlvbnMubW0KaW5kZXggZWVlNDkxOTZlZWI5MzgyMTUwMmYyZTBjN2Q4ZDZjMmNiYjg2
MzllNi4uOTc5NDMzZDZlYjNlNDMyOWI3NjRjMWFiNDAzZmIxZDIzMjQ4OGVmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0KQEAgLTE5Nyw2ICsxOTcsMTEgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxJbnB1dEVsZW1l
bnQgKFdlYkRPTUhUTUxJbnB1dEVsZW1lbnRPcGVyYXRpb25zUHJpdmF0ZSkKIAorLSAodm9pZClf
c2V0QXV0b2ZpbGxlZDooQk9PTClhdXRvZmlsbGVkCit7CisgICAgc3RhdGljX2Nhc3Q8SFRNTElu
cHV0RWxlbWVudCo+KGNvcmUoKERPTUVsZW1lbnQgKilzZWxmKSktPnNldEF1dG9maWxsZWQoYXV0
b2ZpbGxlZCk7Cit9CisKIC0gKHZvaWQpX3NldFZhbHVlRm9yVXNlcjooTlNTdHJpbmcgKil2YWx1
ZQogewogICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb3JlKChET01FbGVtZW50
ICopc2VsZikpLT5zZXRWYWx1ZUZvclVzZXIodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaAppbmRleCBkYzFhYWY4MzFjNmY0YmViOWQ0
MjlhZGQzNjU3ZWNiNmZmMzZmNzJkLi5iNTc5YTZmODdkMDFmMTlhM2YzZjljMDg5NjIwZTY0OTNk
YjI1MmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9u
c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1By
aXZhdGUuaApAQCAtMzksNiArMzksNyBAQAogQGVuZAogCiBAaW50ZXJmYWNlIERPTUhUTUxJbnB1
dEVsZW1lbnQgKFdlYkRPTUhUTUxJbnB1dEVsZW1lbnRPcGVyYXRpb25zUHJpdmF0ZSkKKy0gKHZv
aWQpX3NldEF1dG9maWxsZWQ6KEJPT0wpYXV0b2ZpbGxlZDsKIC0gKHZvaWQpX3NldFZhbHVlRm9y
VXNlcjooTlNTdHJpbmcgKil2YWx1ZTsKIEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEwZjI4OGQwOGY3ODUwOTVjMGM1NTc0ZTQwNjZl
NjU5ZWQ4YzJkNWUuLmUwNjQxZmM3MmJiODBiNzNlNGQyOTQ0YmMyMGExZmM1MDlhYzQ1ZjEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMS0wMy0xMSAgSWx5YSBTaGVybWFuICA8aXNoZXJtYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF1dG9m
aWxsZWQgZm9ybSBlbGVtZW50cyBhcmUgYXNzaWduZWQgZml4ZWQgYmFja2dyb3VuZCBjb2xvciBi
dXQgbm90IHRleHQgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4MzgyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChzZXRBdXRvZmlsbGVkQ2FsbGJhY2spOiBBZGRlZC4KKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKTogQWRkZWQuCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZCk6IEFkZGVkLgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcik6IFN0eWxlIHR3ZWFrLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZCk6IEFkZGVkIChzdHViKS4KKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKTogQWRkZWQgKHN0dWIp
LgorCiAyMDExLTAzLTExICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYWtlIGl0IHBvc3NpYmxlIHRvIHZpZXcgYWxsIGxlYWtzIGZyb20gYSBidWlsZCBhdCBvbmNl
IGluIExlYWtzIFZpZXdlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDlmMTg3N2MzNzFjMDZiNDNlNWIzNTQzMmI2NjZjODE0YmU4ZmI4YmMu
LmVlNDI0N2I3ZTE1YjY1Y2QxNTNkMmQ3ODRmM2M1YzcwMzFhMjVhOWMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwMzksNiArMTAzOSwx
NyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKUwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0QXV0b2ZpbGxlZENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3Vu
dCAhPSAyIHx8ICFhcmd1bWVudHNbMF0pCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldEF1dG9maWxsZWQoY29udGV4dCwgYXJndW1l
bnRzWzBdLCBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSkpOworCisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1
ZVJlZiBzZXRDYWNoZU1vZGVsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIC8vIEhhcyBNYWMgaW1wbGVtZW50YXRpb24uCkBAIC0yMTA3LDYgKzIxMTgsNyBAQCBK
U1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkK
ICAgICAgICAgeyAic2V0QXV0aGVudGljYXRpb25QYXNzd29yZCIsIHNldEF1dGhlbnRpY2F0aW9u
UGFzc3dvcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBdXRoZW50aWNhdGlvblVz
ZXJuYW1lIiwgc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwgc2V0QXV0aG9yQW5kVXNlclN0
eWxlc0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRBdXRvZmlsbGVkIiwg
c2V0QXV0b2ZpbGxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0Q2FjaGVNb2RlbCIsIHNldENhY2hlTW9kZWxDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRDYWxsQ2xvc2VPbldlYlZpZXdzIiwgc2V0Q2FsbENsb3NlT25XZWJW
aWV3c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhbk9wZW5XaW5kb3dzIiwgc2V0
Q2FuT3BlbldpbmRvd3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNGIxYzA0ZTNmNjY5YTk4YzI4MDQ0NWUzNWI5MWIx
MDg5ZWM2ZDc2MC4uOTFkZmJkMGVmMzBhZTY5ZmQ3ZDVmNWEzZjUwMzBhYjQ0YWZjMDc5MCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC04OSw2ICs4
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXV0aG9yQW5kVXNlclN0
eWxlc0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpOwogICAgIHZvaWQgc2V0Q2Fj
aGVNb2RlbChpbnQpOwogICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXRE
ZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKTsKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEodW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAxZGI3MzcwNWE0MmY3NjQw
OTBiMzAxMDhlNzFlMzM4MWJjYzg3ZTg5Li40YTdiYjBkZDRhOWI3OGQxM2YzYWI3Y2Y3NDZiMmZk
NzhhODI4NjY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMzcsNiArMTM3LDcgQEAgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmlu
ZE1ldGhvZCgic2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRBbHdheXNBY2NlcHRDb29raWVzIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpzZXRBbHdheXNBY2NlcHRDb29raWVzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRBdXRob3JBbmRV
c2VyU3R5bGVzRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNl
clN0eWxlc0VuYWJsZWQpOworICAgIGJpbmRNZXRob2QoInNldEF1dG9maWxsZWQiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQpOwogICAgIGJpbmRNZXRob2QoInNldENhbk9w
ZW5XaW5kb3dzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRDYW5PcGVuV2luZG93cyk7CiAg
ICAgYmluZE1ldGhvZCgic2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUp
OwogICAgIGJpbmRNZXRob2QoInNldEN1c3RvbVBvbGljeURlbGVnYXRlIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSk7CkBAIC0xNjIwLDMgKzE2MjEsMjEg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHAKIAogICAgIGlucHV0LT5zZXRWYWx1ZShjcHBWYXJp
YW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSwgdHJ1ZSk7CiB9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKworICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIgfHwgIWFyZ3VtZW50c1sxXS5pc0Jvb2woKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgV2ViRWxlbWVudCBlbGVtZW50OworICAgIGlmICghV2ViQmlu
ZGluZ3M6OmdldEVsZW1lbnQoYXJndW1lbnRzWzBdLnZhbHVlLm9iamVjdFZhbHVlLCAmZWxlbWVu
dCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYklucHV0RWxlbWVudCogaW5wdXQgPSB0b1dl
YklucHV0RWxlbWVudCgmZWxlbWVudCk7CisgICAgaWYgKCFpbnB1dCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW5wdXQtPnNldEF1dG9maWxsZWQoYXJndW1lbnRzWzFdLnZhbHVlLmJvb2xWYWx1
ZSk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAppbmRleCAzZGIzYjUzZjFmMzk3MjRlN2E4ZTI0Zjg2OGEyYjYyZTY1MDYw
N2NhLi5iZDE4MjdlZmVkYzRkYzhhNDEzMGEzM2Y4YmEyMTVmODFlNGUxMmUxIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgK
QEAgLTM0MSw2ICszNDEsMTAgQEAgcHVibGljOgogICAgIC8vIEZvcndhcmRzIHRoZSBzZXRWYWx1
ZUZvclVzZXIoKSBjYWxsIHRvIHRoZSBlbGVtZW50LgogICAgIHZvaWQgc2V0VmFsdWVGb3JVc2Vy
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIEV4cGVjdHMg
dGhlIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIGlucHV0IGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQg
YXJndW1lbnQgdG8gYmUgYSBib29sZWFuLgorICAgIC8vIEZvcndhcmRzIHRoZSBzZXRBdXRvZmls
bGVkKCkgY2FsbCB0byB0aGUgZWxlbWVudC4KKyAgICB2b2lkIHNldEF1dG9maWxsZWQoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiBwdWJsaWM6CiAgICAgLy8gVGhlIGZv
bGxvd2luZyBtZXRob2RzIGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIHZvaWQg
c2V0V29ya1F1ZXVlRnJvemVuKGJvb2wgZnJvemVuKSB7IG1fd29ya1F1ZXVlLnNldEZyb3plbihm
cm96ZW4pOyB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcAppbmRleCBlNzNlYjQ2MjMyNDQyNzY4ZDUxZjIzOGNhNmI1ZDIwMTky
NDhlZjc1Li5lNTNhMjY4NWE2ZTBlNGZhMjY4YzY3MjRkZWZmZmI3NWVjMGM5YzU1IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKQEAgLTQ1OCw2ICs0NTgsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBpc0F1dG9maWxsZWQpCit7CisgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRBdXRvZmlsbGVkKGNvbnRleHQsIG5vZGVPYmpl
Y3QsIGlzQXV0b2ZpbGxlZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRpc2Fi
bGVJbWFnZUxvYWRpbmcoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHRlc3Rpbmcg
Zml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4OTYKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQppbmRleCA3MmVjNzU5ODUzMGRlMDE0M2FhNjEwZDFkMjgyNDJlNTNmMDY3NzVjLi4zNGY4N2Mw
ZmZlMTRiYTgzZmU0NzUyNDdlMmMzYzM5NzI4MThkMWQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0zMjAsNiArMzIw
LDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKGJvb2wgZmxhZykKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNd
IHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkOmZsYWddOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKK3sKKyAgICBET01FbGVtZW50ICplbGVt
ZW50ID0gW0RPTUVsZW1lbnQgX0RPTUVsZW1lbnRGcm9tSlNDb250ZXh0OmNvbnRleHQgdmFsdWU6
bm9kZU9iamVjdF07CisgICAgaWYgKCFlbGVtZW50IHx8ICFbZWxlbWVudCBpc0tpbmRPZkNsYXNz
OltET01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXV0pCisgICAgICAgIHJldHVybjsKKworICAgIFso
RE9NSFRNTElucHV0RWxlbWVudCAqKWVsZW1lbnQgX3NldEF1dG9maWxsZWQ6YXV0b2ZpbGxlZF07
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRl
KGJvb2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSkKIHsKICAgICBpZiAoc2V0RGVsZWdh
dGUpIHsKQEAgLTQ4NCw3ICs0OTMsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRW
YWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZQogICAgIERP
TUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRleHQ6
Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKICAgICBpZiAoIWVsZW1lbnQgfHwgIVtlbGVtZW50
IGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3NdXSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGKEFkb3B0Q0Ys
IEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAg
WyhET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBfc2V0VmFsdWVGb3JVc2VyOihOU1N0cmlu
ZyAqKXZhbHVlQ0YuZ2V0KCldOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMTJhM2E1NWI4YWI2MjZkODIwMGNj
MTQzNThkZjI4OWYwMjY2MTgyMS4uOTk4ODBjZTE3YzUwYzUyN2MxMzdlY2IzMWRkYTA3YTFlNTJj
ZTgzNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250
cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCkBAIC0zNzQsNiArMzc0LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBwcmVm
c1ByaXZhdGUtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGZsYWcpOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1
ZVJlZiBlbGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGVn
YXRlKGJvb2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSkKIHsKICAgICBDT01QdHI8SVdl
YlZpZXc+IHdlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlv
dXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwCmluZGV4IGE5NWFhNTA1YWQ3Y2RkM2RhMDVmYzc4OTZlZDhiZmQ3
MDhmODk1ODAuLjk3YjA5MTAyMTkyNjY4MDA5ZTEzNzdlZGE2NDEzNjc2YjJjOTg5MmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
CkBAIC0yMDcsNiArMjA3LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhv
ckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVkKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBC
bG9ja2luZ0VuYWJsZWQoYm9vbCBwb3B1cEJsb2NraW5nRW5hYmxlZCkKIHsKICAgICAvLyBGSVhN
RTogaW1wbGVtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85731</attachid>
            <date>2011-03-14 15:34:02 -0700</date>
            <delta_ts>2011-03-14 23:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48382-20110314153400.patch</filename>
            <type>text/plain</type>
            <size>22997</size>
            <attacher name="Ilya Sherman">isherman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEwNjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5OWY1MzMyMzY1YTAzZjJiOTRlMmUw
ZjI2MWRiMWEwODIyNmU3Y2U4Li4yN2MyODM2MmRhZTIyYTkxZmY2NzQ1YmQyNTgwMDhmOWZjMzA3
M2UxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTQgIElseWEgU2hlcm1hbiAgPGlz
aGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVk
IGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MS0wMy0xNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBHVEsg
cmViYXNlbGluZXMgZm9yIHI4MTA1My4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2lucHV0LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYzI1MGYzYWU5MjVm
N2M4NjBlMGY2ZmU5ZWYxYzI3ODg3YTIwNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorVGhpcyB0ZXN0cyB0aGF0IGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzIHByb3Bl
cmx5IGNoYW5nZSBmb3IgYXV0b2ZpbGxlZCBpbnB1dHMuIEl0IGNhbiBvbmx5IGJlIHJ1biB1c2lu
ZyBEdW1wUmVuZGVyVHJlZS4KKworUEFTUyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LWF1dG9maWxsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWFlMzYwMjBhYTA4ZTcwZGQ0ZGU1MGI2
ODE1M2FhZmNiNGJjMTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0ZiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZicpOworICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGYpOworICAgICAgICB2YXIgb3JpZ2lu
YWxGb3JlZ3JvdW5kID0gY29tcHV0ZWRTdHlsZS5jb2xvcjsKKyAgICAgICAgdmFyIG9yaWdpbmFs
QmFja2dyb3VuZCA9IGNvbXB1dGVkU3R5bGUuYmFja2dyb3VuZENvbG9yOworCisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldEF1dG9maWxsZWQodGYsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQm90aCB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgc2hvdWxkIGNoYW5n
ZS4KKyAgICAgICAgY29tcHV0ZWRTdHlsZSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUodGYpOworICAgICAgICB2YXIgYXV0b2ZpbGxlZEZvcmVncm91bmQgPSBjb21wdXRl
ZFN0eWxlLmNvbG9yOworICAgICAgICB2YXIgYXV0b2ZpbGxlZEJhY2tncm91bmQgPSBjb21wdXRl
ZFN0eWxlLmJhY2tncm91bmRDb2xvcjsKKyAgICAgICAgaWYgKGF1dG9maWxsZWRGb3JlZ3JvdW5k
ID09IG9yaWdpbmFsRm9yZWdyb3VuZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnRm9yZWdy
b3VuZCBjb2xvciBkaWQgbm90IGNoYW5nZSB3aGVuIGF1dG9maWxsZWQuJyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG9maWxsZWRCYWNrZ3JvdW5kID09
IG9yaWdpbmFsQmFja2dyb3VuZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnQmFja2dyb3Vu
ZCBjb2xvciBkaWQgbm90IGNoYW5nZSB3aGVuIGF1dG9maWxsZWQuJyk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRvZmlsbGVkKHRm
LCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb2xvcnMgc2hvdWxkIGJlIHJlc3Rv
cmVkLgorICAgICAgICBjb21wdXRlZFN0eWxlID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZSh0Zik7CisgICAgICAgIGlmIChjb21wdXRlZFN0eWxlLmNvbG9yICE9IG9yaWdp
bmFsRm9yZWdyb3VuZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnRm9yZWdyb3VuZCBjb2xv
ciBkaWQgbm90IHJldmVydCB3aGVuIHVuLWF1dG9maWxsZWQuJyk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbXB1dGVkU3R5bGUuYmFja2dyb3VuZENvbG9y
ICE9IG9yaWdpbmFsQmFja2dyb3VuZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnQmFja2dy
b3VuZCBjb2xvciBkaWQgbm90IHJldmVydCB3aGVuIHVuLWF1dG9maWxsZWQuJyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0ZXN0UGFzc2VkKCcnKTsKKyAgICB9
CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c3R5bGU+CisgICAgI3RmIHsKKyAgICAgIGNvbG9yOiAj
RkZGRkZGOworICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKKyAgICB9CisgICAgPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKyAgICBUaGlzIHRlc3RzIHRo
YXQgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgcHJvcGVybHkgY2hhbmdlIGZvciBh
dXRvZmlsbGVkIGlucHV0cy4gIEl0IGNhbiBvbmx5IGJlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJl
ZS48YnI+CisgICAgPGZvcm0gbmFtZT0iZm0iPgorICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIg
aWQ9InRmIiB2YWx1ZT0iRmllbGQgdmFsdWUiIC8+CisgICAgPC9mb3JtPgorICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODU1OWZkNzA5OTY3ZjJjZmJkOGE1OTk0YmIwOWUwODNk
ZTljYjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3Qv
Zm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlz
IHRlc3RzIHRoYXQgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgcHJvcGVybHkgY2hh
bmdlIGZvciBhdXRvZmlsbGVkIGlucHV0cy4gSXQgY2FuIG9ubHkgYmUgcnVuIHVzaW5nIER1bXBS
ZW5kZXJUcmVlLgorCitGQUlMIEZvcmVncm91bmQgY29sb3IgZGlkIG5vdCBjaGFuZ2Ugd2hlbiBh
dXRvZmlsbGVkLgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM0N2IwNmY2Y2I4NjgwYWRhNDQwNWM2NzI5NmI3
Y2E3YmEwYmZmOC4uNDk3MzIxYWU4MTA3YjMzYjNjYTQ3OTNmZjlkNTI1NzU1ZmUxMTcxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTE0ICBJbHlhIFNoZXJtYW4gIDxpc2hl
cm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCBmaXhlZCBi
YWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICBUZXN0OiBmYXN0L2Zv
cm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAorCisgICAgICAgICogY3NzL2h0bWwuY3NzOgorICAg
ICAgICAoaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCk6IEFkZGVkIGZvcmVncm91bmQgY29sb3I6ICMw
MDAwMDAKKyAgICAgICAgKiBjc3Mvd21sLmNzczoKKyAgICAgICAgKGlucHV0Oi13ZWJraXQtYXV0
b2ZpbGwpOiBBZGRlZCBmb3JlZ3JvdW5kIGNvbG9yOiAjMDAwMDAwCisKIDIwMTEtMDMtMTQgIEph
cmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWlsLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRl
eCA2MTE3OGQwZDk1OGMwZGQ0OWE4ZDRhNWI4ZDBmOWI4YmY0NjIxYmYzLi5iOWJlNTBlNjMwYTM1
OWE3N2U3YzhlYTBjNTVhYzA0ODA5OWFlZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC00NzYsNiAr
NDc2LDcgQEAgaW5wdXRbdHlwZT0iZmlsZSJdIHsKIGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwgewog
ICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZGQkQgIWltcG9ydGFudDsKICAgICBiYWNrZ3JvdW5k
LWltYWdlOm5vbmUgIWltcG9ydGFudDsKKyAgICBjb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50Owog
fQogCiBpbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3dt
bC5jc3MKaW5kZXggNGJjZjA4ZjU2YTkzMWQ0NWU4NzA3MTBkOWMxOGE3ZWZjMzU5N2Q2ZS4uMzgx
NjlmY2EyYTlkNjc1ZmEwOGU2YzJjODU3N2QzZDgxYmJmYjkzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3dtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3dtbC5jc3MKQEAg
LTE0Nyw2ICsxNDcsNyBAQCBpbnB1dFt0eXBlPSJwYXNzd29yZCJdIHsKIGlucHV0Oi13ZWJraXQt
YXV0b2ZpbGwgewogICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZGQkQgIWltcG9ydGFudDsKICAg
ICBiYWNrZ3JvdW5kLWltYWdlOm5vbmUgIWltcG9ydGFudDsKKyAgICBjb2xvcjogIzAwMDAwMCAh
aW1wb3J0YW50OwogfQogCiBkbzpkaXNhYmxlZCwgc2VsZWN0OmRpc2FibGVkLCBvcHRncm91cDpk
aXNhYmxlZCwgb3B0aW9uOmRpc2FibGVkIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0M2M3NGYzYTA3
YzYyM2RmODc0MWE3ZTFmZTlhNTRkNzBkYzQ5MTIzLi5mYTViODY4ZTNjNDdhMGQzNWMyNTk2NjZj
OTgyYjA1NDM1NDAzZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEt
MDMtMTQgIElseWEgU2hlcm1hbiAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxl
bWVudHMgYXJlIGFzc2lnbmVkIGZpeGVkIGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNv
bG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4
MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2ZpbGxlZCk6IEFk
ZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5o
OgorCiAyMDExLTAzLTExICBNYXJjbyBQZWVyZWJvb20gIDxtYXJjb0BwZWVyZWJvb20udXM+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAKaW5kZXggZjAwMDBiODQ3ODA4ZjQ0MTI2NDI3NjlkNGRmNWE5NTg2MTdhZTYx
Mi4uMGNlOTg3NmQxN2MxNDAxZjlmMDIxNWVkZmY2NzBmYTgwODY5ZWVmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIklucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgpAQCAt
NjY2LDYgKzY2NywxOSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZAogICAgIGNvcmUod2ViVmll
dyktPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOwogfQogCit2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpCit7CisgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0KSk7CisgICAgaWYgKCFlbGVtZW50
KQorICAgICAgICByZXR1cm47CisgICAgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVt
ZW50LT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghaW5wdXRFbGVtZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaW5wdXRFbGVtZW50
KS0+c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYyA9IHRvSlMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IGJjNDU0NGYw
ZTRkY2M0NGE5Yzg0Yjg2M2JmMDYwZGU0ZjhlZDZhMWUuLjdhZDVhZjYwZTI5NzBjODNlMjRjNjI0
MWRmODU5ZTJhODNmYTg2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC04NCw2ICs4NCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRGb2N1c2VkQWNjZXNzaWJsZUVs
ZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRSb290QWNj
ZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBsYXlvdXRG
cmFtZShXZWJLaXRXZWJGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQoSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZik7CiAKICAgICAvLyBX
ZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZmExMTc1N2M2OTFhYmQ4MDMwYTMzMmVk
ZTlmOTUxY2E1YmU4MThjMy4uMDNmMDEwMDZlMjc2NzlkMmViNDM0NzMzZDE4MzFhYmY0Y2ZhNTk0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTAzLTE0ICBJbHlhIFNo
ZXJtYW4gIDxpc2hlcm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3Np
Z25lZCBmaXhlZCBiYWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICAq
IERPTS9XZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW5wdXRFbGVtZW50
IF9zZXRBdXRvZmlsbGVkOl0pOiBBZGRlZCAod3JhcHBlcikuCisgICAgICAgICogRE9NL1dlYkRP
TU9wZXJhdGlvbnNQcml2YXRlLmg6CisKIDIwMTEtMDMtMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0KaW5kZXggZWVlNDkxOTZlZWI5
MzgyMTUwMmYyZTBjN2Q4ZDZjMmNiYjg2MzllNi4uOTc5NDMzZDZlYjNlNDMyOWI3NjRjMWFiNDAz
ZmIxZDIzMjQ4OGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9w
ZXJhdGlvbnMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMu
bW0KQEAgLTE5Nyw2ICsxOTcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogQGltcGxlbWVu
dGF0aW9uIERPTUhUTUxJbnB1dEVsZW1lbnQgKFdlYkRPTUhUTUxJbnB1dEVsZW1lbnRPcGVyYXRp
b25zUHJpdmF0ZSkKIAorLSAodm9pZClfc2V0QXV0b2ZpbGxlZDooQk9PTClhdXRvZmlsbGVkCit7
CisgICAgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvcmUoKERPTUVsZW1lbnQgKilz
ZWxmKSktPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Cit9CisKIC0gKHZvaWQpX3NldFZhbHVl
Rm9yVXNlcjooTlNTdHJpbmcgKil2YWx1ZQogewogICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQqPihjb3JlKChET01FbGVtZW50ICopc2VsZikpLT5zZXRWYWx1ZUZvclVzZXIodmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaApp
bmRleCBkYzFhYWY4MzFjNmY0YmViOWQ0MjlhZGQzNjU3ZWNiNmZmMzZmNzJkLi5iNTc5YTZmODdk
MDFmMTlhM2YzZjljMDg5NjIwZTY0OTNkYjI1MmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaApAQCAtMzksNiArMzksNyBAQAogQGVuZAog
CiBAaW50ZXJmYWNlIERPTUhUTUxJbnB1dEVsZW1lbnQgKFdlYkRPTUhUTUxJbnB1dEVsZW1lbnRP
cGVyYXRpb25zUHJpdmF0ZSkKKy0gKHZvaWQpX3NldEF1dG9maWxsZWQ6KEJPT0wpYXV0b2ZpbGxl
ZDsKIC0gKHZvaWQpX3NldFZhbHVlRm9yVXNlcjooTlNTdHJpbmcgKil2YWx1ZTsKIEBlbmQKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFjMzYw
MjVlMDY5MWZlMWY4Mzg0MmM3MWU1ZDVhY2JhMjY4ZGZhMWEuLmU4ZjdhZDIwYWNhMTg0NDFmMGE1
OTExMWQzYmFlZGI2N2M0N2JiYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0wMy0xNCAgSWx5YSBTaGVybWFu
ICA8aXNoZXJtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEF1dG9maWxsZWQgZm9ybSBlbGVtZW50cyBhcmUgYXNzaWduZWQg
Zml4ZWQgYmFja2dyb3VuZCBjb2xvciBidXQgbm90IHRleHQgY29sb3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzgyCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRBdXRvZmls
bGVkQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0
aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250
cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKTog
QWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQp
OiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZCk6
IEFkZGVkLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcik6
IFN0eWxlIHR3ZWFrLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2Zp
bGxlZCk6IEFkZGVkIChzdHViKS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
dXRvZmlsbGVkKTogQWRkZWQgKHN0dWIpLgorCiAyMDExLTAzLTE0ICBBZGFtIFJvYmVuICA8YXJv
YmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG93IGEgbGlzdCBvZiB1cCB0byAxMCByZWNlbnQg
bGVha3kgYnVpbGRzIHdoZW4gTGVha3MgVmlld2VyIGxvYWRzCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNTJkNDI0NzA2MDVkMTM4NWRhYTg0
YmM4ZDMxNjc0OWVmMTgyYTA4Yi4uMGNlOWI3ODE2NjJkNDZiMmU0OWM5ZTZlOGY1NzMxMDc2ZGIz
NDFkYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cApAQCAtMTA5OSw2ICsxMDk5LDE3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJl
ZiBzZXRBdXRvZmlsbGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIGlmIChhcmd1bWVudENvdW50ICE9IDIgfHwgIWFyZ3VtZW50c1swXSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QXV0b2Zp
bGxlZChjb250ZXh0LCBhcmd1bWVudHNbMF0sIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJn
dW1lbnRzWzFdKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldENhY2hlTW9kZWxDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIE1hYyBpbXBsZW1lbnRhdGlvbi4KQEAg
LTIxNjgsNiArMjE3OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVy
OjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRBdXRoZW50aWNhdGlvblBhc3N3b3Jk
Iiwgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUiLCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQi
LCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAg
IHsgInNldEF1dG9maWxsZWQiLCBzZXRBdXRvZmlsbGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0Q2FjaGVNb2RlbCIsIHNldENhY2hlTW9kZWxDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRDYWxsQ2xvc2VPbldlYlZpZXdzIiwgc2V0Q2FsbENsb3NlT25XZWJWaWV3c0Nh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhbk9wZW5XaW5kb3dzIiwgc2V0Q2FuT3Bl
bldpbmRvd3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApAQCAtMjIwNSw3ICsyMjE3LDcgQEAgSlNTdGF0aWNG
dW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAg
IHsgInNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29t
cGF0aWJpbGl0eU1vZGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVT
aGVldEVuYWJsZWQiLCBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRM
b2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgInNldFZhbHVlRm9yVXNlciIsIHNl
dFZhbHVlRm9yVXNlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAic2V0VmFsdWVGb3JVc2VyIiwgc2V0VmFsdWVGb3JVc2VyQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0Vmlld01vZGVNZWRpYUZlYXR1cmUiLCBzZXRWaWV3TW9kZU1l
ZGlhRmVhdHVyZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdlYlZpZXdFZGl0YWJs
ZSIsIHNldFdlYlZpZXdFZGl0YWJsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdp
bGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIiwgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKaW5kZXggMjU1MmIxMTg5OWQ0MzU0N2E3ZDA5Mjk4OGIxOWY3MDgxMTllMzFiNS4uZmU3
YTA5ZTUzOGMxMzJmMjljNmRhYmRmZTc2ODI2OWU5NzQ5MWU0ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC05MCw2ICs5MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3Rh
KTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9v
bCk7CisgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2Rl
T2JqZWN0LCBib29sIGF1dG9maWxsZWQpOwogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChpbnQpOwog
ICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBw
ZXJtaXNzaXZlKTsKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEodW5zaWduZWQgbG9uZyBsb25n
IHF1b3RhKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwMWM5NDA3NTc4MTEyMmJhMWM3NzEyNTQ3NGE3MWM5
YzU5NzY5ZWJhLi4xYTFhNzgwZGUzYjdiMjYwYjdiMTAxYjg2YTdmOGMxNTMzNzAyZGQ2IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0xMzgsNiArMTM4LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgic2V0QWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRB
bHdheXNBY2NlcHRDb29raWVzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbHdheXNBY2Nl
cHRDb29raWVzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQp
OworICAgIGJpbmRNZXRob2QoInNldEF1dG9maWxsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEF1dG9maWxsZWQpOwogICAgIGJpbmRNZXRob2QoInNldENhbk9wZW5XaW5kb3dzIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRDYW5PcGVuV2luZG93cyk7CiAgICAgYmluZE1ldGhvZCgi
c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUpOwogICAgIGJpbmRNZXRo
b2QoInNldEN1c3RvbVBvbGljeURlbGVnYXRlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZSk7CkBAIC0xNjIwLDYgKzE2MjEsMjMgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWUKICAgICBtX3NoZWxsLT53ZWJWaWV3KCktPnNldHRpbmdzKCktPnNldE1pbmlt
dW1UaW1lckludGVydmFsKGFyZ3VtZW50c1swXS50b0RvdWJsZSgpKTsKIH0KIAordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwor
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIgfHwgIWFyZ3VtZW50c1sxXS5pc0Jvb2woKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV2ViRWxlbWVudCBlbGVtZW50OworICAgIGlmICghV2Vi
QmluZGluZ3M6OmdldEVsZW1lbnQoYXJndW1lbnRzWzBdLnZhbHVlLm9iamVjdFZhbHVlLCAmZWxl
bWVudCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYklucHV0RWxlbWVudCogaW5wdXQgPSB0
b1dlYklucHV0RWxlbWVudCgmZWxlbWVudCk7CisgICAgaWYgKCFpbnB1dCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW5wdXQtPnNldEF1dG9maWxsZWQoYXJndW1lbnRzWzFdLnZhbHVlLmJvb2xW
YWx1ZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFZhbHVlRm9yVXNlcihj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAtMTY2MSw1ICsxNjc5LDMgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3luY0xvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50KikKIHsKICAgICAvLyBOb3QgSW1wbGVtZW50ZWQKIH0KLQotCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRl
eCA4N2NjYzk3OWQ5ZjZhMDYzZjVmYTI1YTg4NTQwODM2MGFkM2QxNmRjLi5mMzFiYzE1NTczMzk1
OTA4NWQzNjU2YzBhYTcyM2ExZjg1NzdjZGU4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTMzOSw2ICszMzksMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICAvLyBFeHBlY3RzIHRoZSBmaXJzdCBh
cmd1bWVudCB0byBiZSBhbiBpbnB1dCBlbGVtZW50IGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRv
IGJlIGEgYm9vbGVhbi4KKyAgICAvLyBGb3J3YXJkcyB0aGUgc2V0QXV0b2ZpbGxlZCgpIGNhbGwg
dG8gdGhlIGVsZW1lbnQuCisgICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vIEV4cGVjdHMgdGhlIGZpcnN0IGFyZ3VtZW50
IHRvIGJlIGFuIGlucHV0IGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgYSBz
dHJpbmcgdmFsdWUuCiAgICAgLy8gRm9yd2FyZHMgdGhlIHNldFZhbHVlRm9yVXNlcigpIGNhbGwg
dG8gdGhlIGVsZW1lbnQuCiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMTJlOTUwMWJhOTVlZDQ2MTcwNGQz
ZWVhMmNiNTAzMTAwZTdkOWRiZi4uNDMzYWIyYmE5YzAyMWYyNjYzZTIwOWM0YjllYWNjOWFhYTZk
NDQ0OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENv
bnRyb2xsZXJHdGsuY3BwCkBAIC00NTgsNiArNDU4LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9m
aWxsZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgaXNBdXRvZmls
bGVkKQoreworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2ZpbGxlZChjb250
ZXh0LCBub2RlT2JqZWN0LCBpc0F1dG9maWxsZWQpOworfQorCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpkaXNhYmxlSW1hZ2VMb2FkaW5nKCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGZvciB0ZXN0aW5nIGZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3ODk2CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KaW5kZXggNmU4MzcxZmM3N2EyNGQyMDhmNzJkOGE3ZTEyOTQ2ZjA3MDJh
ODg1MS4uYjIxNTFmNGEyZTllNmM3NjYyY2Q2ZTFjMjJhZDZkMDFhYTNlNTJkMCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpA
QCAtMzY5LDYgKzM2OSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXdd
IHByZWZlcmVuY2VzXSBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZDpmbGFnXTsKIH0KIAor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpCit7CisgICAgRE9N
RWxlbWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50IF9ET01FbGVtZW50RnJvbUpTQ29udGV4dDpj
b250ZXh0IHZhbHVlOm5vZGVPYmplY3RdOworICAgIGlmICghZWxlbWVudCB8fCAhW2VsZW1lbnQg
aXNLaW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc11dKQorICAgICAgICByZXR1
cm47CisKKyAgICBbKERPTUhUTUxJbnB1dEVsZW1lbnQgKillbGVtZW50IF9zZXRBdXRvZmlsbGVk
OmF1dG9maWxsZWRdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDdXN0b21Q
b2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpCiB7CiAgICAg
aWYgKHNldERlbGVnYXRlKSB7CkBAIC01MzMsNyArNTQyLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IG5vZGUKICAgICBET01FbGVtZW50ICplbGVtZW50ID0gW0RPTUVsZW1lbnQgX0RPTUVsZW1lbnRG
cm9tSlNDb250ZXh0OmNvbnRleHQgdmFsdWU6bm9kZU9iamVjdF07CiAgICAgaWYgKCFlbGVtZW50
IHx8ICFbZWxlbWVudCBpc0tpbmRPZkNsYXNzOltET01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXV0p
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFs
dWVDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2
YWx1ZSkpOwogICAgIFsoRE9NSFRNTElucHV0RWxlbWVudCAqKWVsZW1lbnQgX3NldFZhbHVlRm9y
VXNlcjooTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpXTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGRiNjk4OGE2
NjI1Njg2ZWE2MmNiODgxMDg0NzBlMGIwMDNmNTlhMjcuLmY4YjBjYjhjZTZiYzg0MDYzNzI3NmMy
ZjkyYjM2NDNjMjc1NWQwNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMzc0LDYgKzM3NCwxMSBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZs
YWcpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChmbGFn
KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDdXN0
b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpCiB7CiAg
ICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCAyYmNiYjQ3MTE2YWJhNDk4ZDBi
OWI1YTUwMWNiNzJiMDk5ZTRjOWZkLi5lMWI3NDhlMjE4M2RiNzJkMDlkMTg3OWIxY2JmNzg5MTFh
ZWIzOGU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29u
dHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29u
dHJvbGxlcld4LmNwcApAQCAtMjA3LDYgKzIwNywxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAgICAgLy8gRklY
TUU6IGltcGxlbWVudAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmls
bGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcG9wdXBCbG9ja2luZ0VuYWJsZWQpCiB7
CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85781</attachid>
            <date>2011-03-14 23:50:02 -0700</date>
            <delta_ts>2011-03-15 11:03:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48382-20110314235001.patch</filename>
            <type>text/plain</type>
            <size>22961</size>
            <attacher name="Ilya Sherman">isherman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODExMTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYzgyYjEwNmM5M2QxOWIyNTE0MmU4
NjQ3ZWMyOTczYTdiZGJlM2Q0Li4yYmQ0MjdlMjE1ZjFmM2U0OGEyNjRhMTQ4ODdmNzJkZTE1ZTA2
NTI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTQgIElseWEgU2hlcm1hbiAgPGlz
aGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVk
IGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MS0wMy0xNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBza2lwcGVkIHRlc3RzIHRoYXQgdXNlcyBhbiB1bnN1cHBvcnRlZCBEUlQgQVBJ
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjMjUwZjNhZTkyNWY3Yzg2MGUwZjZmZTllZjFjMjc4ODdh
MjA1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0
b2ZpbGxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3RzIHRoYXQgZm9y
ZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgcHJvcGVybHkgY2hhbmdlIGZvciBhdXRvZmls
bGVkIGlucHV0cy4gSXQgY2FuIG9ubHkgYmUgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlLgorCitQ
QVNTIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxs
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYxYWUzNjAyMGFhMDhlNzBkZDRkZTUwYjY4MTUzYWFmY2I0YmMxNGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRt
bApAQCAtMCwwICsxLDY1IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIHRmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RmJyk7
CisgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZSh0Zik7CisgICAgICAgIHZhciBvcmlnaW5hbEZvcmVncm91bmQgPSBjb21wdXRl
ZFN0eWxlLmNvbG9yOworICAgICAgICB2YXIgb3JpZ2luYWxCYWNrZ3JvdW5kID0gY29tcHV0ZWRT
dHlsZS5iYWNrZ3JvdW5kQ29sb3I7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0b2ZpbGxl
ZCh0ZiwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCb3RoIHRoZSBmb3JlZ3JvdW5k
IGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBzaG91bGQgY2hhbmdlLgorICAgICAgICBjb21wdXRlZFN0
eWxlID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0Zik7CisgICAgICAg
IHZhciBhdXRvZmlsbGVkRm9yZWdyb3VuZCA9IGNvbXB1dGVkU3R5bGUuY29sb3I7CisgICAgICAg
IHZhciBhdXRvZmlsbGVkQmFja2dyb3VuZCA9IGNvbXB1dGVkU3R5bGUuYmFja2dyb3VuZENvbG9y
OworICAgICAgICBpZiAoYXV0b2ZpbGxlZEZvcmVncm91bmQgPT0gb3JpZ2luYWxGb3JlZ3JvdW5k
KSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdGb3JlZ3JvdW5kIGNvbG9yIGRpZCBub3QgY2hh
bmdlIHdoZW4gYXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoYXV0b2ZpbGxlZEJhY2tncm91bmQgPT0gb3JpZ2luYWxCYWNrZ3JvdW5kKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdCYWNrZ3JvdW5kIGNvbG9yIGRpZCBub3QgY2hhbmdl
IHdoZW4gYXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQodGYsIGZhbHNlKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIENvbG9ycyBzaG91bGQgYmUgcmVzdG9yZWQuCisgICAgICAgIGNvbXB1dGVk
U3R5bGUgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRmKTsKKyAgICAg
ICAgaWYgKGNvbXB1dGVkU3R5bGUuY29sb3IgIT0gb3JpZ2luYWxGb3JlZ3JvdW5kKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdGb3JlZ3JvdW5kIGNvbG9yIGRpZCBub3QgcmV2ZXJ0IHdoZW4g
dW4tYXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoY29tcHV0ZWRTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgIT0gb3JpZ2luYWxCYWNrZ3JvdW5k
KSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdCYWNrZ3JvdW5kIGNvbG9yIGRpZCBub3QgcmV2
ZXJ0IHdoZW4gdW4tYXV0b2ZpbGxlZC4nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHRlc3RQYXNzZWQoJycpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKworICAg
IDxzdHlsZT4KKyAgICAjdGYgeworICAgICAgY29sb3I6ICNGRkZGRkY7CisgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjRkZGRkZGOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgorICAgIFRoaXMgdGVzdHMgdGhhdCBmb3JlZ3JvdW5kIGFuZCBiYWNr
Z3JvdW5kIGNvbG9ycyBwcm9wZXJseSBjaGFuZ2UgZm9yIGF1dG9maWxsZWQgaW5wdXRzLiAgSXQg
Y2FuIG9ubHkgYmUgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlLjxicj4KKyAgICA8Zm9ybSBuYW1l
PSJmbSI+CisgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGYiIHZhbHVlPSJGaWVsZCB2
YWx1ZSIgLz4KKyAgICA8L2Zvcm0+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9m
b3Jtcy9pbnB1dC1hdXRvZmlsbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk4NTU5ZmQ3MDk5NjdmMmNmYmQ4YTU5OTRiYjA5ZTA4M2RlOWNiOWYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgdGhhdCBmb3JlZ3JvdW5k
IGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBwcm9wZXJseSBjaGFuZ2UgZm9yIGF1dG9maWxsZWQgaW5w
dXRzLiBJdCBjYW4gb25seSBiZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUuCisKK0ZBSUwgRm9y
ZWdyb3VuZCBjb2xvciBkaWQgbm90IGNoYW5nZSB3aGVuIGF1dG9maWxsZWQuCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAyZmM5NDZkMmVhYWVmODAzYmIwNjAzYzMwYTg5MjYyMDVhODNjMjY2Li4yMjhjZjk2MWUy
YWZhNjljODgzMGRjMzI0ZGQzODAwMWQzYzNiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDMtMTQgIElseWEgU2hlcm1hbiAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZmlsbGVk
IGZvcm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZpeGVkIGJhY2tncm91bmQgY29sb3IgYnV0IG5v
dCB0ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00ODM4MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5o
dG1sCisKKyAgICAgICAgKiBjc3MvaHRtbC5jc3M6CisgICAgICAgIChpbnB1dDotd2Via2l0LWF1
dG9maWxsKTogQWRkZWQgZm9yZWdyb3VuZCBjb2xvcjogIzAwMDAwMAorICAgICAgICAqIGNzcy93
bWwuY3NzOgorICAgICAgICAoaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCk6IEFkZGVkIGZvcmVncm91
bmQgY29sb3I6ICMwMDAwMDAKKwogMjAxMS0wMy0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRl
eCA2MTE3OGQwZDk1OGMwZGQ0OWE4ZDRhNWI4ZDBmOWI4YmY0NjIxYmYzLi5iOWJlNTBlNjMwYTM1
OWE3N2U3YzhlYTBjNTVhYzA0ODA5OWFlZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC00NzYsNiAr
NDc2LDcgQEAgaW5wdXRbdHlwZT0iZmlsZSJdIHsKIGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwgewog
ICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZGQkQgIWltcG9ydGFudDsKICAgICBiYWNrZ3JvdW5k
LWltYWdlOm5vbmUgIWltcG9ydGFudDsKKyAgICBjb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50Owog
fQogCiBpbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy93bWwuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3dt
bC5jc3MKaW5kZXggNGJjZjA4ZjU2YTkzMWQ0NWU4NzA3MTBkOWMxOGE3ZWZjMzU5N2Q2ZS4uMzgx
NjlmY2EyYTlkNjc1ZmEwOGU2YzJjODU3N2QzZDgxYmJmYjkzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3dtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3dtbC5jc3MKQEAg
LTE0Nyw2ICsxNDcsNyBAQCBpbnB1dFt0eXBlPSJwYXNzd29yZCJdIHsKIGlucHV0Oi13ZWJraXQt
YXV0b2ZpbGwgewogICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZGQkQgIWltcG9ydGFudDsKICAg
ICBiYWNrZ3JvdW5kLWltYWdlOm5vbmUgIWltcG9ydGFudDsKKyAgICBjb2xvcjogIzAwMDAwMCAh
aW1wb3J0YW50OwogfQogCiBkbzpkaXNhYmxlZCwgc2VsZWN0OmRpc2FibGVkLCBvcHRncm91cDpk
aXNhYmxlZCwgb3B0aW9uOmRpc2FibGVkIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA1ODFkZWQ4Y2U1
OTkyNThkYTAwYmU2Nzk3YTkzNjBiMWMwMWNhZTdjLi5lMGEzNWEyMDExZDc2MmYwN2VkNDY1YmY5
OTI0ZDM5YTQ1NmJiODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEt
MDMtMTQgIElseWEgU2hlcm1hbiAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxl
bWVudHMgYXJlIGFzc2lnbmVkIGZpeGVkIGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNv
bG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4
MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2ZpbGxlZCk6IEFk
ZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5o
OgorCiAyMDExLTAzLTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcAppbmRleCBmMDAwMGI4NDc4MDhmNDQxMjY0Mjc2OWQ0ZGY1YTk1ODYxN2FlNjEyLi4wY2U5
ODc2ZDE3YzE0MDFmOWYwMjE1ZWRmZjY3MGZhODA4NjllZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50LmgiCkBAIC02NjYsNiAr
NjY3LDE5IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBkCiAgICAgY29yZSh3ZWJWaWV3KS0+c2V0
dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7CiB9CiAKK3ZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKK3sKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHRv
RWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgIHJldHVybjsKKyAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRv
SW5wdXRFbGVtZW50KCk7CisgICAgaWYgKCFpbnB1dEVsZW1lbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihpbnB1dEVsZW1lbnQpLT5zZXRB
dXRvZmlsbGVkKGF1dG9maWxsZWQpOworfQorCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVP
YmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggYmM0NTQ0ZjBlNGRjYzQ0
YTljODRiODYzYmYwNjBkZTRmOGVkNmExZS4uN2FkNWFmNjBlMjk3MGM4M2UyNGM2MjQxZGY4NTll
MmE4M2ZhODYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBBdGtPYmplY3QqIGdldEZvY3VzZWRBY2Nlc3NpYmxlRWxlbWVudChX
ZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBBdGtPYmplY3QqIGdldFJvb3RBY2Nlc3NpYmxl
RWxlbWVudChXZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIGxheW91dEZyYW1lKFdl
YktpdFdlYkZyYW1lKik7CisgICAgc3RhdGljIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRleHRS
ZWYsIEpTVmFsdWVSZWYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmKTsKIAogICAgIC8vIFdlYktpdFdl
YlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBmYTExNzU3YzY5MWFiZDgwMzBhMzMyZWRlOWY5NTFj
YTViZTgxOGMzLi4wM2YwMTAwNmUyNzY3OWQyZWI0MzQ3MzNkMTgzMWFiZjRjZmE1OTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTQgIElseWEgU2hlcm1hbiAg
PGlzaGVybWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBdXRvZmlsbGVkIGZvcm0gZWxlbWVudHMgYXJlIGFzc2lnbmVkIGZp
eGVkIGJhY2tncm91bmQgY29sb3IgYnV0IG5vdCB0ZXh0IGNvbG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4MgorCisgICAgICAgICogRE9NL1dl
YkRPTU9wZXJhdGlvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQgX3NldEF1
dG9maWxsZWQ6XSk6IEFkZGVkICh3cmFwcGVyKS4KKyAgICAgICAgKiBET00vV2ViRE9NT3BlcmF0
aW9uc1ByaXZhdGUuaDoKKwogMjAxMS0wMy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQppbmRleCBlZWU0OTE5NmVlYjkzODIxNTAy
ZjJlMGM3ZDhkNmMyY2JiODYzOWU2Li45Nzk0MzNkNmViM2U0MzI5Yjc2NGMxYWI0MDNmYjFkMjMy
NDg4ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9u
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQpAQCAt
MTk3LDYgKzE5NywxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBAaW1wbGVtZW50YXRpb24g
RE9NSFRNTElucHV0RWxlbWVudCAoV2ViRE9NSFRNTElucHV0RWxlbWVudE9wZXJhdGlvbnNQcml2
YXRlKQogCistICh2b2lkKV9zZXRBdXRvZmlsbGVkOihCT09MKWF1dG9maWxsZWQKK3sKKyAgICBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY29yZSgoRE9NRWxlbWVudCAqKXNlbGYpKS0+
c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKK30KKwogLSAodm9pZClfc2V0VmFsdWVGb3JVc2Vy
OihOU1N0cmluZyAqKXZhbHVlCiB7CiAgICAgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KGNvcmUoKERPTUVsZW1lbnQgKilzZWxmKSktPnNldFZhbHVlRm9yVXNlcih2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oCmluZGV4IGRj
MWFhZjgzMWM2ZjRiZWI5ZDQyOWFkZDM2NTdlY2I2ZmYzNmY3MmQuLmI1NzlhNmY4N2QwMWYxOWEz
ZjNmOWMwODk2MjBlNjQ5M2RiMjUyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9X
ZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oCkBAIC0zOSw2ICszOSw3IEBACiBAZW5kCiAKIEBpbnRl
cmZhY2UgRE9NSFRNTElucHV0RWxlbWVudCAoV2ViRE9NSFRNTElucHV0RWxlbWVudE9wZXJhdGlv
bnNQcml2YXRlKQorLSAodm9pZClfc2V0QXV0b2ZpbGxlZDooQk9PTClhdXRvZmlsbGVkOwogLSAo
dm9pZClfc2V0VmFsdWVGb3JVc2VyOihOU1N0cmluZyAqKXZhbHVlOwogQGVuZAogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTA2MmI3YjIwM2Zm
YWVjNmI0OTYzMzJkYjI3ODMwN2ZlYTE5YzljOS4uYjk4ZDdjYjkyZTgzYTFkNmY2Y2ExNjA3MGNm
ZDBiZDlmY2UwYjA4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTAzLTE0ICBJbHlhIFNoZXJtYW4gIDxpc2hl
cm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0b2ZpbGxlZCBmb3JtIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCBmaXhlZCBi
YWNrZ3JvdW5kIGNvbG9yIGJ1dCBub3QgdGV4dCBjb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzODIKKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldEF1dG9maWxsZWRDYWxs
YmFjayk6IEFkZGVkLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0
aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQpOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2ZpbGxlZCk6IEFkZGVk
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKTogQWRkZWQu
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKTogU3R5bGUg
dHdlYWsuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKTog
QWRkZWQgKHN0dWIpLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxs
ZWQpOiBBZGRlZCAoc3R1YikuCisKIDIwMTEtMDMtMTQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBmb3Jnb3R0ZW4gZmlsZSBmcm9tIHI4MTExNgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDUyZDQyNDcw
NjA1ZDEzODVkYWE4NGJjOGQzMTY3NDllZjE4MmEwOGIuLjBjZTliNzgxNjYyZDQ2YjJlNDljOWU2
ZThmNTczMTA3NmRiMzQxZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKQEAgLTEwOTksNiArMTA5OSwxNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBz
ZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKUwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3Rh
dGljIEpTVmFsdWVSZWYgc2V0QXV0b2ZpbGxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyIHx8ICFhcmd1bWVudHNbMF0p
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExh
eW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xs
ZXItPnNldEF1dG9maWxsZWQoY29udGV4dCwgYXJndW1lbnRzWzBdLCBKU1ZhbHVlVG9Cb29sZWFu
KGNvbnRleHQsIGFyZ3VtZW50c1sxXSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRDYWNoZU1vZGVsQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBNYWMgaW1wbGVt
ZW50YXRpb24uCkBAIC0yMTY4LDYgKzIxNzksNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0QXV0aGVudGlj
YXRpb25QYXNzd29yZCIsIHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lIiwgc2V0QXV0aGVudGljYXRp
b25Vc2VybmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEF1dGhvckFuZFVzZXJT
dHlsZXNFbmFibGVkIiwgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorICAgICAgICB7ICJzZXRBdXRvZmlsbGVkIiwgc2V0QXV0b2ZpbGxlZENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldENhY2hlTW9kZWwiLCBzZXRDYWNoZU1vZGVsQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic2V0Q2FsbENsb3NlT25XZWJWaWV3cyIsIHNldENhbGxDbG9z
ZU9uV2ViVmlld3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYW5PcGVuV2luZG93
cyIsIHNldENhbk9wZW5XaW5kb3dzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTIyMDUsNyArMjIxNyw3
IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlv
bnMoKQogICAgICAgICB7ICJzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSIsIHNldFVz
ZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkIiwgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbiIsIHNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7ICJzZXRWYWx1
ZUZvclVzZXIiLCBzZXRWYWx1ZUZvclVzZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCisgICAgICAgIHsgInNldFZhbHVlRm9yVXNlciIsIHNldFZhbHVlRm9yVXNl
ckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFZpZXdNb2RlTWVkaWFGZWF0dXJlIiwg
c2V0Vmlld01vZGVNZWRpYUZlYXR1cmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRX
ZWJWaWV3RWRpdGFibGUiLCBzZXRXZWJWaWV3RWRpdGFibGVDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlciIsIHNldFdpbGxTZW5kUmVxdWVz
dENsZWFySGVhZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDI1NTJiMTE4OTlkNDM1NDdhN2QwOTI5ODhiMTlmNzA4
MTE5ZTMxYjUuLmZlN2EwOWU1MzhjMTMyZjI5YzZkYWJkZmU3NjgyNjllOTc0OTFlNGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTAsNiArOTAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSk7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
dW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKTsKICAgICB2b2lkIHNldENhY2hl
TW9kZWwoaW50KTsKICAgICB2b2lkIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wgc2V0RGVs
ZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSk7CiAgICAgdm9pZCBzZXREYXRhYmFzZVF1b3RhKHVuc2ln
bmVkIGxvbmcgbG9uZyBxdW90YSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDFjOTQwNzU3ODExMjJiYTFj
NzcxMjU0NzRhNzFjOWM1OTc2OWViYS4uMWExYTc4MGRlM2I3YjI2MGI3YjEwMWI4NmE3ZjhjMTUz
MzcwMmRkNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTM4LDYgKzEzOCw3IEBAIExheW91dFRlc3RDb250
cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRN
ZXRob2QoInNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyk7CiAgICAgYmlu
ZE1ldGhvZCgic2V0QWx3YXlzQWNjZXB0Q29va2llcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QWx3YXlzQWNjZXB0Q29va2llcyk7CiAgICAgYmluZE1ldGhvZCgic2V0QXV0aG9yQW5kVXNl
clN0eWxlc0VuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJT
dHlsZXNFbmFibGVkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRBdXRvZmlsbGVkIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDYW5PcGVu
V2luZG93cyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q2FuT3BlbldpbmRvd3MpOwogICAg
IGJpbmRNZXRob2QoInNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKTsK
ICAgICBiaW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOwpAQCAtMTYyMCw2ICsxNjIxLDIzIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAgbV9zaGVsbC0+d2ViVmlldygpLT5zZXR0aW5n
cygpLT5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbChhcmd1bWVudHNbMF0udG9Eb3VibGUoKSk7CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dG9maWxsZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQt
PnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAyIHx8ICFhcmd1bWVudHNb
MV0uaXNCb29sKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkVsZW1lbnQgZWxlbWVudDsK
KyAgICBpZiAoIVdlYkJpbmRpbmdzOjpnZXRFbGVtZW50KGFyZ3VtZW50c1swXS52YWx1ZS5vYmpl
Y3RWYWx1ZSwgJmVsZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJJbnB1dEVsZW1l
bnQqIGlucHV0ID0gdG9XZWJJbnB1dEVsZW1lbnQoJmVsZW1lbnQpOworICAgIGlmICghaW5wdXQp
CisgICAgICAgIHJldHVybjsKKworICAgIGlucHV0LT5zZXRBdXRvZmlsbGVkKGFyZ3VtZW50c1sx
XS52YWx1ZS5ib29sVmFsdWUpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRW
YWx1ZUZvclVzZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTE2NjEsNSArMTY3OSwzIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN5bmNMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopCiB7CiAgICAgLy8gTm90IEltcGxlbWVudGVkCiB9Ci0K
LQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmgKaW5kZXggODdjY2M5NzlkOWY2YTA2M2Y1ZmEyNWE4ODU0MDgzNjBhZDNkMTZkYy4u
ZjMxYmMxNTU3MzM5NTkwODVkMzY1NmMwYWE3MjNhMWY4NTc3Y2RlOCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0z
MzksNiArMzM5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2
YWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gRXhwZWN0
cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gaW5wdXQgZWxlbWVudCBhbmQgdGhlIHNlY29u
ZCBhcmd1bWVudCB0byBiZSBhIGJvb2xlYW4uCisgICAgLy8gRm9yd2FyZHMgdGhlIHNldEF1dG9m
aWxsZWQoKSBjYWxsIHRvIHRoZSBlbGVtZW50LgorICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLyBFeHBlY3RzIHRoZSBm
aXJzdCBhcmd1bWVudCB0byBiZSBhbiBpbnB1dCBlbGVtZW50IGFuZCB0aGUgc2Vjb25kIGFyZ3Vt
ZW50IHRvIGJlIGEgc3RyaW5nIHZhbHVlLgogICAgIC8vIEZvcndhcmRzIHRoZSBzZXRWYWx1ZUZv
clVzZXIoKSBjYWxsIHRvIHRoZSBlbGVtZW50LgogICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDEyZTk1MDFi
YTk1ZWQ0NjE3MDRkM2VlYTJjYjUwMzEwMGU3ZDlkYmYuLjdiNjk0YzI1Y2RhMzQ4ZTVlOWQ1NjM1
MGE1YzE5YjgxNmJhMGIyOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDU4LDYgKzQ1OCwxMSBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZs
YWcpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVP
YmplY3QsIGJvb2wgaXNBdXRvZmlsbGVkKQoreworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6c2V0QXV0b2ZpbGxlZChjb250ZXh0LCBub2RlT2JqZWN0LCBpc0F1dG9maWxsZWQpOworfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMb2FkaW5nKCkKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciB0ZXN0aW5nIGZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODk2CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggN2EwYmY5NzVkYzEyY2M2
ZmI5MGU2MTYzN2NlNWE5MDA3MTVjMGI3My4uODI3ZjBhNzY4ZmJhM2I4NGRjMDkyMjI3ODJhZjU3
ZWJiNjRiODM2NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMzY4LDYgKzM2OCwxNSBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAgICAg
W1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBdXRob3JBbmRVc2VyU3R5bGVz
RW5hYmxlZDpmbGFnXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0b2Zp
bGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1
dG9maWxsZWQpCit7CisgICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50IF9ET01F
bGVtZW50RnJvbUpTQ29udGV4dDpjb250ZXh0IHZhbHVlOm5vZGVPYmplY3RdOworICAgIGlmICgh
ZWxlbWVudCB8fCAhW2VsZW1lbnQgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxlbWVudCBj
bGFzc11dKQorICAgICAgICByZXR1cm47CisKKyAgICBbKERPTUhUTUxJbnB1dEVsZW1lbnQgKill
bGVtZW50IF9zZXRBdXRvZmlsbGVkOmF1dG9maWxsZWRdOworfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29s
IHBlcm1pc3NpdmUpCiB7CiAgICAgaWYgKHNldERlbGVnYXRlKSB7CkBAIC01MzIsNyArNTQxLDcg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGUKICAgICBET01FbGVtZW50ICplbGVtZW50ID0gW0RP
TUVsZW1lbnQgX0RPTUVsZW1lbnRGcm9tSlNDb250ZXh0OmNvbnRleHQgdmFsdWU6bm9kZU9iamVj
dF07CiAgICAgaWYgKCFlbGVtZW50IHx8ICFbZWxlbWVudCBpc0tpbmRPZkNsYXNzOltET01IVE1M
SW5wdXRFbGVtZW50IGNsYXNzXV0pCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdmFsdWVDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIFsoRE9NSFRNTElucHV0RWxlbWVudCAq
KWVsZW1lbnQgX3NldFZhbHVlRm9yVXNlcjooTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpXTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwCmluZGV4IGRiNjk4OGE2NjI1Njg2ZWE2MmNiODgxMDg0NzBlMGIwMDNmNTlhMjcuLmY4
YjBjYjhjZTZiYzg0MDYzNzI3NmMyZjkyYjM2NDNjMjc1NWQwNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMzc0
LDYgKzM3NCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2Vy
U3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRBdXRob3JBbmRV
c2VyU3R5bGVzRW5hYmxlZChmbGFnKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZWxlbWVudCwgYm9vbCBpc0F1
dG9maWxsZWQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBi
b29sIHBlcm1pc3NpdmUpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRl
eCAyYmNiYjQ3MTE2YWJhNDk4ZDBiOWI1YTUwMWNiNzJiMDk5ZTRjOWZkLi5lMWI3NDhlMjE4M2Ri
NzJkMDlkMTg3OWIxY2JmNzg5MTFhZWIzOGU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMjA3LDYgKzIwNywxMSBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChi
b29sIGZsYWcpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50
LCBib29sIGlzQXV0b2ZpbGxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcG9w
dXBCbG9ja2luZ0VuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>