<?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>61581</bug_id>
          
          <creation_ts>2011-05-26 16:36:06 -0700</creation_ts>
          <short_desc>Check access policy on all storage operations</short_desc>
          <delta_ts>2011-05-27 20:27:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>410988</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-05-26 16:36:06 -0700</bug_when>
    <thetext>Check access policy on all storage operations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410989</commentid>
    <comment_count>1</comment_count>
      <attachid>95072</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-26 16:37:09 -0700</bug_when>
    <thetext>Created attachment 95072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411008</commentid>
    <comment_count>2</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-05-26 16:47:59 -0700</bug_when>
    <thetext>Adam, no idea whether you&apos;re the right person to review. Feel free to punt to somebody else</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411020</commentid>
    <comment_count>3</comment_count>
      <attachid>95072</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-26 17:01:14 -0700</bug_when>
    <thetext>Comment on attachment 95072
Patch

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

&gt; Source/WebCore/storage/StorageArea.h:58
&gt; +        virtual bool canAccessStorage(Frame* sourceFrame) const = 0;

Typically we don&apos;t like to use Frames for security checks because it&apos;s slightly loose as to which Document is in the Frame.  Instead, we prefer to use Document or (ideally) SecurityOrigin.  In this case, it seems like StorageArea is mainly using Frame as its context object, so that might be something to fix in the future rather than in this patch.

More generally, it seems like this work should be done at the WebKit layer (not the WebCore layer) since you&apos;re just asking the embedder whether this is allowed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411024</commentid>
    <comment_count>4</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-05-26 17:04:50 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 95072 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95072&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/StorageArea.h:58
&gt; &gt; +        virtual bool canAccessStorage(Frame* sourceFrame) const = 0;
&gt; 
&gt; Typically we don&apos;t like to use Frames for security checks because it&apos;s slightly loose as to which Document is in the Frame.  Instead, we prefer to use Document or (ideally) SecurityOrigin.  In this case, it seems like StorageArea is mainly using Frame as its context object, so that might be something to fix in the future rather than in this patch.
&gt; 
&gt; More generally, it seems like this work should be done at the WebKit layer (not the WebCore layer) since you&apos;re just asking the embedder whether this is allowed.

I tried that before, but that meant that I need to add the Frame to each method in StorageArea, and it seemed worse that moving the check to Storage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411026</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-26 17:06:28 -0700</bug_when>
    <thetext>&gt; I tried that before, but that meant that I need to add the Frame to each method in StorageArea, and it seemed worse that moving the check to Storage

How does the storage area know which storage to interact with?  That&apos;s what you should use to do the security check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411028</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-26 17:08:06 -0700</bug_when>
    <thetext>Looks like most of them take a Frame anyway to check quota.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411043</commentid>
    <comment_count>7</comment_count>
      <attachid>95087</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-26 17:33:47 -0700</bug_when>
    <thetext>Created attachment 95087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411046</commentid>
    <comment_count>8</comment_count>
      <attachid>95072</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-26 17:39:10 -0700</bug_when>
    <thetext>Comment on attachment 95072
Patch

Attachment 95072 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8740237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411081</commentid>
    <comment_count>9</comment_count>
      <attachid>95087</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-26 19:34:42 -0700</bug_when>
    <thetext>Comment on attachment 95087
Patch

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

Generally looks good.  I&apos;ll look in more detail when I get to a real computer.

&gt; Source/WebCore/ChangeLog:7
&gt; +

I would add more explanation to the changelog explaining why we&apos;re implement this, especially why this calls out to the embedder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411105</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-26 20:27:33 -0700</bug_when>
    <thetext>What&apos;s the testing plan for this code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411226</commentid>
    <comment_count>11</comment_count>
      <attachid>95127</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-27 00:07:05 -0700</bug_when>
    <thetext>Created attachment 95127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411227</commentid>
    <comment_count>12</comment_count>
      <attachid>95127</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-27 00:17:22 -0700</bug_when>
    <thetext>Comment on attachment 95127
Patch

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

This looks great.

&gt; LayoutTests/platform/chromium/permissionclient/storage-permission.html:22
&gt; +    if (window.layoutTestController &amp;&amp; layoutTestController.setStorageAllowed)
&gt; +        layoutTestController.setStorageAllowed(true);

You might want to log a message that this test requires layoutTestController.setStorageAllowed so can&apos;t be run in a browser (most LayoutTests can be run in a browser)

&gt; Source/WebCore/storage/StorageAreaImpl.h:49
&gt; +        virtual String key(unsigned index, Frame* sourceFrame) const;

Usually we pass the context object as the first argument, but I see that you&apos;re just following established convention in this interface.  When we change these to take a Document instead of a Frame, we should probably move the parameter to the first position.

&gt; Source/WebKit/chromium/public/WebView.h:101
&gt; +    virtual WebPermissionClient* permissionClient() = 0;

Changes to the public WebKit API require fishd approval.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:299
&gt; +

extra blank line?

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1838
&gt; +void LayoutTestController::setStorageAllowed(const CppArgumentList&amp; arguments, CppVariant* result)

I can&apos;t believe we&apos;re still using this ancient CPPObject interface!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411242</commentid>
    <comment_count>13</comment_count>
      <attachid>95133</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-27 00:44:34 -0700</bug_when>
    <thetext>Created attachment 95133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411243</commentid>
    <comment_count>14</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-05-27 00:46:13 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 95127 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95127&amp;action=review
&gt; 
&gt; This looks great.
&gt; 
&gt; &gt; LayoutTests/platform/chromium/permissionclient/storage-permission.html:22
&gt; &gt; +    if (window.layoutTestController &amp;&amp; layoutTestController.setStorageAllowed)
&gt; &gt; +        layoutTestController.setStorageAllowed(true);
&gt; 
&gt; You might want to log a message that this test requires layoutTestController.setStorageAllowed so can&apos;t be run in a browser (most LayoutTests can be run in a browser)

Done.

&gt; 
&gt; &gt; Source/WebCore/storage/StorageAreaImpl.h:49
&gt; &gt; +        virtual String key(unsigned index, Frame* sourceFrame) const;
&gt; 
&gt; Usually we pass the context object as the first argument, but I see that you&apos;re just following established convention in this interface.  When we change these to take a Document instead of a Frame, we should probably move the parameter to the first position.

I added a FIXME comment for that

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebView.h:101
&gt; &gt; +    virtual WebPermissionClient* permissionClient() = 0;
&gt; 
&gt; Changes to the public WebKit API require fishd approval.

I dropped that change. Instead, I&apos;m now maintaining a global instance as part of TestShell

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:299
&gt; &gt; +
&gt; 
&gt; extra blank line?
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1838
&gt; &gt; +void LayoutTestController::setStorageAllowed(const CppArgumentList&amp; arguments, CppVariant* result)
&gt; 
&gt; I can&apos;t believe we&apos;re still using this ancient CPPObject interface!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411524</commentid>
    <comment_count>15</comment_count>
      <attachid>95133</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-27 10:32:07 -0700</bug_when>
    <thetext>Comment on attachment 95133
Patch

i&apos;ll first have to rebase after 61583 has landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411526</commentid>
    <comment_count>16</comment_count>
      <attachid>95133</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-27 10:36:56 -0700</bug_when>
    <thetext>Comment on attachment 95133
Patch

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

&gt; Tools/DumpRenderTree/chromium/WebPermissions.h:43
&gt; +    // Sets the policy whether to allow storage or not.
&gt; +    void setStorageAllowed(bool storageAllowed) { m_storageAllowed = storageAllowed; }

Does this state leak from test to test now that this client is global?  Maybe we need to call a reset() method on it when we transition between tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411546</commentid>
    <comment_count>17</comment_count>
      <attachid>95191</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-27 10:59:10 -0700</bug_when>
    <thetext>Created attachment 95191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411547</commentid>
    <comment_count>18</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-05-27 10:59:44 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 95133 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95133&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/WebPermissions.h:43
&gt; &gt; +    // Sets the policy whether to allow storage or not.
&gt; &gt; +    void setStorageAllowed(bool storageAllowed) { m_storageAllowed = storageAllowed; }
&gt; 
&gt; Does this state leak from test to test now that this client is global?  Maybe we need to call a reset() method on it when we transition between tests?

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411548</commentid>
    <comment_count>19</comment_count>
      <attachid>95191</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-27 11:00:30 -0700</bug_when>
    <thetext>Comment on attachment 95191
Patch

Looks great.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411626</commentid>
    <comment_count>20</comment_count>
      <attachid>95207</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-27 12:54:36 -0700</bug_when>
    <thetext>Created attachment 95207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411628</commentid>
    <comment_count>21</comment_count>
      <attachid>95207</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-27 12:56:18 -0700</bug_when>
    <thetext>Comment on attachment 95207
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411703</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-27 16:16:16 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 95207:

java/lc3/ConvertJSObject/ToLong-002.html bug 61676 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411704</commentid>
    <comment_count>23</comment_count>
      <attachid>95207</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-27 16:17:54 -0700</bug_when>
    <thetext>Comment on attachment 95207
Patch

Rejecting attachment 95207 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-7&apos;, &apos;land-a...&quot; exit_code: 1

Last 500 characters of output:
runk)
	M	Source/JavaScriptCore/ChangeLog
	M	Source/JavaScriptCore/Configurations/Base.xcconfig
	M	Source/WebKit/mac/ChangeLog
	M	Source/WebKit/mac/Configurations/Base.xcconfig
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/Configurations/Base.xcconfig
	M	Source/WebKit2/ChangeLog
	M	Source/WebKit2/Configurations/Base.xcconfig
