<?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>22795</bug_id>
          
          <creation_ts>2008-12-10 13:38:31 -0800</creation_ts>
          <short_desc>favicons should be saved to webarchives</short_desc>
          <delta_ts>2009-01-28 19:50:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102140</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-12-10 13:38:31 -0800</bug_when>
    <thetext>* SUMMARY
When a webarchive of a page is saved, the favicon is never saved with the webarchive.  It does not matter whether the favicon is specified in a &lt;link rel=&quot;icon&quot;&gt; tag or whether it&apos;s at the default path (/favicon.ico) of the web server.

* STEPS TO REPRODUCE
1. Navigate to a web site with a favicon.  Example: &lt;http://digg.com/&gt;
2. Save the page as a webarchive.
3. Convert the webarchive to &quot;xml1&quot; format using plutil.
4. Open the text-based webarchive in a text editor.
5. Search for &quot;favicon&quot; or the URL of the &lt;link rel=&quot;icon&quot;&gt; tag.

* RESULTS
None of the saved resources in the webarchive include the favicon.

* REGRESSION
This is not a regression.  I don&apos;t believe the favicon was ever saved.

* NOTES
Because the favicon is loaded by completely different code than the rest of the resources on a web page, a special case must be added for it when saving a webarchive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102142</commentid>
    <comment_count>1</comment_count>
      <attachid>25925</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-12-10 13:55:03 -0800</bug_when>
    <thetext>Created attachment 25925
Patch v1

Proposed patch.

A couple of notes:

- Should I expose a method in WebIconDatabasePrivate.h to disable the icon database instead of using a WebIconDatabaseInternal method?  Or should I add _applicationWillTerminate: to WebIconDatabaseInternal.h and make the header Private so it is copied to PrivateHeaders?

- Similarly for the Windows LayoutTestController::setIconDatabaseEnabled(bool) method, should I expose a WebIconDatabase::close() method instead of calling shutDownWebKit()?

- I have not tried to compile the Windows code yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102147</commentid>
    <comment_count>2</comment_count>
      <attachid>25925</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-10 14:25:54 -0800</bug_when>
    <thetext>Comment on attachment 25925
Patch v1

&gt; +            RefPtr&lt;SharedBuffer&gt; data = iconDatabase()-&gt;iconForPageURL(responseURL, IntSize(16, 16))-&gt;data();
&gt; +            RefPtr&lt;ArchiveResource&gt; resource = ArchiveResource::create(data, KURL(iconURL), &quot;image/x-icon&quot;, &quot;&quot;, &quot;&quot;);

This should be data.release().

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102151</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-12-10 14:37:14 -0800</bug_when>
    <thetext>Darin didn&apos;t address any of my comments in Comment #1, and I don&apos;t have a Windows development environment handy, so it may be a while before I can land this.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102166</commentid>
    <comment_count>4</comment_count>
      <attachid>25925</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-12-10 15:36:50 -0800</bug_when>
    <thetext>Comment on attachment 25925
Patch v1

&gt; Has mac implementation

:-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102176</commentid>
    <comment_count>5</comment_count>
      <attachid>25925</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-12-10 17:05:42 -0800</bug_when>
    <thetext>Comment on attachment 25925
Patch v1

Clearing Darin&apos;s review+ flag since I need to address the issues in Comment #1 using WebIconDatabase SPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102177</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-12-10 17:06:51 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 25925 [review])
&gt; &gt; Has mac implementation
&gt; 
&gt; :-(

Sounds like you&apos;re volunteering to fix:
&lt;rdar://problem/6436020&gt; Implement WebArchive test support for DumpRenderTree on Windows

:-)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102227</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-12-11 06:58:20 -0800</bug_when>
    <thetext>Note: This patch should also add a method to the icon database to return the original image (unmodified) for saving in the WebArchive.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103270</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-12-22 21:18:15 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Note: This patch should also add a method to the icon database to return the
&gt; original image (unmodified) for saving in the WebArchive.

For now IconRecord::image(const IntSize&amp;) actually ignores the size passed in, so this isn&apos;t necessary.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104831</commentid>
    <comment_count>9</comment_count>
      <attachid>26519</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-01-07 18:50:18 -0800</bug_when>
    <thetext>Created attachment 26519
Patch v3 (there is no Patch v2)

Patch v2 was an internal patch which never saw the light of day.

Changes since Patch v1:

- Fixed data.release() issue from Comment #2.

- Fixed bug in IconDatabase::close() so that the method actually closes the internal SQLite database.  This makes isOpen() report the correct state immediately afterward calling close().

- Worked around &lt;rdar://problem/6480108&gt; in LayoutTestControllerMac.mm and LayoutTestControllerWin.cpp.  (Basically, [[WebIconDatabase sharedIconDatabase] setEnabled:FALSE] doesn&apos;t work because getting the shared instance for the first time enables the database, and disabling it right away doesn&apos;t work.  Instead, DumpRenderTree assumes it&apos;s the only client using the WebIconDatabase, and that the icon database is disabled until [WebIconDatabase sharedIconDatabase] is called.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104889</commentid>
    <comment_count>10</comment_count>
      <attachid>26519</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-08 10:00:39 -0800</bug_when>
    <thetext>Comment on attachment 26519
Patch v3 (there is no Patch v2)

r=me

But *should* favicons really be saved in web archives?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104901</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-01-08 10:33:13 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 26519 [review])
&gt; r=me
&gt; 
&gt; But *should* favicons really be saved in web archives?

For faithful reproduction (or archive) of a web page, I think they should.

Note that this method is only used (AFAICT) to create webarchive files, not for saving a DOM to the pasteboard.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105770</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-01-14 13:08:11 -0800</bug_when>
    <thetext>$ git svn dcommit
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/webarchive/resources/favicon.ico
	A	LayoutTests/webarchive/test-link-rel-icon-expected.webarchive
	A	LayoutTests/webarchive/test-link-rel-icon.html
	M	WebCore/ChangeLog
	M	WebCore/html/HTMLLinkElement.cpp
	M	WebCore/loader/archive/cf/LegacyWebArchive.cpp
	M	WebCore/loader/icon/IconDatabase.cpp
	M	WebKitTools/ChangeLog
	M	WebKitTools/DumpRenderTree/LayoutTestController.cpp
	M	WebKitTools/DumpRenderTree/LayoutTestController.h
	M	WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm
	M	WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm
	M	WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp
	M	WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
Committed r39904
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105774</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-01-14 13:24:27 -0800</bug_when>
    <thetext>Follow-up build fix for GTK port:

$ git svn dcommit
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebKitTools/ChangeLog
	M	WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp
	M	WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp
Committed r39906
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105805</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-01-14 15:19:43 -0800</bug_when>
    <thetext>Follow-up fix for Windows:

$ git svn dcommit
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebKitTools/ChangeLog
	M	WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
Committed r39914

http://trac.webkit.org/changeset/39914
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107450</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-01-28 19:50:29 -0800</bug_when>
    <thetext>Note that the layout test in this bug was disabled later.  See Bug 23331.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25925</attachid>
            <date>2008-12-10 13:55:03 -0800</date>
            <delta_ts>2009-01-07 18:50:18 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-22795-v1.diff</filename>
            <type>text/plain</type>
            <size>21782</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">Y29tbWl0IDhiNWFlNTk4YzI5NmJlOWExN2Q0NzdlZjhjMDdiNmY1OTZhNGU1MzkKQXV0aG9yOiBE
YXZpZCBLaWx6ZXIgPGRka2lsemVyQGFwcGxlLmNvbT4KRGF0ZTogICBXZWQgRGVjIDEwIDEzOjQ2
OjQwIDIwMDggLTA4MDAKCiAgICAgICAgICAgIEJ1ZyAyMjc5NTogZmF2aWNvbnMgc2hvdWxkIGJl
IHNhdmVkIHRvIHdlYmFyY2hpdmVzCiAgICAKICAgICAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc5NT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KICAgIAogICAgV2ViQ29yZToKICAgIAogICAgICAgICAgICBUZXN0
OiB3ZWJhcmNoaXZlL3Rlc3QtbGluay1yZWwtaWNvbi5odG1sCiAgICAKICAgICAgICAgICAgKiBo
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0Vs
ZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyk6IERvIG5vdCBhZGQKICAgICAgICAg
ICAgZmF2aWNvbiBVUkxzIHRvIHRoZSBsaXN0IHNpbmNlIG5vIEFyY2hpdmVSZXNvdXJjZSBvciBD
YWNoZWRSZXNvdXJjZQogICAgICAgICAgICBpcyBldmVyIGNyZWF0ZWQgZm9yIHRoZW0uCiAgICAg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CiAgICAgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOiBIYW5kbGUgZmF2aWNvbnMg
YXMgYSBzcGVjaWFsCiAgICAgICAgICAgIGNhc2UgZm9yIGFsbCBtYWluIHJlc291cmNlcy4KICAg
IAogICAgV2ViS2l0VG9vbHM6CiAgICAKICAgICAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CiAgICAgICAgICAgIChzZXRJY29uRGF0YWJhc2VFbmFibGVk
Q2FsbGJhY2spOiBBZGRlZC4KICAgICAgICAgICAgKHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkQ2FsbGJhY2spOiBSZWFscGhhYmV0aXplZC4KICAgICAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOiBBZGRlZCBlbnRyeSBmb3IgY2FsbGluZwogICAgICAg
ICAgICBMYXlvdXRUZXN0Q29udHJvbGxlci5zZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wpIGZy
b20gSmF2YVNjcmlwdC4KICAgICAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oOgogICAgICAgICAgICAoc2V0SWNvbkRhdGFiYXNlRW5hYmxlZENhbGxiYWNrKTog
QWRkZWQgZGVjbGFyYXRpb24uCiAgICAgICAgICAgIChzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZENhbGxiYWNrKTogUmVhbHBoYWJldGl6ZWQuCiAgICAKICAgICAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CiAgICAgICAgICAgIChydW5UZXN0KTogRGlz
YWJsZSB0aGUgaWNvbiBkYXRhYmFzZSBiZWZvcmUgZWFjaCB0ZXN0LgogICAgICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKICAgICAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKTogQWRkZWQuCiAg
ICAgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0Vu
YWJsZWQpOiBSZWFscGhhYmV0aXplZC4KICAgIAogICAgICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CiAgICAgICAgICAgIChydW5UZXN0KTogRGlzYWJsZSB0
aGUgaWNvbiBkYXRhYmFzZSBiZWZvcmUgZWFjaCB0ZXN0LgogICAgICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CiAgICAgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk6IEFkZGVkLgogICAgCiAg
ICBMYXlvdXRUZXN0czoKICAgIAogICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyB0ZXN0IGNhc2Ug
Y29udGFpbnMgYSB3b3JrYXJvdW5kIGZvciBCdWcgMjEwMjYgYW5kCiAgICAgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82MjQwODI2PiB3aGljaCBtYXkgYmUgcmVtb3ZlZCBvbmNlIHRoYXQgaXMgZml4
ZWQuCiAgICAKICAgICAgICAgICAgKiB3ZWJhcmNoaXZlL3Jlc291cmNlcy9mYXZpY29uLmljbzog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2Zhdmljb24uaWNv
LgogICAgICAgICAgICAqIHdlYmFyY2hpdmUvdGVzdC1saW5rLXJlbC1pY29uLWV4cGVjdGVkLndl
YmFyY2hpdmU6IEFkZGVkLgogICAgICAgICAgICAqIHdlYmFyY2hpdmUvdGVzdC1saW5rLXJlbC1p
Y29uLmh0bWw6IEFkZGVkLgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZWYwNDNlLi4wZDNmZjAyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMDgtMTItMTAgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBCdWcgMjI3OTU6IGZhdmljb25zIHNob3VsZCBiZSBzYXZlZCB0byB3ZWJhcmNo
aXZlcworCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm90ZSB0aGF0IHRoaXMgdGVzdCBjYXNlIGNvbnRhaW5zIGEgd29ya2Fyb3VuZCBmb3IgQnVnIDIx
MDI2IGFuZAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI0MDgyNj4gd2hpY2ggbWF5IGJlIHJl
bW92ZWQgb25jZSB0aGF0IGlzIGZpeGVkLgorCisgICAgICAgICogd2ViYXJjaGl2ZS9yZXNvdXJj
ZXMvZmF2aWNvbi5pY286IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291
cmNlcy9mYXZpY29uLmljby4KKyAgICAgICAgKiB3ZWJhcmNoaXZlL3Rlc3QtbGluay1yZWwtaWNv
bi1leHBlY3RlZC53ZWJhcmNoaXZlOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhcmNoaXZlL3Rlc3Qt
bGluay1yZWwtaWNvbi5odG1sOiBBZGRlZC4KKwogMjAwOC0xMi0wOSAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1ZyAxMTg1MDogV2ViYXJjaGl2ZSBmYWls
cyB0byBzYXZlIGltYWdlcyByZWZlcmVuY2VkIGluIENTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViYXJjaGl2ZS9yZXNvdXJjZXMvZmF2aWNvbi5pY28gYi9MYXlvdXRUZXN0cy93ZWJhcmNo
aXZlL3Jlc291cmNlcy9mYXZpY29uLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40ZDhlYjA0CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvd2Vi
YXJjaGl2ZS9yZXNvdXJjZXMvZmF2aWNvbi5pY28gZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhcmNoaXZlL3Rlc3QtbGluay1yZWwtaWNvbi1leHBlY3RlZC53ZWJhcmNoaXZlIGIv
TGF5b3V0VGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVsLWljb24tZXhwZWN0ZWQud2ViYXJj
aGl2ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTg4YzUwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVsLWljb24tZXhw
ZWN0ZWQud2ViYXJjaGl2ZQpAQCAtMCwwICsxLDEwNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQg
UExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEu
MC5kdGQiPgorPHBsaXN0IHZlcnNpb249IjEuMCI+Cis8ZGljdD4KKwk8a2V5PldlYk1haW5SZXNv
dXJjZTwva2V5PgorCTxkaWN0PgorCQk8a2V5PldlYlJlc291cmNlRGF0YTwva2V5PgorCQk8c3Ry
aW5nPiZsdDtodG1sJmd0OyZsdDtoZWFkJmd0OworJmx0O3NjcmlwdCZndDsKK2Z1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIGlmICghbG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/JykpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0SWNvbkRhdGFiYXNlRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBET01Bc1dlYkFyY2hpdmUoKTsKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorICAgICAg
ICAvLyBSZWxvYWQgb25jZSBzaW5jZSB3ZSBqdXN0IGVuYWJsZWQgdGhlIGljb24gZGF0YWJhc2UK
KyAgICAgICAgcmVkaXJlY3QoJzEnKTsKKyAgICB9IGVsc2UgaWYgKCFsb2NhdGlvbi5ocmVmLm1h
dGNoKCdcXD8yJykpIHsKKyAgICAgICAgLy8gUmVsb2FkIHR3aWNlIHRvIHdvcmsgYXJvdW5kIEJ1
ZyAyMTAyNiAvICZsdDtyZGFyOi8vcHJvYmxlbS82MjQwODI2Jmd0OworICAgICAgICByZWRpcmVj
dCgnMicpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcmVkaXJlY3QoYXJnKQoreworICAgIHZh
ciBsb2MgPSAnJyArIGRvY3VtZW50LmxvY2F0aW9uOworICAgIGlmIChsb2MuaW5kZXhPZignPycp
ICZndDsgMCkKKyAgICAgICAgbG9jID0gbG9jLnN1YnN0cmluZygwLCBsb2MuaW5kZXhPZignPycp
KTsKKyAgICBkb2N1bWVudC5sb2NhdGlvbiA9IGxvYyArICc/JyArIGFyZzsKK30KKyZsdDsvc2Ny
aXB0Jmd0OworJmx0O2xpbmsgcmVsPSJpY29uIiBocmVmPSJyZXNvdXJjZXMvZmF2aWNvbi5pY28i
IHR5cGU9ImltYWdlL3gtaWNvbiImZ3Q7CismbHQ7L2hlYWQmZ3Q7Jmx0O2JvZHkgb25sb2FkPSJy
dW5UZXN0KCkiJmd0OworCisKKyZsdDsvYm9keSZndDsmbHQ7L2h0bWwmZ3Q7PC9zdHJpbmc+CisJ
CTxrZXk+V2ViUmVzb3VyY2VGcmFtZU5hbWU8L2tleT4KKwkJPHN0cmluZz48L3N0cmluZz4KKwkJ
PGtleT5XZWJSZXNvdXJjZU1JTUVUeXBlPC9rZXk+CisJCTxzdHJpbmc+dGV4dC9odG1sPC9zdHJp
bmc+CisJCTxrZXk+V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lPC9rZXk+CisJCTxzdHJpbmc+
VVRGLTg8L3N0cmluZz4KKwkJPGtleT5XZWJSZXNvdXJjZVVSTDwva2V5PgorCQk8c3RyaW5nPmZp
bGU6Ly8vTGF5b3V0VGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVsLWljb24uaHRtbD8yPC9z
dHJpbmc+CisJPC9kaWN0PgorCTxrZXk+V2ViU3VicmVzb3VyY2VzPC9rZXk+CisJPGFycmF5Pgor
CQk8ZGljdD4KKwkJCTxrZXk+V2ViUmVzb3VyY2VEYXRhPC9rZXk+CisJCQk8ZGF0YT4KKwkJCUFB
QUJBQUVBRUJBQUFBQUFJQUJvQkFBQUZnQUFBQ2dBQUFBUUFBQUFJQUFBQUFFQUlBQUEKKwkJCUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC8KKwkJCUFQ
OEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEKKwkJCS93
RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQUFCay93QUEKKwkJCS8v
OEFBUC92QUFELy93QUFBQWNBQVAvL0FBRC8vd0FBLy84QUFQLy9BQUMyUHdBQUFBQUEKKwkJCUFQ
Ly9BQUQvOUFBQXVYOEFBT3prQUFDbUpBPT0KKwkJCTwvZGF0YT4KKwkJCTxrZXk+V2ViUmVzb3Vy
Y2VNSU1FVHlwZTwva2V5PgorCQkJPHN0cmluZz5pbWFnZS94LWljb248L3N0cmluZz4KKwkJCTxr
ZXk+V2ViUmVzb3VyY2VSZXNwb25zZTwva2V5PgorCQkJPGRpY3Q+CisJCQkJPGtleT5NSU1FVHlw
ZTwva2V5PgorCQkJCTxzdHJpbmc+aW1hZ2UveC1pY29uPC9zdHJpbmc+CisJCQkJPGtleT5VUkw8
L2tleT4KKwkJCQk8c3RyaW5nPmZpbGU6Ly8vTGF5b3V0VGVzdHMvd2ViYXJjaGl2ZS9yZXNvdXJj
ZXMvZmF2aWNvbi5pY288L3N0cmluZz4KKwkJCQk8a2V5PmV4cGVjdGVkQ29udGVudExlbmd0aDwv
a2V5PgorCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CisJCQkJPGtleT50ZXh0RW5jb2RpbmdOYW1l
PC9rZXk+CisJCQkJPHN0cmluZz48L3N0cmluZz4KKwkJCTwvZGljdD4KKwkJCTxrZXk+V2ViUmVz
b3VyY2VVUkw8L2tleT4KKwkJCTxzdHJpbmc+ZmlsZTovLy9MYXlvdXRUZXN0cy93ZWJhcmNoaXZl
L3Jlc291cmNlcy9mYXZpY29uLmljbzwvc3RyaW5nPgorCQk8L2RpY3Q+CisJPC9hcnJheT4KKzwv
ZGljdD4KKzwvcGxpc3Q+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhcmNoaXZlL3Rlc3Qt
bGluay1yZWwtaWNvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVs
LWljb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmM5ODI2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVsLWlj
b24uaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIGlmICghbG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/JykpIHsK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SWNvbkRhdGFiYXNlRW5hYmxlZCh0cnVlKTsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBET01Bc1dlYkFyY2hpdmUoKTsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQor
ICAgICAgICAvLyBSZWxvYWQgb25jZSBzaW5jZSB3ZSBqdXN0IGVuYWJsZWQgdGhlIGljb24gZGF0
YWJhc2UKKyAgICAgICAgcmVkaXJlY3QoJzEnKTsKKyAgICB9IGVsc2UgaWYgKCFsb2NhdGlvbi5o
cmVmLm1hdGNoKCdcXD8yJykpIHsKKyAgICAgICAgLy8gUmVsb2FkIHR3aWNlIHRvIHdvcmsgYXJv
dW5kIEJ1ZyAyMTAyNiAvIDxyZGFyOi8vcHJvYmxlbS82MjQwODI2PgorICAgICAgICByZWRpcmVj
dCgnMicpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcmVkaXJlY3QoYXJnKQoreworICAgIHZh
ciBsb2MgPSAnJyArIGRvY3VtZW50LmxvY2F0aW9uOworICAgIGlmIChsb2MuaW5kZXhPZignPycp
ID4gMCkKKyAgICAgICAgbG9jID0gbG9jLnN1YnN0cmluZygwLCBsb2MuaW5kZXhPZignPycpKTsK
KyAgICBkb2N1bWVudC5sb2NhdGlvbiA9IGxvYyArICc/JyArIGFyZzsKK30KKzwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJpY29uIiBocmVmPSJyZXNvdXJjZXMvZmF2aWNvbi5pY28iIHR5cGU9ImltYWdl
L3gtaWNvbiI+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGRiZDQ2NjcuLjM1NjM2NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDgtMTItMTAgIERhdmlk
IEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBCdWcgMjI3OTU6IGZhdmlj
b25zIHNob3VsZCBiZSBzYXZlZCB0byB3ZWJhcmNoaXZlcworCisgICAgICAgIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2ViYXJjaGl2ZS90ZXN0LWxpbmst
cmVsLWljb24uaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMpOiBEbyBub3QgYWRkCisgICAgICAgIGZhdmljb24gVVJMcyB0byB0aGUgbGlzdCBzaW5jZSBu
byBBcmNoaXZlUmVzb3VyY2Ugb3IgQ2FjaGVkUmVzb3VyY2UKKyAgICAgICAgaXMgZXZlciBjcmVh
dGVkIGZvciB0aGVtLgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKTogSGFu
ZGxlIGZhdmljb25zIGFzIGEgc3BlY2lhbAorICAgICAgICBjYXNlIGZvciBhbGwgbWFpbiByZXNv
dXJjZXMuCisKIDIwMDgtMTItMDkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBCdWcgMTE4NTA6IFdlYmFyY2hpdmUgZmFpbHMgdG8gc2F2ZSBpbWFnZXMgcmVm
ZXJlbmNlZCBpbiBDU1MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggZDQwNWM4Zi4uNGI1
ZThlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTM4NCwxMSArMzg0LDEwIEBAIHZv
aWQgSFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgU3R5bGVkRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCi0gICAgaWYgKG1faXNJY29uKSB7Ci0gICAgICAgIGFk
ZFN1YnJlc291cmNlVVJMKHVybHMsIGhyZWYoKSk7CisgICAgLy8gRmF2aWNvbnMgYXJlIGhhbmRs
ZWQgYnkgYSBzcGVjaWFsIGNhc2UgaW4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCkKKyAgICBp
ZiAobV9pc0ljb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisKICAgICBpZiAoIW1f
aXNTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA4MWUyYjc4Li4wNWU3Y2VlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CisrKyBiL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJIVE1MRnJh
bWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJY29u
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTU0MSw3ICs1NDIsMTcgQEAgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIC8v
IEFkZCBmYXZpY29uIGlmIG9uZSBleGlzdHMgZm9yIHRoaXMgcGFnZQorICAgIGlmIChpY29uRGF0
YWJhc2UoKSAmJiBpY29uRGF0YWJhc2UoKS0+aXNFbmFibGVkKCkpIHsKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBpY29uVVJMID0gaWNvbkRhdGFiYXNlKCktPmljb25VUkxGb3JQYWdlVVJMKHJlc3Bv
bnNlVVJMKTsKKyAgICAgICAgaWYgKCFpY29uVVJMLmlzRW1wdHkoKSAmJiBpY29uRGF0YWJhc2Uo
KS0+aWNvbkRhdGFLbm93bkZvckljb25VUkwoaWNvblVSTCkpIHsKKyAgICAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwocmVz
cG9uc2VVUkwsIEludFNpemUoMTYsIDE2KSktPmRhdGEoKTsKKyAgICAgICAgICAgIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YSwg
S1VSTChpY29uVVJMKSwgImltYWdlL3gtaWNvbiIsICIiLCAiIik7CisgICAgICAgICAgICBzdWJy
ZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICByZXR1cm4gY3JlYXRlKG1haW5SZXNvdXJjZSwgc3VicmVzb3VyY2VzLCBzdWJmcmFtZUFy
Y2hpdmVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY3ODA1OGEuLmZiNDRlZWEgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAwOC0xMi0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIEJ1ZyAyMjc5NTogZmF2aWNvbnMgc2hvdWxkIGJlIHNhdmVkIHRvIHdlYmFyY2hpdmVz
CisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc5
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldEljb25E
YXRhYmFzZUVuYWJsZWRDYWxsYmFjayk6IEFkZGVkLgorICAgICAgICAoc2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWRDYWxsYmFjayk6IFJlYWxwaGFiZXRpemVkLgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6IEFkZGVkIGVudHJ5IGZvciBjYWxsaW5n
CisgICAgICAgIExheW91dFRlc3RDb250cm9sbGVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9v
bCkgZnJvbSBKYXZhU2NyaXB0LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmg6CisgICAgICAgIChzZXRJY29uRGF0YWJhc2VFbmFibGVkQ2FsbGJhY2spOiBB
ZGRlZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
Q2FsbGJhY2spOiBSZWFscGhhYmV0aXplZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOiBEaXNhYmxlIHRoZSBpY29u
IGRhdGFiYXNlIGJlZm9yZSBlYWNoIHRlc3QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6IFJlYWxwaGFiZXRpemVk
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAg
ICAgICAgKHJ1blRlc3QpOiBEaXNhYmxlIHRoZSBpY29uIGRhdGFiYXNlIGJlZm9yZSBlYWNoIHRl
c3QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFi
bGVkKTogQWRkZWQuCisKIDIwMDgtMTItMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5
IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA0ZGFkNWY0Li41MGRhMjk2IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MDAs
NiArNTAwLDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldERhdGFiYXNlUXVvdGFDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuCiAKIH0KIAorc3RhdGljIEpTVmFs
dWVSZWYgc2V0SWNvbkRhdGFiYXNlRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOworICAgIGNvbnRyb2xsZXItPnNldEljb25EYXRhYmFzZUVuYWJsZWQoSlNWYWx1ZVRvQm9v
bGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQpAQCAtNTA3LDYgKzUxOSw3IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTCiAKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOwogICAgIGNvbnRyb2xsZXItPnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7CisKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTgxMiw2ICs4MjUsNyBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KCkKICAgICAgICAgeyAic2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlIiwgc2V0
Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUiLCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldERhdGFiYXNlUXVvdGEiLCBzZXREYXRhYmFz
ZVF1b3RhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgCisgICAgICAgIHsgInNldEljb25EYXRhYmFzZUVuYWJs
ZWQiLCBzZXRJY29uRGF0YWJhc2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQiLCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmlyc3RSZXNw
b25kZXIiLCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAic2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCBzZXRQZXJzaXN0
ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC04MzcsNSArODUx
LDMgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0
aW9ucygpCiAKICAgICByZXR1cm4gc3RhdGljRnVuY3Rpb25zOwogfQotCi0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDEwOGRi
MzcuLjI3MjNhOWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaApAQCAtNjEsMTMgKzYxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0Q3VzdG9tUG9s
aWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSk7CiAgICAgdm9pZCBzZXREYXRhYmFzZVF1b3Rh
KHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CisgICAgdm9pZCBzZXRJY29uRGF0YWJhc2VFbmFi
bGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJv
ZmlsaW5nRW5hYmxlZChib29sIHByb2ZpbGluZ0VuYWJsZWQpOwogICAgIHZvaWQgc2V0TWFpbkZy
YW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQo
Ym9vbCBmbGFnKTsKICAgICB2b2lkIHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29s
IGN5Y2xlcyk7CiAgICAgdm9pZCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBmbGFn
KTsKICAgICB2b2lkIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBmbGFn
KTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgcHJvZmlsaW5n
RW5hYmxlZCk7CiAgICAgdm9pZCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29s
IGZsYWcpOwogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZyk7CiAg
ICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4
IGFmYjJiMGQuLmJjZjE5ODIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRl
bm5pc0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMDM1LDYgKzEwMzUsOCBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKICAgICB0b3BM
b2FkaW5nRnJhbWUgPSBuaWw7CiAgICAgZG9uZSA9IE5POwogCisgICAgZ0xheW91dFRlc3RDb250
cm9sbGVyLT5zZXRJY29uRGF0YWJhc2VFbmFibGVkKGZhbHNlKTsKKwogICAgIGlmIChkaXNhbGxv
d2VkVVJMcykKICAgICAgICAgQ0ZTZXRSZW1vdmVBbGxWYWx1ZXMoZGlzYWxsb3dlZFVSTHMpOwog
ICAgIGlmIChzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMocGF0aE9yVVJMLmNfc3RyKCkpKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCmluZGV4IDk2ZTRiOWIuLjY5OTIwNzAgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZpZXdQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViSWNvbkRhdGFiYXNlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViSFRNTFJlcHJlc2VudGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSFRNTFZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSGlzdG9yeS5oPgpAQCAtMjIyLDYgKzIy
MywyOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2ln
bmVkIGxvbmcgbG9uZyBxdW90YSkKICAgICBbb3JpZ2luIHJlbGVhc2VdOwogfQogCitAaW50ZXJm
YWNlIFdlYkljb25EYXRhYmFzZSAoV2ViSW50ZXJuYWwpCistICh2b2lkKV9hcHBsaWNhdGlvbldp
bGxUZXJtaW5hdGU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworQGVuZAorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRh
dGFiYXNlRW5hYmxlZCkKK3sKKyAgICBzdGF0aWMgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJh
c2UgPSBuaWw7CisgICAgaWYgKCFpY29uRGF0YWJhc2UgJiYgaWNvbkRhdGFiYXNlRW5hYmxlZCkK
KyAgICAgICAgaWNvbkRhdGFiYXNlID0gW1tXZWJJY29uRGF0YWJhc2Ugc2hhcmVkSWNvbkRhdGFi
YXNlXSByZXRhaW5dOworICAgIGVsc2UgaWYgKGljb25EYXRhYmFzZSAmJiAhaWNvbkRhdGFiYXNl
RW5hYmxlZCkgeworICAgICAgICBbaWNvbkRhdGFiYXNlIF9hcHBsaWNhdGlvbldpbGxUZXJtaW5h
dGU6bmlsXTsKKyAgICAgICAgW2ljb25EYXRhYmFzZSByZWxlYXNlXTsKKyAgICAgICAgaWNvbkRh
dGFiYXNlID0gbmlsOworICAgIH0KK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBwcm9maWxpbmdFbmFibGVkKQoreworICAg
IFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZDpwcm9maWxpbmdFbmFibGVkXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gaW5zcGVj
dG9yXSBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZDpwcm9maWxpbmdFbmFibGVkXTsKK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRl
cihib29sIGZsYWcpCiB7CiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbW21haW5GcmFtZSBm
cmFtZVZpZXddIGRvY3VtZW50Vmlld107CkBAIC0yODksMTIgKzMxMiw2IEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGZsYWcpCiAg
ICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOmZsYWdd
OwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5n
RW5hYmxlZChib29sIHByb2ZpbGluZ0VuYWJsZWQpCi17Ci0gICAgW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIHByZWZlcmVuY2VzXSBzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkOnByb2ZpbGluZ0VuYWJs
ZWRdOwotICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIHNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkOnByb2ZpbGluZ0VuYWJsZWRdOwotfQotCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJvb2wgZmxhZykK
IHsKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkOmZsYWddOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKaW5kZXggYjNiNzNhOS4uMzI3MWYyOSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC03MTksNiArNzE5
LDggQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAg
ICAgZG9uZSA9IGZhbHNlOwogICAgIHRvcExvYWRpbmdGcmFtZSA9IDA7CiAKKyAgICBnTGF5b3V0
VGVzdENvbnRyb2xsZXItPnNldEljb25EYXRhYmFzZUVuYWJsZWQoZmFsc2UpOworCiAgICAgaWYg
KHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCiAgICAgICAg
IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMTBjNjMwMi4uZTFjY2QyOCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCkBAIC0yNjUsNiArMjY1LDE4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wgc2V0RGVsZWdhdGUpCiAgICAgICAgIHdlYlZp
ZXctPnNldFBvbGljeURlbGVnYXRlKE5VTEwpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCkKK3sK
KyAgICBzdGF0aWMgYm9vbCBlbmFibGVkID0gZmFsc2U7CisgICAgaWYgKCFlbmFibGVkICYmIGlj
b25EYXRhYmFzZUVuYWJsZWQpIHsKKyAgICAgICAgV2ViSWNvbkRhdGFiYXNlOjppbml0KCk7Cisg
ICAgICAgIGVuYWJsZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoZW5hYmxlZCAmJiAhaWNvbkRh
dGFiYXNlRW5hYmxlZCkgeworICAgICAgICBzaHV0RG93bldlYktpdCgpOworICAgICAgICBlbmFi
bGVkID0gZmFsc2U7CisgICAgfQorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
YWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26519</attachid>
            <date>2009-01-07 18:50:18 -0800</date>
            <delta_ts>2009-01-08 10:00:39 -0800</delta_ts>
            <desc>Patch v3 (there is no Patch v2)</desc>
            <filename>bug-22795-v3.diff</filename>
            <type>text/plain</type>
            <size>24783</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">Y29tbWl0IDdlZDk3YTc4NGZjYWU4N2E2NzkyN2Y0YjcxNTRiYmQ1NGY1NTY3OTgKQXV0aG9yOiBE