r87580 = 99d842dc5ed5aa8decb50e950db3463f077121db (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.

Full output: http://queues.webkit.org/results/8735841</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411718</commentid>
    <comment_count>24</comment_count>
      <attachid>95230</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-27 16:53:51 -0700</bug_when>
    <thetext>Created attachment 95230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411719</commentid>
    <comment_count>25</comment_count>
      <attachid>95230</attachid>
    <who name="">jochen</who>
    <bug_when>2011-05-27 16:54:24 -0700</bug_when>
    <thetext>Comment on attachment 95230
Patch

and filled in the reviewer...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411791</commentid>
    <comment_count>26</comment_count>
      <attachid>95230</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-27 20:27:29 -0700</bug_when>
    <thetext>Comment on attachment 95230
Patch

Clearing flags on attachment: 95230

Committed r87597: &lt;http://trac.webkit.org/changeset/87597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411792</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-27 20:27:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95072</attachid>
            <date>2011-05-26 16:37:09 -0700</date>
            <delta_ts>2011-05-26 17:39:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61581-20110527013707.patch</filename>
            <type>text/plain</type>
            <size>8303</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczMDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3Nzg0NDg4YTZjYTZhYjg5
YjIxMDExODQxMDMyMzNiNWQ3N2EzYzZjLi5iNjk2MjIwZDNiMzkxYmI5ZDc4MDU5MWY1ZDk2ZjFl
ZTZmYmI3ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDUtMjYgIEpvY2hl
biBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGljeSBvbiBhbGwgc3Rv
cmFnZSBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MTU4MQorCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2U6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpr
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OnJlbW92
ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6Y2xlYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZTo6Y29udGFpbnMpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWEu
aDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZUFyZWFJbXBsOjpjYW5BY2Nlc3NTdG9yYWdlKToKKwogMjAxMS0wNS0yNSAgTGV2
aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCAwMjU5Y2E0MTRk
MWZmYjcwOGNhMWE3ZTAyNTYzMzA5ZWEwMjY2ZGE2Li5lOGM1N2U1NzgyYWRmZDZjZmZjMTc1YjQ5
NDYxMDRiMzBjOGVlN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTU5LDYg
KzU5LDkgQEAgdW5zaWduZWQgU3RvcmFnZTo6bGVuZ3RoKCkgY29uc3QKICAgICBpZiAoIW1fZnJh
bWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSB8fCBtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoIW1f
c3RvcmFnZUFyZWEtPmNhbkFjY2Vzc1N0b3JhZ2UobV9mcmFtZSkpCisgICAgICAgIHJldHVybiAw
OworCiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmxlbmd0aCgpOwogfQogCkBAIC02Nyw2ICs3
MCw5IEBAIFN0cmluZyBTdG9yYWdlOjprZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgaWYg
KCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkgfHwgbV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5n
cygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAorICAgIGlmICghbV9zdG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3RvcmFnZShtX2ZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShp
bmRleCk7CiB9CiAKQEAgLTc1LDYgKzgxLDkgQEAgU3RyaW5nIFN0b3JhZ2U6OmdldEl0ZW0oY29u
c3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdl
KCkgfHwgbV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAorICAgIGlmICghbV9zdG9yYWdlQXJlYS0+
Y2FuQWNjZXNzU3RvcmFnZShtX2ZyYW1lKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCiAg
ICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdldEl0ZW0oa2V5KTsKIH0KIApAQCAtODQsNiArOTMs
OSBAQCB2b2lkIFN0b3JhZ2U6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKCFtX3N0b3JhZ2VBcmVhLT5jYW5BY2Nlc3NTdG9yYWdlKG1fZnJh
bWUpKQorICAgICAgICByZXR1cm47CisKICAgICBtX3N0b3JhZ2VBcmVhLT5zZXRJdGVtKGtleSwg
dmFsdWUsIGVjLCBtX2ZyYW1lKTsKIH0KIApAQCAtOTIsNiArMTA0LDkgQEAgdm9pZCBTdG9yYWdl
OjpyZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5KQogICAgIGlmICghbV9mcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKCFtX3N0b3JhZ2VBcmVhLT5jYW5BY2Nlc3NTdG9yYWdlKG1f
ZnJhbWUpKQorICAgICAgICByZXR1cm47CisKICAgICBtX3N0b3JhZ2VBcmVhLT5yZW1vdmVJdGVt
KGtleSwgbV9mcmFtZSk7CiB9CiAKQEAgLTEwMCw2ICsxMTUsOSBAQCB2b2lkIFN0b3JhZ2U6OmNs
ZWFyKCkKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV9z
dG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3RvcmFnZShtX2ZyYW1lKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9zdG9yYWdlQXJlYS0+Y2xlYXIobV9mcmFtZSk7CiB9CiAKQEAgLTEwOCw2ICsxMjYs
OSBAQCBib29sIFN0b3JhZ2U6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogICAg
IGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+c2V0
dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBpZiAoIW1fc3RvcmFnZUFyZWEtPmNhbkFjY2Vzc1N0b3JhZ2UobV9mcmFtZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5jb250YWlu
cyhrZXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VB
cmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggNjA4MTI0
MGRkOTYyYTU4ZWRmOTdlNWYzYWI3ODQwZjIyNjMyNjJkZi4uMjMwMGZkMjRlMjhjNmQyMjdkMGMz
OWJjY2Y2ZmY5ZmUxZTA2NTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApA
QCAtNTQsNiArNTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU3Ry
aW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgPSAw
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2xlYXIoRnJhbWUqIHNvdXJjZUZyYW1lKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3QgPSAw
OworCisgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKiBzb3VyY2VG
cmFtZSkgY29uc3QgPSAwOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDlmODdlNjk3YWI4NWJhNjdk
NjMzMWM5NGEzODBkZDZmMGQwMmUwM2IuLmZlNTA2ZmFhMTBmNmU3ZjRhMmExNGEyY2RlN2UxMmU2
YTRkMDQ5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAt
NTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBjbGVhcihGcmFtZSogc291cmNlRnJhbWUpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQWNjZXNzU3RvcmFnZShGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIAogICAgICAgICBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4gY29weSgp
OwogICAgICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUx
MjI5YjQ4ZjNhOTExYjA0ZTU4ZjYxYTA1MTA0YzQ5MjAxNGZjZGMuLjdjY2U1YWE0ZGMyM2U1NzI3
MzBhMmQ1YjZiMDBiZWVmN2IwMTMwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTEtMDUtMjYgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2hlY2sgYWNjZXNzIHBvbGljeSBvbiBhbGwgc3RvcmFnZSBvcGVyYXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTU4MQorCisgICAgICAgICog
c3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQ
cm94eTo6c2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpjYW5B
Y2Nlc3NTdG9yYWdlKToKKyAgICAgICAgKiBzcmMvU3RvcmFnZUFyZWFQcm94eS5oOgorCiAyMDEx
LTA1LTI0ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9T
dG9yYWdlQXJlYVByb3h5LmNwcAppbmRleCBkYzNmYWQ0MTBkMWRkZWFlZjA2OWEwZGU4M2M3OTI0
MjIzMTQxYTE1Li45OTI0NmUwYjhmOWM5YzYzNzJlZDllNzRmNjE1YTc0OGZlZjAwMTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcApAQCAt
ODIsMTcgKzgyLDExIEBAIFN0cmluZyBTdG9yYWdlQXJlYVByb3h5OjpzZXRJdGVtKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpCiB7CiAgICAgV2ViS2l0OjpX
ZWJTdG9yYWdlQXJlYTo6UmVzdWx0IHJlc3VsdCA9IFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6OlJl
c3VsdE9LOwogICAgIFdlYktpdDo6V2ViU3RyaW5nIG9sZFZhbHVlOwotICAgIFdlYktpdDo6V2Vi
RnJhbWVJbXBsKiB3ZWJGcmFtZSA9IFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJh
bWUpOwotICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXcgPSB3ZWJGcmFtZS0+dmlld0lt
cGwoKTsKLSAgICBpZiAod2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpICYmICF3ZWJWaWV3LT5w
ZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93U3RvcmFnZSh3ZWJGcmFtZSwgbV9zdG9yYWdlVHlwZSA9
PSBMb2NhbFN0b3JhZ2UpKQotICAgICAgICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsKLSAgICBl
bHNlIHsKLSAgICAgICAgbV9zdG9yYWdlQXJlYS0+c2V0SXRlbShrZXksIHZhbHVlLCBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCksIHJlc3VsdCwgb2xkVmFsdWUsIHdlYkZyYW1lKTsKLSAgICAgICAg
ZWMgPSAocmVzdWx0ID09IFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9LKSA/IDAgOiBR
VU9UQV9FWENFRURFRF9FUlI7Ci0gICAgICAgIFN0cmluZyBvbGRWYWx1ZVN0cmluZyA9IG9sZFZh
bHVlOwotICAgICAgICBpZiAob2xkVmFsdWVTdHJpbmcgIT0gdmFsdWUgJiYgcmVzdWx0ID09IFdl
YktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9LKQotICAgICAgICAgICAgc3RvcmFnZUV2ZW50
KGtleSwgb2xkVmFsdWUsIHZhbHVlLCBtX3N0b3JhZ2VUeXBlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUpOwotICAgIH0KKyAgICBtX3N0b3JhZ2VBcmVhLT5zZXRJ
dGVtKGtleSwgdmFsdWUsIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgcmVzdWx0LCBvbGRWYWx1
ZSk7CisgICAgZWMgPSAocmVzdWx0ID09IFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9L
KSA/IDAgOiBRVU9UQV9FWENFRURFRF9FUlI7CisgICAgU3RyaW5nIG9sZFZhbHVlU3RyaW5nID0g
b2xkVmFsdWU7CisgICAgaWYgKG9sZFZhbHVlU3RyaW5nICE9IHZhbHVlICYmIHJlc3VsdCA9PSBX
ZWJLaXQ6OldlYlN0b3JhZ2VBcmVhOjpSZXN1bHRPSykKKyAgICAgICAgc3RvcmFnZUV2ZW50KGtl
eSwgb2xkVmFsdWUsIHZhbHVlLCBtX3N0b3JhZ2VUeXBlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgZnJhbWUpOwogICAgIHJldHVybiBvbGRWYWx1ZTsKIH0KIApAQCAtMTE5
LDYgKzExMywxMyBAQCBib29sIFN0b3JhZ2VBcmVhUHJveHk6OmNvbnRhaW5zKGNvbnN0IFN0cmlu
ZyYga2V5KSBjb25zdAogICAgIHJldHVybiAhZ2V0SXRlbShrZXkpLmlzTnVsbCgpOwogfQogCiti
b29sIFN0b3JhZ2VBcmVhUHJveHk6OmNhbkFjY2Vzc1N0b3JhZ2UoRnJhbWUqIGZyYW1lKSBjb25z
dAoreworICAgIFdlYktpdDo6V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOworICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZp
ZXcgPSB3ZWJGcmFtZS0+dmlld0ltcGwoKTsKKyAgICByZXR1cm4gIXdlYlZpZXctPnBlcm1pc3Np
b25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93U3RvcmFnZSh3
ZWJGcmFtZSwgbV9zdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpOworfQorCiAvLyBDb3BpZWQg
ZnJvbSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgb3V0IG9mIG5l
Y2Vzc2l0eS4gIEl0J3MgcHJvYmFibHkgYmVzdCB0byBrZWVwIGl0IGN1cnJlbnQuCiB2b2lkIFN0
b3JhZ2VBcmVhUHJveHk6OnN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFn
ZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgRnJhbWUqIHNvdXJjZUZyYW1l
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCmlu
ZGV4IGIxNjk4MjgwZWE1MDE3YzU4MGM2NDgwMDYwNTJjYzZlZGNkZDllOGEuLmU1NzRmMTc4OGJi
ZDJmYzUyN2RmYmM0ZmZkYjZkMmE2ZTNiNzViOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3Vy
Y2VGcmFtZSk7CiAgICAgdmlydHVhbCBib29sIGNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAg
ICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuQWNjZXNzU3RvcmFnZShGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIHZvaWQgc3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwg
U2VjdXJpdHlPcmlnaW4qLCBGcmFtZSogc291cmNlRnJhbWUpOwo=
</data>
<flag name="commit-queue"
          id="88514"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95087</attachid>
            <date>2011-05-26 17:33:47 -0700</date>
            <delta_ts>2011-05-27 00:06:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61581-20110527023344.patch</filename>
            <type>text/plain</type>
            <size>13549</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczMDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3Nzg0NDg4YTZjYTZhYjg5
YjIxMDExODQxMDMyMzNiNWQ3N2EzYzZjLi45MGFjMDY5MmFhZTNiNjRhMmQ0MGUyMzc4YTk1MTcx
OGNjYWYzMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDUtMjYgIEpvY2hl
biBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGljeSBvbiBhbGwgc3Rv
cmFnZSBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MTU4MQorCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2U6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpr
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlOjpjb250YWlucyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5o
OgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VB
cmVhSW1wbDo6a2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6Z2V0SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OmNvbnRhaW5zKToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgorCiAyMDExLTA1LTI1ICBMZXZpIFdlaW50
cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IDAyNTljYTQxNGQxZmZiNzA4
Y2ExYTdlMDI1NjMzMDllYTAyNjZkYTYuLjllOTc1YWJhY2Y0MmM4YzU5ZTVjODFmNmZhYmZjMzhh
MjJiMmEzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtNTksNyArNTksNyBA
QCB1bnNpZ25lZCBTdG9yYWdlOjpsZW5ndGgoKSBjb25zdAogICAgIGlmICghbV9mcmFtZSB8fCAh
bV9mcmFtZS0+cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX3N0b3Jh
Z2VBcmVhLT5sZW5ndGgoKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKG1fZnJh
bWUpOwogfQogCiBTdHJpbmcgU3RvcmFnZTo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdApAQCAt
NjcsNyArNjcsNyBAQCBTdHJpbmcgU3RvcmFnZTo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdAog
ICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+
c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+a2V5KGluZGV4KTsKKyAgICByZXR1
cm4gbV9zdG9yYWdlQXJlYS0+a2V5KGluZGV4LCBtX2ZyYW1lKTsKIH0KIAogU3RyaW5nIFN0b3Jh
Z2U6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CkBAIC03NSw3ICs3NSw3IEBAIFN0
cmluZyBTdG9yYWdlOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogICAgIGlmICgh
bV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3Mo
KS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXkpOworICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhLT5nZXRJdGVtKGtleSwgbV9mcmFtZSk7CiB9CiAKIHZvaWQgU3RvcmFnZTo6c2V0
SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBTdG9yYWdlOjpjb250YWlucyhjb25zdCBT
dHJpbmcmIGtleSkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSB8
fCBtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmNvbnRh
aW5zKGtleSk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmNvbnRhaW5zKGtleSwgbV9mcmFt
ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFy
ZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA2MDgxMjQw
ZGQ5NjJhNThlZGY5N2U1ZjNhYjc4NDBmMjI2MzI2MmRmLi45ZGQxMThjOTUyNWE5MmQ3MjE0MDY0
NTkxOGE1N2M1YzI0ZDE3N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBA
IC00NywxMyArNDcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5T
dG9yYWdlQXJlYSgpIHsgfQogCiAgICAgICAgIC8vIFRoZSBIVE1MNSBET00gU3RvcmFnZSBBUEkK
LSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0
dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdCA9IDA7CisgICAgICAg
IHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3QgPSAwOwor
ICAgICAgICB2aXJ0dWFsIFN0cmluZyBrZXkodW5zaWduZWQgaW5kZXgsIEZyYW1lKiBzb3VyY2VG
cmFtZSkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0
cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVh
bCBTdHJpbmcgc2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMsIEZyYW1lKiBzb3VyY2VGcmFtZSkgPSAwOwogICAgICAgICB2aXJ0
dWFsIFN0cmluZyByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJh
bWUpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSkg
PSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNv
bnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5
LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0ID0gMDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKaW5k
ZXggMGViYzg3NDYxODc3Y2U4MzBmZTdjYjM0MDllYTcxNzczMGZhN2RkYy4uZDU0ZjVhYjI1ZDFj
ZWNjZjQ3ODk3YzgzOTlhYzFiMjI3ZTMxNWM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQoRnJhbWUqIGZyYW1lKQogI2VuZGlmCiB9CiAKLXVuc2lnbmVkIFN0
b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKCkgY29uc3QKK3Vuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6
bGVuZ3RoKEZyYW1lKikgY29uc3QKIHsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAg
YmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdW5zaWduZWQg
U3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX3N0b3JhZ2VNYXAt
Pmxlbmd0aCgpOwogfQogCi1TdHJpbmcgU3RvcmFnZUFyZWFJbXBsOjprZXkodW5zaWduZWQgaW5k
ZXgpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFJbXBsOjprZXkodW5zaWduZWQgaW5kZXgsIEZy
YW1lKikgY29uc3QKIHsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAgYmxvY2tVbnRp
bEltcG9ydENvbXBsZXRlKCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgU3RyaW5nIFN0b3JhZ2VBcmVh
SW1wbDo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHJldHVybiBtX3N0b3JhZ2VNYXAt
PmtleShpbmRleCk7CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJlYUltcGw6OmdldEl0ZW0oY29uc3Qg
U3RyaW5nJiBrZXkpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFJbXBsOjpnZXRJdGVtKGNvbnN0
IFN0cmluZyYga2V5LCBGcmFtZSopIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24p
OwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIGJv
b2wgU3RvcmFnZUFyZWFJbXBsOjpjbGVhcihGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgU3RvcmFnZUFyZWFJbXBsOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkg
Y29uc3QKK2Jvb2wgU3RvcmFnZUFyZWFJbXBsOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwg
RnJhbWUqKSBjb25zdAogewogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKICAgICBibG9ja1Vu
dGlsSW1wb3J0Q29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5oCmluZGV4IDlmODdlNjk3YWI4NWJhNjdkNjMzMWM5NGEzODBkZDZmMGQwMmUwM2IuLjFhYTVh
MDU2OTUxYTM0YWU4MDA0ZjZmNzE1NmQyZjY0ZWUzZTQzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNDUsMTMgKzQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFJbXBsKCk7CiAKICAgICAgICAgLy8g
VGhlIEhUTUw1IERPTSBTdG9yYWdlIEFQSSAoYW5kIGNvbnRhaW5zKQotICAgICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBrZXkodW5z
aWduZWQgaW5kZXgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0
IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoRnJh
bWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcga2V5KHVuc2ln
bmVkIGluZGV4LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIHNvdXJjZUZyYW1lKTsK
ICAgICAgICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJh
bWUqIHNvdXJjZUZyYW1lKTsKICAgICAgICAgdmlydHVhbCBib29sIGNsZWFyKEZyYW1lKiBzb3Vy
Y2VGcmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtl
eSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtl
eSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKIAogICAgICAgICBQYXNzUmVmUHRyPFN0b3Jh
Z2VBcmVhSW1wbD4gY29weSgpOwogICAgICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGUxMjI5YjQ4ZjNhOTExYjA0ZTU4ZjYxYTA1MTA0YzQ5MjAxNGZjZGMu
LmU0YTY4ODQ1MTI0NjhhZWI0YmQxODhkMmFhOGZjYTJmNTQwN2RkNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDUtMjYgIEpvY2hlbiBFaXNpbmdl
ciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGljeSBvbiBhbGwgc3RvcmFnZSBvcGVy
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MTU4MQorCisgICAgICAgICogc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZUFyZWFQcm94eTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VBcmVhUHJveHk6OmtleSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5Ojpn
ZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OnNldEl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6cmVtb3ZlSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlQXJlYVByb3h5Ojpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJl
YVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKToKKyAgICAgICAgKiBzcmMvU3RvcmFnZUFyZWFQcm94
eS5oOgorICAgICAgICAqIHNyYy9XZWJTdG9yYWdlQXJlYUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0
b3JhZ2VBcmVhSW1wbDo6a2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWFJbXBs
OjpnZXRJdGVtKToKKwogMjAxMS0wNS0yNCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKaW5kZXggZGMzZmFkNDEwZDFk
ZGVhZWYwNjlhMGRlODNjNzkyNDIyMzE0MWExNS4uNmRjNDIwY2Q4ODdiMjM5YTI2ZmYwMzcyZTA1
NmZiMjM4OWRmZDA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3Rv
cmFnZUFyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFn
ZUFyZWFQcm94eS5jcHAKQEAgLTYzLDMwICs2MywzNSBAQCBTdG9yYWdlQXJlYVByb3h5Ojp+U3Rv
cmFnZUFyZWFQcm94eSgpCiB7CiB9CiAKLXVuc2lnbmVkIFN0b3JhZ2VBcmVhUHJveHk6Omxlbmd0
aCgpIGNvbnN0Cit1bnNpZ25lZCBTdG9yYWdlQXJlYVByb3h5OjpsZW5ndGgoRnJhbWUqIGZyYW1l
KSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5sZW5ndGgoKTsKKyAgICBpZiAo
Y2FuQWNjZXNzU3RvcmFnZShmcmFtZSkpCisgICAgICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5s
ZW5ndGgoKTsKKyAgICByZXR1cm4gMDsKIH0KIAotU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6Omtl
eSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK1N0cmluZyBTdG9yYWdlQXJlYVByb3h5OjprZXkodW5z
aWduZWQgaW5kZXgsIEZyYW1lKiBmcmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYS0+a2V5KGluZGV4KTsKKyAgICBpZiAoY2FuQWNjZXNzU3RvcmFnZShmcmFtZSkpCisgICAg
ICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5rZXkoaW5kZXgpOworICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBr
ZXkpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFQcm94eTo6Z2V0SXRlbShjb25zdCBTdHJpbmcm
IGtleSwgRnJhbWUqIGZyYW1lKSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5n
ZXRJdGVtKGtleSk7CisgICAgaWYgKGNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQorICAgICAgICBy
ZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXkpOworICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KIAogU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSogZnJhbWUpCiB7
CiAgICAgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYTo6UmVzdWx0IHJlc3VsdCA9IFdlYktpdDo6V2Vi
U3RvcmFnZUFyZWE6OlJlc3VsdE9LOwogICAgIFdlYktpdDo6V2ViU3RyaW5nIG9sZFZhbHVlOwot
ICAgIFdlYktpdDo6V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IFdlYktpdDo6V2ViRnJhbWVJbXBs
Ojpmcm9tRnJhbWUoZnJhbWUpOwotICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXcgPSB3
ZWJGcmFtZS0+dmlld0ltcGwoKTsKLSAgICBpZiAod2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
ICYmICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93U3RvcmFnZSh3ZWJGcmFtZSwg
bV9zdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpKQorICAgIGlmICghY2FuQWNjZXNzU3RvcmFn
ZShmcmFtZSkpCiAgICAgICAgIGVjID0gUVVPVEFfRVhDRUVERURfRVJSOwogICAgIGVsc2Ugewor
ICAgICAgICBXZWJLaXQ6OldlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1l
SW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKICAgICAgICAgbV9zdG9yYWdlQXJlYS0+c2V0SXRlbShr
ZXksIHZhbHVlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIHJlc3VsdCwgb2xkVmFsdWUsIHdl
YkZyYW1lKTsKICAgICAgICAgZWMgPSAocmVzdWx0ID09IFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6
OlJlc3VsdE9LKSA/IDAgOiBRVU9UQV9FWENFRURFRF9FUlI7CiAgICAgICAgIFN0cmluZyBvbGRW
YWx1ZVN0cmluZyA9IG9sZFZhbHVlOwpAQCAtOTgsNiArMTAzLDggQEAgU3RyaW5nIFN0b3JhZ2VB
cmVhUHJveHk6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUs
IEV4Y2VwdGkKIAogU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnJlbW92ZUl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXksIEZyYW1lKiBmcmFtZSkKIHsKKyAgICBpZiAoIWNhbkFjY2Vzc1N0b3JhZ2UoZnJh
bWUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgb2xk
VmFsdWU7CiAgICAgbV9zdG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShrZXksIGZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSwgb2xkVmFsdWUpOwogICAgIGlmICghb2xkVmFsdWUuaXNOdWxsKCkpCkBAIC0x
MDcsNiArMTE0LDggQEAgU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnJlbW92ZUl0ZW0oY29uc3Qg
U3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkKIAogYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjbGVh
cihGcmFtZSogZnJhbWUpCiB7CisgICAgaWYgKCFjYW5BY2Nlc3NTdG9yYWdlKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgY2xlYXJlZFNvbWV0aGluZzsKICAgICBtX3N0
b3JhZ2VBcmVhLT5jbGVhcihmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIGNsZWFyZWRTb21ldGhp
bmcpOwogICAgIGlmIChjbGVhcmVkU29tZXRoaW5nKQpAQCAtMTE0LDkgKzEyMyw5IEBAIGJvb2wg
U3RvcmFnZUFyZWFQcm94eTo6Y2xlYXIoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBjbGVhcmVk
U29tZXRoaW5nOwogfQogCi1ib29sIFN0b3JhZ2VBcmVhUHJveHk6OmNvbnRhaW5zKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdAorYm9vbCBTdG9yYWdlQXJlYVByb3h5Ojpjb250YWlucyhjb25zdCBT
dHJpbmcmIGtleSwgRnJhbWUqIGZyYW1lKSBjb25zdAogewotICAgIHJldHVybiAhZ2V0SXRlbShr
ZXkpLmlzTnVsbCgpOworICAgIHJldHVybiAhZ2V0SXRlbShrZXksIGZyYW1lKS5pc051bGwoKTsK
IH0KIAogLy8gQ29waWVkIGZyb20gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuY3BwIG91dCBvZiBuZWNlc3NpdHkuICBJdCdzIHByb2JhYmx5IGJlc3QgdG8ga2VlcCBpdCBj
dXJyZW50LgpAQCAtMTYyLDYgKzE3MSwxMyBAQCB2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OnN0b3Jh
Z2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgYwogICAg
IH0KIH0KIAorYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKiBm
cmFtZSkgY29uc3QKK3sKKyAgICBXZWJLaXQ6OldlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJL
aXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKKyAgICBXZWJLaXQ6OldlYlZpZXdJ
bXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJbXBsKCk7CisgICAgcmV0dXJuICF3ZWJWaWV3
LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxv
d1N0b3JhZ2Uod2ViRnJhbWUsIG1fc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCmluZGV4IGIx
Njk4MjgwZWE1MDE3YzU4MGM2NDgwMDYwNTJjYzZlZGNkZDllOGEuLmZkOTFiYWQ5OWM3MTZkN2Rj
NWM0ZjE1OTdhNmU2MzQ5Y2VjNTYxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TdG9yYWdlQXJlYVByb3h5LmgKQEAgLTQzLDE2ICs0MywxNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+U3RvcmFnZUFyZWFQcm94eSgpOwogCiAgICAgLy8gVGhlIEhUTUw1IERPTSBTdG9yYWdl
IEFQSQotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBT
dHJpbmcga2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRJ
dGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0
aChGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNp
Z25lZCBpbmRleCwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU3RyaW5nIHNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSogc291cmNlRnJhbWUpOwogICAgIHZp
cnR1YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VG
cmFtZSk7CiAgICAgdmlydHVhbCBib29sIGNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSk7Ci0gICAg
dmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3Jh
Z2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIEZyYW1lKiBzb3VyY2VGcmFtZSk7CisgICAgYm9vbCBj
YW5BY2Nlc3NTdG9yYWdlKEZyYW1lKikgY29uc3Q7CiAKICAgICBPd25QdHI8V2ViS2l0OjpXZWJT
dG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKICAgICBTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUFyZWFJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VBcmVhSW1wbC5j
cHAKaW5kZXggMmNlY2ZlOWU3Y2ExMjQ3NGMzMTEzZDNiOTY0OTY4MDQ3NGNjNDk4Ni4uMDExM2Mw
Y2U5MGE2MDA0YjJmM2Q1OWM5NzNmMTY4NzczMWU5MThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlQXJlYUltcGwuY3BwCkBAIC01MywxNyArNTMsMTcg
QEAgV2ViU3RvcmFnZUFyZWFJbXBsOjp+V2ViU3RvcmFnZUFyZWFJbXBsKCkKIAogdW5zaWduZWQg
V2ViU3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgoKQogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVh
LT5sZW5ndGgoKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKDApOwogfQogCiBX
ZWJTdHJpbmcgV2ViU3RvcmFnZUFyZWFJbXBsOjprZXkodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAg
cmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRleCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFy
ZWEtPmtleShpbmRleCwgMCk7CiB9CiAKIFdlYlN0cmluZyBXZWJTdG9yYWdlQXJlYUltcGw6Omdl
dEl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXkpCiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEt
PmdldEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXksIDAp
OwogfQogCiB2b2lkIFdlYlN0b3JhZ2VBcmVhSW1wbDo6c2V0SXRlbShjb25zdCBXZWJTdHJpbmcm
IGtleSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSwgY29uc3QgV2ViVVJMJiB1cmwsIFJlc3VsdCYg
cmVzdWx0LCBXZWJTdHJpbmcmIG9sZFZhbHVlLCBXZWJGcmFtZSopCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95127</attachid>
            <date>2011-05-27 00:07:05 -0700</date>
            <delta_ts>2011-05-27 00:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61581-20110527090702.patch</filename>
            <type>text/plain</type>
            <size>26829</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczMDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ODg3ZDFhOTdmZWI1Y2E3MDJhMzU2
MzhhMDEwNTFlYzgwOTI3NzFhLi45OWQ5M2IwNmYzNDU3ZmIyNTE0OWZjNGViOTU2ODc0YzkxMWU3
MjI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMjcgIEpvY2hlbiBFaXNpbmdlciAg
PGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGljeSBvbiBhbGwgc3RvcmFnZSBvcGVyYXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTU4
MQorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdl
LXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNS0yNSAgTGVvbiBTY3JvZ2dpbnMgIDxzY3JvZ2dvQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0
b3JhZ2UtcGVybWlzc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlMzc5ZDg4MzYzN2E2
MzY5ZjUzOWIyNDFjZWEzNGYzN2FjODNlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvc3RvcmFnZS1wZXJtaXNzaW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhbGwg
YWNjZXNzIHRvIGxvY2FsU3RvcmFnZSBjYW4gYmUgYmxvY2tlZAorTGVuZ3RoIGlzIDAKK1ZhbHVl
IGZvciBGT08gaXMgbnVsbAorTGVuZ3RoIGlzIDEKK1ZhbHVlIGZvciBGT08gaXMgQkFSCitLZXkg
Zm9yIGluZGV4IDAgaXMgRk9PCitEaXNhYmxpbmcgbG9jYWxTdG9yYWdlIGFjY2Vzcy4KK0xlbmd0
aCBpcyAwCitWYWx1ZSBmb3IgRk9PIGlzIG51bGwKK0NhdWdodCBleGNlcHRpb24gdHJ5aW5nIHRv
IGNoYW5nZSBpdGVtOiBFcnJvcjogUVVPVEFfRVhDRUVERURfRVJSOiBET00gRXhjZXB0aW9uIDIy
CitMZW5ndGggaXMgMAorVmFsdWUgZm9yIEZPTyBpcyBudWxsCitLZXkgZm9yIGluZGV4IDAgaXMg
bnVsbAorTGVuZ3RoIGlzIDAKK1ZhbHVlIGZvciBGT08gaXMgbnVsbAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVy
bWlzc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNs
aWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmYxMzI0MjYxMjZmMTQ1
Nzg0ODUwMDMwYjBmZGE2MDBlOWExODk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRt
bApAQCAtMCwwICsxLDYyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9jbGVhckxvY2FsU3RvcmFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworZnVuY3Rpb24gbG9nKGEpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZ2dlciIpLmlubmVySFRNTCArPSBhICsgIjxicj4iOworfQorCitmdW5jdGlvbiBydW5UZXN0
KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgbG9nKCJ3aW5k
b3cubG9jYWxTdG9yYWdlIERPRVMgTk9UIGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFN0b3JhZ2VBbGxvd2VkKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRTdG9yYWdlQWxsb3dlZCh0cnVlKTsKKyAgICAKKyAgICBsb2coIkxlbmd0aCBpcyAiICsgbG9j
YWxTdG9yYWdlLmxlbmd0aCk7CisgICAgbG9nKCJWYWx1ZSBmb3IgRk9PIGlzICIgKyBsb2NhbFN0
b3JhZ2UuZ2V0SXRlbSgiRk9PIikpOworCisgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oIkZPTyIs
ICJCQVIiKTsKKyAgICAKKyAgICBsb2coIkxlbmd0aCBpcyAiICsgbG9jYWxTdG9yYWdlLmxlbmd0
aCk7CisgICAgbG9nKCJWYWx1ZSBmb3IgRk9PIGlzICIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgi
Rk9PIikpOworICAgIGxvZygiS2V5IGZvciBpbmRleCAwIGlzICIgKyBsb2NhbFN0b3JhZ2Uua2V5
KDApKTsKKyAgICAKKyAgICBsb2coIkRpc2FibGluZyBsb2NhbFN0b3JhZ2UgYWNjZXNzLiIpOwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0U3RvcmFnZUFsbG93ZWQpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFN0
b3JhZ2VBbGxvd2VkKGZhbHNlKTsKKworICAgIGxvZygiTGVuZ3RoIGlzICIgKyBsb2NhbFN0b3Jh
Z2UubGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZvciBGT08gaXMgIiArIGxvY2FsU3RvcmFnZS5n
ZXRJdGVtKCJGT08iKSk7CisKKyAgICB0cnkgeworICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRl
bSgiRk9PIiwgIkJBWiIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBsb2coIkNhdWdodCBl
eGNlcHRpb24gdHJ5aW5nIHRvIGNoYW5nZSBpdGVtOiAiICsgZSk7CisgICAgfQorICAgIAorICAg
IGxvZygiTGVuZ3RoIGlzICIgKyBsb2NhbFN0b3JhZ2UubGVuZ3RoKTsKKyAgICBsb2coIlZhbHVl
IGZvciBGT08gaXMgIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJGT08iKSk7CisgICAgbG9nKCJL
ZXkgZm9yIGluZGV4IDAgaXMgIiArIGxvY2FsU3RvcmFnZS5rZXkoMCkpOworICAgIAorICAgIGxv
Y2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJGT08iKTsKKyAgICAKKyAgICBsb2coIkxlbmd0aCBpcyAi
ICsgbG9jYWxTdG9yYWdlLmxlbmd0aCk7CisgICAgbG9nKCJWYWx1ZSBmb3IgRk9PIGlzICIgKyBs
b2NhbFN0b3JhZ2UuZ2V0SXRlbSgiRk9PIikpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhbGwgYWNj
ZXNzIHRvIGxvY2FsU3RvcmFnZSBjYW4gYmUgYmxvY2tlZDxicj4KKzxkaXYgaWQ9ImxvZ2dlciI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc4NDQ4OGE2Y2E2YWI4OWIy
MTAxMTg0MTAzMjMzYjVkNzdhM2M2Yy4uYWM4MDE1NTU5MDY3ZGI1NmZlMDZmMzRiN2MyOTc2NzU5
NzNiOTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTA1LTI3ICBKb2NoZW4g
RWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGcmFtZSBwYXJhbWV0ZXIgdG8gYWxsIFN0b3Jh
Z2VBcmVhIG1ldGhvZHMuIFRoZSBjaHJvbWl1bQorICAgICAgICBlbWJlZGRlciB1c2VzIHRoZSBG
cmFtZSBhcyBjb250ZXh0IHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICAgICAgICB0byBhbGxv
dyB1c2FnZSBvZiB0aGUgc3RvcmFnZSBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTU4MQorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9t
aXVtL3Blcm1pc3Npb25jbGllbnQvc3RvcmFnZS1wZXJtaXNzaW9uLmh0bWwKKworICAgICAgICAq
IHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpsZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6a2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2U6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6Y29udGFpbnMpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWEuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6Omxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OmtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUFyZWFJbXBsOjpjb250YWlucyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaDoKKwogMjAxMS0wNS0yNSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmNwcAppbmRleCAwMjU5Y2E0MTRkMWZmYjcwOGNhMWE3ZTAyNTYzMzA5ZWEwMjY2ZGE2Li45
ZTk3NWFiYWNmNDJjOGM1OWU1YzgxZjZmYWJmYzM4YTIyYjJhMzNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdW5zaWduZWQgU3RvcmFnZTo6bGVuZ3Ro
KCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSB8fCBtX2ZyYW1l
LT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKCk7CisgICAgcmV0
dXJuIG1fc3RvcmFnZUFyZWEtPmxlbmd0aChtX2ZyYW1lKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6
OmtleSh1bnNpZ25lZCBpbmRleCkgY29uc3QKQEAgLTY3LDcgKzY3LDcgQEAgU3RyaW5nIFN0b3Jh
Z2U6OmtleSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJh
bWUtPnBhZ2UoKSB8fCBtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1fc3Rv
cmFnZUFyZWEtPmtleShpbmRleCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRl
eCwgbV9mcmFtZSk7CiB9CiAKIFN0cmluZyBTdG9yYWdlOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYg
a2V5KSBjb25zdApAQCAtNzUsNyArNzUsNyBAQCBTdHJpbmcgU3RvcmFnZTo6Z2V0SXRlbShjb25z
dCBTdHJpbmcmIGtleSkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2Uo
KSB8fCBtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEt
PmdldEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXksIG1f
ZnJhbWUpOwogfQogCiB2b2lkIFN0b3JhZ2U6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTA4LDcgKzEwOCw3IEBA
IGJvb2wgU3RvcmFnZTo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgICAgaWYg
KCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkgfHwgbV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5n
cygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5jb250YWlucyhrZXkpOworICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhLT5jb250YWlucyhrZXksIG1fZnJhbWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggNjA4MTI0MGRkOTYyYTU4ZWRmOTdlNWYzYWI3ODQwZjIy
NjMyNjJkZi4uOWRkMTE4Yzk1MjVhOTJkNzIxNDA2NDU5MThhNTdjNWMyNGQxNzdmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNDcsMTMgKzQ3LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWEoKSB7IH0KIAogICAgICAg
ICAvLyBUaGUgSFRNTDUgRE9NIFN0b3JhZ2UgQVBJCi0gICAgICAgIHZpcnR1YWwgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBrZXkodW5zaWduZWQg
aW5kZXgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0SXRlbShjb25zdCBT
dHJpbmcmIGtleSkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aChG
cmFtZSogc291cmNlRnJhbWUpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcga2V5
KHVuc2lnbmVkIGluZGV4LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0ID0gMDsKKyAgICAgICAg
dmlydHVhbCBTdHJpbmcgZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZy
YW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHNldEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSog
c291cmNlRnJhbWUpID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlSXRlbShjb25z
dCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBjbGVhcihGcmFtZSogc291cmNlRnJhbWUpID0gMDsKLSAgICAgICAgdmlydHVhbCBib29s
IGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25z
dCA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDBlYmM4NzQ2MTg3N2NlODMwZmU3Y2Iz
NDA5ZWE3MTc3MzBmYTdkZGMuLmQ1NGY1YWIyNWQxY2VjY2Y0Nzg5N2M4Mzk5YWMxYjIyN2UzMTVj
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBzdGF0aWMgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKEZyYW1lKiBm
cmFtZSkKICNlbmRpZgogfQogCi11bnNpZ25lZCBTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCgpIGNv
bnN0Cit1bnNpZ25lZCBTdG9yYWdlQXJlYUltcGw6Omxlbmd0aChGcmFtZSopIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgp
OwpAQCAtMTE1LDcgKzExNSw3IEBAIHVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9zdG9yYWdlTWFwLT5sZW5ndGgoKTsKIH0KIAotU3RyaW5nIFN0
b3JhZ2VBcmVhSW1wbDo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdAorU3RyaW5nIFN0b3JhZ2VB
cmVhSW1wbDo6a2V5KHVuc2lnbmVkIGluZGV4LCBGcmFtZSopIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFtX2lzU2h1dGRvd24pOwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTIz
LDcgKzEyMyw3IEBAIFN0cmluZyBTdG9yYWdlQXJlYUltcGw6OmtleSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKICAgICByZXR1cm4gbV9zdG9yYWdlTWFwLT5rZXkoaW5kZXgpOwogfQogCi1TdHJpbmcg
U3RvcmFnZUFyZWFJbXBsOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAorU3RyaW5n
IFN0b3JhZ2VBcmVhSW1wbDo6Z2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqKSBjb25z
dAogewogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKICAgICBibG9ja1VudGlsSW1wb3J0Q29t
cGxldGUoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIFN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXIo
RnJhbWUqIGZyYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFN0b3JhZ2VBcmVhSW1w
bDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Citib29sIFN0b3JhZ2VBcmVhSW1w
bDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKikgY29uc3QKIHsKICAgICBBU1NF
UlQoIW1faXNTaHV0ZG93bik7CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA5Zjg3ZTY5N2FiODViYTY3
ZDYzMzFjOTRhMzgwZGQ2ZjBkMDJlMDNiLi4xYWE1YTA1Njk1MWEzNGFlODAwNGY2ZjcxNTZkMmY2
NGVlM2U0MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAg
LTQ1LDEzICs0NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflN0
b3JhZ2VBcmVhSW1wbCgpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MNSBET00gU3RvcmFnZSBBUEkg
KGFuZCBjb250YWlucykKLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
LSAgICAgICAgdmlydHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBTdHJpbmcgZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7Cisg
ICAgICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCwgRnJhbWUqIHNvdXJjZUZy
YW1lKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0SXRlbShjb25zdCBTdHJpbmcm
IGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcg
c2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMsIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHJl
bW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBjbGVhcihGcmFtZSogc291cmNlRnJhbWUpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29u
c3Q7CiAKICAgICAgICAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+IGNvcHkoKTsKICAgICAg
ICAgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlMTIyOWI0OGYz
YTkxMWIwNGU1OGY2MWEwNTEwNGM0OTIwMTRmY2RjLi42ZjNhMWI0NTgwZTY4NjhhZDAxNjE3Nzlh
NDhiOWQ0YTQ3NWJlM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDExLTA1LTI3ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGFj
Y2VzcyBwb2xpY3kgb24gYWxsIHN0b3JhZ2Ugb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE1ODEKKworICAgICAgICAqIHB1YmxpYy9X
ZWJWaWV3Lmg6CisgICAgICAgICogc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VBcmVhUHJveHk6OmtleSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5
OjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OnNldEl0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6cmVtb3ZlSXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYVByb3h5Ojpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
QXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKToKKyAgICAgICAgKiBzcmMvU3RvcmFnZUFyZWFQ
cm94eS5oOgorICAgICAgICAqIHNyYy9XZWJTdG9yYWdlQXJlYUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VBcmVhSW1wbDo6a2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWFJ
bXBsOjpnZXRJdGVtKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVybWlzc2lvbkNsaWVudCk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmg6CisKIDIwMTEtMDUtMjQgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggNGEzYWI1ODM5MjY4YjYxMTgzMDExZjJkMWQ4
N2JjMWExYzM0OWMyYS4uYTRiNzlmYzNiNjk5OWEyNDZjNmQ5ZjJkOGYxOGZkZmE4ZDNjMmYxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtOTgsNiArOTgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEF1dG9GaWxsQ2xpZW50KFdlYkF1dG9GaWxs
Q2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZUb29sc0FnZW50Q2xpZW50KFdl
YkRldlRvb2xzQWdlbnRDbGllbnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBlcm1pc3Np
b25DbGllbnQoV2ViUGVybWlzc2lvbkNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIFdlYlBlcm1p
c3Npb25DbGllbnQqIHBlcm1pc3Npb25DbGllbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFNwZWxsQ2hlY2tDbGllbnQoV2ViU3BlbGxDaGVja0NsaWVudCopID0gMDsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCmluZGV4IGRjM2Zh
ZDQxMGQxZGRlYWVmMDY5YTBkZTgzYzc5MjQyMjMxNDFhMTUuLjZkYzQyMGNkODg3YjIzOWEyNmZm
MDM3MmUwNTZmYjIzODlkZmQwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1N0b3JhZ2VBcmVhUHJveHkuY3BwCkBAIC02MywzMCArNjMsMzUgQEAgU3RvcmFnZUFyZWFQcm94
eTo6flN0b3JhZ2VBcmVhUHJveHkoKQogewogfQogCi11bnNpZ25lZCBTdG9yYWdlQXJlYVByb3h5
OjpsZW5ndGgoKSBjb25zdAordW5zaWduZWQgU3RvcmFnZUFyZWFQcm94eTo6bGVuZ3RoKEZyYW1l
KiBmcmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKCk7Cisg
ICAgaWYgKGNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYS0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIDA7CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJlYVBy
b3h5OjprZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFQcm94eTo6
a2V5KHVuc2lnbmVkIGluZGV4LCBGcmFtZSogZnJhbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
c3RvcmFnZUFyZWEtPmtleShpbmRleCk7CisgICAgaWYgKGNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUp
KQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJlYVByb3h5OjpnZXRJdGVtKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdAorU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OmdldEl0ZW0oY29uc3Qg
U3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYS0+Z2V0SXRlbShrZXkpOworICAgIGlmIChjYW5BY2Nlc3NTdG9yYWdlKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdldEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKIFN0cmluZyBTdG9yYWdlQXJlYVByb3h5OjpzZXRJdGVtKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIGZy
YW1lKQogewogICAgIFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdCByZXN1bHQgPSBXZWJL
aXQ6OldlYlN0b3JhZ2VBcmVhOjpSZXN1bHRPSzsKICAgICBXZWJLaXQ6OldlYlN0cmluZyBvbGRW
YWx1ZTsKLSAgICBXZWJLaXQ6OldlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZy
YW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKLSAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJW
aWV3ID0gd2ViRnJhbWUtPnZpZXdJbXBsKCk7Ci0gICAgaWYgKHdlYlZpZXctPnBlcm1pc3Npb25D
bGllbnQoKSAmJiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd1N0b3JhZ2Uod2Vi
RnJhbWUsIG1fc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKSkKKyAgICBpZiAoIWNhbkFjY2Vz
c1N0b3JhZ2UoZnJhbWUpKQogICAgICAgICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsKICAgICBl
bHNlIHsKKyAgICAgICAgV2ViS2l0OjpXZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gV2ViS2l0OjpX
ZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CiAgICAgICAgIG1fc3RvcmFnZUFyZWEtPnNl
dEl0ZW0oa2V5LCB2YWx1ZSwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCByZXN1bHQsIG9sZFZh
bHVlLCB3ZWJGcmFtZSk7CiAgICAgICAgIGVjID0gKHJlc3VsdCA9PSBXZWJLaXQ6OldlYlN0b3Jh
Z2VBcmVhOjpSZXN1bHRPSykgPyAwIDogUVVPVEFfRVhDRUVERURfRVJSOwogICAgICAgICBTdHJp
bmcgb2xkVmFsdWVTdHJpbmcgPSBvbGRWYWx1ZTsKQEAgLTk4LDYgKzEwMyw4IEBAIFN0cmluZyBT
dG9yYWdlQXJlYVByb3h5OjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBFeGNlcHRpCiAKIFN0cmluZyBTdG9yYWdlQXJlYVByb3h5OjpyZW1vdmVJdGVtKGNv
bnN0IFN0cmluZyYga2V5LCBGcmFtZSogZnJhbWUpCiB7CisgICAgaWYgKCFjYW5BY2Nlc3NTdG9y
YWdlKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFdlYktpdDo6V2ViU3Ry
aW5nIG9sZFZhbHVlOwogICAgIG1fc3RvcmFnZUFyZWEtPnJlbW92ZUl0ZW0oa2V5LCBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCksIG9sZFZhbHVlKTsKICAgICBpZiAoIW9sZFZhbHVlLmlzTnVsbCgp
KQpAQCAtMTA3LDYgKzExNCw4IEBAIFN0cmluZyBTdG9yYWdlQXJlYVByb3h5OjpyZW1vdmVJdGVt
KGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogZnJhbWUpCiAKIGJvb2wgU3RvcmFnZUFyZWFQcm94
eTo6Y2xlYXIoRnJhbWUqIGZyYW1lKQogeworICAgIGlmICghY2FuQWNjZXNzU3RvcmFnZShmcmFt
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIGNsZWFyZWRTb21ldGhpbmc7CiAg
ICAgbV9zdG9yYWdlQXJlYS0+Y2xlYXIoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBjbGVhcmVk
U29tZXRoaW5nKTsKICAgICBpZiAoY2xlYXJlZFNvbWV0aGluZykKQEAgLTExNCw5ICsxMjMsOSBA
QCBib29sIFN0b3JhZ2VBcmVhUHJveHk6OmNsZWFyKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4g
Y2xlYXJlZFNvbWV0aGluZzsKIH0KIAotYm9vbCBTdG9yYWdlQXJlYVByb3h5Ojpjb250YWlucyhj
b25zdCBTdHJpbmcmIGtleSkgY29uc3QKK2Jvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y29udGFpbnMo
Y29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gIWdl
dEl0ZW0oa2V5KS5pc051bGwoKTsKKyAgICByZXR1cm4gIWdldEl0ZW0oa2V5LCBmcmFtZSkuaXNO
dWxsKCk7CiB9CiAKIC8vIENvcGllZCBmcm9tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnRE
aXNwYXRjaGVyLmNwcCBvdXQgb2YgbmVjZXNzaXR5LiAgSXQncyBwcm9iYWJseSBiZXN0IHRvIGtl
ZXAgaXQgY3VycmVudC4KQEAgLTE2Miw2ICsxNzEsMTMgQEAgdm9pZCBTdG9yYWdlQXJlYVByb3h5
OjpzdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUs
IGMKICAgICB9CiB9CiAKK2Jvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y2FuQWNjZXNzU3RvcmFnZShG
cmFtZSogZnJhbWUpIGNvbnN0Cit7CisgICAgV2ViS2l0OjpXZWJGcmFtZUltcGwqIHdlYkZyYW1l
ID0gV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CisgICAgV2ViS2l0OjpX
ZWJWaWV3SW1wbCogd2ViVmlldyA9IHdlYkZyYW1lLT52aWV3SW1wbCgpOworICAgIHJldHVybiAh
d2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQo
KS0+YWxsb3dTdG9yYWdlKHdlYkZyYW1lLCBtX3N0b3JhZ2VUeXBlID09IExvY2FsU3RvcmFnZSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShET01fU1RP
UkFHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVh
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaApp
bmRleCBiMTY5ODI4MGVhNTAxN2M1ODBjNjQ4MDA2MDUyY2M2ZWRjZGQ5ZThhLi5mZDkxYmFkOTlj
NzE2ZDdkYzVjNGYxNTk3YTZlNjM0OWNlYzU2MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCkBAIC00MywxNiArNDMsMTcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVhUHJveHkoKTsKIAogICAgIC8vIFRoZSBIVE1MNSBET00g
U3RvcmFnZSBBUEkKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJp
bmcgZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBsZW5ndGgoRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBr
ZXkodW5zaWduZWQgaW5kZXgsIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CisgICAgdmlydHVh
bCBTdHJpbmcgZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBj
b25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIHNvdXJjZUZyYW1lKTsK
ICAgICB2aXJ0dWFsIFN0cmluZyByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSog
c291cmNlRnJhbWUpOwogICAgIHZpcnR1YWwgYm9vbCBjbGVhcihGcmFtZSogc291cmNlRnJhbWUp
OwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNl
RnJhbWUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgc3RvcmFnZUV2ZW50KGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
LCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBGcmFtZSogc291cmNlRnJhbWUpOworICAg
IGJvb2wgY2FuQWNjZXNzU3RvcmFnZShGcmFtZSopIGNvbnN0OwogCiAgICAgT3duUHRyPFdlYktp
dDo6V2ViU3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CiAgICAgU3RvcmFnZVR5cGUgbV9zdG9y
YWdlVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3Jh
Z2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlQXJl
YUltcGwuY3BwCmluZGV4IDJjZWNmZTllN2NhMTI0NzRjMzExM2QzYjk2NDk2ODA0NzRjYzQ5ODYu
LjAxMTNjMGNlOTBhNjAwNGIyZjNkNTljOTczZjE2ODc3MzFlOTE4ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtNTMsMTcg
KzUzLDE3IEBAIFdlYlN0b3JhZ2VBcmVhSW1wbDo6fldlYlN0b3JhZ2VBcmVhSW1wbCgpCiAKIHVu
c2lnbmVkIFdlYlN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKCkKIHsKLSAgICByZXR1cm4gbV9zdG9y
YWdlQXJlYS0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmxlbmd0aCgwKTsK
IH0KIAogV2ViU3RyaW5nIFdlYlN0b3JhZ2VBcmVhSW1wbDo6a2V5KHVuc2lnbmVkIGluZGV4KQog
ewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5rZXkoaW5kZXgpOworICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhLT5rZXkoaW5kZXgsIDApOwogfQogCiBXZWJTdHJpbmcgV2ViU3RvcmFnZUFyZWFJ
bXBsOjpnZXRJdGVtKGNvbnN0IFdlYlN0cmluZyYga2V5KQogewotICAgIHJldHVybiBtX3N0b3Jh
Z2VBcmVhLT5nZXRJdGVtKGtleSk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdldEl0ZW0o
a2V5LCAwKTsKIH0KIAogdm9pZCBXZWJTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0oY29uc3QgV2Vi
U3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUsIGNvbnN0IFdlYlVSTCYgdXJsLCBS
ZXN1bHQmIHJlc3VsdCwgV2ViU3RyaW5nJiBvbGRWYWx1ZSwgV2ViRnJhbWUqKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDIwOTczY2NmYjI4YTY1MzE4
OWE5NjQxYjUxMGRjMTBiZWQ2MzFlYmYuLmNmMTZlMjAxZTA4ZmQyODkyNGE1MWYwZjZjNjc3NzUz
ZTYwMGU3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTI5Miw2ICsyOTIsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGVybWlzc2lvbkNsaWVu
dChXZWJQZXJtaXNzaW9uQ2xpZW50KiBwZXJtaXNzaW9uQ2xpZW50KQogICAgIG1fcGVybWlzc2lv
bkNsaWVudCA9IHBlcm1pc3Npb25DbGllbnQ7CiB9CiAKK1dlYlBlcm1pc3Npb25DbGllbnQqIFdl
YlZpZXdJbXBsOjpwZXJtaXNzaW9uQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gbV9wZXJtaXNzaW9u
Q2xpZW50OworfQorCisKIHZvaWQgV2ViVmlld0ltcGw6OnNldFNwZWxsQ2hlY2tDbGllbnQoV2Vi
U3BlbGxDaGVja0NsaWVudCogc3BlbGxDaGVja0NsaWVudCkKIHsKICAgICBtX3NwZWxsQ2hlY2tD
bGllbnQgPSBzcGVsbENoZWNrQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggZjI5MDgyNzY5ZjNmYjJkMjY4ZTBhNDdiZGUzOTdlMTc0OGFiYzYzMS4u
ODkzNjBhNzQ1ZTFmNGJmM2FjNjcyMThjMzQ1ZGMxMjU5NGQyNDAwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xMjAsNiArMTIwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvRmlsbENsaWVudChXZWJBdXRvRmlsbENsaWVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXREZXZUb29sc0FnZW50Q2xpZW50KFdlYkRldlRvb2xzQWdlbnRD
bGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVybWlzc2lvbkNsaWVudChXZWJQZXJtaXNz
aW9uQ2xpZW50Kik7CisgICAgdmlydHVhbCBXZWJQZXJtaXNzaW9uQ2xpZW50KiBwZXJtaXNzaW9u
Q2xpZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNwZWxsQ2hlY2tDbGllbnQoV2ViU3BlbGxD
aGVja0NsaWVudCopOwogICAgIHZpcnR1YWwgV2ViU2V0dGluZ3MqIHNldHRpbmdzKCk7CiAgICAg
dmlydHVhbCBXZWJTdHJpbmcgcGFnZUVuY29kaW5nKCkgY29uc3Q7CkBAIC0yMjYsMTEgKzIyNyw2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYXV0b0ZpbGxDbGllbnQ7CiAgICAgfQogCi0g
ICAgV2ViUGVybWlzc2lvbkNsaWVudCogcGVybWlzc2lvbkNsaWVudCgpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV9wZXJtaXNzaW9uQ2xpZW50OwotICAgIH0KLQogICAgIFdlYlNwZWxsQ2hlY2tD
bGllbnQqIHNwZWxsQ2hlY2tDbGllbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3BlbGxD
aGVja0NsaWVudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAzMGYwYmZkYmYxODczNjRhOTI4MzI0ODBhN2U2OThmMGY5ZWVlMTEyLi5kZTRhOTk2
ZDgzYjIyYTk2ZWRiZWU3NzcwNDE2Zjk3MzBjMmU2OTk3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDUtMjcg
IEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dFRlc3RDb250cm9sbGVy
LnNldFN0b3JhZ2VBbGxvd2VkKCkgdG8gY29udHJvbCB3aGV0aGVyIGFjY2VzcworICAgICAgICB0
byB0aGUgbG9jYWxTdG9yYWdlIEFQSSBpcyBlbmFibGVkIHZpYSB0aGUgV2ViUGVybWlzc2lvbkNs
aWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE1
ODEKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJv
bGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U3RvcmFnZUFsbG93ZWQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAg
ICAgICAgKFRlc3RTaGVsbDo6Y3JlYXRlTmV3V2luZG93KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYlBlcm1p
c3Npb25zOjpXZWJQZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJQZXJtaXNzaW9uczo6YWxsb3dT
dG9yYWdlKToKKyAgICAgICAgKFdlYlBlcm1pc3Npb25zOjpzZXRTdG9yYWdlQWxsb3dlZCk6CisK
IDIwMTEtMDUtMjUgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIElk
ZW50aWZ5LCByYXRoZXIgdGhhbiBza2lwLCBidWlsZHMgd2hlcmUgcnVuLXdlYmtpdC10ZXN0cyBl
eGl0ZWQgZWFybHkgZHVlIHRvIHRvbyBtYW55IGZhaWx1cmVzCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYmY0
MjIwMDZjYjcyYWFiYmNjYmNlNTIxNWQ2ZDBkZDExMTYwMDJlOS4uZGNkNmQ1YjE2NzQyNTcwZTEy
MmUzYjk0MWUyZmRlY2NlNjlkZjM5MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQAog
I2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1
ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIldlYlBlcm1pc3Npb25z
LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlQ
b2xpY3kuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgpAQCAtMjE1LDYgKzIxNiw3IEBAIExh
eW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxs
KQogICAgIGJpbmRNZXRob2QoImRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luKTsKICAgICBiaW5kTWV0
aG9kKCJvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKTsKICAgICBiaW5kTWV0
aG9kKCJzeW5jTG9jYWxTdG9yYWdlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxT
dG9yYWdlKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRTdG9yYWdlQWxsb3dlZCIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0U3RvcmFnZUFsbG93ZWQpOwogICAgIAogICAgIC8vIFRoZSBmYWxsYmFj
ayBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gdW5rbm93biBtZXRob2QgaXMgaW52b2tlZC4KICAg
ICBiaW5kRmFsbGJhY2tNZXRob2QoJkxheW91dFRlc3RDb250cm9sbGVyOjpmYWxsYmFja01ldGhv
ZCk7CkBAIC0xODMzLDYgKzE4MzUsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3lu
Y0xvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KikKICAgICAv
LyBOb3QgSW1wbGVtZW50ZWQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U3Rv
cmFnZUFsbG93ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBd
LmlzQm9vbCgpKSB7CisgICAgICAgIFdlYlBlcm1pc3Npb25zKiBwZXJtaXNzaW9uQ2xpZW50ID0g
c3RhdGljX2Nhc3Q8V2ViUGVybWlzc2lvbnMqPihtX3NoZWxsLT53ZWJWaWV3KCktPnBlcm1pc3Np
b25DbGllbnQoKSk7CisgICAgICAgIHBlcm1pc3Npb25DbGllbnQtPnNldFN0b3JhZ2VBbGxvd2Vk
KGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSk7CisgICAgfQorICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQbHVnaW5zRW5hYmxlZChjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCmluZGV4IGVmNzgyZTU4MjI3YmYyNjA2NjczMzI3ZmQ5OTlkNzJlZjI4NGNhZmUuLjljMTAx
MzQwODE1MDU1NzVjNmIwMTdmMjkxYTUwZWRjMDhjOWNmM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzczLDYg
KzM3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9yaWdp
bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBvYnNlcnZl
U3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0U3RvcmFnZUFsbG93ZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8gRW5hYmxlIG9yIGRpc2FibGUgcGx1
Z2lucy4KICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
Y3BwCmluZGV4IGU4OGY0MGY5MDYxMTYyMmRlZmJiYThiN2EzNTM1MzE5OTcxNGEyZjQuLjA3YmZk
ODk0NzlmNWU0YzE4YmI3NjQ0NTQ0ZjNhMGE0NGU5NGRiZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
IldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJXZWJL
aXQuaCIKKyNpbmNsdWRlICJXZWJQZXJtaXNzaW9ucy5oIgogI2luY2x1ZGUgIldlYlJ1bnRpbWVG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJX
ZWJTZXR0aW5ncy5oIgpAQCAtNTk2LDYgKzU5Nyw3IEBAIFdlYlZpZXdIb3N0KiBUZXN0U2hlbGw6
OmNyZWF0ZU5ld1dpbmRvdyhjb25zdCBXZWJLaXQ6OldlYlVSTCYgdXJsLCBEUlREZXZUb29sc0Fn
CiB7CiAgICAgV2ViVmlld0hvc3QqIGhvc3QgPSBuZXcgV2ViVmlld0hvc3QodGhpcyk7CiAgICAg
V2ViVmlldyogdmlldyA9IFdlYlZpZXc6OmNyZWF0ZShob3N0KTsKKyAgICB2aWV3LT5zZXRQZXJt
aXNzaW9uQ2xpZW50KG5ldyBXZWJQZXJtaXNzaW9ucygpKTsKICAgICB2aWV3LT5zZXREZXZUb29s
c0FnZW50Q2xpZW50KGRldlRvb2xzQWdlbnQpOwogICAgIGhvc3QtPnNldFdlYldpZGdldCh2aWV3
KTsKICAgICBtX3ByZWZzLmFwcGx5VG8odmlldyk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViUGVybWlzc2lvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjEyZTkxMWI5NzFkNmRmM2Y3
NjE3ODBlMTdmY2EwOGE3ODVlNWJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViUGVybWlzc2lvbnMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQZXJtaXNzaW9uc19oCisjZGVmaW5lIFdlYlBlcm1pc3Npb25zX2gKKworI2luY2x1ZGUgIldl
YlBlcm1pc3Npb25DbGllbnQuaCIKKworY2xhc3MgV2ViUGVybWlzc2lvbnMgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJQZXJtaXNzaW9ucygp
IDogbV9zdG9yYWdlQWxsb3dlZCh0cnVlKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd1N0
b3JhZ2UoV2ViS2l0OjpXZWJGcmFtZSosIGJvb2wgbG9jYWwpIHsgcmV0dXJuIG1fc3RvcmFnZUFs
bG93ZWQ7IH0KKworICAgIC8vIFNldHMgdGhlIHBvbGljeSB3aGV0aGVyIHRvIGFsbG93IHN0b3Jh
Z2Ugb3Igbm90LgorICAgIHZvaWQgc2V0U3RvcmFnZUFsbG93ZWQoYm9vbCBzdG9yYWdlQWxsb3dl
ZCkgeyBtX3N0b3JhZ2VBbGxvd2VkID0gc3RvcmFnZUFsbG93ZWQ7IH0KKworcHJpdmF0ZToKKyAg
ICBib29sIG1fc3RvcmFnZUFsbG93ZWQ7Cit9OworCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95133</attachid>
            <date>2011-05-27 00:44:34 -0700</date>
            <delta_ts>2011-05-27 10:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61581-20110527094432.patch</filename>
            <type>text/plain</type>
            <size>26233</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczMDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ODg3ZDFhOTdmZWI1Y2E3MDJhMzU2
MzhhMDEwNTFlYzgwOTI3NzFhLi45OWQ5M2IwNmYzNDU3ZmIyNTE0OWZjNGViOTU2ODc0YzkxMWU3
MjI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMjcgIEpvY2hlbiBFaXNpbmdlciAg
PGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGljeSBvbiBhbGwgc3RvcmFnZSBvcGVyYXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTU4
MQorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdl
LXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNS0yNSAgTGVvbiBTY3JvZ2dpbnMgIDxzY3JvZ2dvQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0
b3JhZ2UtcGVybWlzc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlMzc5ZDg4MzYzN2E2
MzY5ZjUzOWIyNDFjZWEzNGYzN2FjODNlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvc3RvcmFnZS1wZXJtaXNzaW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhbGwg
YWNjZXNzIHRvIGxvY2FsU3RvcmFnZSBjYW4gYmUgYmxvY2tlZAorTGVuZ3RoIGlzIDAKK1ZhbHVl
IGZvciBGT08gaXMgbnVsbAorTGVuZ3RoIGlzIDEKK1ZhbHVlIGZvciBGT08gaXMgQkFSCitLZXkg
Zm9yIGluZGV4IDAgaXMgRk9PCitEaXNhYmxpbmcgbG9jYWxTdG9yYWdlIGFjY2Vzcy4KK0xlbmd0
aCBpcyAwCitWYWx1ZSBmb3IgRk9PIGlzIG51bGwKK0NhdWdodCBleGNlcHRpb24gdHJ5aW5nIHRv
IGNoYW5nZSBpdGVtOiBFcnJvcjogUVVPVEFfRVhDRUVERURfRVJSOiBET00gRXhjZXB0aW9uIDIy
CitMZW5ndGggaXMgMAorVmFsdWUgZm9yIEZPTyBpcyBudWxsCitLZXkgZm9yIGluZGV4IDAgaXMg
bnVsbAorTGVuZ3RoIGlzIDAKK1ZhbHVlIGZvciBGT08gaXMgbnVsbAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVy
bWlzc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNs
aWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDA4NmMxOTRhNjMzODNi
YTZlMTExYzZlNzc2YTMxNTQ4YjNkODE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRt
bApAQCAtMCwwICsxLDY0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9jbGVhckxvY2FsU3RvcmFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworZnVuY3Rpb24gbG9nKGEpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZ2dlciIpLmlubmVySFRNTCArPSBhICsgIjxicj4iOworfQorCitmdW5jdGlvbiBydW5UZXN0
KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgbG9nKCJ3aW5k
b3cubG9jYWxTdG9yYWdlIERPRVMgTk9UIGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFN0b3JhZ2VBbGxvd2VkKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRTdG9yYWdlQWxsb3dlZCh0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIGxheW91dFRlc3RDb250cm9sbGVyLnNldFN0b3JhZ2VBbGxvd2VkLCBzbyBpdCBi
ZSBjYW4ndCBydW4gaW4gYSBicm93c2VyLiIpOworICAgIAorICAgIGxvZygiTGVuZ3RoIGlzICIg
KyBsb2NhbFN0b3JhZ2UubGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZvciBGT08gaXMgIiArIGxv
Y2FsU3RvcmFnZS5nZXRJdGVtKCJGT08iKSk7CisKKyAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgi
Rk9PIiwgIkJBUiIpOworICAgIAorICAgIGxvZygiTGVuZ3RoIGlzICIgKyBsb2NhbFN0b3JhZ2Uu
bGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZvciBGT08gaXMgIiArIGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKCJGT08iKSk7CisgICAgbG9nKCJLZXkgZm9yIGluZGV4IDAgaXMgIiArIGxvY2FsU3RvcmFn
ZS5rZXkoMCkpOworICAgIAorICAgIGxvZygiRGlzYWJsaW5nIGxvY2FsU3RvcmFnZSBhY2Nlc3Mu
Iik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRTdG9yYWdlQWxsb3dlZCkKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0U3RvcmFnZUFsbG93ZWQoZmFsc2UpOworCisgICAgbG9nKCJMZW5ndGggaXMgIiArIGxvY2Fs
U3RvcmFnZS5sZW5ndGgpOworICAgIGxvZygiVmFsdWUgZm9yIEZPTyBpcyAiICsgbG9jYWxTdG9y
YWdlLmdldEl0ZW0oIkZPTyIpKTsKKworICAgIHRyeSB7CisgICAgICAgIGxvY2FsU3RvcmFnZS5z
ZXRJdGVtKCJGT08iLCAiQkFaIik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiQ2F1
Z2h0IGV4Y2VwdGlvbiB0cnlpbmcgdG8gY2hhbmdlIGl0ZW06ICIgKyBlKTsKKyAgICB9CisgICAg
CisgICAgbG9nKCJMZW5ndGggaXMgIiArIGxvY2FsU3RvcmFnZS5sZW5ndGgpOworICAgIGxvZygi
VmFsdWUgZm9yIEZPTyBpcyAiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oIkZPTyIpKTsKKyAgICBs
b2coIktleSBmb3IgaW5kZXggMCBpcyAiICsgbG9jYWxTdG9yYWdlLmtleSgwKSk7CisgICAgCisg
ICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIkZPTyIpOworICAgIAorICAgIGxvZygiTGVuZ3Ro
IGlzICIgKyBsb2NhbFN0b3JhZ2UubGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZvciBGT08gaXMg
IiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJGT08iKSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGFs
bCBhY2Nlc3MgdG8gbG9jYWxTdG9yYWdlIGNhbiBiZSBibG9ja2VkPGJyPgorPGRpdiBpZD0ibG9n
Z2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3Nzg0NDg4YTZjYTZh
Yjg5YjIxMDExODQxMDMyMzNiNWQ3N2EzYzZjLi5hYzgwMTU1NTkwNjdkYjU2ZmUwNmYzNGI3YzI5
NzY3NTk3M2I5NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMjcgIEpv
Y2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZyYW1lIHBhcmFtZXRlciB0byBhbGwg
U3RvcmFnZUFyZWEgbWV0aG9kcy4gVGhlIGNocm9taXVtCisgICAgICAgIGVtYmVkZGVyIHVzZXMg
dGhlIEZyYW1lIGFzIGNvbnRleHQgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgICAgICAgIHRv
IGFsbG93IHVzYWdlIG9mIHRoZSBzdG9yYWdlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTgxCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0v
Y2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRtbAorCisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6Omxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjprZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZTo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpjb250YWlu
cyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAqIHN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6a2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYUltcGw6OmNvbnRhaW5zKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5oOgorCiAyMDExLTA1LTI1ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2UuY3BwCmluZGV4IDAyNTljYTQxNGQxZmZiNzA4Y2ExYTdlMDI1NjMzMDllYTAyNjZk
YTYuLjllOTc1YWJhY2Y0MmM4YzU5ZTVjODFmNmZhYmZjMzhhMjJiMmEzM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtNTksNyArNTksNyBAQCB1bnNpZ25lZCBTdG9yYWdlOjps
ZW5ndGgoKSBjb25zdAogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpIHx8IG1f
ZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5sZW5ndGgoKTsKKyAg
ICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKG1fZnJhbWUpOwogfQogCiBTdHJpbmcgU3Rv
cmFnZTo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdApAQCAtNjcsNyArNjcsNyBAQCBTdHJpbmcg
U3RvcmFnZTo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIGlmICghbV9mcmFtZSB8fCAh
bV9mcmFtZS0+cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4g
bV9zdG9yYWdlQXJlYS0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+a2V5
KGluZGV4LCBtX2ZyYW1lKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OmdldEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXkpIGNvbnN0CkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBTdG9yYWdlOjpnZXRJdGVt
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+
cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYS0+Z2V0SXRlbShrZXkpOworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5nZXRJdGVtKGtl
eSwgbV9mcmFtZSk7CiB9CiAKIHZvaWQgU3RvcmFnZTo6c2V0SXRlbShjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMDgsNyArMTA4
LDcgQEAgYm9vbCBTdG9yYWdlOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKICAg
ICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSB8fCBtX2ZyYW1lLT5wYWdlKCktPnNl
dHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmNvbnRhaW5zKGtleSk7CisgICAgcmV0dXJu
IG1fc3RvcmFnZUFyZWEtPmNvbnRhaW5zKGtleSwgbV9mcmFtZSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA2MDgxMjQwZGQ5NjJhNThlZGY5N2U1ZjNhYjc4
NDBmMjI2MzI2MmRmLi4xZGMwMTM4Zjg4NzhiMmRjOGJhZjU5YzE5ODBkMjg2MGE3MzE2MGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC00NywxMyArNDcsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TdG9yYWdlQXJlYSgpIHsgfQogCiAg
ICAgICAgIC8vIFRoZSBIVE1MNSBET00gU3RvcmFnZSBBUEkKLSAgICAgICAgdmlydHVhbCB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNp
Z25lZCBpbmRleCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdCA9IDA7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cGFzcyBEb2N1bWVudCBpbnN0ZWFkIG9mIEZyYW1lLiBBbHNvLCB0aGF0IHBhcmFtZXRlciBzaG91
bGQgZ28gZmlyc3QuCisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKEZyYW1lKiBzb3Vy
Y2VGcmFtZSkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBrZXkodW5zaWduZWQg
aW5kZXgsIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0
ID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgc2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIEZyYW1lKiBzb3VyY2VGcmFt
ZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYg
a2V5LCBGcmFtZSogc291cmNlRnJhbWUpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNsZWFy
KEZyYW1lKiBzb3VyY2VGcmFtZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMo
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGNvbnRh
aW5zKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0ID0gMDsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggMGViYzg3NDYxODc3Y2U4MzBmZTdjYjM0MDllYTcxNzcz
MGZhN2RkYy4uZDU0ZjVhYjI1ZDFjZWNjZjQ3ODk3YzgzOTlhYzFiMjI3ZTMxNWM4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMTA3LDcgKzEwNyw3
IEBAIHN0YXRpYyBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQoRnJhbWUqIGZyYW1lKQogI2Vu
ZGlmCiB9CiAKLXVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKCkgY29uc3QKK3Vuc2ln
bmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKEZyYW1lKikgY29uc3QKIHsKICAgICBBU1NFUlQo
IW1faXNTaHV0ZG93bik7CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CkBAIC0xMTUs
NyArMTE1LDcgQEAgdW5zaWduZWQgU3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgoKSBjb25zdAogICAg
IHJldHVybiBtX3N0b3JhZ2VNYXAtPmxlbmd0aCgpOwogfQogCi1TdHJpbmcgU3RvcmFnZUFyZWFJ
bXBsOjprZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFJbXBsOjpr
ZXkodW5zaWduZWQgaW5kZXgsIEZyYW1lKikgY29uc3QKIHsKICAgICBBU1NFUlQoIW1faXNTaHV0
ZG93bik7CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CkBAIC0xMjMsNyArMTIzLDcg
QEAgU3RyaW5nIFN0b3JhZ2VBcmVhSW1wbDo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAg
IHJldHVybiBtX3N0b3JhZ2VNYXAtPmtleShpbmRleCk7CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJl
YUltcGw6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFy
ZWFJbXBsOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSopIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwpA
QCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgU3RvcmFnZUFyZWFJbXBsOjpjbGVhcihGcmFtZSogZnJh
bWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU3RvcmFnZUFyZWFJbXBsOjpjb250YWlu
cyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK2Jvb2wgU3RvcmFnZUFyZWFJbXBsOjpjb250YWlu
cyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqKSBjb25zdAogewogICAgIEFTU0VSVCghbV9pc1No
dXRkb3duKTsKICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDlmODdlNjk3YWI4NWJhNjdkNjMzMWM5NGEz
ODBkZDZmMGQwMmUwM2IuLjFhYTVhMDU2OTUxYTM0YWU4MDA0ZjZmNzE1NmQyZjY0ZWUzZTQzNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNDUsMTMgKzQ1
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFJ
bXBsKCk7CiAKICAgICAgICAgLy8gVGhlIEhUTUw1IERPTSBTdG9yYWdlIEFQSSAoYW5kIGNvbnRh
aW5zKQotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIFN0cmluZyBrZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCB1bnNpZ25lZCBsZW5ndGgoRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFt
ZSogc291cmNlRnJhbWUpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBzZXRJdGVtKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywg
RnJhbWUqIHNvdXJjZUZyYW1lKTsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlSXRlbShj
b25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250
YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjb250
YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKIAogICAg
ICAgICBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4gY29weSgpOwogICAgICAgICB2b2lkIGNs
b3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUxMjI5YjQ4ZjNhOTExYjA0ZTU4
ZjYxYTA1MTA0YzQ5MjAxNGZjZGMuLjFmNGQ0ZGRjYzNjZmU1MjkwMzkyNjA2NjkxNmU3OTcxMDQ2
OGYwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEt
MDUtMjcgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGlj
eSBvbiBhbGwgc3RvcmFnZSBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTU4MQorCisgICAgICAgICogc3JjL1N0b3JhZ2VBcmVhUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6bGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OmtleSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYVByb3h5OjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VB
cmVhUHJveHk6OnNldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6
cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5Ojpjb250YWlucyk6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKToKKyAgICAgICAg
KiBzcmMvU3RvcmFnZUFyZWFQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJTdG9yYWdlQXJlYUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhSW1wbDo6a2V5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3RvcmFnZUFyZWFJbXBsOjpnZXRJdGVtKToKKwogMjAxMS0wNS0yNCAgS2Vpc2hpIEhh
dHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRh
bXVyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVh
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5j
cHAKaW5kZXggZGMzZmFkNDEwZDFkZGVhZWYwNjlhMGRlODNjNzkyNDIyMzE0MWExNS4uNmRjNDIw
Y2Q4ODdiMjM5YTI2ZmYwMzcyZTA1NmZiMjM4OWRmZDA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKQEAgLTYzLDMwICs2MywzNSBAQCBT
dG9yYWdlQXJlYVByb3h5Ojp+U3RvcmFnZUFyZWFQcm94eSgpCiB7CiB9CiAKLXVuc2lnbmVkIFN0
b3JhZ2VBcmVhUHJveHk6Omxlbmd0aCgpIGNvbnN0Cit1bnNpZ25lZCBTdG9yYWdlQXJlYVByb3h5
OjpsZW5ndGgoRnJhbWUqIGZyYW1lKSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVh
LT5sZW5ndGgoKTsKKyAgICBpZiAoY2FuQWNjZXNzU3RvcmFnZShmcmFtZSkpCisgICAgICAgIHJl
dHVybiBtX3N0b3JhZ2VBcmVhLT5sZW5ndGgoKTsKKyAgICByZXR1cm4gMDsKIH0KIAotU3RyaW5n
IFN0b3JhZ2VBcmVhUHJveHk6OmtleSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK1N0cmluZyBTdG9y
YWdlQXJlYVByb3h5OjprZXkodW5zaWduZWQgaW5kZXgsIEZyYW1lKiBmcmFtZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+a2V5KGluZGV4KTsKKyAgICBpZiAoY2FuQWNjZXNz
U3RvcmFnZShmcmFtZSkpCisgICAgICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5rZXkoaW5kZXgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6Omdl
dEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFQcm94eTo6
Z2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIGZyYW1lKSBjb25zdAogewotICAgIHJl
dHVybiBtX3N0b3JhZ2VBcmVhLT5nZXRJdGVtKGtleSk7CisgICAgaWYgKGNhbkFjY2Vzc1N0b3Jh
Z2UoZnJhbWUpKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXkpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnNldEl0
ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYTo6UmVzdWx0
IHJlc3VsdCA9IFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9LOwogICAgIFdlYktpdDo6
V2ViU3RyaW5nIG9sZFZhbHVlOwotICAgIFdlYktpdDo6V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9
IFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOwotICAgIFdlYktpdDo6V2Vi
Vmlld0ltcGwqIHdlYlZpZXcgPSB3ZWJGcmFtZS0+dmlld0ltcGwoKTsKLSAgICBpZiAod2ViVmll
dy0+cGVybWlzc2lvbkNsaWVudCgpICYmICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFs
bG93U3RvcmFnZSh3ZWJGcmFtZSwgbV9zdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpKQorICAg
IGlmICghY2FuQWNjZXNzU3RvcmFnZShmcmFtZSkpCiAgICAgICAgIGVjID0gUVVPVEFfRVhDRUVE
RURfRVJSOwogICAgIGVsc2UgeworICAgICAgICBXZWJLaXQ6OldlYkZyYW1lSW1wbCogd2ViRnJh
bWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKICAgICAgICAgbV9z
dG9yYWdlQXJlYS0+c2V0SXRlbShrZXksIHZhbHVlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCks
IHJlc3VsdCwgb2xkVmFsdWUsIHdlYkZyYW1lKTsKICAgICAgICAgZWMgPSAocmVzdWx0ID09IFdl
YktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9LKSA/IDAgOiBRVU9UQV9FWENFRURFRF9FUlI7
CiAgICAgICAgIFN0cmluZyBvbGRWYWx1ZVN0cmluZyA9IG9sZFZhbHVlOwpAQCAtOTgsNiArMTAz
LDggQEAgU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGkKIAogU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6
OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkKIHsKKyAgICBpZiAo
IWNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
V2ViS2l0OjpXZWJTdHJpbmcgb2xkVmFsdWU7CiAgICAgbV9zdG9yYWdlQXJlYS0+cmVtb3ZlSXRl
bShrZXksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgb2xkVmFsdWUpOwogICAgIGlmICghb2xk
VmFsdWUuaXNOdWxsKCkpCkBAIC0xMDcsNiArMTE0LDggQEAgU3RyaW5nIFN0b3JhZ2VBcmVhUHJv
eHk6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkKIAogYm9vbCBT
dG9yYWdlQXJlYVByb3h5OjpjbGVhcihGcmFtZSogZnJhbWUpCiB7CisgICAgaWYgKCFjYW5BY2Nl
c3NTdG9yYWdlKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgY2xlYXJl
ZFNvbWV0aGluZzsKICAgICBtX3N0b3JhZ2VBcmVhLT5jbGVhcihmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCksIGNsZWFyZWRTb21ldGhpbmcpOwogICAgIGlmIChjbGVhcmVkU29tZXRoaW5nKQpAQCAt
MTE0LDkgKzEyMyw5IEBAIGJvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y2xlYXIoRnJhbWUqIGZyYW1l
KQogICAgIHJldHVybiBjbGVhcmVkU29tZXRoaW5nOwogfQogCi1ib29sIFN0b3JhZ2VBcmVhUHJv
eHk6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAorYm9vbCBTdG9yYWdlQXJlYVBy
b3h5Ojpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIGZyYW1lKSBjb25zdAogewot
ICAgIHJldHVybiAhZ2V0SXRlbShrZXkpLmlzTnVsbCgpOworICAgIHJldHVybiAhZ2V0SXRlbShr
ZXksIGZyYW1lKS5pc051bGwoKTsKIH0KIAogLy8gQ29waWVkIGZyb20gV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIG91dCBvZiBuZWNlc3NpdHkuICBJdCdzIHByb2Jh
Ymx5IGJlc3QgdG8ga2VlcCBpdCBjdXJyZW50LgpAQCAtMTYyLDYgKzE3MSwxMyBAQCB2b2lkIFN0
b3JhZ2VBcmVhUHJveHk6OnN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgYwogICAgIH0KIH0KIAorYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5B
Y2Nlc3NTdG9yYWdlKEZyYW1lKiBmcmFtZSkgY29uc3QKK3sKKyAgICBXZWJLaXQ6OldlYkZyYW1l
SW1wbCogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsK
KyAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJbXBsKCk7
CisgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVy
bWlzc2lvbkNsaWVudCgpLT5hbGxvd1N0b3JhZ2Uod2ViRnJhbWUsIG1fc3RvcmFnZVR5cGUgPT0g
TG9jYWxTdG9yYWdlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKERPTV9TVE9SQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3RvcmFnZUFyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFn
ZUFyZWFQcm94eS5oCmluZGV4IGIxNjk4MjgwZWE1MDE3YzU4MGM2NDgwMDYwNTJjYzZlZGNkZDll
OGEuLmZkOTFiYWQ5OWM3MTZkN2RjNWM0ZjE1OTdhNmU2MzQ5Y2VjNTYxZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgKQEAgLTQzLDE2ICs0Mywx
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFQcm94eSgpOwogCiAgICAgLy8g
VGhlIEhUTUw1IERPTSBTdG9yYWdlIEFQSQotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aChGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OworICAgIHZp
cnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSog
c291cmNlRnJhbWUpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHNldEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSog
c291cmNlRnJhbWUpOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5n
JiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAgICAgdmlydHVhbCBib29sIGNsZWFyKEZyYW1l
KiBzb3VyY2VGcmFtZSk7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYg
a2V5KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXks
IEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdG9yYWdl
RXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIEZyYW1lKiBzb3Vy
Y2VGcmFtZSk7CisgICAgYm9vbCBjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKikgY29uc3Q7CiAKICAg
ICBPd25QdHI8V2ViS2l0OjpXZWJTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKICAgICBTdG9y
YWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlN0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggMmNlY2ZlOWU3Y2ExMjQ3NGMzMTEzZDNiOTY0
OTY4MDQ3NGNjNDk4Ni4uMDExM2MwY2U5MGE2MDA0YjJmM2Q1OWM5NzNmMTY4NzczMWU5MThmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlQXJlYUltcGwu
Y3BwCkBAIC01MywxNyArNTMsMTcgQEAgV2ViU3RvcmFnZUFyZWFJbXBsOjp+V2ViU3RvcmFnZUFy
ZWFJbXBsKCkKIAogdW5zaWduZWQgV2ViU3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgoKQogewotICAg
IHJldHVybiBtX3N0b3JhZ2VBcmVhLT5sZW5ndGgoKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJl
YS0+bGVuZ3RoKDApOwogfQogCiBXZWJTdHJpbmcgV2ViU3RvcmFnZUFyZWFJbXBsOjprZXkodW5z
aWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRleCk7Cisg
ICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRleCwgMCk7CiB9CiAKIFdlYlN0cmluZyBX
ZWJTdG9yYWdlQXJlYUltcGw6OmdldEl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXkpCiB7Ci0gICAg
cmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdldEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYS0+Z2V0SXRlbShrZXksIDApOwogfQogCiB2b2lkIFdlYlN0b3JhZ2VBcmVhSW1wbDo6c2V0
SXRlbShjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSwgY29uc3Qg
V2ViVVJMJiB1cmwsIFJlc3VsdCYgcmVzdWx0LCBXZWJTdHJpbmcmIG9sZFZhbHVlLCBXZWJGcmFt
ZSopCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MzBmMGJmZGJmMTg3MzY0YTkyODMyNDgwYTdlNjk4ZjBmOWVlZTExMi4uMjFiODk1NDI1Mjc0NzQ2
YjFmYzQyNGJmM2RhNTA4ZmFmNjBjZjcxNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTA1LTI3ICBKb2NoZW4g
RWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTdG9y
YWdlQWxsb3dlZCgpIHRvIGNvbnRyb2wgd2hldGhlciBhY2Nlc3MKKyAgICAgICAgdG8gdGhlIGxv
Y2FsU3RvcmFnZSBBUEkgaXMgZW5hYmxlZCB2aWEgdGhlIFdlYlBlcm1pc3Npb25DbGllbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTgxCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFN0b3JhZ2VBbGxvd2VkKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChU
ZXN0U2hlbGw6OlRlc3RTaGVsbCk6CisgICAgICAgIChUZXN0U2hlbGw6OmNyZWF0ZU5ld1dpbmRv
dyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUGVybWlzc2lvbnMuaDogQWRkZWQuCisg
ICAgICAgIChXZWJQZXJtaXNzaW9uczo6V2ViUGVybWlzc2lvbnMpOgorICAgICAgICAoV2ViUGVy
bWlzc2lvbnM6OmFsbG93U3RvcmFnZSk6CisgICAgICAgIChXZWJQZXJtaXNzaW9uczo6c2V0U3Rv
cmFnZUFsbG93ZWQpOgorCiAyMDExLTA1LTI1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBJZGVudGlmeSwgcmF0aGVyIHRoYW4gc2tpcCwgYnVpbGRzIHdoZXJlIHJ1
bi13ZWJraXQtdGVzdHMgZXhpdGVkIGVhcmx5IGR1ZSB0byB0b28gbWFueSBmYWlsdXJlcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IGJmNDIyMDA2Y2I3MmFhYmJjY2JjZTUyMTVkNmQwZGQxMTE2MDAyZTkuLjhm
MGJjYzhmYmUxZWEyMjQ1ZWM4YmVkYTk2MjYwZGVkMWZlMzIyZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAg
LTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJLaXQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRl
ICJXZWJQZXJtaXNzaW9ucy5oIgogI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2luY2x1
ZGUgIldlYlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKQEAgLTIx
NSw2ICsyMTYsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIo
VGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJkZWxldGVMb2NhbFN0b3JhZ2VGb3JP
cmlnaW4iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdp
bik7CiAgICAgYmluZE1ldGhvZCgib2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9u
cyk7CiAgICAgYmluZE1ldGhvZCgic3luY0xvY2FsU3RvcmFnZSIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3luY0xvY2FsU3RvcmFnZSk7CisgICAgYmluZE1ldGhvZCgic2V0U3RvcmFnZUFsbG93
ZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFN0b3JhZ2VBbGxvd2VkKTsKICAgICAKICAg
ICAvLyBUaGUgZmFsbGJhY2sgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIHVua25vd24gbWV0aG9k
IGlzIGludm9rZWQuCiAgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6ZmFsbGJhY2tNZXRob2QpOwpAQCAtMTgzMyw2ICsxODM1LDEzIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN5bmNMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopCiAgICAgLy8gTm90IEltcGxlbWVudGVkCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFN0b3JhZ2VBbGxvd2VkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAw
ICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9zaGVsbC0+d2ViUGVybWlzc2lv
bnMoKS0+c2V0U3RvcmFnZUFsbG93ZWQoYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpKTsKKyAgICBy
ZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UGx1
Z2luc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBd
LmlzQm9vbCgpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCBlZjc4MmU1ODIyN2JmMjYwNjY3MzMyN2ZkOTk5ZDcy
ZWYyODRjYWZlLi45YzEwMTM0MDgxNTA1NTc1YzZiMDE3ZjI5MWE1MGVkYzA4YzljZjNlIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTM3Myw2ICszNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2NhbFN0b3JhZ2VE
aXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
ICAgIHZvaWQgb2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyhjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldFN0b3JhZ2VBbGxv
d2VkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIEVuYWJs
ZSBvciBkaXNhYmxlIHBsdWdpbnMuCiAgICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCBlODhmNDBmOTA2MTE2MjJkZWZiYmE4YjdhMzUzNTMx
OTk3MTRhMmY0Li43MjU3ZmFmMWE2ZDQyZWFlYTFjN2Y0NDk1YjIxNzZjOTBiMzc2NmFjIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgi
CiAjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViUGVybWlzc2lvbnMuaCIKICNpbmNs
dWRlICJXZWJSdW50aW1lRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKQEAgLTExMyw2ICsxMTQsNyBAQCBUZXN0U2hl
bGw6OlRlc3RTaGVsbChib29sIHRlc3RTaGVsbE1vZGUpCiAgICAgV2ViUnVudGltZUZlYXR1cmVz
OjplbmFibGVJbmRleGVkRGF0YWJhc2UodHJ1ZSk7CiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjpl
bmFibGVGaWxlU3lzdGVtKHRydWUpOwogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlSmF2
YVNjcmlwdEkxOE5BUEkodHJ1ZSk7CisgICAgbV93ZWJQZXJtaXNzaW9ucyA9IGFkb3B0UHRyKG5l
dyBXZWJQZXJtaXNzaW9ucygpKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRv
cHRQdHIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX2xheW91dFRl
c3RDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMpKTsK
ICAgICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQdHIobmV3IEV2ZW50U2VuZGVyKHRoaXMpKTsKQEAg
LTU5Niw2ICs1OTgsNyBAQCBXZWJWaWV3SG9zdCogVGVzdFNoZWxsOjpjcmVhdGVOZXdXaW5kb3co
Y29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwgRFJURGV2VG9vbHNBZwogewogICAgIFdlYlZpZXdI
b3N0KiBob3N0ID0gbmV3IFdlYlZpZXdIb3N0KHRoaXMpOwogICAgIFdlYlZpZXcqIHZpZXcgPSBX
ZWJWaWV3OjpjcmVhdGUoaG9zdCk7CisgICAgdmlldy0+c2V0UGVybWlzc2lvbkNsaWVudCh3ZWJQ
ZXJtaXNzaW9ucygpKTsKICAgICB2aWV3LT5zZXREZXZUb29sc0FnZW50Q2xpZW50KGRldlRvb2xz
QWdlbnQpOwogICAgIGhvc3QtPnNldFdlYldpZGdldCh2aWV3KTsKICAgICBtX3ByZWZzLmFwcGx5
VG8odmlldyk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4
IDJkYjRjOTRhMDRhZDliNDA0NWRmMDljOTA1MmNiODIzN2JkZDViOWQuLjMzNzY1N2Y0NTliNzI5
MmZlMWY1YWEyZGNjZjMyMTJmZjRhOWYzNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5oCkBAIC01OCw2ICs1OCw3IEBAIGNsYXNzIFdlYlVSTDsKIGNsYXNzIERS
VERldlRvb2xzQWdlbnQ7CiBjbGFzcyBEUlREZXZUb29sc0NhbGxBcmdzOwogY2xhc3MgRFJURGV2
VG9vbHNDbGllbnQ7CitjbGFzcyBXZWJQZXJtaXNzaW9uczsKIAogc3RydWN0IFRlc3RQYXJhbXMg
ewogICAgIGJvb2wgZHVtcFRyZWU7CkBAIC05Niw2ICs5Nyw4IEBAIHB1YmxpYzoKICAgICBXZWJQ
cmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSB7IHJldHVybiAmbV9wcmVmczsgfQogICAgIHZvaWQg
YXBwbHlQcmVmZXJlbmNlcygpIHsgbV9wcmVmcy5hcHBseVRvKG1fd2ViVmlldyk7IH0KIAorICAg
IFdlYlBlcm1pc3Npb25zKiB3ZWJQZXJtaXNzaW9ucygpIHsgcmV0dXJuIG1fd2ViUGVybWlzc2lv
bnMuZ2V0KCk7IH0KKwogICAgIHZvaWQgYmluZEpTT2JqZWN0c1RvV2luZG93KFdlYktpdDo6V2Vi
RnJhbWUqKTsKICAgICB2b2lkIHJ1bkZpbGVUZXN0KGNvbnN0IFRlc3RQYXJhbXMmKTsKICAgICB2
b2lkIGNhbGxKU0dDKCk7CkBAIC0xOTEsNiArMTk0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
dGVzdFNoZWxsTW9kZTsKICAgICBXZWJWaWV3SG9zdCogbV93ZWJWaWV3SG9zdDsKICAgICBXZWJW
aWV3SG9zdCogbV9kZXZUb29sczsKKyAgICBPd25QdHI8V2ViUGVybWlzc2lvbnM+IG1fd2ViUGVy
bWlzc2lvbnM7CiAgICAgT3duUHRyPERSVERldlRvb2xzQWdlbnQ+IG1fZHJ0RGV2VG9vbHNBZ2Vu
dDsKICAgICBPd25QdHI8RFJURGV2VG9vbHNDbGllbnQ+IG1fZHJ0RGV2VG9vbHNDbGllbnQ7CiAg
ICAgT3duUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9s
bGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUGVybWlz
c2lvbnMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlBlcm1pc3Npb25zLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDIxMmU5MTFiOTcxZDZkZjNmNzYxNzgwZTE3ZmNhMDhhNzg1ZTViYQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlBlcm1pc3Np
b25zLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGVybWlzc2lvbnNfaAorI2RlZmluZSBX
ZWJQZXJtaXNzaW9uc19oCisKKyNpbmNsdWRlICJXZWJQZXJtaXNzaW9uQ2xpZW50LmgiCisKK2Ns
YXNzIFdlYlBlcm1pc3Npb25zIDogcHVibGljIFdlYktpdDo6V2ViUGVybWlzc2lvbkNsaWVudCB7
CitwdWJsaWM6CisgICAgV2ViUGVybWlzc2lvbnMoKSA6IG1fc3RvcmFnZUFsbG93ZWQodHJ1ZSkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTdG9yYWdlKFdlYktpdDo6V2ViRnJhbWUqLCBi
b29sIGxvY2FsKSB7IHJldHVybiBtX3N0b3JhZ2VBbGxvd2VkOyB9CisKKyAgICAvLyBTZXRzIHRo
ZSBwb2xpY3kgd2hldGhlciB0byBhbGxvdyBzdG9yYWdlIG9yIG5vdC4KKyAgICB2b2lkIHNldFN0
b3JhZ2VBbGxvd2VkKGJvb2wgc3RvcmFnZUFsbG93ZWQpIHsgbV9zdG9yYWdlQWxsb3dlZCA9IHN0
b3JhZ2VBbGxvd2VkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3N0b3JhZ2VBbGxvd2VkOwor
fTsKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95191</attachid>
            <date>2011-05-27 10:59:10 -0700</date>
            <delta_ts>2011-05-27 12:54:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61581-20110527195907.patch</filename>
            <type>text/plain</type>
            <size>26676</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczMDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ODg3ZDFhOTdmZWI1Y2E3MDJhMzU2
MzhhMDEwNTFlYzgwOTI3NzFhLi45OWQ5M2IwNmYzNDU3ZmIyNTE0OWZjNGViOTU2ODc0YzkxMWU3
MjI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMjcgIEpvY2hlbiBFaXNpbmdlciAg
PGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGljeSBvbiBhbGwgc3RvcmFnZSBvcGVyYXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTU4
MQorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdl
LXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNS0yNSAgTGVvbiBTY3JvZ2dpbnMgIDxzY3JvZ2dvQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0
b3JhZ2UtcGVybWlzc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlMzc5ZDg4MzYzN2E2
MzY5ZjUzOWIyNDFjZWEzNGYzN2FjODNlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvc3RvcmFnZS1wZXJtaXNzaW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhbGwg
YWNjZXNzIHRvIGxvY2FsU3RvcmFnZSBjYW4gYmUgYmxvY2tlZAorTGVuZ3RoIGlzIDAKK1ZhbHVl
IGZvciBGT08gaXMgbnVsbAorTGVuZ3RoIGlzIDEKK1ZhbHVlIGZvciBGT08gaXMgQkFSCitLZXkg
Zm9yIGluZGV4IDAgaXMgRk9PCitEaXNhYmxpbmcgbG9jYWxTdG9yYWdlIGFjY2Vzcy4KK0xlbmd0
aCBpcyAwCitWYWx1ZSBmb3IgRk9PIGlzIG51bGwKK0NhdWdodCBleGNlcHRpb24gdHJ5aW5nIHRv
IGNoYW5nZSBpdGVtOiBFcnJvcjogUVVPVEFfRVhDRUVERURfRVJSOiBET00gRXhjZXB0aW9uIDIy
CitMZW5ndGggaXMgMAorVmFsdWUgZm9yIEZPTyBpcyBudWxsCitLZXkgZm9yIGluZGV4IDAgaXMg
bnVsbAorTGVuZ3RoIGlzIDAKK1ZhbHVlIGZvciBGT08gaXMgbnVsbAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVy
bWlzc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNs
aWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDA4NmMxOTRhNjMzODNi
YTZlMTExYzZlNzc2YTMxNTQ4YjNkODE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRt
bApAQCAtMCwwICsxLDY0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9jbGVhckxvY2FsU3RvcmFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworZnVuY3Rpb24gbG9nKGEpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZ2dlciIpLmlubmVySFRNTCArPSBhICsgIjxicj4iOworfQorCitmdW5jdGlvbiBydW5UZXN0
KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgbG9nKCJ3aW5k
b3cubG9jYWxTdG9yYWdlIERPRVMgTk9UIGV4aXN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFN0b3JhZ2VBbGxvd2VkKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRTdG9yYWdlQWxsb3dlZCh0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIGxheW91dFRlc3RDb250cm9sbGVyLnNldFN0b3JhZ2VBbGxvd2VkLCBzbyBpdCBi
ZSBjYW4ndCBydW4gaW4gYSBicm93c2VyLiIpOworICAgIAorICAgIGxvZygiTGVuZ3RoIGlzICIg
KyBsb2NhbFN0b3JhZ2UubGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZvciBGT08gaXMgIiArIGxv
Y2FsU3RvcmFnZS5nZXRJdGVtKCJGT08iKSk7CisKKyAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgi
Rk9PIiwgIkJBUiIpOworICAgIAorICAgIGxvZygiTGVuZ3RoIGlzICIgKyBsb2NhbFN0b3JhZ2Uu
bGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZvciBGT08gaXMgIiArIGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKCJGT08iKSk7CisgICAgbG9nKCJLZXkgZm9yIGluZGV4IDAgaXMgIiArIGxvY2FsU3RvcmFn
ZS5rZXkoMCkpOworICAgIAorICAgIGxvZygiRGlzYWJsaW5nIGxvY2FsU3RvcmFnZSBhY2Nlc3Mu
Iik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRTdG9yYWdlQWxsb3dlZCkKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0U3RvcmFnZUFsbG93ZWQoZmFsc2UpOworCisgICAgbG9nKCJMZW5ndGggaXMgIiArIGxvY2Fs
U3RvcmFnZS5sZW5ndGgpOworICAgIGxvZygiVmFsdWUgZm9yIEZPTyBpcyAiICsgbG9jYWxTdG9y
YWdlLmdldEl0ZW0oIkZPTyIpKTsKKworICAgIHRyeSB7CisgICAgICAgIGxvY2FsU3RvcmFnZS5z
ZXRJdGVtKCJGT08iLCAiQkFaIik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiQ2F1
Z2h0IGV4Y2VwdGlvbiB0cnlpbmcgdG8gY2hhbmdlIGl0ZW06ICIgKyBlKTsKKyAgICB9CisgICAg
CisgICAgbG9nKCJMZW5ndGggaXMgIiArIGxvY2FsU3RvcmFnZS5sZW5ndGgpOworICAgIGxvZygi
VmFsdWUgZm9yIEZPTyBpcyAiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oIkZPTyIpKTsKKyAgICBs
b2coIktleSBmb3IgaW5kZXggMCBpcyAiICsgbG9jYWxTdG9yYWdlLmtleSgwKSk7CisgICAgCisg
ICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIkZPTyIpOworICAgIAorICAgIGxvZygiTGVuZ3Ro
IGlzICIgKyBsb2NhbFN0b3JhZ2UubGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZvciBGT08gaXMg
IiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJGT08iKSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGFs
bCBhY2Nlc3MgdG8gbG9jYWxTdG9yYWdlIGNhbiBiZSBibG9ja2VkPGJyPgorPGRpdiBpZD0ibG9n
Z2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3Nzg0NDg4YTZjYTZh
Yjg5YjIxMDExODQxMDMyMzNiNWQ3N2EzYzZjLi5hYzgwMTU1NTkwNjdkYjU2ZmUwNmYzNGI3YzI5
NzY3NTk3M2I5NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMjcgIEpv
Y2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZyYW1lIHBhcmFtZXRlciB0byBhbGwg
U3RvcmFnZUFyZWEgbWV0aG9kcy4gVGhlIGNocm9taXVtCisgICAgICAgIGVtYmVkZGVyIHVzZXMg
dGhlIEZyYW1lIGFzIGNvbnRleHQgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgICAgICAgIHRv
IGFsbG93IHVzYWdlIG9mIHRoZSBzdG9yYWdlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTgxCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0v
Y2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRtbAorCisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6Omxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjprZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZTo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpjb250YWlu
cyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAqIHN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6a2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYUltcGw6OmNvbnRhaW5zKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5oOgorCiAyMDExLTA1LTI1ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2UuY3BwCmluZGV4IDAyNTljYTQxNGQxZmZiNzA4Y2ExYTdlMDI1NjMzMDllYTAyNjZk
YTYuLjllOTc1YWJhY2Y0MmM4YzU5ZTVjODFmNmZhYmZjMzhhMjJiMmEzM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtNTksNyArNTksNyBAQCB1bnNpZ25lZCBTdG9yYWdlOjps
ZW5ndGgoKSBjb25zdAogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpIHx8IG1f
ZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5sZW5ndGgoKTsKKyAg
ICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKG1fZnJhbWUpOwogfQogCiBTdHJpbmcgU3Rv
cmFnZTo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdApAQCAtNjcsNyArNjcsNyBAQCBTdHJpbmcg
U3RvcmFnZTo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIGlmICghbV9mcmFtZSB8fCAh
bV9mcmFtZS0+cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4g
bV9zdG9yYWdlQXJlYS0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+a2V5
KGluZGV4LCBtX2ZyYW1lKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OmdldEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXkpIGNvbnN0CkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBTdG9yYWdlOjpnZXRJdGVt
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+
cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYS0+Z2V0SXRlbShrZXkpOworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5nZXRJdGVtKGtl
eSwgbV9mcmFtZSk7CiB9CiAKIHZvaWQgU3RvcmFnZTo6c2V0SXRlbShjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMDgsNyArMTA4
LDcgQEAgYm9vbCBTdG9yYWdlOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKICAg
ICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSB8fCBtX2ZyYW1lLT5wYWdlKCktPnNl
dHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmNvbnRhaW5zKGtleSk7CisgICAgcmV0dXJu
IG1fc3RvcmFnZUFyZWEtPmNvbnRhaW5zKGtleSwgbV9mcmFtZSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA2MDgxMjQwZGQ5NjJhNThlZGY5N2U1ZjNhYjc4
NDBmMjI2MzI2MmRmLi4xZGMwMTM4Zjg4NzhiMmRjOGJhZjU5YzE5ODBkMjg2MGE3MzE2MGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC00NywxMyArNDcsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TdG9yYWdlQXJlYSgpIHsgfQogCiAg
ICAgICAgIC8vIFRoZSBIVE1MNSBET00gU3RvcmFnZSBBUEkKLSAgICAgICAgdmlydHVhbCB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNp
Z25lZCBpbmRleCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdCA9IDA7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cGFzcyBEb2N1bWVudCBpbnN0ZWFkIG9mIEZyYW1lLiBBbHNvLCB0aGF0IHBhcmFtZXRlciBzaG91
bGQgZ28gZmlyc3QuCisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKEZyYW1lKiBzb3Vy
Y2VGcmFtZSkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBrZXkodW5zaWduZWQg
aW5kZXgsIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0
ID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgc2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIEZyYW1lKiBzb3VyY2VGcmFt
ZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyByZW1vdmVJdGVtKGNvbnN0IFN0cmluZyYg
a2V5LCBGcmFtZSogc291cmNlRnJhbWUpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNsZWFy
KEZyYW1lKiBzb3VyY2VGcmFtZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMo
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGNvbnRh
aW5zKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0ID0gMDsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggMGViYzg3NDYxODc3Y2U4MzBmZTdjYjM0MDllYTcxNzcz
MGZhN2RkYy4uZDU0ZjVhYjI1ZDFjZWNjZjQ3ODk3YzgzOTlhYzFiMjI3ZTMxNWM4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMTA3LDcgKzEwNyw3
IEBAIHN0YXRpYyBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQoRnJhbWUqIGZyYW1lKQogI2Vu
ZGlmCiB9CiAKLXVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKCkgY29uc3QKK3Vuc2ln
bmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKEZyYW1lKikgY29uc3QKIHsKICAgICBBU1NFUlQo
IW1faXNTaHV0ZG93bik7CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CkBAIC0xMTUs
NyArMTE1LDcgQEAgdW5zaWduZWQgU3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgoKSBjb25zdAogICAg
IHJldHVybiBtX3N0b3JhZ2VNYXAtPmxlbmd0aCgpOwogfQogCi1TdHJpbmcgU3RvcmFnZUFyZWFJ
bXBsOjprZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFJbXBsOjpr
ZXkodW5zaWduZWQgaW5kZXgsIEZyYW1lKikgY29uc3QKIHsKICAgICBBU1NFUlQoIW1faXNTaHV0
ZG93bik7CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CkBAIC0xMjMsNyArMTIzLDcg
QEAgU3RyaW5nIFN0b3JhZ2VBcmVhSW1wbDo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAg
IHJldHVybiBtX3N0b3JhZ2VNYXAtPmtleShpbmRleCk7CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJl
YUltcGw6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFy
ZWFJbXBsOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSopIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwpA
QCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgU3RvcmFnZUFyZWFJbXBsOjpjbGVhcihGcmFtZSogZnJh
bWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU3RvcmFnZUFyZWFJbXBsOjpjb250YWlu
cyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK2Jvb2wgU3RvcmFnZUFyZWFJbXBsOjpjb250YWlu
cyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqKSBjb25zdAogewogICAgIEFTU0VSVCghbV9pc1No
dXRkb3duKTsKICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDlmODdlNjk3YWI4NWJhNjdkNjMzMWM5NGEz
ODBkZDZmMGQwMmUwM2IuLjFhYTVhMDU2OTUxYTM0YWU4MDA0ZjZmNzE1NmQyZjY0ZWUzZTQzNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNDUsMTMgKzQ1
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFJ
bXBsKCk7CiAKICAgICAgICAgLy8gVGhlIEhUTUw1IERPTSBTdG9yYWdlIEFQSSAoYW5kIGNvbnRh
aW5zKQotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIFN0cmluZyBrZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCB1bnNpZ25lZCBsZW5ndGgoRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFt
ZSogc291cmNlRnJhbWUpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBzZXRJdGVtKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywg
RnJhbWUqIHNvdXJjZUZyYW1lKTsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlSXRlbShj
b25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250
YWlucyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjb250
YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKIAogICAg
ICAgICBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4gY29weSgpOwogICAgICAgICB2b2lkIGNs
b3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUxMjI5YjQ4ZjNhOTExYjA0ZTU4
ZjYxYTA1MTA0YzQ5MjAxNGZjZGMuLjFmNGQ0ZGRjYzNjZmU1MjkwMzkyNjA2NjkxNmU3OTcxMDQ2
OGYwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEt
MDUtMjcgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGlj
eSBvbiBhbGwgc3RvcmFnZSBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTU4MQorCisgICAgICAgICogc3JjL1N0b3JhZ2VBcmVhUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6bGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OmtleSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYVByb3h5OjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VB
cmVhUHJveHk6OnNldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6
cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5Ojpjb250YWlucyk6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKToKKyAgICAgICAg
KiBzcmMvU3RvcmFnZUFyZWFQcm94eS5oOgorICAgICAgICAqIHNyYy9XZWJTdG9yYWdlQXJlYUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhSW1wbDo6a2V5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3RvcmFnZUFyZWFJbXBsOjpnZXRJdGVtKToKKwogMjAxMS0wNS0yNCAgS2Vpc2hpIEhh
dHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRh
bXVyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVh
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5j
cHAKaW5kZXggZGMzZmFkNDEwZDFkZGVhZWYwNjlhMGRlODNjNzkyNDIyMzE0MWExNS4uNmRjNDIw
Y2Q4ODdiMjM5YTI2ZmYwMzcyZTA1NmZiMjM4OWRmZDA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKQEAgLTYzLDMwICs2MywzNSBAQCBT
dG9yYWdlQXJlYVByb3h5Ojp+U3RvcmFnZUFyZWFQcm94eSgpCiB7CiB9CiAKLXVuc2lnbmVkIFN0
b3JhZ2VBcmVhUHJveHk6Omxlbmd0aCgpIGNvbnN0Cit1bnNpZ25lZCBTdG9yYWdlQXJlYVByb3h5
OjpsZW5ndGgoRnJhbWUqIGZyYW1lKSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVh
LT5sZW5ndGgoKTsKKyAgICBpZiAoY2FuQWNjZXNzU3RvcmFnZShmcmFtZSkpCisgICAgICAgIHJl
dHVybiBtX3N0b3JhZ2VBcmVhLT5sZW5ndGgoKTsKKyAgICByZXR1cm4gMDsKIH0KIAotU3RyaW5n
IFN0b3JhZ2VBcmVhUHJveHk6OmtleSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK1N0cmluZyBTdG9y
YWdlQXJlYVByb3h5OjprZXkodW5zaWduZWQgaW5kZXgsIEZyYW1lKiBmcmFtZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+a2V5KGluZGV4KTsKKyAgICBpZiAoY2FuQWNjZXNz
U3RvcmFnZShmcmFtZSkpCisgICAgICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5rZXkoaW5kZXgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6Omdl
dEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFQcm94eTo6
Z2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIGZyYW1lKSBjb25zdAogewotICAgIHJl
dHVybiBtX3N0b3JhZ2VBcmVhLT5nZXRJdGVtKGtleSk7CisgICAgaWYgKGNhbkFjY2Vzc1N0b3Jh
Z2UoZnJhbWUpKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXkpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnNldEl0
ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYTo6UmVzdWx0
IHJlc3VsdCA9IFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9LOwogICAgIFdlYktpdDo6
V2ViU3RyaW5nIG9sZFZhbHVlOwotICAgIFdlYktpdDo6V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9
IFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOwotICAgIFdlYktpdDo6V2Vi
Vmlld0ltcGwqIHdlYlZpZXcgPSB3ZWJGcmFtZS0+dmlld0ltcGwoKTsKLSAgICBpZiAod2ViVmll
dy0+cGVybWlzc2lvbkNsaWVudCgpICYmICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFs
bG93U3RvcmFnZSh3ZWJGcmFtZSwgbV9zdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpKQorICAg
IGlmICghY2FuQWNjZXNzU3RvcmFnZShmcmFtZSkpCiAgICAgICAgIGVjID0gUVVPVEFfRVhDRUVE
RURfRVJSOwogICAgIGVsc2UgeworICAgICAgICBXZWJLaXQ6OldlYkZyYW1lSW1wbCogd2ViRnJh
bWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKICAgICAgICAgbV9z
dG9yYWdlQXJlYS0+c2V0SXRlbShrZXksIHZhbHVlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCks
IHJlc3VsdCwgb2xkVmFsdWUsIHdlYkZyYW1lKTsKICAgICAgICAgZWMgPSAocmVzdWx0ID09IFdl
YktpdDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdE9LKSA/IDAgOiBRVU9UQV9FWENFRURFRF9FUlI7
CiAgICAgICAgIFN0cmluZyBvbGRWYWx1ZVN0cmluZyA9IG9sZFZhbHVlOwpAQCAtOTgsNiArMTAz
LDggQEAgU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGkKIAogU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6
OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkKIHsKKyAgICBpZiAo
IWNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
V2ViS2l0OjpXZWJTdHJpbmcgb2xkVmFsdWU7CiAgICAgbV9zdG9yYWdlQXJlYS0+cmVtb3ZlSXRl
bShrZXksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgb2xkVmFsdWUpOwogICAgIGlmICghb2xk
VmFsdWUuaXNOdWxsKCkpCkBAIC0xMDcsNiArMTE0LDggQEAgU3RyaW5nIFN0b3JhZ2VBcmVhUHJv
eHk6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkKIAogYm9vbCBT
dG9yYWdlQXJlYVByb3h5OjpjbGVhcihGcmFtZSogZnJhbWUpCiB7CisgICAgaWYgKCFjYW5BY2Nl
c3NTdG9yYWdlKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgY2xlYXJl
ZFNvbWV0aGluZzsKICAgICBtX3N0b3JhZ2VBcmVhLT5jbGVhcihmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCksIGNsZWFyZWRTb21ldGhpbmcpOwogICAgIGlmIChjbGVhcmVkU29tZXRoaW5nKQpAQCAt
MTE0LDkgKzEyMyw5IEBAIGJvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y2xlYXIoRnJhbWUqIGZyYW1l
KQogICAgIHJldHVybiBjbGVhcmVkU29tZXRoaW5nOwogfQogCi1ib29sIFN0b3JhZ2VBcmVhUHJv
eHk6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAorYm9vbCBTdG9yYWdlQXJlYVBy
b3h5Ojpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIGZyYW1lKSBjb25zdAogewot
ICAgIHJldHVybiAhZ2V0SXRlbShrZXkpLmlzTnVsbCgpOworICAgIHJldHVybiAhZ2V0SXRlbShr
ZXksIGZyYW1lKS5pc051bGwoKTsKIH0KIAogLy8gQ29waWVkIGZyb20gV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIG91dCBvZiBuZWNlc3NpdHkuICBJdCdzIHByb2Jh
Ymx5IGJlc3QgdG8ga2VlcCBpdCBjdXJyZW50LgpAQCAtMTYyLDYgKzE3MSwxMyBAQCB2b2lkIFN0
b3JhZ2VBcmVhUHJveHk6OnN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgYwogICAgIH0KIH0KIAorYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5B
Y2Nlc3NTdG9yYWdlKEZyYW1lKiBmcmFtZSkgY29uc3QKK3sKKyAgICBXZWJLaXQ6OldlYkZyYW1l
SW1wbCogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsK
KyAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJbXBsKCk7
CisgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVy
bWlzc2lvbkNsaWVudCgpLT5hbGxvd1N0b3JhZ2Uod2ViRnJhbWUsIG1fc3RvcmFnZVR5cGUgPT0g
TG9jYWxTdG9yYWdlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKERPTV9TVE9SQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3RvcmFnZUFyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFn
ZUFyZWFQcm94eS5oCmluZGV4IGIxNjk4MjgwZWE1MDE3YzU4MGM2NDgwMDYwNTJjYzZlZGNkZDll
OGEuLmZkOTFiYWQ5OWM3MTZkN2RjNWM0ZjE1OTdhNmU2MzQ5Y2VjNTYxZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgKQEAgLTQzLDE2ICs0Mywx
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFQcm94eSgpOwogCiAgICAgLy8g
VGhlIEhUTUw1IERPTSBTdG9yYWdlIEFQSQotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aChGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OworICAgIHZp
cnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSog
c291cmNlRnJhbWUpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHNldEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSog
c291cmNlRnJhbWUpOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5n
JiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAgICAgdmlydHVhbCBib29sIGNsZWFyKEZyYW1l
KiBzb3VyY2VGcmFtZSk7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYg
a2V5KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXks
IEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdG9yYWdl
RXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIEZyYW1lKiBzb3Vy
Y2VGcmFtZSk7CisgICAgYm9vbCBjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKikgY29uc3Q7CiAKICAg
ICBPd25QdHI8V2ViS2l0OjpXZWJTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKICAgICBTdG9y
YWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlN0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggMmNlY2ZlOWU3Y2ExMjQ3NGMzMTEzZDNiOTY0
OTY4MDQ3NGNjNDk4Ni4uMDExM2MwY2U5MGE2MDA0YjJmM2Q1OWM5NzNmMTY4NzczMWU5MThmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlQXJlYUltcGwu
Y3BwCkBAIC01MywxNyArNTMsMTcgQEAgV2ViU3RvcmFnZUFyZWFJbXBsOjp+V2ViU3RvcmFnZUFy
ZWFJbXBsKCkKIAogdW5zaWduZWQgV2ViU3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgoKQogewotICAg
IHJldHVybiBtX3N0b3JhZ2VBcmVhLT5sZW5ndGgoKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJl
YS0+bGVuZ3RoKDApOwogfQogCiBXZWJTdHJpbmcgV2ViU3RvcmFnZUFyZWFJbXBsOjprZXkodW5z
aWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRleCk7Cisg
ICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRleCwgMCk7CiB9CiAKIFdlYlN0cmluZyBX
ZWJTdG9yYWdlQXJlYUltcGw6OmdldEl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXkpCiB7Ci0gICAg
cmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdldEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYS0+Z2V0SXRlbShrZXksIDApOwogfQogCiB2b2lkIFdlYlN0b3JhZ2VBcmVhSW1wbDo6c2V0
SXRlbShjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSwgY29uc3Qg
V2ViVVJMJiB1cmwsIFJlc3VsdCYgcmVzdWx0LCBXZWJTdHJpbmcmIG9sZFZhbHVlLCBXZWJGcmFt
ZSopCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MzBmMGJmZGJmMTg3MzY0YTkyODMyNDgwYTdlNjk4ZjBmOWVlZTExMi4uYzIwY2ZlOTA1MmU4NmQ2
ZjgyMDY0YmJjYzhmZDhiZDc4MjJkNGJjOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTA1LTI3ICBKb2NoZW4g
RWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTdG9y
YWdlQWxsb3dlZCgpIHRvIGNvbnRyb2wgd2hldGhlciBhY2Nlc3MKKyAgICAgICAgdG8gdGhlIGxv
Y2FsU3RvcmFnZSBBUEkgaXMgZW5hYmxlZCB2aWEgdGhlIFdlYlBlcm1pc3Npb25DbGllbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTgxCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFN0b3JhZ2VBbGxvd2VkKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChU
ZXN0U2hlbGw6OlRlc3RTaGVsbCk6CisgICAgICAgIChUZXN0U2hlbGw6OmNyZWF0ZU5ld1dpbmRv
dyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUGVybWlzc2lvbnMuaDogQWRkZWQuCisg
ICAgICAgIChXZWJQZXJtaXNzaW9uczo6V2ViUGVybWlzc2lvbnMpOgorICAgICAgICAoV2ViUGVy
bWlzc2lvbnM6OmFsbG93U3RvcmFnZSk6CisgICAgICAgIChXZWJQZXJtaXNzaW9uczo6c2V0U3Rv
cmFnZUFsbG93ZWQpOgorICAgICAgICAoV2ViUGVybWlzc2lvbnM6OnJlc2V0KToKKwogMjAxMS0w
NS0yNSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgSWRlbnRpZnks
IHJhdGhlciB0aGFuIHNraXAsIGJ1aWxkcyB3aGVyZSBydW4td2Via2l0LXRlc3RzIGV4aXRlZCBl
YXJseSBkdWUgdG8gdG9vIG1hbnkgZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBiZjQyMjAwNmNi
NzJhYWJiY2NiY2U1MjE1ZDZkMGRkMTExNjAwMmU5Li44ZjBiY2M4ZmJlMWVhMjI0NWVjOGJlZGE5
NjI2MGRlZDFmZTMyMmVhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVk
ZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSAiV2ViUGVybWlzc2lvbnMuaCIKICNp
bmNsdWRlICJXZWJTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCkBAIC0yMTUsNiArMjE2LDcgQEAgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAg
YmluZE1ldGhvZCgiZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4pOwogICAgIGJpbmRNZXRob2QoIm9i
c2VydmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
Om9ic2VydmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnMpOwogICAgIGJpbmRNZXRob2QoInN5
bmNMb2NhbFN0b3JhZ2UiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN5bmNMb2NhbFN0b3JhZ2Up
OworICAgIGJpbmRNZXRob2QoInNldFN0b3JhZ2VBbGxvd2VkIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzZXRTdG9yYWdlQWxsb3dlZCk7CiAgICAgCiAgICAgLy8gVGhlIGZhbGxiYWNrIG1ldGhv
ZCBpcyBjYWxsZWQgd2hlbiBhbiB1bmtub3duIG1ldGhvZCBpcyBpbnZva2VkLgogICAgIGJpbmRG
YWxsYmFja01ldGhvZCgmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZhbGxiYWNrTWV0aG9kKTsKQEAg
LTE4MzMsNiArMTgzNSwxMyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzeW5jTG9jYWxT
dG9yYWdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKQogICAgIC8vIE5vdCBJ
bXBsZW1lbnRlZAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTdG9yYWdlQWxs
b3dlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29s
KCkpCisgICAgICAgIG1fc2hlbGwtPndlYlBlcm1pc3Npb25zKCktPnNldFN0b3JhZ2VBbGxvd2Vk
KGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgaWYgKGFy
Z3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgewpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5k
ZXggZWY3ODJlNTgyMjdiZjI2MDY2NzMzMjdmZDk5OWQ3MmVmMjg0Y2FmZS4uOWMxMDEzNDA4MTUw
NTU3NWM2YjAxN2YyOTFhNTBlZGMwOGM5Y2YzZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zNzMsNiArMzczLDcg
QEAgcHVibGljOgogICAgIHZvaWQgbG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIG9ic2VydmVTdG9yYWdl
VHJhY2tlck5vdGlmaWNhdGlvbnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CisgICAgdm9pZCBzZXRTdG9yYWdlQWxsb3dlZChjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLyBFbmFibGUgb3IgZGlzYWJsZSBwbHVnaW5zLgog
ICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5k
ZXggZTg4ZjQwZjkwNjExNjIyZGVmYmJhOGI3YTM1MzUzMTk5NzE0YTJmNC4uYTI5OGZmNzE4Njc4
ZWUxZmU1NzFhMTU1OWJmMmIwNDQ1ZDBjNmNiNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIldlYktpdC5oIgor
I2luY2x1ZGUgIldlYlBlcm1pc3Npb25zLmgiCiAjaW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlNldHRp
bmdzLmgiCkBAIC0xMTMsNiArMTE0LDcgQEAgVGVzdFNoZWxsOjpUZXN0U2hlbGwoYm9vbCB0ZXN0
U2hlbGxNb2RlKQogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlSW5kZXhlZERhdGFiYXNl
KHRydWUpOwogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlRmlsZVN5c3RlbSh0cnVlKTsK
ICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUphdmFTY3JpcHRJMThOQVBJKHRydWUpOwor
ICAgIG1fd2ViUGVybWlzc2lvbnMgPSBhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnMoKSk7CiAg
ICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcih0aGlzKSk7CiAgICAgbV9sYXlvdXRUZXN0Q29udHJvbGxlciA9IGFkb3B0UHRy
KG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcih0aGlzKSk7CiAgICAgbV9ldmVudFNlbmRlciA9IGFk
b3B0UHRyKG5ldyBFdmVudFNlbmRlcih0aGlzKSk7CkBAIC0yNDIsNiArMjQ0LDcgQEAgdm9pZCBU
ZXN0U2hlbGw6OnJlc2l6ZVdpbmRvd0ZvclRlc3QoV2ViVmlld0hvc3QqIHdpbmRvdywgY29uc3Qg
V2ViVVJMJiB1cmwpCiB2b2lkIFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcigpCiB7CiAg
ICAgcmVzZXRXZWJTZXR0aW5ncygqd2ViVmlldygpKTsKKyAgICBtX3dlYlBlcm1pc3Npb25zLT5y
ZXNldCgpOwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPnJlc2V0KCk7CiAgICAgbV9s
YXlvdXRUZXN0Q29udHJvbGxlci0+cmVzZXQoKTsKICAgICBtX2V2ZW50U2VuZGVyLT5yZXNldCgp
OwpAQCAtNTk2LDYgKzU5OSw3IEBAIFdlYlZpZXdIb3N0KiBUZXN0U2hlbGw6OmNyZWF0ZU5ld1dp
bmRvdyhjb25zdCBXZWJLaXQ6OldlYlVSTCYgdXJsLCBEUlREZXZUb29sc0FnCiB7CiAgICAgV2Vi
Vmlld0hvc3QqIGhvc3QgPSBuZXcgV2ViVmlld0hvc3QodGhpcyk7CiAgICAgV2ViVmlldyogdmll
dyA9IFdlYlZpZXc6OmNyZWF0ZShob3N0KTsKKyAgICB2aWV3LT5zZXRQZXJtaXNzaW9uQ2xpZW50
KHdlYlBlcm1pc3Npb25zKCkpOwogICAgIHZpZXctPnNldERldlRvb2xzQWdlbnRDbGllbnQoZGV2
VG9vbHNBZ2VudCk7CiAgICAgaG9zdC0+c2V0V2ViV2lkZ2V0KHZpZXcpOwogICAgIG1fcHJlZnMu
YXBwbHlUbyh2aWV3KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgK
aW5kZXggMmRiNGM5NGEwNGFkOWI0MDQ1ZGYwOWM5MDUyY2I4MjM3YmRkNWI5ZC4uMzM3NjU3ZjQ1
OWI3MjkyZmUxZjVhYTJkY2NmMzIxMmZmNGE5ZjM0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgV2ViVVJMOwogY2xh
c3MgRFJURGV2VG9vbHNBZ2VudDsKIGNsYXNzIERSVERldlRvb2xzQ2FsbEFyZ3M7CiBjbGFzcyBE
UlREZXZUb29sc0NsaWVudDsKK2NsYXNzIFdlYlBlcm1pc3Npb25zOwogCiBzdHJ1Y3QgVGVzdFBh
cmFtcyB7CiAgICAgYm9vbCBkdW1wVHJlZTsKQEAgLTk2LDYgKzk3LDggQEAgcHVibGljOgogICAg
IFdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIHsgcmV0dXJuICZtX3ByZWZzOyB9CiAgICAg
dm9pZCBhcHBseVByZWZlcmVuY2VzKCkgeyBtX3ByZWZzLmFwcGx5VG8obV93ZWJWaWV3KTsgfQog
CisgICAgV2ViUGVybWlzc2lvbnMqIHdlYlBlcm1pc3Npb25zKCkgeyByZXR1cm4gbV93ZWJQZXJt
aXNzaW9ucy5nZXQoKTsgfQorCiAgICAgdm9pZCBiaW5kSlNPYmplY3RzVG9XaW5kb3coV2ViS2l0
OjpXZWJGcmFtZSopOwogICAgIHZvaWQgcnVuRmlsZVRlc3QoY29uc3QgVGVzdFBhcmFtcyYpOwog
ICAgIHZvaWQgY2FsbEpTR0MoKTsKQEAgLTE5MSw2ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV90ZXN0U2hlbGxNb2RlOwogICAgIFdlYlZpZXdIb3N0KiBtX3dlYlZpZXdIb3N0OwogICAg
IFdlYlZpZXdIb3N0KiBtX2RldlRvb2xzOworICAgIE93blB0cjxXZWJQZXJtaXNzaW9ucz4gbV93
ZWJQZXJtaXNzaW9uczsKICAgICBPd25QdHI8RFJURGV2VG9vbHNBZ2VudD4gbV9kcnREZXZUb29s
c0FnZW50OwogICAgIE93blB0cjxEUlREZXZUb29sc0NsaWVudD4gbV9kcnREZXZUb29sc0NsaWVu
dDsKICAgICBPd25QdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQ
ZXJtaXNzaW9ucy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUGVybWlzc2lv
bnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZWFkNmZjMGRlYzQ3M2Q3OTZlMmY0NmZlZmJlZjZkMTU0MzZkMWI2
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUGVy
bWlzc2lvbnMuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQZXJtaXNzaW9uc19oCisjZGVm
aW5lIFdlYlBlcm1pc3Npb25zX2gKKworI2luY2x1ZGUgIldlYlBlcm1pc3Npb25DbGllbnQuaCIK
KworY2xhc3MgV2ViUGVybWlzc2lvbnMgOiBwdWJsaWMgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBXZWJQZXJtaXNzaW9ucygpIDogbV9zdG9yYWdlQWxsb3dlZCh0
cnVlKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd1N0b3JhZ2UoV2ViS2l0OjpXZWJGcmFt
ZSosIGJvb2wgbG9jYWwpIHsgcmV0dXJuIG1fc3RvcmFnZUFsbG93ZWQ7IH0KKworICAgIC8vIFNl
dHMgdGhlIHBvbGljeSB3aGV0aGVyIHRvIGFsbG93IHN0b3JhZ2Ugb3Igbm90LgorICAgIHZvaWQg
c2V0U3RvcmFnZUFsbG93ZWQoYm9vbCBzdG9yYWdlQWxsb3dlZCkgeyBtX3N0b3JhZ2VBbGxvd2Vk
ID0gc3RvcmFnZUFsbG93ZWQ7IH0KKworICAgIC8vIFJlc2V0cyB0aGUgcG9saWN5IHRvIGFsbG93
IGFsbCBhY2Nlc3MuCisgICAgdm9pZCByZXNldCgpIHsgbV9zdG9yYWdlQWxsb3dlZCA9IHRydWU7
IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fc3RvcmFnZUFsbG93ZWQ7Cit9OworCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95207</attachid>
            <date>2011-05-27 12:54:36 -0700</date>
            <delta_ts>2011-05-27 16:53:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61581-20110527215433.patch</filename>
            <type>text/plain</type>
            <size>26474</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc1MzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZDliNDgxZmIzN2RjYjUwY2U5YmI5
Y2U2MzYzOWY4ZDZlZTFmZDQyLi5lMzk0OTEzOGVlZjU1M2M2YmFiNDg3YjJkMjk3NTEyNzJlZWFm
N2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMjcgIEpvY2hlbiBFaXNpbmdlciAg
PGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hlY2sgYWNjZXNzIHBvbGljeSBvbiBhbGwgc3RvcmFnZSBvcGVyYXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTU4
MQorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdl
LXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNS0yNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvc3RvcmFnZS1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvc3RvcmFn
ZS1wZXJtaXNzaW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGUzNzlkODgzNjM3YTYzNjlm
NTM5YjI0MWNlYTM0ZjM3YWM4M2UyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGFsbCBhY2Nl
c3MgdG8gbG9jYWxTdG9yYWdlIGNhbiBiZSBibG9ja2VkCitMZW5ndGggaXMgMAorVmFsdWUgZm9y
IEZPTyBpcyBudWxsCitMZW5ndGggaXMgMQorVmFsdWUgZm9yIEZPTyBpcyBCQVIKK0tleSBmb3Ig
aW5kZXggMCBpcyBGT08KK0Rpc2FibGluZyBsb2NhbFN0b3JhZ2UgYWNjZXNzLgorTGVuZ3RoIGlz
IDAKK1ZhbHVlIGZvciBGT08gaXMgbnVsbAorQ2F1Z2h0IGV4Y2VwdGlvbiB0cnlpbmcgdG8gY2hh
bmdlIGl0ZW06IEVycm9yOiBRVU9UQV9FWENFRURFRF9FUlI6IERPTSBFeGNlcHRpb24gMjIKK0xl
bmd0aCBpcyAwCitWYWx1ZSBmb3IgRk9PIGlzIG51bGwKK0tleSBmb3IgaW5kZXggMCBpcyBudWxs
CitMZW5ndGggaXMgMAorVmFsdWUgZm9yIEZPTyBpcyBudWxsCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvc3RvcmFnZS1wZXJtaXNz
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50
L3N0b3JhZ2UtcGVybWlzc2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMDg2YzE5NGE2MzM4M2JhNmUx
MTFjNmU3NzZhMzE1NDhiM2Q4MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi5odG1sCkBA
IC0wLDAgKzEsNjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Ns
ZWFyTG9jYWxTdG9yYWdlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCitmdW5jdGlvbiBsb2coYSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
Z2VyIikuaW5uZXJIVE1MICs9IGEgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGlmICghd2luZG93LmxvY2FsU3RvcmFnZSkgeworICAgICAgICBsb2coIndpbmRvdy5s
b2NhbFN0b3JhZ2UgRE9FUyBOT1QgZXhpc3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0U3RvcmFnZUFsbG93ZWQpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFN0
b3JhZ2VBbGxvd2VkKHRydWUpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJUaGlzIHRlc3QgcmVx
dWlyZXMgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3RvcmFnZUFsbG93ZWQsIHNvIGl0IGJlIGNh
bid0IHJ1biBpbiBhIGJyb3dzZXIuIik7CisgICAgCisgICAgbG9nKCJMZW5ndGggaXMgIiArIGxv
Y2FsU3RvcmFnZS5sZW5ndGgpOworICAgIGxvZygiVmFsdWUgZm9yIEZPTyBpcyAiICsgbG9jYWxT
dG9yYWdlLmdldEl0ZW0oIkZPTyIpKTsKKworICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJGT08i
LCAiQkFSIik7CisgICAgCisgICAgbG9nKCJMZW5ndGggaXMgIiArIGxvY2FsU3RvcmFnZS5sZW5n
dGgpOworICAgIGxvZygiVmFsdWUgZm9yIEZPTyBpcyAiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0o
IkZPTyIpKTsKKyAgICBsb2coIktleSBmb3IgaW5kZXggMCBpcyAiICsgbG9jYWxTdG9yYWdlLmtl
eSgwKSk7CisgICAgCisgICAgbG9nKCJEaXNhYmxpbmcgbG9jYWxTdG9yYWdlIGFjY2Vzcy4iKTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIGxheW91dFRlc3RDb250cm9s
bGVyLnNldFN0b3JhZ2VBbGxvd2VkKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRT
dG9yYWdlQWxsb3dlZChmYWxzZSk7CisKKyAgICBsb2coIkxlbmd0aCBpcyAiICsgbG9jYWxTdG9y
YWdlLmxlbmd0aCk7CisgICAgbG9nKCJWYWx1ZSBmb3IgRk9PIGlzICIgKyBsb2NhbFN0b3JhZ2Uu
Z2V0SXRlbSgiRk9PIikpOworCisgICAgdHJ5IHsKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0
ZW0oIkZPTyIsICJCQVoiKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJDYXVnaHQg
ZXhjZXB0aW9uIHRyeWluZyB0byBjaGFuZ2UgaXRlbTogIiArIGUpOworICAgIH0KKyAgICAKKyAg
ICBsb2coIkxlbmd0aCBpcyAiICsgbG9jYWxTdG9yYWdlLmxlbmd0aCk7CisgICAgbG9nKCJWYWx1
ZSBmb3IgRk9PIGlzICIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiRk9PIikpOworICAgIGxvZygi
S2V5IGZvciBpbmRleCAwIGlzICIgKyBsb2NhbFN0b3JhZ2Uua2V5KDApKTsKKyAgICAKKyAgICBs
b2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiRk9PIik7CisgICAgCisgICAgbG9nKCJMZW5ndGggaXMg
IiArIGxvY2FsU3RvcmFnZS5sZW5ndGgpOworICAgIGxvZygiVmFsdWUgZm9yIEZPTyBpcyAiICsg
bG9jYWxTdG9yYWdlLmdldEl0ZW0oIkZPTyIpKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWxsIGFj
Y2VzcyB0byBsb2NhbFN0b3JhZ2UgY2FuIGJlIGJsb2NrZWQ8YnI+Cis8ZGl2IGlkPSJsb2dnZXIi
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEwMzY1NWMxMDYwY2RhOWUy
ZjgwNGI3MmQzYjhjYWI1Yzg2ODI1ODkuLmNjY2VlY2NkOTlkNjNhN2ZhOTE1OGQzM2ZkMzM1MzZm
MWNkM2Y2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0wNS0yNyAgSm9jaGVu
IEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRnJhbWUgcGFyYW1ldGVyIHRvIGFsbCBTdG9y
YWdlQXJlYSBtZXRob2RzLiBUaGUgY2hyb21pdW0KKyAgICAgICAgZW1iZWRkZXIgdXNlcyB0aGUg
RnJhbWUgYXMgY29udGV4dCB0byBkZWNpZGUgd2hldGhlciBvciBub3QKKyAgICAgICAgdG8gYWxs
b3cgdXNhZ2Ugb2YgdGhlIHN0b3JhZ2UgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE1ODEKKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi5odG1sCisKKyAgICAgICAg
KiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6bGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmtleSk6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlOjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmNvbnRhaW5zKToK
KyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjpsZW5n
dGgpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjprZXkpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VBcmVhSW1wbDo6Y29udGFpbnMpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmg6CisKIDIwMTEtMDUtMjcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJp
bS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUm9iIEJ1aXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlLmNwcAppbmRleCAwMjU5Y2E0MTRkMWZmYjcwOGNhMWE3ZTAyNTYzMzA5ZWEwMjY2ZGE2
Li45ZTk3NWFiYWNmNDJjOGM1OWU1YzgxZjZmYWJmYzM4YTIyYjJhMzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdW5zaWduZWQgU3RvcmFnZTo6bGVu
Z3RoKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSB8fCBtX2Zy
YW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKCk7CisgICAg
cmV0dXJuIG1fc3RvcmFnZUFyZWEtPmxlbmd0aChtX2ZyYW1lKTsKIH0KIAogU3RyaW5nIFN0b3Jh
Z2U6OmtleSh1bnNpZ25lZCBpbmRleCkgY29uc3QKQEAgLTY3LDcgKzY3LDcgQEAgU3RyaW5nIFN0
b3JhZ2U6OmtleSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1f
ZnJhbWUtPnBhZ2UoKSB8fCBtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1f
c3RvcmFnZUFyZWEtPmtleShpbmRleCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShp
bmRleCwgbV9mcmFtZSk7CiB9CiAKIFN0cmluZyBTdG9yYWdlOjpnZXRJdGVtKGNvbnN0IFN0cmlu
ZyYga2V5KSBjb25zdApAQCAtNzUsNyArNzUsNyBAQCBTdHJpbmcgU3RvcmFnZTo6Z2V0SXRlbShj
b25zdCBTdHJpbmcmIGtleSkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBh
Z2UoKSB8fCBtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1fc3RvcmFnZUFy
ZWEtPmdldEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXks
IG1fZnJhbWUpOwogfQogCiB2b2lkIFN0b3JhZ2U6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTA4LDcgKzEwOCw3
IEBAIGJvb2wgU3RvcmFnZTo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgICAg
aWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkgfHwgbV9mcmFtZS0+cGFnZSgpLT5zZXR0
aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5jb250YWlucyhrZXkpOworICAgIHJldHVybiBt
X3N0b3JhZ2VBcmVhLT5jb250YWlucyhrZXksIG1fZnJhbWUpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggNjA4MTI0MGRkOTYyYTU4ZWRmOTdlNWYzYWI3ODQw
ZjIyNjMyNjJkZi4uMWRjMDEzOGY4ODc4YjJkYzhiYWY1OWMxOTgwZDI4NjBhNzMxNjBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWEoKSB7IH0KIAogICAg
ICAgICAvLyBUaGUgSFRNTDUgRE9NIFN0b3JhZ2UgQVBJCi0gICAgICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBrZXkodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0SXRlbShjb25z
dCBTdHJpbmcmIGtleSkgY29uc3QgPSAwOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBh
c3MgRG9jdW1lbnQgaW5zdGVhZCBvZiBGcmFtZS4gQWxzbywgdGhhdCBwYXJhbWV0ZXIgc2hvdWxk
IGdvIGZpcnN0LgorICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aChGcmFtZSogc291cmNl
RnJhbWUpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGlu
ZGV4LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdCA9
IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSogc291cmNlRnJhbWUp
ID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlSXRlbShjb25zdCBTdHJpbmcmIGtl
eSwgRnJhbWUqIHNvdXJjZUZyYW1lKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjbGVhcihG
cmFtZSogc291cmNlRnJhbWUpID0gMDsKLSAgICAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjb250YWlu
cyhjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdCA9IDA7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuY3BwCmluZGV4IDBlYmM4NzQ2MTg3N2NlODMwZmU3Y2IzNDA5ZWE3MTc3MzBm
YTdkZGMuLmQ1NGY1YWIyNWQxY2VjY2Y0Nzg5N2M4Mzk5YWMxYjIyN2UzMTVjODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBA
QCBzdGF0aWMgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKEZyYW1lKiBmcmFtZSkKICNlbmRp
ZgogfQogCi11bnNpZ25lZCBTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCgpIGNvbnN0Cit1bnNpZ25l
ZCBTdG9yYWdlQXJlYUltcGw6Omxlbmd0aChGcmFtZSopIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFt
X2lzU2h1dGRvd24pOwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTE1LDcg
KzExNSw3IEBAIHVuc2lnbmVkIFN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9zdG9yYWdlTWFwLT5sZW5ndGgoKTsKIH0KIAotU3RyaW5nIFN0b3JhZ2VBcmVhSW1w
bDo6a2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdAorU3RyaW5nIFN0b3JhZ2VBcmVhSW1wbDo6a2V5
KHVuc2lnbmVkIGluZGV4LCBGcmFtZSopIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRv
d24pOwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTIzLDcgKzEyMyw3IEBA
IFN0cmluZyBTdG9yYWdlQXJlYUltcGw6OmtleSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBy
ZXR1cm4gbV9zdG9yYWdlTWFwLT5rZXkoaW5kZXgpOwogfQogCi1TdHJpbmcgU3RvcmFnZUFyZWFJ
bXBsOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAorU3RyaW5nIFN0b3JhZ2VBcmVh
SW1wbDo6Z2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUqKSBjb25zdAogewogICAgIEFT
U0VSVCghbV9pc1NodXRkb3duKTsKICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKQEAg
LTIwNCw3ICsyMDQsNyBAQCBib29sIFN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXIoRnJhbWUqIGZyYW1l
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFN0b3JhZ2VBcmVhSW1wbDo6Y29udGFpbnMo
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Citib29sIFN0b3JhZ2VBcmVhSW1wbDo6Y29udGFpbnMo
Y29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKikgY29uc3QKIHsKICAgICBBU1NFUlQoIW1faXNTaHV0
ZG93bik7CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA5Zjg3ZTY5N2FiODViYTY3ZDYzMzFjOTRhMzgw
ZGQ2ZjBkMDJlMDNiLi4xYWE1YTA1Njk1MWEzNGFlODAwNGY2ZjcxNTZkMmY2NGVlM2U0MzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTQ1LDEzICs0NSwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVhSW1w
bCgpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MNSBET00gU3RvcmFnZSBBUEkgKGFuZCBjb250YWlu
cykKLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBT
dHJpbmcgZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
dW5zaWduZWQgbGVuZ3RoKEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgRnJhbWUq
IHNvdXJjZUZyYW1lKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgc2V0SXRlbShjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIEZy
YW1lKiBzb3VyY2VGcmFtZSk7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29u
c3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBjbGVhcihGcmFtZSogc291cmNlRnJhbWUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CiAKICAgICAg
ICAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+IGNvcHkoKTsKICAgICAgICAgdm9pZCBjbG9z
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiMmI3MDNhNTMzMzhhYjc1MTUxNTdl
MDE4NTJjOGMxMzYzNjg5NjdlLi5lNWE0YjM5ZjIxYmJhYTEwMDQyOWNlNmQ0NGNkOTMyOWE5NjIw
NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDExLTA1
LTI3ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGFjY2VzcyBwb2xpY3kg
b24gYWxsIHN0b3JhZ2Ugb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjE1ODEKKworICAgICAgICAqIHNyYy9TdG9yYWdlQXJlYVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6Omxlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjprZXkpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFQcm94eTo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJl
YVByb3h5OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OnJl
bW92ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6Y29udGFpbnMpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6Y2FuQWNjZXNzU3RvcmFnZSk6CisgICAgICAgICog
c3JjL1N0b3JhZ2VBcmVhUHJveHkuaDoKKyAgICAgICAgKiBzcmMvV2ViU3RvcmFnZUFyZWFJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlQXJlYUltcGw6OmtleSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VBcmVhSW1wbDo6Z2V0SXRlbSk6CisKKzIwMTEtMDUtMjcgIEpvY2hlbiBFaXNp
bmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
RmlzaGVyLgogCiAgICAgICAgIFtjaHJvbWl1bV0gZHJvcCB1bnVzZWQgV2ViRnJhbWUgcGFyYW1l
dGVyIHRvIFdlYlN0b3JhZ2VBcmVhOjpzZXRJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCmluZGV4IDRlMjgxN2YyZGI1NGZhYmRiNDBlODdh
ZjUzNmVjZDM4MDQxZGQ4NTEuLjRhODNjMmRkMzBjOGI4ZTg3YjViZDUwM2VjMGQ5NTRhZWMyMWUx
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHku
Y3BwCkBAIC02MywyOCArNjMsMzIgQEAgU3RvcmFnZUFyZWFQcm94eTo6flN0b3JhZ2VBcmVhUHJv
eHkoKQogewogfQogCi11bnNpZ25lZCBTdG9yYWdlQXJlYVByb3h5OjpsZW5ndGgoKSBjb25zdAor
dW5zaWduZWQgU3RvcmFnZUFyZWFQcm94eTo6bGVuZ3RoKEZyYW1lKiBmcmFtZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKCk7CisgICAgaWYgKGNhbkFjY2Vzc1N0
b3JhZ2UoZnJhbWUpKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKCk7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJlYVByb3h5OjprZXkodW5zaWduZWQg
aW5kZXgpIGNvbnN0CitTdHJpbmcgU3RvcmFnZUFyZWFQcm94eTo6a2V5KHVuc2lnbmVkIGluZGV4
LCBGcmFtZSogZnJhbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShp
bmRleCk7CisgICAgaWYgKGNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQorICAgICAgICByZXR1cm4g
bV9zdG9yYWdlQXJlYS0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBTdG9yYWdlQXJlYVByb3h5OjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAor
U3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1l
KiBmcmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXkp
OworICAgIGlmIChjYW5BY2Nlc3NTdG9yYWdlKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIG1fc3Rv
cmFnZUFyZWEtPmdldEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIFN0cmlu
ZyBTdG9yYWdlQXJlYVByb3h5OjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIGZyYW1lKQogewogICAgIFdlYktp
dDo6V2ViU3RvcmFnZUFyZWE6OlJlc3VsdCByZXN1bHQgPSBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVh
OjpSZXN1bHRPSzsKICAgICBXZWJLaXQ6OldlYlN0cmluZyBvbGRWYWx1ZTsKLSAgICBXZWJLaXQ6
OldlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1l
KGZyYW1lKTsKLSAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZp
ZXdJbXBsKCk7Ci0gICAgaWYgKHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSAmJiAhd2ViVmll
dy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd1N0b3JhZ2Uod2ViRnJhbWUsIG1fc3RvcmFnZVR5
cGUgPT0gTG9jYWxTdG9yYWdlKSkKKyAgICBpZiAoIWNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQog
ICAgICAgICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsKICAgICBlbHNlIHsKICAgICAgICAgbV9z
dG9yYWdlQXJlYS0+c2V0SXRlbShrZXksIHZhbHVlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCks
IHJlc3VsdCwgb2xkVmFsdWUpOwpAQCAtOTgsNiArMTAyLDggQEAgU3RyaW5nIFN0b3JhZ2VBcmVh
UHJveHk6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4
Y2VwdGkKIAogU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5n
JiBrZXksIEZyYW1lKiBmcmFtZSkKIHsKKyAgICBpZiAoIWNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgb2xkVmFs
dWU7CiAgICAgbV9zdG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShrZXksIGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKSwgb2xkVmFsdWUpOwogICAgIGlmICghb2xkVmFsdWUuaXNOdWxsKCkpCkBAIC0xMDcs
NiArMTEzLDggQEAgU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnJlbW92ZUl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXksIEZyYW1lKiBmcmFtZSkKIAogYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjbGVhcihG
cmFtZSogZnJhbWUpCiB7CisgICAgaWYgKCFjYW5BY2Nlc3NTdG9yYWdlKGZyYW1lKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgY2xlYXJlZFNvbWV0aGluZzsKICAgICBtX3N0b3Jh
Z2VBcmVhLT5jbGVhcihmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIGNsZWFyZWRTb21ldGhpbmcp
OwogICAgIGlmIChjbGVhcmVkU29tZXRoaW5nKQpAQCAtMTE0LDkgKzEyMiw5IEBAIGJvb2wgU3Rv
cmFnZUFyZWFQcm94eTo6Y2xlYXIoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBjbGVhcmVkU29t
ZXRoaW5nOwogfQogCi1ib29sIFN0b3JhZ2VBcmVhUHJveHk6OmNvbnRhaW5zKGNvbnN0IFN0cmlu
ZyYga2V5KSBjb25zdAorYm9vbCBTdG9yYWdlQXJlYVByb3h5Ojpjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSwgRnJhbWUqIGZyYW1lKSBjb25zdAogewotICAgIHJldHVybiAhZ2V0SXRlbShrZXkp
LmlzTnVsbCgpOworICAgIHJldHVybiAhZ2V0SXRlbShrZXksIGZyYW1lKS5pc051bGwoKTsKIH0K
IAogLy8gQ29waWVkIGZyb20gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIu
Y3BwIG91dCBvZiBuZWNlc3NpdHkuICBJdCdzIHByb2JhYmx5IGJlc3QgdG8ga2VlcCBpdCBjdXJy
ZW50LgpAQCAtMTYyLDYgKzE3MCwxMyBAQCB2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OnN0b3JhZ2VF
dmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgYwogICAgIH0K
IH0KIAorYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKiBmcmFt
ZSkgY29uc3QKK3sKKyAgICBXZWJLaXQ6OldlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKKyAgICBXZWJLaXQ6OldlYlZpZXdJbXBs
KiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJbXBsKCk7CisgICAgcmV0dXJuICF3ZWJWaWV3LT5w
ZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd1N0
b3JhZ2Uod2ViRnJhbWUsIG1fc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCmluZGV4IGIxNjk4
MjgwZWE1MDE3YzU4MGM2NDgwMDYwNTJjYzZlZGNkZDllOGEuLmZkOTFiYWQ5OWM3MTZkN2RjNWM0
ZjE1OTdhNmU2MzQ5Y2VjNTYxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1N0b3JhZ2VBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9T
dG9yYWdlQXJlYVByb3h5LmgKQEAgLTQzLDE2ICs0MywxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U3RvcmFnZUFyZWFQcm94eSgpOwogCiAgICAgLy8gVGhlIEhUTUw1IERPTSBTdG9yYWdlIEFQ
SQotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJp
bmcga2V5KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVt
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aChG
cmFtZSogc291cmNlRnJhbWUpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNpZ25l
ZCBpbmRleCwgRnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBn
ZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OwogICAg
IHZpcnR1YWwgU3RyaW5nIHNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSogc291cmNlRnJhbWUpOwogICAgIHZpcnR1
YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFt
ZSk7CiAgICAgdmlydHVhbCBib29sIGNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSk7Ci0gICAgdmly
dHVhbCBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VU
eXBlLCBTZWN1cml0eU9yaWdpbiosIEZyYW1lKiBzb3VyY2VGcmFtZSk7CisgICAgYm9vbCBjYW5B
Y2Nlc3NTdG9yYWdlKEZyYW1lKikgY29uc3Q7CiAKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTdG9y
YWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKICAgICBTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VBcmVhSW1wbC5jcHAK
aW5kZXggOWE3ZmQ1Yzc2ZTgxOTA0NjgxMTRiZTAyNjU3ZTFhMThkZjAxOThhNi4uZGE4MjA4Zjkw
NzNiYmM1MGFhZTQzY2E2MmM4M2NjNTJkNGEzYWE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlQXJlYUltcGwuY3BwCkBAIC01MywxNyArNTMsMTcgQEAg
V2ViU3RvcmFnZUFyZWFJbXBsOjp+V2ViU3RvcmFnZUFyZWFJbXBsKCkKIAogdW5zaWduZWQgV2Vi
U3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgoKQogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5s
ZW5ndGgoKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKDApOwogfQogCiBXZWJT
dHJpbmcgV2ViU3RvcmFnZUFyZWFJbXBsOjprZXkodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0
dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRleCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEt
PmtleShpbmRleCwgMCk7CiB9CiAKIFdlYlN0cmluZyBXZWJTdG9yYWdlQXJlYUltcGw6OmdldEl0
ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXkpCiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdl
dEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXksIDApOwog
fQogCiB2b2lkIFdlYlN0b3JhZ2VBcmVhSW1wbDo6c2V0SXRlbShjb25zdCBXZWJTdHJpbmcmIGtl
eSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSwgY29uc3QgV2ViVVJMJiB1cmwsIFJlc3VsdCYgcmVz
dWx0LCBXZWJTdHJpbmcmIG9sZFZhbHVlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU3ZDAwZjZmYTMwMGEyOGY2NDFkNWI4ZmEwM2MwNzM5NGYy
ZjAwMzIuLjAzMjM0ZjYwYjM3MWQ5M2I4NjNjYzFlMThmOTI1Njk1OTc4ODNlNjggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAxMS0wNS0yNyAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0U3RvcmFnZUFsbG93ZWQoKSB0byBjb250cm9sIHdoZXRoZXIgYWNj
ZXNzCisgICAgICAgIHRvIHRoZSBsb2NhbFN0b3JhZ2UgQVBJIGlzIGVuYWJsZWQgdmlhIHRoZSBX
ZWJQZXJtaXNzaW9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTU4MQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Okxh
eW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRT
dG9yYWdlQWxsb3dlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjpUZXN0U2hlbGwpOgorICAgICAgICAoVGVz
dFNoZWxsOjpjcmVhdGVOZXdXaW5kb3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlBl
cm1pc3Npb25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViUGVybWlzc2lvbnM6OldlYlBlcm1pc3Np
b25zKToKKyAgICAgICAgKFdlYlBlcm1pc3Npb25zOjphbGxvd1N0b3JhZ2UpOgorICAgICAgICAo
V2ViUGVybWlzc2lvbnM6OnNldFN0b3JhZ2VBbGxvd2VkKToKKyAgICAgICAgKFdlYlBlcm1pc3Np
b25zOjpyZXNldCk6CisKIDIwMTEtMDUtMjcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSB0ZXN0aW5nIGNvZGUgdGhhdCBzbnVjayBpbnRvIHI4NzUyOApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IGQ0YWJiYzdkZjc3YmU0MDUxNDZkYmE5NzQwYWFhN2VhYmQwM2I3Njcu
LmYxMzhlNDA3ZTUyYmZiMjUzZDBhNWRkMzU2ZDgxM2RmNTU1YTYyYTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNs
dWRlICJXZWJQZXJtaXNzaW9ucy5oIgogI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2lu
Y2x1ZGUgIldlYlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKQEAg
LTIxNCw2ICsyMTUsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJkZWxldGVMb2NhbFN0b3JhZ2VG
b3JPcmlnaW4iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9y
aWdpbik7CiAgICAgYmluZE1ldGhvZCgib2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9u
cyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0
aW9ucyk7CiAgICAgYmluZE1ldGhvZCgic3luY0xvY2FsU3RvcmFnZSIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3luY0xvY2FsU3RvcmFnZSk7CisgICAgYmluZE1ldGhvZCgic2V0U3RvcmFnZUFs
bG93ZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFN0b3JhZ2VBbGxvd2VkKTsKICAgICAK
ICAgICAvLyBUaGUgZmFsbGJhY2sgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIHVua25vd24gbWV0
aG9kIGlzIGludm9rZWQuCiAgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZmFsbGJhY2tNZXRob2QpOwpAQCAtMTgyMCw2ICsxODIyLDEzIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnN5bmNMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopCiAgICAgLy8gTm90IEltcGxlbWVudGVkCiB9CiAKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFN0b3JhZ2VBbGxvd2VkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
PiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9zaGVsbC0+d2ViUGVybWlz
c2lvbnMoKS0+c2V0U3RvcmFnZUFsbG93ZWQoYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpKTsKKyAg
ICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
UGx1Z2luc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRz
WzBdLmlzQm9vbCgpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAyNTJkNGYxMTE5OTRlMjY5ZTJmNzI4OTlkYmJh
MjZjZDU5ZDM4OTYwLi45YjE3MTBmMzZhYzVlZTBhODQ3ZmIxZDgzM2Y3N2RjMzI1ZDc1ZmY3IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmgKQEAgLTM2OSw2ICszNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2NhbFN0b3Jh
Z2VEaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgb2JzZXJ2ZVN0b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyhjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldFN0b3JhZ2VB
bGxvd2VkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIEVu
YWJsZSBvciBkaXNhYmxlIHBsdWdpbnMuCiAgICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCBlODhmNDBmOTA2MTE2MjJkZWZiYmE4YjdhMzUz
NTMxOTk3MTRhMmY0Li5hMjk4ZmY3MTg2NzhlZTFmZTU3MWExNTU5YmYyYjA0NDVkMGM2Y2I2IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVt
LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViUGVybWlzc2lvbnMuaCIKICNp
bmNsdWRlICJXZWJSdW50aW1lRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKQEAgLTExMyw2ICsxMTQsNyBAQCBUZXN0
U2hlbGw6OlRlc3RTaGVsbChib29sIHRlc3RTaGVsbE1vZGUpCiAgICAgV2ViUnVudGltZUZlYXR1
cmVzOjplbmFibGVJbmRleGVkRGF0YWJhc2UodHJ1ZSk7CiAgICAgV2ViUnVudGltZUZlYXR1cmVz
OjplbmFibGVGaWxlU3lzdGVtKHRydWUpOwogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxl
SmF2YVNjcmlwdEkxOE5BUEkodHJ1ZSk7CisgICAgbV93ZWJQZXJtaXNzaW9ucyA9IGFkb3B0UHRy
KG5ldyBXZWJQZXJtaXNzaW9ucygpKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0g
YWRvcHRQdHIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX2xheW91
dFRlc3RDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMp
KTsKICAgICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQdHIobmV3IEV2ZW50U2VuZGVyKHRoaXMpKTsK
QEAgLTI0Miw2ICsyNDQsNyBAQCB2b2lkIFRlc3RTaGVsbDo6cmVzaXplV2luZG93Rm9yVGVzdChX
ZWJWaWV3SG9zdCogd2luZG93LCBjb25zdCBXZWJVUkwmIHVybCkKIHZvaWQgVGVzdFNoZWxsOjpy
ZXNldFRlc3RDb250cm9sbGVyKCkKIHsKICAgICByZXNldFdlYlNldHRpbmdzKCp3ZWJWaWV3KCkp
OworICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci0+cmVzZXQoKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5yZXNldCgpOwog
ICAgIG1fZXZlbnRTZW5kZXItPnJlc2V0KCk7CkBAIC01OTYsNiArNTk5LDcgQEAgV2ViVmlld0hv
c3QqIFRlc3RTaGVsbDo6Y3JlYXRlTmV3V2luZG93KGNvbnN0IFdlYktpdDo6V2ViVVJMJiB1cmws
IERSVERldlRvb2xzQWcKIHsKICAgICBXZWJWaWV3SG9zdCogaG9zdCA9IG5ldyBXZWJWaWV3SG9z
dCh0aGlzKTsKICAgICBXZWJWaWV3KiB2aWV3ID0gV2ViVmlldzo6Y3JlYXRlKGhvc3QpOworICAg
IHZpZXctPnNldFBlcm1pc3Npb25DbGllbnQod2ViUGVybWlzc2lvbnMoKSk7CiAgICAgdmlldy0+
c2V0RGV2VG9vbHNBZ2VudENsaWVudChkZXZUb29sc0FnZW50KTsKICAgICBob3N0LT5zZXRXZWJX
aWRnZXQodmlldyk7CiAgICAgbV9wcmVmcy5hcHBseVRvKHZpZXcpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCAyZGI0Yzk0YTA0YWQ5YjQwNDVkZjA5Yzkw
NTJjYjgyMzdiZGQ1YjlkLi4zMzc2NTdmNDU5YjcyOTJmZTFmNWFhMmRjY2YzMjEyZmY0YTlmMzRm
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaApAQCAtNTgsNiAr
NTgsNyBAQCBjbGFzcyBXZWJVUkw7CiBjbGFzcyBEUlREZXZUb29sc0FnZW50OwogY2xhc3MgRFJU
RGV2VG9vbHNDYWxsQXJnczsKIGNsYXNzIERSVERldlRvb2xzQ2xpZW50OworY2xhc3MgV2ViUGVy
bWlzc2lvbnM7CiAKIHN0cnVjdCBUZXN0UGFyYW1zIHsKICAgICBib29sIGR1bXBUcmVlOwpAQCAt
OTYsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAgV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkg
eyByZXR1cm4gJm1fcHJlZnM7IH0KICAgICB2b2lkIGFwcGx5UHJlZmVyZW5jZXMoKSB7IG1fcHJl
ZnMuYXBwbHlUbyhtX3dlYlZpZXcpOyB9CiAKKyAgICBXZWJQZXJtaXNzaW9ucyogd2ViUGVybWlz
c2lvbnMoKSB7IHJldHVybiBtX3dlYlBlcm1pc3Npb25zLmdldCgpOyB9CisKICAgICB2b2lkIGJp
bmRKU09iamVjdHNUb1dpbmRvdyhXZWJLaXQ6OldlYkZyYW1lKik7CiAgICAgdm9pZCBydW5GaWxl
VGVzdChjb25zdCBUZXN0UGFyYW1zJik7CiAgICAgdm9pZCBjYWxsSlNHQygpOwpAQCAtMTkxLDYg
KzE5NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Rlc3RTaGVsbE1vZGU7CiAgICAgV2ViVmll
d0hvc3QqIG1fd2ViVmlld0hvc3Q7CiAgICAgV2ViVmlld0hvc3QqIG1fZGV2VG9vbHM7CisgICAg
T3duUHRyPFdlYlBlcm1pc3Npb25zPiBtX3dlYlBlcm1pc3Npb25zOwogICAgIE93blB0cjxEUlRE
ZXZUb29sc0FnZW50PiBtX2RydERldlRvb2xzQWdlbnQ7CiAgICAgT3duUHRyPERSVERldlRvb2xz
Q2xpZW50PiBtX2RydERldlRvb2xzQ2xpZW50OwogICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlBlcm1pc3Npb25zLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYWQ2ZmMwZGVjNDcz
ZDc5NmUyZjQ2ZmVmYmVmNmQxNTQzNmQxYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlBlcm1pc3Npb25zX2gKKyNkZWZpbmUgV2ViUGVybWlzc2lvbnNfaAorCisjaW5jbHVk
ZSAiV2ViUGVybWlzc2lvbkNsaWVudC5oIgorCitjbGFzcyBXZWJQZXJtaXNzaW9ucyA6IHB1Ymxp
YyBXZWJLaXQ6OldlYlBlcm1pc3Npb25DbGllbnQgeworcHVibGljOgorICAgIFdlYlBlcm1pc3Np
b25zKCkgOiBtX3N0b3JhZ2VBbGxvd2VkKHRydWUpIHsgfQorCisgICAgdmlydHVhbCBib29sIGFs
bG93U3RvcmFnZShXZWJLaXQ6OldlYkZyYW1lKiwgYm9vbCBsb2NhbCkgeyByZXR1cm4gbV9zdG9y
YWdlQWxsb3dlZDsgfQorCisgICAgLy8gU2V0cyB0aGUgcG9saWN5IHdoZXRoZXIgdG8gYWxsb3cg
c3RvcmFnZSBvciBub3QuCisgICAgdm9pZCBzZXRTdG9yYWdlQWxsb3dlZChib29sIHN0b3JhZ2VB
bGxvd2VkKSB7IG1fc3RvcmFnZUFsbG93ZWQgPSBzdG9yYWdlQWxsb3dlZDsgfQorCisgICAgLy8g
UmVzZXRzIHRoZSBwb2xpY3kgdG8gYWxsb3cgYWxsIGFjY2Vzcy4KKyAgICB2b2lkIHJlc2V0KCkg
eyBtX3N0b3JhZ2VBbGxvd2VkID0gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9zdG9y
YWdlQWxsb3dlZDsKK307CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95230</attachid>
            <date>2011-05-27 16:53:51 -0700</date>
            <delta_ts>2011-05-27 20:27:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61581-20110528015348.patch</filename>
            <type>text/plain</type>
            <size>26458</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc1MzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZDliNDgxZmIzN2RjYjUwY2U5YmI5
Y2U2MzYzOWY4ZDZlZTFmZDQyLi5jY2NhOTRjZjFlZTVkZmIxMWVhMTM0MzZjNjgyZjVhY2I2Y2Iw
YjY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMjcgIEpvY2hlbiBFaXNpbmdlciAg
PGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
KworICAgICAgICBDaGVjayBhY2Nlc3MgcG9saWN5IG9uIGFsbCBzdG9yYWdlIG9wZXJhdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTgxCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVy
bWlzc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L3Blcm1pc3Npb25jbGllbnQvc3RvcmFnZS1wZXJtaXNzaW9uLmh0bWw6IEFkZGVkLgorCiAyMDEx
LTA1LTI3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBl
cm1pc3Npb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZTM3OWQ4ODM2MzdhNjM2OWY1Mzli
MjQxY2VhMzRmMzdhYzgzZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3N0b3JhZ2UtcGVybWlzc2lvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNiBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWxsIGFjY2VzcyB0
byBsb2NhbFN0b3JhZ2UgY2FuIGJlIGJsb2NrZWQKK0xlbmd0aCBpcyAwCitWYWx1ZSBmb3IgRk9P
IGlzIG51bGwKK0xlbmd0aCBpcyAxCitWYWx1ZSBmb3IgRk9PIGlzIEJBUgorS2V5IGZvciBpbmRl
eCAwIGlzIEZPTworRGlzYWJsaW5nIGxvY2FsU3RvcmFnZSBhY2Nlc3MuCitMZW5ndGggaXMgMAor
VmFsdWUgZm9yIEZPTyBpcyBudWxsCitDYXVnaHQgZXhjZXB0aW9uIHRyeWluZyB0byBjaGFuZ2Ug
aXRlbTogRXJyb3I6IFFVT1RBX0VYQ0VFREVEX0VSUjogRE9NIEV4Y2VwdGlvbiAyMgorTGVuZ3Ro
IGlzIDAKK1ZhbHVlIGZvciBGT08gaXMgbnVsbAorS2V5IGZvciBpbmRleCAwIGlzIG51bGwKK0xl
bmd0aCBpcyAwCitWYWx1ZSBmb3IgRk9PIGlzIG51bGwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24u
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvc3Rv
cmFnZS1wZXJtaXNzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAwODZjMTk0YTYzMzgzYmE2ZTExMWM2
ZTc3NmEzMTU0OGIzZDgxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvc3RvcmFnZS1wZXJtaXNzaW9uLmh0bWwKQEAgLTAs
MCArMSw2NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xlYXJM
b2NhbFN0b3JhZ2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
K2Z1bmN0aW9uIGxvZyhhKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIi
KS5pbm5lckhUTUwgKz0gYSArICI8YnI+IjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7Cisg
ICAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlKSB7CisgICAgICAgIGxvZygid2luZG93LmxvY2Fs
U3RvcmFnZSBET0VTIE5PVCBleGlzdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRTdG9yYWdlQWxsb3dlZCkKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3RvcmFn
ZUFsbG93ZWQodHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJl
cyBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTdG9yYWdlQWxsb3dlZCwgc28gaXQgYmUgY2FuJ3Qg
cnVuIGluIGEgYnJvd3Nlci4iKTsKKyAgICAKKyAgICBsb2coIkxlbmd0aCBpcyAiICsgbG9jYWxT
dG9yYWdlLmxlbmd0aCk7CisgICAgbG9nKCJWYWx1ZSBmb3IgRk9PIGlzICIgKyBsb2NhbFN0b3Jh
Z2UuZ2V0SXRlbSgiRk9PIikpOworCisgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oIkZPTyIsICJC
QVIiKTsKKyAgICAKKyAgICBsb2coIkxlbmd0aCBpcyAiICsgbG9jYWxTdG9yYWdlLmxlbmd0aCk7
CisgICAgbG9nKCJWYWx1ZSBmb3IgRk9PIGlzICIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiRk9P
IikpOworICAgIGxvZygiS2V5IGZvciBpbmRleCAwIGlzICIgKyBsb2NhbFN0b3JhZ2Uua2V5KDAp
KTsKKyAgICAKKyAgICBsb2coIkRpc2FibGluZyBsb2NhbFN0b3JhZ2UgYWNjZXNzLiIpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0U3RvcmFnZUFsbG93ZWQpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFN0b3Jh
Z2VBbGxvd2VkKGZhbHNlKTsKKworICAgIGxvZygiTGVuZ3RoIGlzICIgKyBsb2NhbFN0b3JhZ2Uu
bGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZvciBGT08gaXMgIiArIGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKCJGT08iKSk7CisKKyAgICB0cnkgeworICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgi
Rk9PIiwgIkJBWiIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBsb2coIkNhdWdodCBleGNl
cHRpb24gdHJ5aW5nIHRvIGNoYW5nZSBpdGVtOiAiICsgZSk7CisgICAgfQorICAgIAorICAgIGxv
ZygiTGVuZ3RoIGlzICIgKyBsb2NhbFN0b3JhZ2UubGVuZ3RoKTsKKyAgICBsb2coIlZhbHVlIGZv
ciBGT08gaXMgIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJGT08iKSk7CisgICAgbG9nKCJLZXkg
Zm9yIGluZGV4IDAgaXMgIiArIGxvY2FsU3RvcmFnZS5rZXkoMCkpOworICAgIAorICAgIGxvY2Fs
U3RvcmFnZS5yZW1vdmVJdGVtKCJGT08iKTsKKyAgICAKKyAgICBsb2coIkxlbmd0aCBpcyAiICsg
bG9jYWxTdG9yYWdlLmxlbmd0aCk7CisgICAgbG9nKCJWYWx1ZSBmb3IgRk9PIGlzICIgKyBsb2Nh
bFN0b3JhZ2UuZ2V0SXRlbSgiRk9PIikpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpOyI+CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhbGwgYWNjZXNz
IHRvIGxvY2FsU3RvcmFnZSBjYW4gYmUgYmxvY2tlZDxicj4KKzxkaXYgaWQ9ImxvZ2dlciI+PC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTAzNjU1YzEwNjBjZGE5ZTJmODA0
YjcyZDNiOGNhYjVjODY4MjU4OS4uYmU0NjhhNGM2M2ZlZWFjYWVkM2UwZWRlNThhNjI5NzViOWNj
ZWQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTA1LTI3ICBKb2NoZW4gRWlz
aW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCisKKyAgICAgICAgQWRkIEZyYW1lIHBhcmFtZXRlciB0byBhbGwgU3RvcmFnZUFyZWEg
bWV0aG9kcy4gVGhlIGNocm9taXVtCisgICAgICAgIGVtYmVkZGVyIHVzZXMgdGhlIEZyYW1lIGFz
IGNvbnRleHQgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgICAgICAgIHRvIGFsbG93IHVzYWdl
IG9mIHRoZSBzdG9yYWdlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxNTgxCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vY2hyb21pdW0vcGVy
bWlzc2lvbmNsaWVudC9zdG9yYWdlLXBlcm1pc3Npb24uaHRtbAorCisgICAgICAgICogc3RvcmFn
ZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6Omxlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlOjprZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6
Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpjb250YWlucyk6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6bGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6a2V5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VBcmVhSW1wbDo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJl
YUltcGw6OmNvbnRhaW5zKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgor
CiAyMDExLTA1LTI3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFJvYiBCdWlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5j
cHAKaW5kZXggMDI1OWNhNDE0ZDFmZmI3MDhjYTFhN2UwMjU2MzMwOWVhMDI2NmRhNi4uOWU5NzVh
YmFjZjQyYzhjNTllNWM4MWY2ZmFiZmMzOGEyMmIyYTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2UuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHVuc2lnbmVkIFN0b3JhZ2U6Omxlbmd0aCgpIGNv
bnN0CiAgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkgfHwgbV9mcmFtZS0+cGFn
ZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmxlbmd0aCgpOworICAgIHJldHVybiBt
X3N0b3JhZ2VBcmVhLT5sZW5ndGgobV9mcmFtZSk7CiB9CiAKIFN0cmluZyBTdG9yYWdlOjprZXko
dW5zaWduZWQgaW5kZXgpIGNvbnN0CkBAIC02Nyw3ICs2Nyw3IEBAIFN0cmluZyBTdG9yYWdlOjpr
ZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5w
YWdlKCkgfHwgbV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBtX3N0b3JhZ2VB
cmVhLT5rZXkoaW5kZXgpOworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5rZXkoaW5kZXgsIG1f
ZnJhbWUpOwogfQogCiBTdHJpbmcgU3RvcmFnZTo6Z2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSkg
Y29uc3QKQEAgLTc1LDcgKzc1LDcgQEAgU3RyaW5nIFN0b3JhZ2U6OmdldEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXkpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkgfHwg
bV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5nZXRJ
dGVtKGtleSk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdldEl0ZW0oa2V5LCBtX2ZyYW1l
KTsKIH0KIAogdm9pZCBTdG9yYWdlOjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29s
IFN0b3JhZ2U6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogICAgIGlmICghbV9m
cmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpIHx8IG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gbV9zdG9yYWdlQXJlYS0+Y29udGFpbnMoa2V5KTsKKyAgICByZXR1cm4gbV9zdG9yYWdl
QXJlYS0+Y29udGFpbnMoa2V5LCBtX2ZyYW1lKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYS5oCmluZGV4IDYwODEyNDBkZDk2MmE1OGVkZjk3ZTVmM2FiNzg0MGYyMjYzMjYy
ZGYuLjFkYzAxMzhmODg3OGIyZGM4YmFmNTljMTk4MGQyODYwYTczMTYwYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVhKCkgeyB9CiAKICAgICAgICAgLy8g
VGhlIEhUTUw1IERPTSBTdG9yYWdlIEFQSQotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4
KSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldEl0ZW0oY29uc3QgU3RyaW5n
JiBrZXkpIGNvbnN0ID0gMDsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIERvY3Vt
ZW50IGluc3RlYWQgb2YgRnJhbWUuIEFsc28sIHRoYXQgcGFyYW1ldGVyIHNob3VsZCBnbyBmaXJz
dC4KKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoRnJhbWUqIHNvdXJjZUZyYW1lKSBj
b25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCwgRnJh
bWUqIHNvdXJjZUZyYW1lKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldEl0
ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3QgPSAwOwogICAg
ICAgICB2aXJ0dWFsIFN0cmluZyBzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIHNvdXJjZUZyYW1lKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1l
KiBzb3VyY2VGcmFtZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2xlYXIoRnJhbWUqIHNv
dXJjZUZyYW1lKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBTdHJp
bmcmIGtleSkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3Qg
U3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3QgPSAwOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcAppbmRleCAwZWJjODc0NjE4NzdjZTgzMGZlN2NiMzQwOWVhNzE3NzMwZmE3ZGRjLi5k
NTRmNWFiMjVkMWNlY2NmNDc4OTdjODM5OWFjMWIyMjdlMzE1YzgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGlj
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChGcmFtZSogZnJhbWUpCiAjZW5kaWYKIH0KIAot
dW5zaWduZWQgU3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgoKSBjb25zdAordW5zaWduZWQgU3RvcmFn
ZUFyZWFJbXBsOjpsZW5ndGgoRnJhbWUqKSBjb25zdAogewogICAgIEFTU0VSVCghbV9pc1NodXRk
b3duKTsKICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKQEAgLTExNSw3ICsxMTUsNyBA
QCB1bnNpZ25lZCBTdG9yYWdlQXJlYUltcGw6Omxlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
c3RvcmFnZU1hcC0+bGVuZ3RoKCk7CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJlYUltcGw6OmtleSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKK1N0cmluZyBTdG9yYWdlQXJlYUltcGw6OmtleSh1bnNpZ25l
ZCBpbmRleCwgRnJhbWUqKSBjb25zdAogewogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKICAg
ICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBTdHJpbmcg
U3RvcmFnZUFyZWFJbXBsOjprZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
c3RvcmFnZU1hcC0+a2V5KGluZGV4KTsKIH0KIAotU3RyaW5nIFN0b3JhZ2VBcmVhSW1wbDo6Z2V0
SXRlbShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK1N0cmluZyBTdG9yYWdlQXJlYUltcGw6Omdl
dEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKikgY29uc3QKIHsKICAgICBBU1NFUlQoIW1f
aXNTaHV0ZG93bik7CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CkBAIC0yMDQsNyAr
MjA0LDcgQEAgYm9vbCBTdG9yYWdlQXJlYUltcGw6OmNsZWFyKEZyYW1lKiBmcmFtZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTdG9yYWdlQXJlYUltcGw6OmNvbnRhaW5zKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdAorYm9vbCBTdG9yYWdlQXJlYUltcGw6OmNvbnRhaW5zKGNvbnN0IFN0
cmluZyYga2V5LCBGcmFtZSopIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwog
ICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmgKaW5kZXggOWY4N2U2OTdhYjg1YmE2N2Q2MzMxYzk0YTM4MGRkNmYwZDAy
ZTAzYi4uMWFhNWEwNTY5NTFhMzRhZTgwMDRmNmY3MTU2ZDJmNjRlZTNlNDM2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC00NSwxMyArNDUsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TdG9yYWdlQXJlYUltcGwoKTsKIAog
ICAgICAgICAvLyBUaGUgSFRNTDUgRE9NIFN0b3JhZ2UgQVBJIChhbmQgY29udGFpbnMpCi0gICAg
ICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU3Ry
aW5nIGtleSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGdl
dEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxlbmd0aChGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBrZXkodW5zaWduZWQgaW5kZXgsIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CisgICAgICAg
IHZpcnR1YWwgU3RyaW5nIGdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VG
cmFtZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHNldEl0ZW0oY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBGcmFtZSogc291
cmNlRnJhbWUpOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyByZW1vdmVJdGVtKGNvbnN0IFN0cmlu
ZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2xlYXIo
RnJhbWUqIHNvdXJjZUZyYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0
IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKGNvbnN0
IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OwogCiAgICAgICAgIFBhc3NS
ZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBjb3B5KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjJiNzAzYTUzMzM4YWI3NTE1MTU3ZTAxODUyYzhj
MTM2MzY4OTY3ZS4uOGMwZjIwMGNmZTI3NzdmMzVjNTMwNTE1ZWY5ZGVkMGMxMzBjY2E3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNyBAQAogMjAxMS0wNS0yNyAgSm9j
aGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIENoZWNrIGFjY2VzcyBwb2xpY3kgb24gYWxsIHN0b3Jh
Z2Ugb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjE1ODEKKworICAgICAgICAqIHNyYy9TdG9yYWdlQXJlYVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlQXJlYVByb3h5OjprZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQ
cm94eTo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjpzZXRJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6OnJlbW92ZUl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6Y2xlYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZUFyZWFQcm94eTo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUFyZWFQcm94eTo6Y2FuQWNjZXNzU3RvcmFnZSk6CisgICAgICAgICogc3JjL1N0b3JhZ2VB
cmVhUHJveHkuaDoKKyAgICAgICAgKiBzcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWFJbXBsOjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlQXJlYUltcGw6OmtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VB
cmVhSW1wbDo6Z2V0SXRlbSk6CisKKzIwMTEtMDUtMjcgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hl
bkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gZHJvcCB1bnVzZWQgV2ViRnJhbWUgcGFyYW1ldGVyIHRvIFdlYlN0
b3JhZ2VBcmVhOjpzZXRJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TdG9yYWdlQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3Jh
Z2VBcmVhUHJveHkuY3BwCmluZGV4IDRlMjgxN2YyZGI1NGZhYmRiNDBlODdhZjUzNmVjZDM4MDQx
ZGQ4NTEuLjRhODNjMmRkMzBjOGI4ZTg3YjViZDUwM2VjMGQ5NTRhZWMyMWUxOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCkBAIC02Mywy
OCArNjMsMzIgQEAgU3RvcmFnZUFyZWFQcm94eTo6flN0b3JhZ2VBcmVhUHJveHkoKQogewogfQog
Ci11bnNpZ25lZCBTdG9yYWdlQXJlYVByb3h5OjpsZW5ndGgoKSBjb25zdAordW5zaWduZWQgU3Rv
cmFnZUFyZWFQcm94eTo6bGVuZ3RoKEZyYW1lKiBmcmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9zdG9yYWdlQXJlYS0+bGVuZ3RoKCk7CisgICAgaWYgKGNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUp
KQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIDA7
CiB9CiAKLVN0cmluZyBTdG9yYWdlQXJlYVByb3h5OjprZXkodW5zaWduZWQgaW5kZXgpIGNvbnN0
CitTdHJpbmcgU3RvcmFnZUFyZWFQcm94eTo6a2V5KHVuc2lnbmVkIGluZGV4LCBGcmFtZSogZnJh
bWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRleCk7CisgICAg
aWYgKGNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlQXJl
YS0+a2V5KGluZGV4KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBTdG9yYWdl
QXJlYVByb3h5OjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAorU3RyaW5nIFN0b3Jh
Z2VBcmVhUHJveHk6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBmcmFtZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXkpOworICAgIGlmIChj
YW5BY2Nlc3NTdG9yYWdlKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdl
dEl0ZW0oa2V5KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBTdG9yYWdlQXJl
YVByb3h5OjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYywgRnJhbWUqIGZyYW1lKQogewogICAgIFdlYktpdDo6V2ViU3RvcmFn
ZUFyZWE6OlJlc3VsdCByZXN1bHQgPSBXZWJLaXQ6OldlYlN0b3JhZ2VBcmVhOjpSZXN1bHRPSzsK
ICAgICBXZWJLaXQ6OldlYlN0cmluZyBvbGRWYWx1ZTsKLSAgICBXZWJLaXQ6OldlYkZyYW1lSW1w
bCogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKLSAg
ICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJbXBsKCk7Ci0g
ICAgaWYgKHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSAmJiAhd2ViVmlldy0+cGVybWlzc2lv
bkNsaWVudCgpLT5hbGxvd1N0b3JhZ2Uod2ViRnJhbWUsIG1fc3RvcmFnZVR5cGUgPT0gTG9jYWxT
dG9yYWdlKSkKKyAgICBpZiAoIWNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQogICAgICAgICBlYyA9
IFFVT1RBX0VYQ0VFREVEX0VSUjsKICAgICBlbHNlIHsKICAgICAgICAgbV9zdG9yYWdlQXJlYS0+
c2V0SXRlbShrZXksIHZhbHVlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIHJlc3VsdCwgb2xk
VmFsdWUpOwpAQCAtOTgsNiArMTAyLDggQEAgU3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnNldEl0
ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGkKIAogU3Ry
aW5nIFN0b3JhZ2VBcmVhUHJveHk6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1l
KiBmcmFtZSkKIHsKKyAgICBpZiAoIWNhbkFjY2Vzc1N0b3JhZ2UoZnJhbWUpKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgb2xkVmFsdWU7CiAgICAgbV9z
dG9yYWdlQXJlYS0+cmVtb3ZlSXRlbShrZXksIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgb2xk
VmFsdWUpOwogICAgIGlmICghb2xkVmFsdWUuaXNOdWxsKCkpCkBAIC0xMDcsNiArMTEzLDggQEAg
U3RyaW5nIFN0b3JhZ2VBcmVhUHJveHk6OnJlbW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZy
YW1lKiBmcmFtZSkKIAogYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjbGVhcihGcmFtZSogZnJhbWUp
CiB7CisgICAgaWYgKCFjYW5BY2Nlc3NTdG9yYWdlKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGJvb2wgY2xlYXJlZFNvbWV0aGluZzsKICAgICBtX3N0b3JhZ2VBcmVhLT5jbGVh
cihmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIGNsZWFyZWRTb21ldGhpbmcpOwogICAgIGlmIChj
bGVhcmVkU29tZXRoaW5nKQpAQCAtMTE0LDkgKzEyMiw5IEBAIGJvb2wgU3RvcmFnZUFyZWFQcm94
eTo6Y2xlYXIoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBjbGVhcmVkU29tZXRoaW5nOwogfQog
Ci1ib29sIFN0b3JhZ2VBcmVhUHJveHk6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25z
dAorYm9vbCBTdG9yYWdlQXJlYVByb3h5Ojpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRnJh
bWUqIGZyYW1lKSBjb25zdAogewotICAgIHJldHVybiAhZ2V0SXRlbShrZXkpLmlzTnVsbCgpOwor
ICAgIHJldHVybiAhZ2V0SXRlbShrZXksIGZyYW1lKS5pc051bGwoKTsKIH0KIAogLy8gQ29waWVk
IGZyb20gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIG91dCBvZiBu
ZWNlc3NpdHkuICBJdCdzIHByb2JhYmx5IGJlc3QgdG8ga2VlcCBpdCBjdXJyZW50LgpAQCAtMTYy
LDYgKzE3MCwxMyBAQCB2b2lkIFN0b3JhZ2VBcmVhUHJveHk6OnN0b3JhZ2VFdmVudChjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgYwogICAgIH0KIH0KIAorYm9vbCBT
dG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKiBmcmFtZSkgY29uc3QKK3sK
KyAgICBXZWJLaXQ6OldlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6ZnJvbUZyYW1lKGZyYW1lKTsKKyAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0g
d2ViRnJhbWUtPnZpZXdJbXBsKCk7CisgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xp
ZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd1N0b3JhZ2Uod2ViRnJh
bWUsIG1fc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCmluZGV4IGIxNjk4MjgwZWE1MDE3YzU4
MGM2NDgwMDYwNTJjYzZlZGNkZDllOGEuLmZkOTFiYWQ5OWM3MTZkN2RjNWM0ZjE1OTdhNmU2MzQ5
Y2VjNTYxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VB
cmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVBy
b3h5LmgKQEAgLTQzLDE2ICs0MywxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZUFy
ZWFQcm94eSgpOwogCiAgICAgLy8gVGhlIEhUTUw1IERPTSBTdG9yYWdlIEFQSQotICAgIHZpcnR1
YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5KHVuc2ln
bmVkIGluZGV4KSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0IFN0cmlu
ZyYga2V5KSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aChGcmFtZSogc291cmNl
RnJhbWUpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCwgRnJh
bWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRJdGVtKGNvbnN0
IFN0cmluZyYga2V5LCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OwogICAgIHZpcnR1YWwgU3Ry
aW5nIHNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjLCBGcmFtZSogc291cmNlRnJhbWUpOwogICAgIHZpcnR1YWwgU3RyaW5nIHJl
bW92ZUl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAgICAgdmly
dHVhbCBib29sIGNsZWFyKEZyYW1lKiBzb3VyY2VGcmFtZSk7Ci0gICAgdmlydHVhbCBib29sIGNv
bnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJiBrZXksIEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBzdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0
eU9yaWdpbiosIEZyYW1lKiBzb3VyY2VGcmFtZSk7CisgICAgYm9vbCBjYW5BY2Nlc3NTdG9yYWdl
KEZyYW1lKikgY29uc3Q7CiAKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTdG9yYWdlQXJlYT4gbV9z
dG9yYWdlQXJlYTsKICAgICBTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggOWE3ZmQ1
Yzc2ZTgxOTA0NjgxMTRiZTAyNjU3ZTFhMThkZjAxOThhNi4uZGE4MjA4ZjkwNzNiYmM1MGFhZTQz
Y2E2MmM4M2NjNTJkNGEzYWE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTdG9yYWdlQXJlYUltcGwuY3BwCkBAIC01MywxNyArNTMsMTcgQEAgV2ViU3RvcmFnZUFy
ZWFJbXBsOjp+V2ViU3RvcmFnZUFyZWFJbXBsKCkKIAogdW5zaWduZWQgV2ViU3RvcmFnZUFyZWFJ
bXBsOjpsZW5ndGgoKQogewotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5sZW5ndGgoKTsKKyAg
ICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+bGVuZ3RoKDApOwogfQogCiBXZWJTdHJpbmcgV2ViU3Rv
cmFnZUFyZWFJbXBsOjprZXkodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFn
ZUFyZWEtPmtleShpbmRleCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmtleShpbmRleCwg
MCk7CiB9CiAKIFdlYlN0cmluZyBXZWJTdG9yYWdlQXJlYUltcGw6OmdldEl0ZW0oY29uc3QgV2Vi
U3RyaW5nJiBrZXkpCiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmdldEl0ZW0oa2V5KTsK
KyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYS0+Z2V0SXRlbShrZXksIDApOwogfQogCiB2b2lkIFdl
YlN0b3JhZ2VBcmVhSW1wbDo6c2V0SXRlbShjb25zdCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2Vi
U3RyaW5nJiB2YWx1ZSwgY29uc3QgV2ViVVJMJiB1cmwsIFJlc3VsdCYgcmVzdWx0LCBXZWJTdHJp
bmcmIG9sZFZhbHVlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDU3ZDAwZjZmYTMwMGEyOGY2NDFkNWI4ZmEwM2MwNzM5NGYyZjAwMzIuLjQyZWNh
YzBhOWJjMTViMDQzMWIxYzhiMTkwMTM2NjZhNDk4OTYwYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0wNS0y
NyAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRTdG9yYWdlQWxsb3dlZCgpIHRvIGNvbnRyb2wgd2hldGhlciBhY2Nlc3MKKyAgICAgICAgdG8g
dGhlIGxvY2FsU3RvcmFnZSBBUEkgaXMgZW5hYmxlZCB2aWEgdGhlIFdlYlBlcm1pc3Npb25DbGll
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTgx
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFN0b3JhZ2VBbGxvd2VkKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAg
ICAgIChUZXN0U2hlbGw6OlRlc3RTaGVsbCk6CisgICAgICAgIChUZXN0U2hlbGw6OmNyZWF0ZU5l
d1dpbmRvdyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUGVybWlzc2lvbnMuaDogQWRk
ZWQuCisgICAgICAgIChXZWJQZXJtaXNzaW9uczo6V2ViUGVybWlzc2lvbnMpOgorICAgICAgICAo
V2ViUGVybWlzc2lvbnM6OmFsbG93U3RvcmFnZSk6CisgICAgICAgIChXZWJQZXJtaXNzaW9uczo6
c2V0U3RvcmFnZUFsbG93ZWQpOgorICAgICAgICAoV2ViUGVybWlzc2lvbnM6OnJlc2V0KToKKwog
MjAxMS0wNS0yNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHRlc3RpbmcgY29kZSB0aGF0IHNudWNrIGludG8gcjg3NTI4CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
ZDRhYmJjN2RmNzdiZTQwNTE0NmRiYTk3NDBhYWE3ZWFiZDAzYjc2Ny4uZjEzOGU0MDdlNTJiZmIy
NTNkMGE1ZGQzNTZkODEzZGY1NTVhNjJhMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIldlYlBlcm1pc3Np
b25zLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJp
dHlQb2xpY3kuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgpAQCAtMjE0LDYgKzIxNSw3IEBA
IExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNo
ZWxsKQogICAgIGJpbmRNZXRob2QoImRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luKTsKICAgICBiaW5k
TWV0aG9kKCJvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpvYnNlcnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKTsKICAgICBiaW5k
TWV0aG9kKCJzeW5jTG9jYWxTdG9yYWdlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzeW5jTG9j
YWxTdG9yYWdlKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRTdG9yYWdlQWxsb3dlZCIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0U3RvcmFnZUFsbG93ZWQpOwogICAgIAogICAgIC8vIFRoZSBmYWxs
YmFjayBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gdW5rbm93biBtZXRob2QgaXMgaW52b2tlZC4K
ICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJkxheW91dFRlc3RDb250cm9sbGVyOjpmYWxsYmFja01l
dGhvZCk7CkBAIC0xODIwLDYgKzE4MjIsMTMgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c3luY0xvY2FsU3RvcmFnZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KikKICAg
ICAvLyBOb3QgSW1wbGVtZW50ZWQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
U3RvcmFnZUFsbG93ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRz
WzBdLmlzQm9vbCgpKQorICAgICAgICBtX3NoZWxsLT53ZWJQZXJtaXNzaW9ucygpLT5zZXRTdG9y
YWdlQWxsb3dlZChhcmd1bWVudHNbMF0udG9Cb29sZWFuKCkpOworICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQbHVnaW5zRW5hYmxlZChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCmluZGV4IDI1MmQ0ZjExMTk5NGUyNjllMmY3Mjg5OWRiYmEyNmNkNTlkMzg5NjAuLjli
MTcxMGYzNmFjNWVlMGE4NDdmYjFkODMzZjc3ZGMzMjVkNzVmZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzY5
LDYgKzM2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvY2FsU3RvcmFnZURpc2tVc2FnZUZvck9y
aWdpbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBvYnNl
cnZlU3RvcmFnZVRyYWNrZXJOb3RpZmljYXRpb25zKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0U3RvcmFnZUFsbG93ZWQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8gRW5hYmxlIG9yIGRpc2FibGUg
cGx1Z2lucy4KICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGwuY3BwCmluZGV4IGU4OGY0MGY5MDYxMTYyMmRlZmJiYThiN2EzNTM1MzE5OTcxNGEyZjQuLmEy
OThmZjcxODY3OGVlMWZlNTcxYTE1NTliZjJiMDQ0NWQwYzZjYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJX
ZWJLaXQuaCIKKyNpbmNsdWRlICJXZWJQZXJtaXNzaW9ucy5oIgogI2luY2x1ZGUgIldlYlJ1bnRp
bWVGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJXZWJTZXR0aW5ncy5oIgpAQCAtMTEzLDYgKzExNCw3IEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxs
KGJvb2wgdGVzdFNoZWxsTW9kZSkKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUluZGV4
ZWREYXRhYmFzZSh0cnVlKTsKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUZpbGVTeXN0
ZW0odHJ1ZSk7CiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVKYXZhU2NyaXB0STE4TkFQ
SSh0cnVlKTsKKyAgICBtX3dlYlBlcm1pc3Npb25zID0gYWRvcHRQdHIobmV3IFdlYlBlcm1pc3Np
b25zKCkpOwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIodGhpcykpOwogICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXIg
PSBhZG9wdFB0cihuZXcgTGF5b3V0VGVzdENvbnRyb2xsZXIodGhpcykpOwogICAgIG1fZXZlbnRT
ZW5kZXIgPSBhZG9wdFB0cihuZXcgRXZlbnRTZW5kZXIodGhpcykpOwpAQCAtMjQyLDYgKzI0NCw3
IEBAIHZvaWQgVGVzdFNoZWxsOjpyZXNpemVXaW5kb3dGb3JUZXN0KFdlYlZpZXdIb3N0KiB3aW5k
b3csIGNvbnN0IFdlYlVSTCYgdXJsKQogdm9pZCBUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xs
ZXIoKQogewogICAgIHJlc2V0V2ViU2V0dGluZ3MoKndlYlZpZXcoKSk7CisgICAgbV93ZWJQZXJt
aXNzaW9ucy0+cmVzZXQoKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5yZXNldCgp
OwogICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPnJlc2V0KCk7CiAgICAgbV9ldmVudFNlbmRl
ci0+cmVzZXQoKTsKQEAgLTU5Niw2ICs1OTksNyBAQCBXZWJWaWV3SG9zdCogVGVzdFNoZWxsOjpj
cmVhdGVOZXdXaW5kb3coY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwgRFJURGV2VG9vbHNBZwog
ewogICAgIFdlYlZpZXdIb3N0KiBob3N0ID0gbmV3IFdlYlZpZXdIb3N0KHRoaXMpOwogICAgIFdl
YlZpZXcqIHZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoaG9zdCk7CisgICAgdmlldy0+c2V0UGVybWlz
c2lvbkNsaWVudCh3ZWJQZXJtaXNzaW9ucygpKTsKICAgICB2aWV3LT5zZXREZXZUb29sc0FnZW50
Q2xpZW50KGRldlRvb2xzQWdlbnQpOwogICAgIGhvc3QtPnNldFdlYldpZGdldCh2aWV3KTsKICAg
ICBtX3ByZWZzLmFwcGx5VG8odmlldyk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbC5oCmluZGV4IDJkYjRjOTRhMDRhZDliNDA0NWRmMDljOTA1MmNiODIzN2JkZDViOWQu
LjMzNzY1N2Y0NTliNzI5MmZlMWY1YWEyZGNjZjMyMTJmZjRhOWYzNGYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCkBAIC01OCw2ICs1OCw3IEBAIGNsYXNzIFdl
YlVSTDsKIGNsYXNzIERSVERldlRvb2xzQWdlbnQ7CiBjbGFzcyBEUlREZXZUb29sc0NhbGxBcmdz
OwogY2xhc3MgRFJURGV2VG9vbHNDbGllbnQ7CitjbGFzcyBXZWJQZXJtaXNzaW9uczsKIAogc3Ry
dWN0IFRlc3RQYXJhbXMgewogICAgIGJvb2wgZHVtcFRyZWU7CkBAIC05Niw2ICs5Nyw4IEBAIHB1
YmxpYzoKICAgICBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSB7IHJldHVybiAmbV9wcmVm
czsgfQogICAgIHZvaWQgYXBwbHlQcmVmZXJlbmNlcygpIHsgbV9wcmVmcy5hcHBseVRvKG1fd2Vi
Vmlldyk7IH0KIAorICAgIFdlYlBlcm1pc3Npb25zKiB3ZWJQZXJtaXNzaW9ucygpIHsgcmV0dXJu
IG1fd2ViUGVybWlzc2lvbnMuZ2V0KCk7IH0KKwogICAgIHZvaWQgYmluZEpTT2JqZWN0c1RvV2lu
ZG93KFdlYktpdDo6V2ViRnJhbWUqKTsKICAgICB2b2lkIHJ1bkZpbGVUZXN0KGNvbnN0IFRlc3RQ
YXJhbXMmKTsKICAgICB2b2lkIGNhbGxKU0dDKCk7CkBAIC0xOTEsNiArMTk0LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fdGVzdFNoZWxsTW9kZTsKICAgICBXZWJWaWV3SG9zdCogbV93ZWJWaWV3
SG9zdDsKICAgICBXZWJWaWV3SG9zdCogbV9kZXZUb29sczsKKyAgICBPd25QdHI8V2ViUGVybWlz
c2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7CiAgICAgT3duUHRyPERSVERldlRvb2xzQWdlbnQ+IG1f
ZHJ0RGV2VG9vbHNBZ2VudDsKICAgICBPd25QdHI8RFJURGV2VG9vbHNDbGllbnQ+IG1fZHJ0RGV2
VG9vbHNDbGllbnQ7CiAgICAgT3duUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViUGVybWlzc2lvbnMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlBlcm1pc3Npb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVhZDZmYzBkZWM0NzNkNzk2ZTJmNDZmZWZiZWY2
ZDE1NDM2ZDFiNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlBlcm1pc3Npb25zLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGVybWlzc2lv
bnNfaAorI2RlZmluZSBXZWJQZXJtaXNzaW9uc19oCisKKyNpbmNsdWRlICJXZWJQZXJtaXNzaW9u
Q2xpZW50LmgiCisKK2NsYXNzIFdlYlBlcm1pc3Npb25zIDogcHVibGljIFdlYktpdDo6V2ViUGVy
bWlzc2lvbkNsaWVudCB7CitwdWJsaWM6CisgICAgV2ViUGVybWlzc2lvbnMoKSA6IG1fc3RvcmFn
ZUFsbG93ZWQodHJ1ZSkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTdG9yYWdlKFdlYktp
dDo6V2ViRnJhbWUqLCBib29sIGxvY2FsKSB7IHJldHVybiBtX3N0b3JhZ2VBbGxvd2VkOyB9CisK
KyAgICAvLyBTZXRzIHRoZSBwb2xpY3kgd2hldGhlciB0byBhbGxvdyBzdG9yYWdlIG9yIG5vdC4K
KyAgICB2b2lkIHNldFN0b3JhZ2VBbGxvd2VkKGJvb2wgc3RvcmFnZUFsbG93ZWQpIHsgbV9zdG9y
YWdlQWxsb3dlZCA9IHN0b3JhZ2VBbGxvd2VkOyB9CisKKyAgICAvLyBSZXNldHMgdGhlIHBvbGlj
eSB0byBhbGxvdyBhbGwgYWNjZXNzLgorICAgIHZvaWQgcmVzZXQoKSB7IG1fc3RvcmFnZUFsbG93
ZWQgPSB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3N0b3JhZ2VBbGxvd2VkOworfTsK
KworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>