YXZpZCBLaWx6ZXIgPGRka2lsemVyQGFwcGxlLmNvbT4KRGF0ZTogICBTYXQgSmFuIDMgMDU6MTQ6
MjQgMjAwOSAtMDgwMAoKICAgICAgICAgICAgQnVnIDIyNzk1OiBmYXZpY29ucyBzaG91bGQgYmUg
c2F2ZWQgdG8gd2ViYXJjaGl2ZXMKICAgIAogICAgICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk1PgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgogICAgCiAgICBXZWJDb3JlOgogICAgCiAgICAgICAgICAgIFRlc3Q6
IHdlYmFyY2hpdmUvdGVzdC1saW5rLXJlbC1pY29uLmh0bWwKICAgIAogICAgICAgICAgICAqIGh0
bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKTogRG8gbm90IGFkZAogICAgICAgICAg
ICBmYXZpY29uIFVSTHMgdG8gdGhlIGxpc3Qgc2luY2Ugbm8gQXJjaGl2ZVJlc291cmNlIG9yIENh
Y2hlZFJlc291cmNlCiAgICAgICAgICAgIGlzIGV2ZXIgY3JlYXRlZCBmb3IgdGhlbS4KICAgICAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKICAgICAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6IEhhbmRsZSBmYXZpY29ucyBh
cyBhIHNwZWNpYWwKICAgICAgICAgICAgY2FzZSBmb3IgYWxsIG1haW4gcmVzb3VyY2VzLgogICAg
ICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CiAgICAgICAgICAgIChXZWJD
b3JlOjpJY29uRGF0YWJhc2U6OmNsb3NlKTogQWN0dWFsbHkgY2xvc2UgdGhlIFNRTGl0ZSBkYXRh
YmFzZQogICAgICAgICAgICBzbyB0aGF0IGlzT3BlbigpIHJldHVybnMgZmFsc2Ugd2hlbiBjYWxs
ZWQuICBBZGRlZCBhbiBBU1NFUlQoKSBmb3IKICAgICAgICAgICAgZ29vZCBtZWFzdXJlLgogICAg
CiAgICBXZWJLaXRUb29sczoKICAgIAogICAgICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKICAgICAgICAgICAgKHNldEljb25EYXRhYmFzZUVuYWJsZWRD
YWxsYmFjayk6IEFkZGVkLgogICAgICAgICAgICAoc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWRDYWxsYmFjayk6IFJlYWxwaGFiZXRpemVkLgogICAgICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6IEFkZGVkIGVudHJ5IGZvciBjYWxsaW5nCiAgICAgICAg
ICAgIExheW91dFRlc3RDb250cm9sbGVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCkgZnJv
bSBKYXZhU2NyaXB0LgogICAgICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmg6CiAgICAgICAgICAgIChzZXRJY29uRGF0YWJhc2VFbmFibGVkQ2FsbGJhY2spOiBB
ZGRlZCBkZWNsYXJhdGlvbi4KICAgICAgICAgICAgKHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkQ2FsbGJhY2spOiBSZWFscGhhYmV0aXplZC4KICAgIAogICAgICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKICAgICAgICAgICAgKHJ1blRlc3QpOiBEaXNh
YmxlIHRoZSBpY29uIGRhdGFiYXNlIGJlZm9yZSBlYWNoIHRlc3QuCiAgICAgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgogICAgICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQpOiBBZGRlZC4KICAg
ICAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZCk6IFJlYWxwaGFiZXRpemVkLgogICAgCiAgICAgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKICAgICAgICAgICAgKHJ1blRlc3QpOiBEaXNhYmxlIHRo
ZSBpY29uIGRhdGFiYXNlIGJlZm9yZSBlYWNoIHRlc3QuCiAgICAgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKICAgICAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKTogQWRkZWQuCiAgICAKICAg
IExheW91dFRlc3RzOgogICAgCiAgICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIHRlc3QgY2FzZSBj
b250YWlucyBhIHdvcmthcm91bmQgZm9yIEJ1ZyAyMTAyNiBhbmQKICAgICAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYyNDA4MjY+IHdoaWNoIG1heSBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBmaXhl
ZC4KICAgIAogICAgICAgICAgICAqIHdlYmFyY2hpdmUvcmVzb3VyY2VzL2Zhdmljb24uaWNvOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvZmF2aWNvbi5pY28u
CiAgICAgICAgICAgICogd2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVsLWljb24tZXhwZWN0ZWQud2Vi
YXJjaGl2ZTogQWRkZWQuCiAgICAgICAgICAgICogd2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVsLWlj
b24uaHRtbDogQWRkZWQuCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVlMDE5MWIuLmI3NzViZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAwOS0wMS0wNyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEJ1ZyAyMjc5NTogZmF2aWNvbnMgc2hvdWxkIGJlIHNhdmVkIHRvIHdlYmFyY2hp
dmVzCisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjc5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
b3RlIHRoYXQgdGhpcyB0ZXN0IGNhc2UgY29udGFpbnMgYSB3b3JrYXJvdW5kIGZvciBCdWcgMjEw
MjYgYW5kCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MjQwODI2PiB3aGljaCBtYXkgYmUgcmVt
b3ZlZCBvbmNlIHRoYXQgaXMgZml4ZWQuCisKKyAgICAgICAgKiB3ZWJhcmNoaXZlL3Jlc291cmNl
cy9mYXZpY29uLmljbzogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3Vy
Y2VzL2Zhdmljb24uaWNvLgorICAgICAgICAqIHdlYmFyY2hpdmUvdGVzdC1saW5rLXJlbC1pY29u
LWV4cGVjdGVkLndlYmFyY2hpdmU6IEFkZGVkLgorICAgICAgICAqIHdlYmFyY2hpdmUvdGVzdC1s
aW5rLXJlbC1pY29uLmh0bWw6IEFkZGVkLgorCiAyMDA4LTAxLTA1ICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmFyY2hpdmUvcmVzb3VyY2VzL2Zhdmljb24uaWNvIGIvTGF5
b3V0VGVzdHMvd2ViYXJjaGl2ZS9yZXNvdXJjZXMvZmF2aWNvbi5pY28KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4ZWIwNApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBi
L0xheW91dFRlc3RzL3dlYmFyY2hpdmUvcmVzb3VyY2VzL2Zhdmljb24uaWNvIGRpZmZlcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVsLWljb24tZXhwZWN0
ZWQud2ViYXJjaGl2ZSBiL0xheW91dFRlc3RzL3dlYmFyY2hpdmUvdGVzdC1saW5rLXJlbC1pY29u
LWV4cGVjdGVkLndlYmFyY2hpdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZGU4OGM1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFyY2hpdmUvdGVzdC1s
aW5rLXJlbC1pY29uLWV4cGVjdGVkLndlYmFyY2hpdmUKQEAgLTAsMCArMSwxMDYgQEAKKzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgcGxpc3QgUFVCTElD
ICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERz
L1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzxwbGlzdCB2ZXJzaW9uPSIxLjAiPgorPGRpY3Q+CisJ
PGtleT5XZWJNYWluUmVzb3VyY2U8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5XZWJSZXNvdXJjZURh
dGE8L2tleT4KKwkJPHN0cmluZz4mbHQ7aHRtbCZndDsmbHQ7aGVhZCZndDsKKyZsdDtzY3JpcHQm
Z3Q7CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAoIWxvY2F0aW9uLmhyZWYubWF0Y2go
J1xcPycpKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQodHJ1
ZSk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRE9NQXNXZWJBcmNoaXZl
KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gUmVsb2FkIG9uY2Ugc2luY2Ugd2UganVzdCBlbmFibGVkIHRo
ZSBpY29uIGRhdGFiYXNlCisgICAgICAgIHJlZGlyZWN0KCcxJyk7CisgICAgfSBlbHNlIGlmICgh
bG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/MicpKSB7CisgICAgICAgIC8vIFJlbG9hZCB0d2ljZSB0
byB3b3JrIGFyb3VuZCBCdWcgMjEwMjYgLyAmbHQ7cmRhcjovL3Byb2JsZW0vNjI0MDgyNiZndDsK
KyAgICAgICAgcmVkaXJlY3QoJzInKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJlZGlyZWN0
KGFyZykKK3sKKyAgICB2YXIgbG9jID0gJycgKyBkb2N1bWVudC5sb2NhdGlvbjsKKyAgICBpZiAo
bG9jLmluZGV4T2YoJz8nKSAmZ3Q7IDApCisgICAgICAgIGxvYyA9IGxvYy5zdWJzdHJpbmcoMCwg
bG9jLmluZGV4T2YoJz8nKSk7CisgICAgZG9jdW1lbnQubG9jYXRpb24gPSBsb2MgKyAnPycgKyBh
cmc7Cit9CismbHQ7L3NjcmlwdCZndDsKKyZsdDtsaW5rIHJlbD0iaWNvbiIgaHJlZj0icmVzb3Vy
Y2VzL2Zhdmljb24uaWNvIiB0eXBlPSJpbWFnZS94LWljb24iJmd0OworJmx0Oy9oZWFkJmd0OyZs
dDtib2R5IG9ubG9hZD0icnVuVGVzdCgpIiZndDsKKworCismbHQ7L2JvZHkmZ3Q7Jmx0Oy9odG1s
Jmd0Ozwvc3RyaW5nPgorCQk8a2V5PldlYlJlc291cmNlRnJhbWVOYW1lPC9rZXk+CisJCTxzdHJp
bmc+PC9zdHJpbmc+CisJCTxrZXk+V2ViUmVzb3VyY2VNSU1FVHlwZTwva2V5PgorCQk8c3RyaW5n
PnRleHQvaHRtbDwvc3RyaW5nPgorCQk8a2V5PldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZTwv
a2V5PgorCQk8c3RyaW5nPlVURi04PC9zdHJpbmc+CisJCTxrZXk+V2ViUmVzb3VyY2VVUkw8L2tl
eT4KKwkJPHN0cmluZz5maWxlOi8vL0xheW91dFRlc3RzL3dlYmFyY2hpdmUvdGVzdC1saW5rLXJl
bC1pY29uLmh0bWw/Mjwvc3RyaW5nPgorCTwvZGljdD4KKwk8a2V5PldlYlN1YnJlc291cmNlczwv
a2V5PgorCTxhcnJheT4KKwkJPGRpY3Q+CisJCQk8a2V5PldlYlJlc291cmNlRGF0YTwva2V5Pgor
CQkJPGRhdGE+CisJCQlBQUFCQUFFQUVCQUFBQUFBSUFCb0JBQUFGZ0FBQUNnQUFBQVFBQUFBSUFB
QUFBRUFJQUFBCisJCQlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FQOEEvd0QvCisJCQlBUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4
QS93RC9BUDhBCisJCQkvd0QvQVA4QS93RC9BUDhBL3dEL0FQOEEvd0QvQVA4QS93RC9BUDhBL3dE
L0FBQmsvd0FBCisJCQkvLzhBQVAvdkFBRC8vd0FBQUFjQUFQLy9BQUQvL3dBQS8vOEFBUC8vQUFD
MlB3QUFBQUFBCisJCQlBUC8vQUFELzlBQUF1WDhBQU96a0FBQ21KQT09CisJCQk8L2RhdGE+CisJ
CQk8a2V5PldlYlJlc291cmNlTUlNRVR5cGU8L2tleT4KKwkJCTxzdHJpbmc+aW1hZ2UveC1pY29u
PC9zdHJpbmc+CisJCQk8a2V5PldlYlJlc291cmNlUmVzcG9uc2U8L2tleT4KKwkJCTxkaWN0Pgor
CQkJCTxrZXk+TUlNRVR5cGU8L2tleT4KKwkJCQk8c3RyaW5nPmltYWdlL3gtaWNvbjwvc3RyaW5n
PgorCQkJCTxrZXk+VVJMPC9rZXk+CisJCQkJPHN0cmluZz5maWxlOi8vL0xheW91dFRlc3RzL3dl
YmFyY2hpdmUvcmVzb3VyY2VzL2Zhdmljb24uaWNvPC9zdHJpbmc+CisJCQkJPGtleT5leHBlY3Rl
ZENvbnRlbnRMZW5ndGg8L2tleT4KKwkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgorCQkJCTxrZXk+
dGV4dEVuY29kaW5nTmFtZTwva2V5PgorCQkJCTxzdHJpbmc+PC9zdHJpbmc+CisJCQk8L2RpY3Q+
CisJCQk8a2V5PldlYlJlc291cmNlVVJMPC9rZXk+CisJCQk8c3RyaW5nPmZpbGU6Ly8vTGF5b3V0
VGVzdHMvd2ViYXJjaGl2ZS9yZXNvdXJjZXMvZmF2aWNvbi5pY288L3N0cmluZz4KKwkJPC9kaWN0
PgorCTwvYXJyYXk+Cis8L2RpY3Q+Cis8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViYXJjaGl2ZS90ZXN0LWxpbmstcmVsLWljb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmFyY2hp
dmUvdGVzdC1saW5rLXJlbC1pY29uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uODJjOTgyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFyY2hpdmUv
dGVzdC1saW5rLXJlbC1pY29uLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAoIWxvY2F0aW9uLmhyZWYu
bWF0Y2goJ1xcPycpKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEljb25EYXRhYmFzZUVuYWJs
ZWQodHJ1ZSk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRE9NQXNXZWJB
cmNoaXZlKCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gUmVsb2FkIG9uY2Ugc2luY2Ugd2UganVzdCBlbmFi
bGVkIHRoZSBpY29uIGRhdGFiYXNlCisgICAgICAgIHJlZGlyZWN0KCcxJyk7CisgICAgfSBlbHNl
IGlmICghbG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/MicpKSB7CisgICAgICAgIC8vIFJlbG9hZCB0
d2ljZSB0byB3b3JrIGFyb3VuZCBCdWcgMjEwMjYgLyA8cmRhcjovL3Byb2JsZW0vNjI0MDgyNj4K
KyAgICAgICAgcmVkaXJlY3QoJzInKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJlZGlyZWN0
KGFyZykKK3sKKyAgICB2YXIgbG9jID0gJycgKyBkb2N1bWVudC5sb2NhdGlvbjsKKyAgICBpZiAo
bG9jLmluZGV4T2YoJz8nKSA+IDApCisgICAgICAgIGxvYyA9IGxvYy5zdWJzdHJpbmcoMCwgbG9j
LmluZGV4T2YoJz8nKSk7CisgICAgZG9jdW1lbnQubG9jYXRpb24gPSBsb2MgKyAnPycgKyBhcmc7
Cit9Cis8L3NjcmlwdD4KKzxsaW5rIHJlbD0iaWNvbiIgaHJlZj0icmVzb3VyY2VzL2Zhdmljb24u
aWNvIiB0eXBlPSJpbWFnZS94LWljb24iPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYTg1MTQ4Li42MDEwZmRlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDA5LTAxLTA3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAg
QnVnIDIyNzk1OiBmYXZpY29ucyBzaG91bGQgYmUgc2F2ZWQgdG8gd2ViYXJjaGl2ZXMKKworICAg
ICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHdlYmFy
Y2hpdmUvdGVzdC1saW5rLXJlbC1pY29uLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTExpbmtF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6YWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKTogRG8gbm90IGFkZAorICAgICAgICBmYXZpY29uIFVSTHMgdG8g
dGhlIGxpc3Qgc2luY2Ugbm8gQXJjaGl2ZVJlc291cmNlIG9yIENhY2hlZFJlc291cmNlCisgICAg
ICAgIGlzIGV2ZXIgY3JlYXRlZCBmb3IgdGhlbS4KKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZSk6IEhhbmRsZSBmYXZpY29ucyBhcyBhIHNwZWNpYWwKKyAgICAgICAgY2FzZSBm
b3IgYWxsIG1haW4gcmVzb3VyY2VzLgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmNsb3NlKTogQWN0dWFsbHkg
Y2xvc2UgdGhlIFNRTGl0ZSBkYXRhYmFzZQorICAgICAgICBzbyB0aGF0IGlzT3BlbigpIHJldHVy
bnMgZmFsc2Ugd2hlbiBjYWxsZWQuICBBZGRlZCBhbiBBU1NFUlQoKSBmb3IKKyAgICAgICAgZ29v
ZCBtZWFzdXJlLgorCiAyMDA5LTAxLTA2ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKaW5kZXggMTkyMjI2ZC4uNTBjZGVmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0zODQsMTEgKzM4NCwxMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhU
TUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKLSAgICBpZiAo
bV9pc0ljb24pIHsKLSAgICAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgaHJlZigpKTsKKyAg
ICAvLyBGYXZpY29ucyBhcmUgaGFuZGxlZCBieSBhIHNwZWNpYWwgY2FzZSBpbiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoKQorICAgIGlmIChtX2lzSWNvbikKICAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKKwogICAgIGlmICghbV9pc1N0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKICAg
ICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmlu
ZGV4IDgxZTJiNzguLjU0NDkwZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5o
IgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtNTQxLDcgKzU0Miwx
NyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQotICAgIAorCisgICAgLy8gQWRkIGZhdmljb24gaWYgb25lIGV4aXN0cyBmb3IgdGhpcyBw
YWdlCisgICAgaWYgKGljb25EYXRhYmFzZSgpICYmIGljb25EYXRhYmFzZSgpLT5pc0VuYWJsZWQo
KSkgeworICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS0+aWNv
blVSTEZvclBhZ2VVUkwocmVzcG9uc2VVUkwpOworICAgICAgICBpZiAoIWljb25VUkwuaXNFbXB0
eSgpICYmIGljb25EYXRhYmFzZSgpLT5pY29uRGF0YUtub3duRm9ySWNvblVSTChpY29uVVJMKSkg
eworICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGljb25EYXRhYmFzZSgp
LT5pY29uRm9yUGFnZVVSTChyZXNwb25zZVVSTCwgSW50U2l6ZSgxNiwgMTYpKS0+ZGF0YSgpOwor
ICAgICAgICAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVz
b3VyY2U6OmNyZWF0ZShkYXRhLnJlbGVhc2UoKSwgS1VSTChpY29uVVJMKSwgImltYWdlL3gtaWNv
biIsICIiLCAiIik7CisgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJl
bGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gY3JlYXRlKG1haW5SZXNv
dXJjZSwgc3VicmVzb3VyY2VzLCBzdWJmcmFtZUFyY2hpdmVzKTsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGQwMzNiMjQuLjBjYTAwZTUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE3NCw2ICsxNzQsOSBAQCB2b2lkIEljb25EYXRhYmFz
ZTo6Y2xvc2UoKQogICAgIG1fc3luY1RocmVhZFJ1bm5pbmcgPSBmYWxzZTsgICAgCiAgICAgbV90
aHJlYWRUZXJtaW5hdGlvblJlcXVlc3RlZCA9IGZhbHNlOwogICAgIG1fcmVtb3ZlSWNvbnNSZXF1
ZXN0ZWQgPSBmYWxzZTsKKworICAgIG1fc3luY0RCLmNsb3NlKCk7CisgICAgQVNTRVJUKCFpc09w
ZW4oKSk7CiB9CiAKIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygpCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXgg
ZDJhMmZkYy4uZWJhNGRiYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDA5LTAxLTA3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQnVnIDIyNzk1OiBmYXZp
Y29ucyBzaG91bGQgYmUgc2F2ZWQgdG8gd2ViYXJjaGl2ZXMKKworICAgICAgICA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0SWNvbkRhdGFiYXNlRW5hYmxlZENhbGxiYWNr
KTogQWRkZWQuCisgICAgICAgIChzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZENhbGxiYWNr
KTogUmVhbHBoYWJldGl6ZWQuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGlj
RnVuY3Rpb25zKTogQWRkZWQgZW50cnkgZm9yIGNhbGxpbmcKKyAgICAgICAgTGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sKSBmcm9tIEphdmFTY3JpcHQuCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KHNldEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjayk6IEFkZGVkIGRlY2xhcmF0aW9uLgorICAg
ICAgICAoc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjayk6IFJlYWxwaGFiZXRp
emVkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAocnVuVGVzdCk6IERpc2FibGUgdGhlIGljb24gZGF0YWJhc2UgYmVmb3JlIGVhY2gg
dGVzdC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5h
YmxlZCk6IEFkZGVkLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3Jp
cHRQcm9maWxpbmdFbmFibGVkKTogUmVhbHBoYWJldGl6ZWQuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocnVuVGVzdCk6IERpc2Fi
bGUgdGhlIGljb24gZGF0YWJhc2UgYmVmb3JlIGVhY2ggdGVzdC4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQpOiBBZGRlZC4KKwogMjAwOS0w
MS0wNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0
IGluc3RhbGwgaW50ZXJuYWwgaGVhZGVycyBpbiBXZWJLaXQgZnJhbWV3b3JrCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
Y2Q1NTEzMC4uYzk1YzFiYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTA0LDYgKzUwNCwxOCBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBzZXREYXRhYmFzZVF1b3RhQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bgogCiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEljb25EYXRhYmFz
ZUVuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8g
SGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8
IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxMYXlv
dXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAg
Y29udHJvbGxlci0+c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChKU1ZhbHVlVG9Cb29sZWFuKGNvbnRl
eHQsIGFyZ3VtZW50c1swXSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJn
dW1lbnRDb3VudCA8IDEpCkBAIC01MTEsNiArNTIzLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlMKIAogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRf
Y2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CiAgICAgY29udHJvbGxlci0+c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoSlNWYWx1
ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKwogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtODE2LDYgKzgyOSw3IEBAIEpTU3RhdGlj
RnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAg
ICB7ICJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUiLCBzZXRDbG9zZVJlbWFp
bmluZ1dpbmRvd3NXaGVuQ29tcGxldGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZSIsIHNldEN1c3RvbVBvbGljeURlbGVnYXRlQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0RGF0YWJhc2VRdW90YSIsIHNldERhdGFiYXNlUXVvdGFDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LCAKKyAgICAgICAgeyAic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsIHNldElj
b25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZCIsIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlciIsIHNl
dE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbiIsIHNldFBlcnNpc3RlbnRVc2VyU3R5
bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTg0MSw1ICs4NTUsMyBAQCBKU1N0
YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKIAog
ICAgIHJldHVybiBzdGF0aWNGdW5jdGlvbnM7CiB9Ci0KLQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggMGQwZmQ1YS4uMWI1YjYx
OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02MSwxMyArNjEsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRDdXN0b21Qb2xp
Y3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpOwogICAgIHZvaWQg
c2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOworICAgIHZvaWQgc2V0
SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGljb25EYXRhYmFzZUVuYWJsZWQpOworICAgIHZvaWQg
c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBwcm9maWxpbmdFbmFibGVkKTsKICAg
ICB2b2lkIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCBmbGFnKTsKICAgICB2b2lk
IHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVw
QmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRUYWJLZXlDeWNsZXNUaHJv
dWdoRWxlbWVudHMoYm9vbCBjeWNsZXMpOwogICAgIHZvaWQgc2V0U21hcnRJbnNlcnREZWxldGVF
bmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKGJvb2wgZmxhZyk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxl
ZChib29sIHByb2ZpbGluZ0VuYWJsZWQpOwogICAgIHZvaWQgc2V0VXNlRGFzaGJvYXJkQ29tcGF0
aWJpbGl0eU1vZGUoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxl
ZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmlu
Z1JlZiBwYXRoKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQppbmRleCA0M2NlOWY1Li40YTE2NGU1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEdy
YWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMTA0MCw2ICsxMDQwLDggQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRl
c3RQYXRoT3JVUkwpCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbmlsOwogICAgIGRvbmUgPSBOTzsK
IAorICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChmYWxz
ZSk7CisKICAgICBpZiAoZGlzYWxsb3dlZFVSTHMpCiAgICAgICAgIENGU2V0UmVtb3ZlQWxsVmFs
dWVzKGRpc2FsbG93ZWRVUkxzKTsKICAgICBpZiAoc2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVz
KHBhdGhPclVSTC5jX3N0cigpKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCBjNDc1Y2RjLi4xY2Ri
MDQ4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw2ICs0NCw3IEBACiAjaW1w
b3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dlYkljb25EYXRhYmFzZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MUmVwcmVz
ZW50YXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmlld1ByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJIaXN0b3J5Lmg+CkBAIC0yMjQsNiArMjI1LDI2IEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldERhdGFiYXNlUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3Rh
KQogICAgIFtvcmlnaW4gcmVsZWFzZV07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCBpY29uRGF0YWJhc2VFbmFibGVkKQoreworICAg
IC8vIEZJWE1FOiBXb3JrYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS82NDgwMTA4PgorICAgIHN0YXRp
YyBXZWJJY29uRGF0YWJhc2UqIHNoYXJlZFdlYkljb25EYXRhYmFzZSA9IE5VTEw7CisgICAgaWYg
KCFzaGFyZWRXZWJJY29uRGF0YWJhc2UpIHsKKyAgICAgICAgaWYgKCFpY29uRGF0YWJhc2VFbmFi
bGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzaGFyZWRXZWJJY29uRGF0YWJhc2Ug
PSBbV2ViSWNvbkRhdGFiYXNlIHNoYXJlZEljb25EYXRhYmFzZV07CisgICAgICAgIGlmIChbc2hh
cmVkV2ViSWNvbkRhdGFiYXNlIGlzRW5hYmxlZF0gPT0gaWNvbkRhdGFiYXNlRW5hYmxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgW3NoYXJlZFdlYkljb25EYXRhYmFzZSBzZXRF
bmFibGVkOmljb25EYXRhYmFzZUVuYWJsZWRdOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIHByb2ZpbGluZ0VuYWJsZWQp
Cit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkOnByb2ZpbGluZ0VuYWJsZWRdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3
XSBpbnNwZWN0b3JdIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkOnByb2ZpbGluZ0VuYWJs
ZWRdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNYWluRnJhbWVJc0ZpcnN0
UmVzcG9uZGVyKGJvb2wgZmxhZykKIHsKICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtbbWFp
bkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKQEAgLTI5MSwxMiArMzEyLDYgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wg
ZmxhZykKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQ6ZmxhZ107CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKGJvb2wgcHJvZmlsaW5nRW5hYmxlZCkKLXsKLSAgICBbW1ttYWluRnJh
bWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQ6cHJvZmls
aW5nRW5hYmxlZF07Ci0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIGluc3BlY3Rvcl0gc2V0SmF2
YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQ6cHJvZmlsaW5nRW5hYmxlZF07Ci19Ci0KIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9v
bCBmbGFnKQogewogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQ6ZmxhZ107CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjODQ0OTkxLi41ZjAzOTBmIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzE5LDYgKzcxOSw4IEBAIHN0YXRpYyB2
b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiB0ZXN0UGF0aE9yVVJMKQogICAgIGRvbmUgPSBmYWxz
ZTsKICAgICB0b3BMb2FkaW5nRnJhbWUgPSAwOwogCisgICAgZ0xheW91dFRlc3RDb250cm9sbGVy
LT5zZXRJY29uRGF0YWJhc2VFbmFibGVkKGZhbHNlKTsKKwogICAgIGlmIChzaG91bGRMb2dGcmFt
ZUxvYWREZWxlZ2F0ZXMocGF0aE9yVVJMLmNfc3RyKCkpKQogICAgICAgICBnTGF5b3V0VGVzdENv
bnRyb2xsZXItPnNldER1bXBGcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7CiAKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwCmluZGV4IDQ1ZDRhMmQuLmRiYjM5NTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjY2LDYgKzI2NiwyMCBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBl
cm1pcwogICAgICAgICB3ZWJWaWV3LT5zZXRQb2xpY3lEZWxlZ2F0ZShOVUxMKTsKIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGljb25E
YXRhYmFzZUVuYWJsZWQpCit7CisgICAgLy8gRklYTUU6IFdvcmthcm91bmQgPHJkYXI6Ly9wcm9i
bGVtLzY0ODAxMDg+CisgICAgc3RhdGljIFdlYkljb25EYXRhYmFzZSogc2hhcmVkV2ViSWNvbkRh
dGFiYXNlID0gTlVMTDsKKyAgICBpZiAoIXNoYXJlZFdlYkljb25EYXRhYmFzZSkgeworICAgICAg
ICBpZiAoIWljb25EYXRhYmFzZUVuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHNoYXJlZFdlYkljb25EYXRhYmFzZSA9IFdlYkljb25EYXRhYmFzZTo6c2hhcmVkV2ViSWNvbkRh
dGFiYXNlKCk7CisgICAgICAgIGlmIChzaGFyZWRXZWJJY29uRGF0YWJhc2UtPmlzRW5hYmxlZCgp
ID09IGljb25EYXRhYmFzZUVuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHNoYXJlZFdlYkljb25EYXRhYmFzZS0+c2V0RW5hYmxlZChpY29uRGF0YWJhc2VFbmFibGVkKTsK
K30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWFpbkZyYW1lSXNGaXJzdFJlc3Bv
bmRlcihib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCEK
</data>
<flag name="review"
          id="12596"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>