<?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>80103</bug_id>
          
          <creation_ts>2012-03-01 22:33:40 -0800</creation_ts>
          <short_desc>[WebSocket] Should raise SYNTAX_ERR when message contains unpaired surrogates</short_desc>
          <delta_ts>2012-03-07 01:42:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          <dependson>80356</dependson>
    
    <dependson>80385</dependson>
          <blocked>76198</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joenotcharles</cc>
    
    <cc>ossy</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tkent</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>569284</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-01 22:33:40 -0800</bug_when>
    <thetext>See Chromium bug entry: http://crbug.com/116408
WebSocket message and close reason should not contain unpaired surrogates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569289</commentid>
    <comment_count>1</comment_count>
      <attachid>129824</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-01 22:39:23 -0800</bug_when>
    <thetext>Created attachment 129824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569291</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-01 22:42:23 -0800</bug_when>
    <thetext>Hi Kent-san, Alexey,

Could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569297</commentid>
    <comment_count>3</comment_count>
      <attachid>129824</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-01 22:47:05 -0800</bug_when>
    <thetext>Comment on attachment 129824
Patch

https://www.w3.org/Bugs/Public/show_bug.cgi?id=16157

There is a discussion for this check. I&apos;ll make consensus before review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569300</commentid>
    <comment_count>4</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-01 22:47:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; There is a discussion for this check. I&apos;ll make consensus before review.

s/I&apos;ll make/I&apos;d like to make/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569421</commentid>
    <comment_count>5</comment_count>
      <attachid>129824</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 01:36:31 -0800</bug_when>
    <thetext>Comment on attachment 129824
Patch

Attachment 129824 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11779859

New failing tests:
http/tests/websocket/tests/hybi/unpaired-surrogates-in-message.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569734</commentid>
    <comment_count>6</comment_count>
      <attachid>129824</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-03-02 10:12:22 -0800</bug_when>
    <thetext>Comment on attachment 129824
Patch

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

Current spec say that we must raise SYNTAX_ERROR.
So fixing this issue sounds good.

I refer the discussion in order to justify that I think this is low priority issue.

Please request a review of Kent-san.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:113
&gt; +        if (U16_IS_LEAD(message[index])) {

If you increment &apos;index&apos; at first, following operation &apos;- 1&apos; and &apos;+ 1&apos; could be removed :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569770</commentid>
    <comment_count>7</comment_count>
      <attachid>129824</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-03-02 11:00:50 -0800</bug_when>
    <thetext>Comment on attachment 129824
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:108
&gt; +    // FIXME: Any other errors except for unpaired surrogates?

I think String::utf8(true) will do the trick, including checking unpaired surrogates. If we do this, however, we convert the same string twice in both WebSocket and WebSocketChannel, which may affect the performance.

There will probably be two options:
(a) Let WebSocket convert the message into CString and pass it to WebSocketChannel.
(b) Let WebSocketChannel convert and validate a String, and return a value indicating a conversion error upon failure.

(a) sounds a bit strange, because WebSocketChannel is responsible for converting Blob and ArrayBuffer into CString. However, WebSocketChannel already accepts send(const char*, int) for PPAPI implementation purposes, so this might be okay.

(b) looks cleaner, but imposes an extra roundtrip between loader and worker if that WebSocket is on workers. The cost should be slight and negligible, though.

I think (b) would be better, but a patch for (b) will look hairy due to boilerplates of loader-worker bridge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570389</commentid>
    <comment_count>8</comment_count>
      <attachid>130050</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-04 20:24:20 -0800</bug_when>
    <thetext>Created attachment 130050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570391</commentid>
    <comment_count>9</comment_count>
      <attachid>129824</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-04 20:32:23 -0800</bug_when>
    <thetext>Comment on attachment 129824
Patch

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

Thank you for comments!

&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:108
&gt;&gt; +    // FIXME: Any other errors except for unpaired surrogates?
&gt; 
&gt; I think String::utf8(true) will do the trick, including checking unpaired surrogates. If we do this, however, we convert the same string twice in both WebSocket and WebSocketChannel, which may affect the performance.
&gt; 
&gt; There will probably be two options:
&gt; (a) Let WebSocket convert the message into CString and pass it to WebSocketChannel.
&gt; (b) Let WebSocketChannel convert and validate a String, and return a value indicating a conversion error upon failure.
&gt; 
&gt; (a) sounds a bit strange, because WebSocketChannel is responsible for converting Blob and ArrayBuffer into CString. However, WebSocketChannel already accepts send(const char*, int) for PPAPI implementation purposes, so this might be okay.
&gt; 
&gt; (b) looks cleaner, but imposes an extra roundtrip between loader and worker if that WebSocket is on workers. The cost should be slight and negligible, though.
&gt; 
&gt; I think (b) would be better, but a patch for (b) will look hairy due to boilerplates of loader-worker bridge.

Took (b) for send(). As for close(), there is already a utf8() call in the close() so I just changed it to be strict. I think it unlikely affects the performance because the valid length of the reason is limited.

&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:113
&gt;&gt; +        if (U16_IS_LEAD(message[index])) {
&gt; 
&gt; If you increment &apos;index&apos; at first, following operation &apos;- 1&apos; and &apos;+ 1&apos; could be removed :-)

Good catch:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570392</commentid>
    <comment_count>10</comment_count>
      <attachid>130050</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-04 20:32:53 -0800</bug_when>
    <thetext>Comment on attachment 130050
Patch

Attachment 130050 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11801776</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570394</commentid>
    <comment_count>11</comment_count>
      <attachid>130053</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-04 20:57:34 -0800</bug_when>
    <thetext>Created attachment 130053
Patch(Attempt QT build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570863</commentid>
    <comment_count>12</comment_count>
      <attachid>130053</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-03-05 11:19:36 -0800</bug_when>
    <thetext>Comment on attachment 130053
Patch(Attempt QT build fix)

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

Looks good to me.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:356
&gt; +        if (utf8.length() &gt; maxReasonSizeInBytes) {
&gt; +            ec = SYNTAX_ERR;
&gt; +            return;
&gt; +        }

Could you add a console message in this case as well?

optional: I suggest putting utf8.length() after utf8.isNull() located below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571130</commentid>
    <comment_count>13</comment_count>
      <attachid>130220</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-05 16:08:14 -0800</bug_when>
    <thetext>Created attachment 130220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571131</commentid>
    <comment_count>14</comment_count>
      <attachid>130053</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-05 16:08:57 -0800</bug_when>
    <thetext>Comment on attachment 130053
Patch(Attempt QT build fix)

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

Yuta-san,

Thank you for review!

&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:356
&gt;&gt; +        }
&gt; 
&gt; Could you add a console message in this case as well?
&gt; 
&gt; optional: I suggest putting utf8.length() after utf8.isNull() located below.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571132</commentid>
    <comment_count>15</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-05 16:09:38 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=130220) [details]
&gt; Patch

Kent-san, could you review the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571187</commentid>
    <comment_count>16</comment_count>
      <attachid>130220</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-05 16:50:30 -0800</bug_when>
    <thetext>Comment on attachment 130220
Patch

The approach is ok.  But would you separate this into two please?
1. Introduce ThreadableWebSocketChannel::SendResult
2. Add surrogate pair checking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571232</commentid>
    <comment_count>17</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-05 17:18:20 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 130220 [details])
&gt; The approach is ok.  But would you separate this into two please?
&gt; 1. Introduce ThreadableWebSocketChannel::SendResult
&gt; 2. Add surrogate pair checking

Sure. I uploaded a patch for (1) as bug 80356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571334</commentid>
    <comment_count>18</comment_count>
      <attachid>130260</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-05 18:29:53 -0800</bug_when>
    <thetext>Created attachment 130260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571339</commentid>
    <comment_count>19</comment_count>
      <attachid>130260</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-05 18:32:20 -0800</bug_when>
    <thetext>Comment on attachment 130260
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571340</commentid>
    <comment_count>20</comment_count>
      <attachid>130260</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-05 18:33:13 -0800</bug_when>
    <thetext>Comment on attachment 130260
Patch

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571411</commentid>
    <comment_count>21</comment_count>
      <attachid>130260</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 20:21:03 -0800</bug_when>
    <thetext>Comment on attachment 130260
Patch

Clearing flags on attachment: 130260

Committed r109840: &lt;http://trac.webkit.org/changeset/109840&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571412</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 20:21:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571416</commentid>
    <comment_count>23</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-05 20:23:50 -0800</bug_when>
    <thetext>*** Bug 69405 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571671</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-06 02:06:23 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 130260 [details])
&gt; Clearing flags on attachment: 130260
&gt; 
&gt; Committed r109840: &lt;http://trac.webkit.org/changeset/109840&gt;

The new tests fail on Qt with the following strange diffs:
--- /ramdisk/qt-linux-64-release/build/layout-test-results/http/tests/websocket/tests/hybi/unpaired-surrogates-in-close-reason-expected.txt 
+++ /ramdisk/qt-linux-64-release/build/layout-test-results/http/tests/websocket/tests/hybi/unpaired-surrogates-in-close-reason-actual.txt 
@@ -4,7 +4,7 @@
 On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
 
 Connected.
-PASS ws.close(1000, &apos;í &apos;); threw exception Error: SYNTAX_ERR: DOM Exception 12.
+PASS ws.close(1000, &apos;); threw exception Error: SYNTAX_ERR: DOM Exception 12.
 PASS successfullyParsed is true
 
 TEST COMPLETE


--- /ramdisk/qt-linux-64-release/build/layout-test-results/http/tests/websocket/tests/hybi/unpaired-surrogates-in-message-expected.txt 
+++ /ramdisk/qt-linux-64-release/build/layout-test-results/http/tests/websocket/tests/hybi/unpaired-surrogates-in-message-actual.txt 
@@ -4,7 +4,7 @@
 On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
 
 Connected.
-PASS ws.send(&apos;í &apos;); threw exception Error: SYNTAX_ERR: DOM Exception 12.
+PASS ws.send(&apos;); threw exception Error: SYNTAX_ERR: DOM Exception 12.
 PASS successfullyParsed is true
 
 TEST COMPLETE


They say PASS, but the strings are absolutely wrong. Have you got any idea what is wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571675</commentid>
    <comment_count>25</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-06 02:12:59 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; -PASS ws.send(&apos;í &apos;); threw exception Error: SYNTAX_ERR: DOM Exception 12.
&gt; +PASS ws.send(&apos;); threw exception Error: SYNTAX_ERR: DOM Exception 12.
&gt;  PASS successfullyParsed is true
&gt; 
&gt;  TEST COMPLETE
&gt; 
&gt; 
&gt; They say PASS, but the strings are absolutely wrong. Have you got any idea what is wrong?

They look similar to https://bugs.webkit.org/show_bug.cgi?id=78541#c8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571679</commentid>
    <comment_count>26</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-06 02:18:04 -0800</bug_when>
    <thetext>(In reply to comment #25)

&gt; They look similar to https://bugs.webkit.org/show_bug.cgi?id=78541#c8

Similar, but not same. In bug78451 the character is different, but here the character and the closing apostrophe is absolutely missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571705</commentid>
    <comment_count>27</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-06 03:41:30 -0800</bug_when>
    <thetext>(In reply to comment #24)
 
&gt; They say PASS, but the strings are absolutely wrong. Have you got any idea what is wrong?

I&apos;m not sure where the difference came from, but the original string is an invalid UTF8 character(an unpaired surogate) so the string is essentially broken. I think the root cause is the same of https://bugs.webkit.org/show_bug.cgi?id=78541#c8. Looks like the tests were essentially passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572036</commentid>
    <comment_count>28</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-06 11:51:02 -0800</bug_when>
    <thetext>Reverted r109840 for reason:

Broke WebSocket tests on Chrome Mac and Linux

Committed r109941: &lt;http://trac.webkit.org/changeset/109941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572040</commentid>
    <comment_count>29</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-06 11:56:44 -0800</bug_when>
    <thetext>Sorry, this change didn&apos;t actually break the tests, but it was causing conflicts with the rollout of the one that did (https://bugs.webkit.org/show_bug.cgi?id=80356) so I rolled them both out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572530</commentid>
    <comment_count>30</comment_count>
      <attachid>130542</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-06 22:11:11 -0800</bug_when>
    <thetext>Created attachment 130542
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572531</commentid>
    <comment_count>31</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-06 22:13:13 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Created an attachment (id=130542) [details]
&gt; Patch for landing

Minor change in tests. Don&apos;t use shouldThrow() to workaround QT failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572678</commentid>
    <comment_count>32</comment_count>
      <attachid>130542</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 01:09:55 -0800</bug_when>
    <thetext>Comment on attachment 130542
Patch for landing

Rejecting attachment 130542 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/11832870</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572698</commentid>
    <comment_count>33</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-07 01:42:04 -0800</bug_when>
    <thetext>Committed r110037: &lt;http://trac.webkit.org/changeset/110037&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129824</attachid>
            <date>2012-03-01 22:39:23 -0800</date>
            <delta_ts>2012-03-04 20:32:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80103-20120302153921.patch</filename>
            <type>text/plain</type>
            <size>8909</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM4MGVjNjFkMzY4NmVj
ZDRjZmVmZjFmMzAyMjYzNDUxZWU2ODM5YS4uOTEzZDUzOWQ3YTI2MmQ2YmMyNThmZjBjYjMyNTYz
MjhkM2FlMmMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTAxICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBTaG91bGQgcmFpc2UgU1lOVEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQg
c3Vycm9nYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaGVja3MgdW5wYWlyZWQgc3Vycm9nYXRlcyBpbiBXZWJTb2NrZXQgbWVzc2FnZSBhbmQgY2xv
c2UgcmVhc29uLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1p
bi1tZXNzYWdlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZE1lc3NhZ2UpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5kKTogQ2FsbHMgaXNW
YWxpZE1lc3NhZ2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOiBEaXR0
by4KKwogMjAxMi0wMy0wMSAgUGV0ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CiAK
ICAgICAgICAgRGVjb3VwbGUgc2Nyb2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCAzNmRiYjZmMzJjMjQ5ODNjMjBmODU4ZTBkYWM3NzYxZmI2OWIxMmE0Li4zZmQwZTVkMzI3
MGZlZTY4YTk0ZmJhNDUzYzk4MTIxODc1ZGEyOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTAzLDYgKzEwMywyMiBAQCBzdGF0
aWMgYm9vbCBpc1ZhbGlkUHJvdG9jb2xTdHJpbmdIaXhpZTc2KGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGlzVmFsaWRNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICAvLyBGSVhNRTogQW55IG90aGVyIGVycm9ycyBl
eGNlcHQgZm9yIHVucGFpcmVkIHN1cnJvZ2F0ZXM/CisgICAgc2l6ZV90IGxlbmd0aCA9IG1lc3Nh
Z2UubGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3Ro
OyArK2luZGV4KSB7CisgICAgICAgIGlmIChVMTZfSVNfVFJBSUwobWVzc2FnZVtpbmRleF0pKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoVTE2X0lTX0xFQUQobWVzc2Fn
ZVtpbmRleF0pKSB7CisgICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggLSAxIHx8ICFVMTZf
SVNfVFJBSUwobWVzc2FnZVtpbmRleCArIDFdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCiBzdGF0aWMgU3RyaW5nIGVuY29kZVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpAQCAtMjg4LDcgKzMw
NCwxMSBAQCBib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNhdHVy
YXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBnZXRGcmFtaW5nT3ZlcmhlYWQocGF5
bG9hZFNpemUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAvLyBGSVhNRTog
Y2hlY2sgbWVzc2FnZSBpcyB2YWxpZCB1dGY4LgorICAgIGlmICghaXNWYWxpZE1lc3NhZ2UobWVz
c2FnZSkpIHsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVz
c2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IldlYlNvY2tldCBtZXNzYWdlIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyKHMpLiIpOworICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAg
QVNTRVJUKG1fY2hhbm5lbCk7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsK
IH0KQEAgLTM0MywxMSArMzYzLDE1IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IGlmIHJlYXNvbiBjb250YWlucyBhbnkgdW5wYWlyZWQgc3Vycm9nYXRl
cywgcmFpc2UgU1lOVEFYX0VSUi4KICAgICAgICAgaWYgKHJlYXNvbi51dGY4KCkubGVuZ3RoKCkg
PiBtYXhSZWFzb25TaXplSW5CeXRlcykgewogICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGlmICghaXNWYWxpZE1lc3Nh
Z2UocmVhc29uKSkgeworICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRD
b25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIldlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGNvbnRhaW5zIGludmFsaWQgY2hhcmFj
dGVyKHMpLiIpOworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORyB8fCBt
X3N0YXRlID09IENMT1NFRCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZWI2ZjRmMDI5M2YxNDJlZTVmZWY2MmVmZTQ4YmJm
ZGQ3MzNiZmRlLi41YTllMWE3ZWRjNmM4MzBjNjIyNzIxNGRhZDdlNTYxYzJlNzdhZDk2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMDEgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFNob3VsZCByYWlzZSBTWU5UQVhf
RVJSIHdoZW4gbWVzc2FnZSBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDEwMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgdW5wYWly
ZWQgc3Vycm9nYXRlcyBjaGVjayBmb3IgV2ViU29ja2V0IG1lc3NhZ2UgYW5kIGNsb3NlIHJlYXNv
bi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQt
c3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4t
Y2xvc2UtcmVhc29uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1tZXNzYWdlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJl
ZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMDEgIERpcmsg
UHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgY2hyb21pdW06IHN0YXJ0
IHJ1bm5pbmcgdmlydHVhbCBncHUgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1y
ZWFzb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjdiOWU1MWJlNzE1MzY1YzVhNGVhOTBlNjJlNjQwZDExZmIwNjJmNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IGNsb3NlIG1lc3NhZ2UgY29u
dGFpbnMgaW52YWxpZCBjaGFyYWN0ZXIocykuCitDaGVja3Mgd2hldGhlciBTWU5UQVhfRVJSIGlz
IHRocm93biB3aGVuIGF0dGVtcGluZyB0byBjbG9zZSB0aGUgY29ubmVjdGlvbiB3aXRoIHVucGFp
cmVkIHN1cnJvZ2F0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworQ29ubmVjdGVk
LgorUEFTUyB3cy5jbG9zZSgxMDAwLCAn7aCHJyk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFp
cmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhiZGYyYTFl
ZTllMjliOWIwZTZiZWJmZmU0ZWYzZWU0NTg1Nzc3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRl
cy1pbi1jbG9zZS1yZWFzb24uaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNj
cmlwdGlvbigiQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBhdHRlbXBp
bmcgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aCB1bnBhaXJlZCBzdXJyb2dhdGVzLiIpOwor
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBuZXcg
V2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8i
KTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJDb25uZWN0ZWQuIik7
CisgICAgc2hvdWxkVGhyb3coIndzLmNsb3NlKDEwMDAsICdcdUQ4MDcnKTsiKTsKKyAgICB3cy5j
bG9zZSgpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KQoreworICAgIHZh
ciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMg
Y2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7Cit9OworCit3cy5vbmNs
b3NlID0gZnVuY3Rpb24oKQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1t
ZXNzYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mODE2MzM4NmJkMzE1ODk1NGFlMTVkMDI1NDc5YjMwMjE4MjBkNjFiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEg
QEAKK0NPTlNPTEUgTUVTU0FHRTogSW52YWxpZCBjaGFyYWN0ZXJzIGRldGVjdGVkIGR1cmluZyBX
ZWJTb2NrZXQgbWVzc2FnZSBzZW5kaW5nLgorQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0
aHJvd24gd2hlbiBhdHRlbXBpbmcgdG8gc2VuZCB1bnBhaXJlZCBzdXJyb2dhdGVzLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Nvbm5lY3RlZC4KK1BBU1Mgd3Muc2VuZCgn7aCHJyk7
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVk
LXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MTMwZjg3YzRkMTQ2MTE0MGVhOTU2YWE1NzI0OWFmZGNiNDRjYzkxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CitkZXNjcmlwdGlvbigiQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24g
d2hlbiBhdHRlbXBpbmcgdG8gc2VuZCB1bnBhaXJlZCBzdXJyb2dhdGVzLiIpOworCit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0
KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKKword3Mu
b25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJDb25uZWN0ZWQuIik7CisgICAgc2hv
dWxkVGhyb3coIndzLnNlbmQoJ1x1RDgwNycpOyIpOworfTsKKword3Mub25tZXNzYWdlID0gZnVu
Y3Rpb24gKGV2ZW50KQoreworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0
RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2Ug
KyAiXCIpIik7CisgICAgd3MuY2xvc2UoKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbigp
Cit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130050</attachid>
            <date>2012-03-04 20:24:20 -0800</date>
            <delta_ts>2012-03-04 20:57:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80103-20120305132419.patch</filename>
            <type>text/plain</type>
            <size>28858</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk1OTkzMjZlZDdjYjU3
ZTUxOTI0ZGQxZWZlODE2ZjQzOTdlMWZkNy4uMjIyMDM3YWFmNGZkZDQ5NTI1Y2EwZTIwZmZiODJk
MGI2NWJiOWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTA0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBTaG91bGQgcmFpc2UgU1lOVEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQg
c3Vycm9nYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdXRmOCB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgV2ViU29ja2V0IG1lc3NhZ2UgYW5kIGNs
b3NlIHJlYXNvbi4KKyAgICAgICAgSW50cm9kdWNlZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCB0eXBlIHNvIHRoYXQKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbCBjYW4g
cGFzcyB0aGUgdmFsaWRhdGlvbiByZXN1bHQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24u
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBh
aXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6IEFkZGVkIFNlbmRSZXN1bHQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OnNlbmRSZXF1ZXN0UmVzdWx0KTogVXNlIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kUmVzdWx0IGluc3RlYWQgb2YgYm9vbC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6c2V0U2VuZFJlcXVlc3RSZXN1bHQpOiBE
aXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmg6CisgICAgICAgIChUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5kKTogUmFpc2UgU1lOVEFYX0VS
UiBpZiB0aGUgbWVzc2FnZSBpcyBpbnZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpjbG9zZSk6IFJhaXNlIFNZTlRBWF9FUlIgaWYgdGhlIHJlYXNvbiBpcyBpbnZhbGlkLgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOiBBZGRlZCB1dGY4IHZhbGlkYXRpb24g
Y2hlY2suCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZy
YW1lKTogVXNlIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IGluc3RlYWQg
b2YgYm9vbC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRn
b2luZ0ZyYW1lUXVldWUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChR
dWV1ZWRGcmFtZSk6IENoYW5nZWQgdGhlIHR5cGUgb2Ygc3RyaW5nRGF0YSBmcm9tIFN0cmluZyB0
byBDU3RyaW5nLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6IFVzZSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBpbnN0ZWFkIG9mIGJvb2wuCisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250
ZXh0RGlkU2VuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOiBEaXR0by4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaDoKKyAgICAgICAgKFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKTogZGl0dG8u
CisgICAgICAgIChCcmlkZ2UpOiBEaXR0by4KKwogMjAxMi0wMy0wNCAgUm9iaW4gQ2FvICA8cm9i
aW4uY2FvQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJl
YW0gdHdvIGhlbHBlciBmaWxlcyBmcm9tIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYTE0NTgyYThmZDhiYzNiZWRkNzY5Mjk3M2Qx
MDAyYTYxMzEyMjA5ZS4uMzJlYThhYWUxZmFmZDFmMjBhYWQ5MjM3MzdiNzYyODkyOTAxZjliNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTUwLDEzICs1MCwxOSBAQCBwdWJsaWM6
CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSB7IH0KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Kik7CiAKKyAgICBlbnVtIFNlbmRSZXN1bHQg
eworICAgICAgICBTZW5kU3VjY2VzcywKKyAgICAgICAgU2VuZEZhaWwsCisgICAgICAgIEludmFs
aWRNZXNzYWdlCisgICAgfTsKKwogICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2wo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsg
Ly8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9r
ZWQuCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpID0gMDsgLy8gV2lsbCBiZSBhdmFp
bGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCi0gICAgdmlydHVh
bCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgQmxvYiYpID0gMDsKKyAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1
ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgPSAw
OwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9
IDA7CiAgICAgLy8gTG9nIHRoZSByZWFzb24gdGV4dCBhbmQgY2xvc2UgdGhlIGNvbm5lY3Rpb24u
IFdpbGwgY2FsbCBkaWRDbG9zZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCBkY2IxODAyYTI4OThiZjNiODg0NzUxZWY4NzMw
ZTIzYmM3NTEwNmQ3Li45YTRmM2ZhMjMzMTJkODVlOWVlMDM1MDdjMDM0MTVhNGZhOTAyNzBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcgogICAgICwgbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV9zeW5jTWV0aG9kRG9uZSh0cnVlKQogICAgICwgbV91c2VIaXhp
ZTc2UHJvdG9jb2wodHJ1ZSkKLSAgICAsIG1fc2VuZFJlcXVlc3RSZXN1bHQoZmFsc2UpCisgICAg
LCBtX3NlbmRSZXF1ZXN0UmVzdWx0KFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFp
bCkKICAgICAsIG1fYnVmZmVyZWRBbW91bnQoMCkKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQog
ewpAQCAtMTEyLDEyICsxMTIsMTIgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMoY29uc3QgU3RyaW5nJiBleHRlbnMKICAgICAgICAg
bWVtY3B5KG1fZXh0ZW5zaW9ucy5kYXRhKCksIGV4dGVuc2lvbnMuY2hhcmFjdGVycygpLCBzaXpl
b2YoVUNoYXIpICogbGVuZ3RoKTsKIH0KIAotYm9vbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OnNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3QKK1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6c2VuZFJlcXVlc3RSZXN1bHQoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlbmRS
ZXF1ZXN0UmVzdWx0OwogfQogCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6c2V0U2VuZFJlcXVlc3RSZXN1bHQoYm9vbCBzZW5kUmVxdWVzdFJlc3VsdCkKK3Zv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzZXRTZW5kUmVxdWVz
dFJlc3VsdChUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVz
dFJlc3VsdCkKIHsKICAgICBtX3NlbmRSZXF1ZXN0UmVzdWx0ID0gc2VuZFJlcXVlc3RSZXN1bHQ7
CiAgICAgbV9zeW5jTWV0aG9kRG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKaW5kZXggNGI5YjdmZGU3MmI5Y2YwZTY5NzAzOTkw
Y2JhZDZhZTcyNzcyMTc0Yy4uYmZkMTA2MzgxZjFiMjFiMjM0ZTI5MDQwNmU4Mzg2MjZjZjgxNjM5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
aApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC02Niw4ICs2
Nyw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZXh0ZW5zaW9ucygpIGNvbnN0OwogICAgIHZvaWQg
c2V0RXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmKTsKIAotICAgIGJvb2wgc2VuZFJlcXVlc3RSZXN1
bHQoKSBjb25zdDsKLSAgICB2b2lkIHNldFNlbmRSZXF1ZXN0UmVzdWx0KGJvb2wpOworICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRTZW5kUmVxdWVzdFJlc3VsdChUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCk7CiAKICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nKTsKQEAg
LTEwNCw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIC8vIFRocmVhZFNhZmVSZWZDb3VudGVkIG11
c3Qgbm90IGhhdmUgU3RyaW5nIG1lbWJlciB2YXJpYWJsZXMuCiAgICAgVmVjdG9yPFVDaGFyPiBt
X3N1YnByb3RvY29sOwogICAgIFZlY3RvcjxVQ2hhcj4gbV9leHRlbnNpb25zOwotICAgIGJvb2wg
bV9zZW5kUmVxdWVzdFJlc3VsdDsKKyAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBtX3NlbmRSZXF1ZXN0UmVzdWx0OwogICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJl
ZEFtb3VudDsKICAgICBib29sIG1fc3VzcGVuZGVkOwogICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPiBtX3BlbmRpbmdUYXNrczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggN2RkODU0ZWQxNTJh
MzIxZjA0OTIxMTJjZTU1YTdmMTA5ZTg5MzNlNy4uMzAzMmVjNjk2ZTJhYTc0MDJlNzY3YTMzM2Q3
YTkzMjVhNGE0YWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKQEAgLTI5MCw3ICsyOTAsMTMgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAgICAgLy8g
RklYTUU6IGNoZWNrIG1lc3NhZ2UgaXMgdmFsaWQgdXRmOC4KICAgICBBU1NFUlQobV9jaGFubmVs
KTsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOworICAgIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHJlc3VsdCA9IG1fY2hhbm5lbC0+c2VuZChtZXNz
YWdlKTsKKyAgICBpZiAocmVzdWx0ID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpJbnZh
bGlkTWVzc2FnZSkgeworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNv
bGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiV2Vic29ja2V0IG1lc3NhZ2UgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXIocykuIik7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0ID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3Vj
Y2VzczsKIH0KIAogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXIqIGJpbmFyeURhdGEs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzEwLDcgKzMxNiw3IEBAIGJvb2wgV2ViU29ja2V0Ojpz
ZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBBU1NFUlQobV9jaGFubmVsKTsKLSAgICByZXR1cm4g
bV9jaGFubmVsLT5zZW5kKCpiaW5hcnlEYXRhKTsKKyAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5k
KCpiaW5hcnlEYXRhKSA9PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7
CiB9CiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMzMwLDcgKzMzNiw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJp
bmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIEFTU0VSVChtX2NoYW5uZWwpOwotICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQoKmJp
bmFyeURhdGEpOworICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQoKmJpbmFyeURhdGEpID09IFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAogdm9pZCBXZWJTb2Nr
ZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC0zNDMsOCArMzQ5LDE0IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IGlmIHJlYXNvbiBjb250YWlucyBhbnkgdW5wYWlyZWQgc3Vycm9nYXRl
cywgcmFpc2UgU1lOVEFYX0VSUi4KLSAgICAgICAgaWYgKHJlYXNvbi51dGY4KCkubGVuZ3RoKCkg
PiBtYXhSZWFzb25TaXplSW5CeXRlcykgeworICAgICAgICBDU3RyaW5nIHV0ZjggPSByZWFzb24u
dXRmOCh0cnVlKTsKKyAgICAgICAgaWYgKHV0ZjgubGVuZ3RoKCkgPiBtYXhSZWFzb25TaXplSW5C
eXRlcykgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIC8vIENoZWNrcyB3aGV0aGVyIHJlYXNvbiBjb250YWlucyBh
bnkgdW5wYWlyZWQgc3Vycm9nYXRlcy4KKyAgICAgICAgaWYgKHJlYXNvbi5sZW5ndGgoKSAmJiB1
dGY4LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFk
ZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiV2ViU29ja2V0IGNsb3NlIG1lc3NhZ2UgY29udGFpbnMgaW52YWxpZCBjaGFy
YWN0ZXIocykuIik7CiAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAxZWMyNTlmNzg4NDFiZjkxMTNkNWZk
NDI4NDRjZGJkMWM1Mjk5N2UzLi5iZjg0NTdkZTJjNmJlODI3ZGUwZGZhODdhZWVkMGRiYTQ3OTFj
ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTcsMzcgKzE1NywzOSBAQCBTdHJpbmcgV2ViU29ja2V0
Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCiAgICAgcmV0dXJuIGV4dGVuc2lvbnM7CiB9CiAKLWJvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgQ1N0cmluZyB1
dGY4ID0gbWVzc2FnZS51dGY4KHRydWUpOworICAgIGlmIChtZXNzYWdlLmxlbmd0aCgpICYmIHV0
ZjguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBJbnZhbGlkTWVzc2FnZTsKICAgICBpZiAobV91
c2VIaXhpZTc2UHJvdG9jb2wpIHsKLSAgICAgICAgQ1N0cmluZyB1dGY4ID0gbWVzc2FnZS51dGY4
KCk7Ci0gICAgICAgIHJldHVybiBzZW5kRnJhbWVIaXhpZTc2KHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIHNlbmRGcmFtZUhpeGllNzYodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpID8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzIDog
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIH0KLSAgICBlbnF1ZXVl
VGV4dEZyYW1lKG1lc3NhZ2UpOworICAgIGVucXVldWVUZXh0RnJhbWUodXRmOCk7CiAgICAgLy8g
QWNjb3JkaW5nIHRvIFdlYlNvY2tldCBBUEkgc3BlY2lmaWNhdGlvbiwgV2ViU29ja2V0LnNlbmQo
KSBzaG91bGQgcmV0dXJuIHZvaWQgaW5zdGVhZAogICAgIC8vIG9mIGJvb2xlYW4uIEhvd2V2ZXIs
IG91ciBpbXBsZW1lbnRhdGlvbiBzdGlsbCByZXR1cm5zIGJvb2xlYW4gZHVlIHRvIGNvbXBhdGli
aWxpdHkKICAgICAvLyBjb25jZXJuIChzZWUgYnVnIDY1ODUwKS4KICAgICAvLyBtX2NoYW5uZWwt
PnNlbmQoKSBtYXkgaGFwcGVuIGxhdGVyLCB0aHVzIGl0J3Mgbm90IGFsd2F5cyBwb3NzaWJsZSB0
byBrbm93IHdoZXRoZXIKICAgICAvLyB0aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50IHRvIHRoZSBz
b2NrZXQgc3VjY2Vzc2Z1bGx5LiBJbiB0aGlzIGNhc2UsIHdlIGhhdmUgbm8gY2hvaWNlCiAgICAg
Ly8gYnV0IHRvIHJldHVybiB0cnVlLgotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKLWJvb2wgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3Qg
QXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIHNlbmQgYXJyYXlidWZmZXIgJXAiLCB0aGlzLCAmYmluYXJ5RGF0YSk7CiAgICAg
QVNTRVJUKCFtX3VzZUhpeGllNzZQcm90b2NvbCk7CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGVCaW5hcnksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlE
YXRhLmRhdGEoKSksIGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgpKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwogfQog
Ci1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKK1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNl
bmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgc2VuZCBibG9iICVzIiwgdGhpcywgYmluYXJ5RGF0YS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fdXNlSGl4aWU3NlByb3RvY29sKTsKICAg
ICBlbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIGJpbmFyeURh
dGEpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQpAQCAtODU2LDcgKzg1OCw3IEBAIGJvb2wgV2ViU29j
a2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lSGl4aWU3NigpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0
cmluZyYgc3RyaW5nKQogewogICAgIEFTU0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wpOwogICAg
IEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVP
cGVuKTsKQEAgLTkwNCw4ICs5MDYsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NP
dXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICBPd25QdHI8UXVldWVkRnJhbWU+IGZyYW1lID0g
bV9vdXRnb2luZ0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIHN3aXRjaCAoZnJhbWUt
PmZyYW1lVHlwZSkgewogICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0cmluZzogewotICAg
ICAgICAgICAgQ1N0cmluZyB1dGY4ID0gZnJhbWUtPnN0cmluZ0RhdGEudXRmOCgpOwotICAgICAg
ICAgICAgaWYgKCFzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgdXRmOC5kYXRhKCksIHV0ZjgubGVu
Z3RoKCkpKQorICAgICAgICAgICAgaWYgKCFzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgZnJhbWUt
PnN0cmluZ0RhdGEuZGF0YSgpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSkpCiAgICAgICAg
ICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDZkMWZlYmJjYTA2ZTFlZDdkNWNl
ZTE1MGQ4NzYwYWY3ODA0NjIxNjYuLjBiMTc5OTYyYzE2N2U0OTY4MmRkMmU3MjczZDFlYWJhMTJh
MjIwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaApAQCAtNzEsOSArNzEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgQXJyYXlCdWZmZXImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBC
bG9iJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFy
cmF5QnVmZmVyJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBPVkVSUklERTsg
Ly8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCiAgICAgdmlydHVhbCB2b2lkIGZhaWwoY29uc3Qg
U3RyaW5nJiByZWFzb24pIE9WRVJSSURFOwpAQCAtMTYwLDExICsxNjAsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGU7CiAgICAgICAgIFF1ZXVlZEZy
YW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgICAgIC8vIE9ubHkgb25lIG9mIHRoZSBmb2xsb3dpbmcg
aXRlbXMgaXMgdXNlZCwgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiBmcmFtZVR5cGUuCi0gICAg
ICAgIFN0cmluZyBzdHJpbmdEYXRhOworICAgICAgICBDU3RyaW5nIHN0cmluZ0RhdGE7CiAgICAg
ICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3JEYXRhOwogICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYkRh
dGE7CiAgICAgfTsKLSAgICB2b2lkIGVucXVldWVUZXh0RnJhbWUoY29uc3QgU3RyaW5nJik7Cisg
ICAgdm9pZCBlbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcmKTsKICAgICB2b2lkIGVucXVl
dWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBlbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1l
OjpPcENvZGUsIGNvbnN0IEJsb2ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggYzc0ODY1NTdhM2Y4YWZkODgwZWFlOTk5ZGVlNjlkYjU4OTc4NDE2
Zi4uNzYyZGM0MzY5MTU4MjA5MmRjNGU3YmQ3NjE5OTdlNzE1NDAzZDVmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC04OSwyNCArODksMjQgQEAgU3Ry
aW5nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKCkKICAgICBy
ZXR1cm4gbV93b3JrZXJDbGllbnRXcmFwcGVyLT5leHRlbnNpb25zKCk7CiB9CiAKLWJvb2wgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQorVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlm
ICghbV9icmlkZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKICAgICByZXR1cm4gbV9icmlkZ2UtPnNl
bmQobWVzc2FnZSk7CiB9CiAKLWJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCitUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKIHsKICAgICBpZiAoIW1fYnJpZGdlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgcmV0dXJuIG1fYnJpZGdlLT5zZW5kKGJpbmFyeURhdGEp
OwogfQogCi1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IEJsb2ImIGJpbmFyeURhdGEpCitUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3Vs
dCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBCbG9iJiBiaW5h
cnlEYXRhKQogewogICAgIGlmICghbV9icmlkZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKICAgICBy
ZXR1cm4gbV9icmlkZ2UtPnNlbmQoYmluYXJ5RGF0YSk7CiB9CiAKQEAgLTE4MCw3ICsxODAsNyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaQogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmNv
bm5lY3QodXJsLCBwcm90b2NvbCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRT
ZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBib29s
IHNlbmRSZXF1ZXN0UmVzdWx0KQorc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFNlbmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0KQogewogICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgIHdv
cmtlckNsaWVudFdyYXBwZXItPnNldFNlbmRSZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0
KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpQZWVyOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCB8fCAhbV93b3JrZXJD
bGllbnRXcmFwcGVyKQogICAgICAgICByZXR1cm47Ci0gICAgYm9vbCBzZW5kUmVxdWVzdFJlc3Vs
dCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQobWVzc2FnZSk7CisgICAgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5X
ZWJTb2NrZXRDaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4
dERpZFNlbmQsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHQpLCBtX3Rh
c2tNb2RlKTsKIH0KIApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEp
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENo
YW5uZWwgfHwgIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAgICAgcmV0dXJuOwotICAgIGJv
b2wgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFy
eURhdGEpOworICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRS
ZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhKTsK
ICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVD
YWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kLCBtX3dvcmtlckNsaWVudFdyYXBwZXIs
IHNlbmRSZXF1ZXN0UmVzdWx0KSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTIwOSw3ICsyMDksNyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0
IEJsb2ImIGJpbmFyeURhdGEpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAo
IW1fbWFpbldlYlNvY2tldENoYW5uZWwgfHwgIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAg
ICAgcmV0dXJuOwotICAgIGJvb2wgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRD
aGFubmVsLT5zZW5kKGJpbmFyeURhdGEpOworICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+
c2VuZChiaW5hcnlEYXRhKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kLCBtX3dv
cmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0KSwgbV90YXNrTW9kZSk7CiB9CiAK
QEAgLTQzMiwyMyArNDMyLDI1IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRTZW5kQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgcGVlci0+
c2VuZCgqYmxvYik7CiB9CiAKLWJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OkJyaWRnZTo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJp
ZGdlOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fd29ya2VyQ2xp
ZW50V3JhcHBlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIEFTU0VSVChtX3BlZXIpOwogICAg
IHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjptYWluVGhyZWFkU2VuZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCBtZXNzYWdl
KSk7CiAgICAgUmVmUHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9k
Q29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKLSAgICByZXR1
cm4gY2xpZW50V3JhcHBlciAmJiBjbGllbnRXcmFwcGVyLT5zZW5kUmVxdWVzdFJlc3VsdCgpOwor
ICAgIGlmICghY2xpZW50V3JhcHBlcikKKyAgICAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpTZW5kRmFpbDsKKyAgICByZXR1cm4gY2xpZW50V3JhcHBlci0+c2VuZFJlcXVl
c3RSZXN1bHQoKTsKIH0KIAotYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
QnJpZGdlOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQorVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKIHsKICAgICBp
ZiAoIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIEFTU0VS
VChtX3BlZXIpOwogICAgIC8vIEFycmF5QnVmZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0
aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4uCiAg
ICAgT3duUHRyPFZlY3RvcjxjaGFyPiA+IGRhdGEgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+
KGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgpKSk7CkBAIC00NTksMjAgKzQ2MSwyNCBAQCBib29sIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29uc3QgQXJyYXlC
dWZmZXImIGJpbmFyeURhdAogICAgIFJlZlB0cjxCcmlkZ2U+IHByb3RlY3QodGhpcyk7CiAgICAg
d2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0
KCk7Ci0gICAgcmV0dXJuIGNsaWVudFdyYXBwZXIgJiYgY2xpZW50V3JhcHBlci0+c2VuZFJlcXVl
c3RSZXN1bHQoKTsKKyAgICBpZiAoIWNsaWVudFdyYXBwZXIpCisgICAgICAgIHJldHVybiBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CisgICAgcmV0dXJuIGNsaWVudFdyYXBw
ZXItPnNlbmRSZXF1ZXN0UmVzdWx0KCk7CiB9CiAKLWJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQorVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQogewogICAgIGlm
ICghbV93b3JrZXJDbGllbnRXcmFwcGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgQVNTRVJU
KG1fcGVlcik7CiAgICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7CiAgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQmxvYiwgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyhtX3BlZXIpLCBiaW5hcnlEYXRhLnVybCgpLCBiaW5hcnlEYXRhLnR5cGUoKSwgYmluYXJ5RGF0
YS5zaXplKCkpKTsKICAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRG
b3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwot
ICAgIHJldHVybiBjbGllbnRXcmFwcGVyICYmIGNsaWVudFdyYXBwZXItPnNlbmRSZXF1ZXN0UmVz
dWx0KCk7CisgICAgaWYgKCFjbGllbnRXcmFwcGVyKQorICAgICAgICByZXR1cm4gVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOworICAgIHJldHVybiBjbGllbnRXcmFwcGVyLT5z
ZW5kUmVxdWVzdFJlc3VsdCgpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjptYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGVlciogcGVlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKaW5kZXggMzE3ZmNlOTNjZWZhMTNlMTMzMDRhNjcxZWE5ZmJmNzE5MTMwZGRjOC4uZmE4MTZk
YTc2N2QxODcxMjgzOGZhYTI2MDZhNjJkNTU1NGI0ZDE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5k
KGNvbnN0IEFycmF5QnVmZmVyJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgQmxvYiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25z
dCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pIE9WRVJSSURF
OwpAQCAtMTMyLDkgKzEzMiw5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgfkJyaWRn
ZSgpOwogICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpOwotICAgICAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAg
ICAgYm9vbCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJik7Ci0gICAgICAgIGJvb2wgc2VuZChjb25z
dCBCbG9iJik7CisgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpOworICAgICAgICBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEJsb2ImKTsK
ICAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpOwogICAgICAgICB2b2lkIGNs
b3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZmFpbChj
b25zdCBTdHJpbmcmIHJlYXNvbik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWFiYzY0NmM1NTlhMTcxNzJmZDQ2MjEwMzNh
MzgyYWNiMDc3YjU0OS4uOGQyMTNlMjExYTY1ZDk5ODAzMjM5MDcxNGMzYTQ0NDBmYWUwYzQ5YyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTA0ICBLZW5pY2hpIElzaGliYXNoaSAgPGJh
c2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0XSBTaG91bGQgcmFpc2UgU1lO
VEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAxMDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBmb3Ig
dW5wYWlyZWQgc3Vycm9nYXRlcyBjaGVjayBmb3IgV2ViU29ja2V0IG1lc3NhZ2UgYW5kIGNsb3Nl
IHJlYXNvbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5w
YWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0
ZXMtaW4tY2xvc2UtcmVhc29uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1tZXNzYWdlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMDQg
IE1pa2UgTGF3dGhlciAgPG1pa2VsYXd0aGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICB0YWJs
ZSB0ZXN0cyBmb3IgQ1NTMyBjYWxjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY3YjllNTFiZTcxNTM2NWM1YTRlYTkwZTYyZTY0MGQxMWZiMDYyZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vu
cGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGNvbnRhaW5z
IGludmFsaWQgY2hhcmFjdGVyKHMpLgorQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJv
d24gd2hlbiBhdHRlbXBpbmcgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aCB1bnBhaXJlZCBz
dXJyb2dhdGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Nvbm5lY3RlZC4KK1BB
U1Mgd3MuY2xvc2UoMTAwMCwgJ+2ghycpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9F
UlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1z
dXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YmRmMmExZWU5ZTI5
YjliMGU2YmViZmZlNGVmM2VlNDU4NTc3NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4t
Y2xvc2UtcmVhc29uLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRp
b24oIkNoZWNrcyB3aGV0aGVyIFNZTlRBWF9FUlIgaXMgdGhyb3duIHdoZW4gYXR0ZW1waW5nIHRv
IGNsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGggdW5wYWlyZWQgc3Vycm9nYXRlcy4iKTsKKword2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHdzID0gbmV3IFdlYlNv
Y2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvIik7CisK
K3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiQ29ubmVjdGVkLiIpOworICAg
IHNob3VsZFRocm93KCJ3cy5jbG9zZSgxMDAwLCAnXHVEODA3Jyk7Iik7CisgICAgd3MuY2xvc2Uo
KTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAgICB2YXIgbWVz
c2FnZSA9IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxl
ZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2Fn
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjJhYzMzYjBkYjE0YjMyYTY2ZTQ5YTg0Yjc4NjRmMmRhM2YyYTU2ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWly
ZWQtc3Vycm9nYXRlcy1pbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitD
T05TT0xFIE1FU1NBR0U6IFdlYnNvY2tldCBtZXNzYWdlIGNvbnRhaW5zIGludmFsaWQgY2hhcmFj
dGVyKHMpLgorQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBhdHRlbXBp
bmcgdG8gc2VuZCB1bnBhaXJlZCBzdXJyb2dhdGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK0Nvbm5lY3RlZC4KK1BBU1Mgd3Muc2VuZCgn7aCHJyk7IHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVz
c2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjgyOTQ3ZmIw
MTE1NTE5N2JhZmM2MTYwNzUwODJkNzIxMTY0ZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVz
LWluLW1lc3NhZ2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlv
bigiQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBhdHRlbXBpbmcgdG8g
c2VuZCB1bnBhaXJlZCBzdXJyb2dhdGVzLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4
ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24o
KQoreworICAgIGRlYnVnKCJDb25uZWN0ZWQuIik7CisgICAgc2hvdWxkVGhyb3coIndzLnNlbmQo
J1x1RDgwNycpOyIpOworICAgIHdzLmNsb3NlKCk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5j
dGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIHRlc3RG
YWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSAr
ICJcIikiKTsKKyAgICB3cy5jbG9zZSgpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130053</attachid>
            <date>2012-03-04 20:57:34 -0800</date>
            <delta_ts>2012-03-05 16:08:57 -0800</delta_ts>
            <desc>Patch(Attempt QT build fix)</desc>
            <filename>bug-80103-20120305135732.patch</filename>
            <type>text/plain</type>
            <size>29012</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk1OTkzMjZlZDdjYjU3
ZTUxOTI0ZGQxZWZlODE2ZjQzOTdlMWZkNy4uMjIyMDM3YWFmNGZkZDQ5NTI1Y2EwZTIwZmZiODJk
MGI2NWJiOWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTA0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBTaG91bGQgcmFpc2UgU1lOVEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQg
c3Vycm9nYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdXRmOCB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgV2ViU29ja2V0IG1lc3NhZ2UgYW5kIGNs
b3NlIHJlYXNvbi4KKyAgICAgICAgSW50cm9kdWNlZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCB0eXBlIHNvIHRoYXQKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbCBjYW4g
cGFzcyB0aGUgdmFsaWRhdGlvbiByZXN1bHQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24u
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBh
aXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6IEFkZGVkIFNlbmRSZXN1bHQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OnNlbmRSZXF1ZXN0UmVzdWx0KTogVXNlIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kUmVzdWx0IGluc3RlYWQgb2YgYm9vbC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6c2V0U2VuZFJlcXVlc3RSZXN1bHQpOiBE
aXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmg6CisgICAgICAgIChUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5kKTogUmFpc2UgU1lOVEFYX0VS
UiBpZiB0aGUgbWVzc2FnZSBpcyBpbnZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpjbG9zZSk6IFJhaXNlIFNZTlRBWF9FUlIgaWYgdGhlIHJlYXNvbiBpcyBpbnZhbGlkLgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOiBBZGRlZCB1dGY4IHZhbGlkYXRpb24g
Y2hlY2suCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZy
YW1lKTogVXNlIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IGluc3RlYWQg
b2YgYm9vbC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRn
b2luZ0ZyYW1lUXVldWUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChR
dWV1ZWRGcmFtZSk6IENoYW5nZWQgdGhlIHR5cGUgb2Ygc3RyaW5nRGF0YSBmcm9tIFN0cmluZyB0
byBDU3RyaW5nLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6IFVzZSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBpbnN0ZWFkIG9mIGJvb2wuCisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250
ZXh0RGlkU2VuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOiBEaXR0by4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaDoKKyAgICAgICAgKFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKTogZGl0dG8u
CisgICAgICAgIChCcmlkZ2UpOiBEaXR0by4KKwogMjAxMi0wMy0wNCAgUm9iaW4gQ2FvICA8cm9i
aW4uY2FvQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJl
YW0gdHdvIGhlbHBlciBmaWxlcyBmcm9tIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYTE0NTgyYThmZDhiYzNiZWRkNzY5Mjk3M2Qx
MDAyYTYxMzEyMjA5ZS4uMzJlYThhYWUxZmFmZDFmMjBhYWQ5MjM3MzdiNzYyODkyOTAxZjliNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTUwLDEzICs1MCwxOSBAQCBwdWJsaWM6
CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSB7IH0KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Kik7CiAKKyAgICBlbnVtIFNlbmRSZXN1bHQg
eworICAgICAgICBTZW5kU3VjY2VzcywKKyAgICAgICAgU2VuZEZhaWwsCisgICAgICAgIEludmFs
aWRNZXNzYWdlCisgICAgfTsKKwogICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2wo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsg
Ly8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9r
ZWQuCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpID0gMDsgLy8gV2lsbCBiZSBhdmFp
bGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCi0gICAgdmlydHVh
bCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgQmxvYiYpID0gMDsKKyAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1
ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgPSAw
OwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9
IDA7CiAgICAgLy8gTG9nIHRoZSByZWFzb24gdGV4dCBhbmQgY2xvc2UgdGhlIGNvbm5lY3Rpb24u
IFdpbGwgY2FsbCBkaWRDbG9zZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCBkY2IxODAyYTI4OThiZjNiODg0NzUxZWY4NzMw
ZTIzYmM3NTEwNmQ3Li45YTRmM2ZhMjMzMTJkODVlOWVlMDM1MDdjMDM0MTVhNGZhOTAyNzBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcgogICAgICwgbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV9zeW5jTWV0aG9kRG9uZSh0cnVlKQogICAgICwgbV91c2VIaXhp
ZTc2UHJvdG9jb2wodHJ1ZSkKLSAgICAsIG1fc2VuZFJlcXVlc3RSZXN1bHQoZmFsc2UpCisgICAg
LCBtX3NlbmRSZXF1ZXN0UmVzdWx0KFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFp
bCkKICAgICAsIG1fYnVmZmVyZWRBbW91bnQoMCkKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQog
ewpAQCAtMTEyLDEyICsxMTIsMTIgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMoY29uc3QgU3RyaW5nJiBleHRlbnMKICAgICAgICAg
bWVtY3B5KG1fZXh0ZW5zaW9ucy5kYXRhKCksIGV4dGVuc2lvbnMuY2hhcmFjdGVycygpLCBzaXpl
b2YoVUNoYXIpICogbGVuZ3RoKTsKIH0KIAotYm9vbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OnNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3QKK1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6c2VuZFJlcXVlc3RSZXN1bHQoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlbmRS
ZXF1ZXN0UmVzdWx0OwogfQogCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6c2V0U2VuZFJlcXVlc3RSZXN1bHQoYm9vbCBzZW5kUmVxdWVzdFJlc3VsdCkKK3Zv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzZXRTZW5kUmVxdWVz
dFJlc3VsdChUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVz
dFJlc3VsdCkKIHsKICAgICBtX3NlbmRSZXF1ZXN0UmVzdWx0ID0gc2VuZFJlcXVlc3RSZXN1bHQ7
CiAgICAgbV9zeW5jTWV0aG9kRG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKaW5kZXggNGI5YjdmZGU3MmI5Y2YwZTY5NzAzOTkw
Y2JhZDZhZTcyNzcyMTc0Yy4uYmZkMTA2MzgxZjFiMjFiMjM0ZTI5MDQwNmU4Mzg2MjZjZjgxNjM5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
aApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC02Niw4ICs2
Nyw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZXh0ZW5zaW9ucygpIGNvbnN0OwogICAgIHZvaWQg
c2V0RXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmKTsKIAotICAgIGJvb2wgc2VuZFJlcXVlc3RSZXN1
bHQoKSBjb25zdDsKLSAgICB2b2lkIHNldFNlbmRSZXF1ZXN0UmVzdWx0KGJvb2wpOworICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRTZW5kUmVxdWVzdFJlc3VsdChUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCk7CiAKICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nKTsKQEAg
LTEwNCw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIC8vIFRocmVhZFNhZmVSZWZDb3VudGVkIG11
c3Qgbm90IGhhdmUgU3RyaW5nIG1lbWJlciB2YXJpYWJsZXMuCiAgICAgVmVjdG9yPFVDaGFyPiBt
X3N1YnByb3RvY29sOwogICAgIFZlY3RvcjxVQ2hhcj4gbV9leHRlbnNpb25zOwotICAgIGJvb2wg
bV9zZW5kUmVxdWVzdFJlc3VsdDsKKyAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBtX3NlbmRSZXF1ZXN0UmVzdWx0OwogICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJl
ZEFtb3VudDsKICAgICBib29sIG1fc3VzcGVuZGVkOwogICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPiBtX3BlbmRpbmdUYXNrczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggN2RkODU0ZWQxNTJh
MzIxZjA0OTIxMTJjZTU1YTdmMTA5ZTg5MzNlNy4uMzAzMmVjNjk2ZTJhYTc0MDJlNzY3YTMzM2Q3
YTkzMjVhNGE0YWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKQEAgLTI5MCw3ICsyOTAsMTMgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAgICAgLy8g
RklYTUU6IGNoZWNrIG1lc3NhZ2UgaXMgdmFsaWQgdXRmOC4KICAgICBBU1NFUlQobV9jaGFubmVs
KTsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOworICAgIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHJlc3VsdCA9IG1fY2hhbm5lbC0+c2VuZChtZXNz
YWdlKTsKKyAgICBpZiAocmVzdWx0ID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpJbnZh
bGlkTWVzc2FnZSkgeworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNv
bGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiV2Vic29ja2V0IG1lc3NhZ2UgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXIocykuIik7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0ID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3Vj
Y2VzczsKIH0KIAogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXIqIGJpbmFyeURhdGEs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzEwLDcgKzMxNiw3IEBAIGJvb2wgV2ViU29ja2V0Ojpz
ZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBBU1NFUlQobV9jaGFubmVsKTsKLSAgICByZXR1cm4g
bV9jaGFubmVsLT5zZW5kKCpiaW5hcnlEYXRhKTsKKyAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5k
KCpiaW5hcnlEYXRhKSA9PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7
CiB9CiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMzMwLDcgKzMzNiw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJp
bmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIEFTU0VSVChtX2NoYW5uZWwpOwotICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQoKmJp
bmFyeURhdGEpOworICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQoKmJpbmFyeURhdGEpID09IFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAogdm9pZCBXZWJTb2Nr
ZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC0zNDMsOCArMzQ5LDE0IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IGlmIHJlYXNvbiBjb250YWlucyBhbnkgdW5wYWlyZWQgc3Vycm9nYXRl
cywgcmFpc2UgU1lOVEFYX0VSUi4KLSAgICAgICAgaWYgKHJlYXNvbi51dGY4KCkubGVuZ3RoKCkg
PiBtYXhSZWFzb25TaXplSW5CeXRlcykgeworICAgICAgICBDU3RyaW5nIHV0ZjggPSByZWFzb24u
dXRmOCh0cnVlKTsKKyAgICAgICAgaWYgKHV0ZjgubGVuZ3RoKCkgPiBtYXhSZWFzb25TaXplSW5C
eXRlcykgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIC8vIENoZWNrcyB3aGV0aGVyIHJlYXNvbiBjb250YWlucyBh
bnkgdW5wYWlyZWQgc3Vycm9nYXRlcy4KKyAgICAgICAgaWYgKHJlYXNvbi5sZW5ndGgoKSAmJiB1
dGY4LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFk
ZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiV2ViU29ja2V0IGNsb3NlIG1lc3NhZ2UgY29udGFpbnMgaW52YWxpZCBjaGFy
YWN0ZXIocykuIik7CiAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAxZWMyNTlmNzg4NDFiZjkxMTNkNWZk
NDI4NDRjZGJkMWM1Mjk5N2UzLi5iZjg0NTdkZTJjNmJlODI3ZGUwZGZhODdhZWVkMGRiYTQ3OTFj
ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTcsMzcgKzE1NywzOSBAQCBTdHJpbmcgV2ViU29ja2V0
Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCiAgICAgcmV0dXJuIGV4dGVuc2lvbnM7CiB9CiAKLWJvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgQ1N0cmluZyB1
dGY4ID0gbWVzc2FnZS51dGY4KHRydWUpOworICAgIGlmIChtZXNzYWdlLmxlbmd0aCgpICYmIHV0
ZjguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBJbnZhbGlkTWVzc2FnZTsKICAgICBpZiAobV91
c2VIaXhpZTc2UHJvdG9jb2wpIHsKLSAgICAgICAgQ1N0cmluZyB1dGY4ID0gbWVzc2FnZS51dGY4
KCk7Ci0gICAgICAgIHJldHVybiBzZW5kRnJhbWVIaXhpZTc2KHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIHNlbmRGcmFtZUhpeGllNzYodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpID8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzIDog
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIH0KLSAgICBlbnF1ZXVl
VGV4dEZyYW1lKG1lc3NhZ2UpOworICAgIGVucXVldWVUZXh0RnJhbWUodXRmOCk7CiAgICAgLy8g
QWNjb3JkaW5nIHRvIFdlYlNvY2tldCBBUEkgc3BlY2lmaWNhdGlvbiwgV2ViU29ja2V0LnNlbmQo
KSBzaG91bGQgcmV0dXJuIHZvaWQgaW5zdGVhZAogICAgIC8vIG9mIGJvb2xlYW4uIEhvd2V2ZXIs
IG91ciBpbXBsZW1lbnRhdGlvbiBzdGlsbCByZXR1cm5zIGJvb2xlYW4gZHVlIHRvIGNvbXBhdGli
aWxpdHkKICAgICAvLyBjb25jZXJuIChzZWUgYnVnIDY1ODUwKS4KICAgICAvLyBtX2NoYW5uZWwt
PnNlbmQoKSBtYXkgaGFwcGVuIGxhdGVyLCB0aHVzIGl0J3Mgbm90IGFsd2F5cyBwb3NzaWJsZSB0
byBrbm93IHdoZXRoZXIKICAgICAvLyB0aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50IHRvIHRoZSBz
b2NrZXQgc3VjY2Vzc2Z1bGx5LiBJbiB0aGlzIGNhc2UsIHdlIGhhdmUgbm8gY2hvaWNlCiAgICAg
Ly8gYnV0IHRvIHJldHVybiB0cnVlLgotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKLWJvb2wgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3Qg
QXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIHNlbmQgYXJyYXlidWZmZXIgJXAiLCB0aGlzLCAmYmluYXJ5RGF0YSk7CiAgICAg
QVNTRVJUKCFtX3VzZUhpeGllNzZQcm90b2NvbCk7CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGVCaW5hcnksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlE
YXRhLmRhdGEoKSksIGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgpKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwogfQog
Ci1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKK1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNl
bmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgc2VuZCBibG9iICVzIiwgdGhpcywgYmluYXJ5RGF0YS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fdXNlSGl4aWU3NlByb3RvY29sKTsKICAg
ICBlbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIGJpbmFyeURh
dGEpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQpAQCAtODU2LDcgKzg1OCw3IEBAIGJvb2wgV2ViU29j
a2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lSGl4aWU3NigpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0
cmluZyYgc3RyaW5nKQogewogICAgIEFTU0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wpOwogICAg
IEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVP
cGVuKTsKQEAgLTkwNCw4ICs5MDYsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NP
dXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICBPd25QdHI8UXVldWVkRnJhbWU+IGZyYW1lID0g
bV9vdXRnb2luZ0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIHN3aXRjaCAoZnJhbWUt
PmZyYW1lVHlwZSkgewogICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0cmluZzogewotICAg
ICAgICAgICAgQ1N0cmluZyB1dGY4ID0gZnJhbWUtPnN0cmluZ0RhdGEudXRmOCgpOwotICAgICAg
ICAgICAgaWYgKCFzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgdXRmOC5kYXRhKCksIHV0ZjgubGVu
Z3RoKCkpKQorICAgICAgICAgICAgaWYgKCFzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgZnJhbWUt
PnN0cmluZ0RhdGEuZGF0YSgpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSkpCiAgICAgICAg
ICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDZkMWZlYmJjYTA2ZTFlZDdkNWNl
ZTE1MGQ4NzYwYWY3ODA0NjIxNjYuLjYyYjRmZDM1ZjkzNjY1OThiYzk1YWEwNTVmNDdhZmE1Yzk2
ZDY1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTcxLDkgKzcyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0
cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lv
bnMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgQmxvYiYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
c2VuZChjb25zdCBCbG9iJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1
ZmZlcmVkQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7IC8vIFN0YXJ0IGNsb3Npbmcg
aGFuZHNoYWtlLgogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKSBP
VkVSUklERTsKQEAgLTE2MCwxMSArMTYxLDExIEBAIHByaXZhdGU6CiAgICAgICAgIFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlOwogICAgICAgICBRdWV1ZWRGcmFtZVR5cGUgZnJhbWVUeXBl
OwogICAgICAgICAvLyBPbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIGl0ZW1zIGlzIHVzZWQsIGFj
Y29yZGluZyB0byB0aGUgdmFsdWUgb2YgZnJhbWVUeXBlLgotICAgICAgICBTdHJpbmcgc3RyaW5n
RGF0YTsKKyAgICAgICAgQ1N0cmluZyBzdHJpbmdEYXRhOwogICAgICAgICBWZWN0b3I8Y2hhcj4g
dmVjdG9yRGF0YTsKICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2JEYXRhOwogICAgIH07Ci0gICAg
dm9pZCBlbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZW5xdWV1ZVRl
eHRGcmFtZShjb25zdCBDU3RyaW5nJik7CiAgICAgdm9pZCBlbnF1ZXVlUmF3RnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwog
ICAgIHZvaWQgZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCBC
bG9iJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4
IGM3NDg2NTU3YTNmOGFmZDg4MGVhZTk5OWRlZTY5ZGI1ODk3ODQxNmYuLjc2MmRjNDM2OTE1ODIw
OTJkYzRlN2JkNzYxOTk3ZTcxNTQwM2Q1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtODksMjQgKzg5LDI0IEBAIFN0cmluZyBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCiAgICAgcmV0dXJuIG1fd29ya2VyQ2xp
ZW50V3JhcHBlci0+ZXh0ZW5zaW9ucygpOwogfQogCi1ib29sIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fYnJpZGdlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZEZhaWw7CiAgICAgcmV0dXJuIG1fYnJpZGdlLT5zZW5kKG1lc3NhZ2UpOwogfQog
Ci1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEFycmF5
QnVmZmVyJiBiaW5hcnlEYXRhKQorVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQXJyYXlCdWZm
ZXImIGJpbmFyeURhdGEpCiB7CiAgICAgaWYgKCFtX2JyaWRnZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWls
OwogICAgIHJldHVybiBtX2JyaWRnZS0+c2VuZChiaW5hcnlEYXRhKTsKIH0KIAotYm9vbCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRh
KQorVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKIHsKICAgICBp
ZiAoIW1fYnJpZGdlKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgcmV0dXJuIG1fYnJpZGdlLT5z
ZW5kKGJpbmFyeURhdGEpOwogfQogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmkKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5jb25uZWN0KHVybCwgcHJvdG9j
b2wpOwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkU2VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgYm9vbCBzZW5kUmVxdWVzdFJlc3Vs
dCkKK3N0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICB3b3JrZXJDbGllbnRXcmFwcGVy
LT5zZXRTZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVzdFJlc3VsdCk7CkBAIC0xOTEsNyArMTkx
LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwgfHwgIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKICAg
ICAgICAgcmV0dXJuOwotICAgIGJvb2wgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2Nr
ZXRDaGFubmVsLT5zZW5kKG1lc3NhZ2UpOworICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+
c2VuZChtZXNzYWdlKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kLCBtX3dvcmtl
ckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0KSwgbV90YXNrTW9kZSk7CiB9CiAKQEAg
LTIwMCw3ICsyMDAsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsIHx8ICFtX3dvcmtl
ckNsaWVudFdyYXBwZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBib29sIHNlbmRSZXF1ZXN0UmVz
dWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhKTsKKyAgICBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1f
bWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7CiAgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3Jr
ZXJDb250ZXh0RGlkU2VuZCwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3Vs
dCksIG1fdGFza01vZGUpOwogfQogCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRh
KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRD
aGFubmVsIHx8ICFtX3dvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBi
b29sIHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChiaW5h
cnlEYXRhKTsKKyAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5k
UmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7
CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkU2VuZCwgbV93b3JrZXJDbGllbnRXcmFwcGVy
LCBzZW5kUmVxdWVzdFJlc3VsdCksIG1fdGFza01vZGUpOwogfQogCkBAIC00MzIsMjMgKzQzMiwy
NSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2Vu
ZEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIHBlZXItPnNlbmQoKmJsb2IpOwogfQog
Ci1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQorVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX3dvcmtlckNsaWVudFdyYXBwZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kRmFpbDsKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICBzZXRNZXRob2ROb3RDb21w
bGV0ZWQoKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmQs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgbWVzc2FnZSkpOwogICAgIFJlZlB0cjxC
cmlkZ2U+IHByb3RlY3QodGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAg
ICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7Ci0gICAgcmV0dXJuIGNsaWVudFdyYXBwZXIg
JiYgY2xpZW50V3JhcHBlci0+c2VuZFJlcXVlc3RSZXN1bHQoKTsKKyAgICBpZiAoIWNsaWVudFdy
YXBwZXIpCisgICAgICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZh
aWw7CisgICAgcmV0dXJuIGNsaWVudFdyYXBwZXItPnNlbmRSZXF1ZXN0UmVzdWx0KCk7CiB9CiAK
LWJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZChjb25z
dCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQo
Y29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCiB7CiAgICAgaWYgKCFtX3dvcmtlckNsaWVu
dFdyYXBwZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKICAgICBBU1NFUlQobV9wZWVyKTsKICAgICAv
LyBBcnJheUJ1ZmZlciBpc24ndCB0aHJlYWQtc2FmZSwgaGVuY2UgdGhlIGNvbnRlbnQgb2YgQXJy
YXlCdWZmZXIgaXMgY29waWVkIGludG8gVmVjdG9yPGNoYXI+LgogICAgIE93blB0cjxWZWN0b3I8
Y2hhcj4gPiBkYXRhID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPihiaW5hcnlEYXRhLmJ5dGVM
ZW5ndGgoKSkpOwpAQCAtNDU5LDIwICs0NjEsMjQgQEAgYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXQK
ICAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21w
bGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBj
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwotICAgIHJldHVybiBj
bGllbnRXcmFwcGVyICYmIGNsaWVudFdyYXBwZXItPnNlbmRSZXF1ZXN0UmVzdWx0KCk7CisgICAg
aWYgKCFjbGllbnRXcmFwcGVyKQorICAgICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRGYWlsOworICAgIHJldHVybiBjbGllbnRXcmFwcGVyLT5zZW5kUmVxdWVzdFJl
c3VsdCgpOwogfQogCi1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKK1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6
OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKIHsKICAgICBpZiAoIW1fd29ya2VyQ2xpZW50
V3JhcHBlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIEFTU0VSVChtX3BlZXIpOwogICAgIHNl
dE1ldGhvZE5vdENvbXBsZXRlZCgpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRl
cihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpt
YWluVGhyZWFkU2VuZEJsb2IsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgYmluYXJ5
RGF0YS51cmwoKSwgYmluYXJ5RGF0YS50eXBlKCksIGJpbmFyeURhdGEuc2l6ZSgpKSk7CiAgICAg
UmVmUHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlv
bigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKLSAgICByZXR1cm4gY2xpZW50
V3JhcHBlciAmJiBjbGllbnRXcmFwcGVyLT5zZW5kUmVxdWVzdFJlc3VsdCgpOworICAgIGlmICgh
Y2xpZW50V3JhcHBlcikKKyAgICAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kRmFpbDsKKyAgICByZXR1cm4gY2xpZW50V3JhcHBlci0+c2VuZFJlcXVlc3RSZXN1bHQo
KTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBl
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDMxN2ZjZTkz
Y2VmYTEzZTEzMzA0YTY3MWVhOWZiZjcxOTEzMGRkYzguLmZhODE2ZGE3NjdkMTg3MTI4MzhmYWEy
NjA2YTYyZDU1NTRiNGQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oCkBAIC02NSw5ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBleHRl
bnNpb25zKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZl
ciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVz
dWx0IHNlbmQoY29uc3QgQmxvYiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKSBPVkVSUklERTsKQEAgLTEzMiw5ICsxMzIs
OSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIH5CcmlkZ2UoKTsKICAgICAgICAgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLSAgICAgICAg
Ym9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgICAgIGJvb2wgc2VuZChjb25z
dCBBcnJheUJ1ZmZlciYpOwotICAgICAgICBib29sIHNlbmQoY29uc3QgQmxvYiYpOworICAgICAg
ICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVz
dWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKKyAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJik7CiAgICAgICAgIHVuc2lnbmVk
IGxvbmcgYnVmZmVyZWRBbW91bnQoKTsKICAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFz
b24pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGFhYmM2NDZjNTU5YTE3MTcyZmQ0NjIxMDMzYTM4MmFjYjA3N2I1NDkuLjhk
MjEzZTIxMWE2NWQ5OTgwMzIzOTA3MTRjM2E0NDQwZmFlMGM0OWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMi0wMy0wNCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW1dlYlNvY2tldF0gU2hvdWxkIHJhaXNlIFNZTlRBWF9FUlIgd2hlbiBtZXNz
YWdlIGNvbnRhaW5zIHVucGFpcmVkIHN1cnJvZ2F0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIHVucGFpcmVkIHN1cnJvZ2F0
ZXMgY2hlY2sgZm9yIFdlYlNvY2tldCBtZXNzYWdlIGFuZCBjbG9zZSByZWFzb24uCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMt
aW4tY2xvc2UtcmVhc29uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRl
cy1pbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAzLTA0ICBNaWtlIExhd3RoZXIgIDxt
aWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgdGFibGUgdGVzdHMgZm9yIENTUzMg
Y2FsYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJv
Z2F0ZXMtaW4tY2xvc2UtcmVhc29uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2I5ZTUxYmU3
MTUzNjVjNWE0ZWE5MGU2MmU2NDBkMTFmYjA2MmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVz
LWluLWNsb3NlLXJlYXNvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBN
RVNTQUdFOiBXZWJTb2NrZXQgY2xvc2UgbWVzc2FnZSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3Rl
cihzKS4KK0NoZWNrcyB3aGV0aGVyIFNZTlRBWF9FUlIgaXMgdGhyb3duIHdoZW4gYXR0ZW1waW5n
IHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGggdW5wYWlyZWQgc3Vycm9nYXRlcy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitDb25uZWN0ZWQuCitQQVNTIHdzLmNsb3NlKDEwMDAs
ICftoIcnKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9u
IDEyLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
dW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9z
ZS1yZWFzb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGJkZjJhMWVlOWUyOWI5YjBlNmJlYmZmZTRlZjNl
ZTQ1ODU3Nzc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJDaGVja3Mgd2hldGhl
ciBTWU5UQVhfRVJSIGlzIHRocm93biB3aGVuIGF0dGVtcGluZyB0byBjbG9zZSB0aGUgY29ubmVj
dGlvbiB3aXRoIHVucGFpcmVkIHN1cnJvZ2F0ZXMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJv
dG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxo
b3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNobyIpOworCit3cy5vbm9wZW4gPSBmdW5j
dGlvbigpCit7CisgICAgZGVidWcoIkNvbm5lY3RlZC4iKTsKKyAgICBzaG91bGRUaHJvdygid3Mu
Y2xvc2UoMTAwMCwgJ1x1RDgwNycpOyIpOworICAgIHdzLmNsb3NlKCk7Cit9OworCit3cy5vbm1l
c3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRh
OworICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIi
ICsgbWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbigpCit7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJy
b2dhdGVzLWluLW1lc3NhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyYWMzM2IwZGIxNGIz
MmE2NmU0OWE4NGI3ODY0ZjJkYTNmMmE1NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4t
bWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBX
ZWJzb2NrZXQgbWVzc2FnZSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcihzKS4KK0NoZWNrcyB3
aGV0aGVyIFNZTlRBWF9FUlIgaXMgdGhyb3duIHdoZW4gYXR0ZW1waW5nIHRvIHNlbmQgdW5wYWly
ZWQgc3Vycm9nYXRlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitDb25uZWN0ZWQu
CitQQVNTIHdzLnNlbmQoJ+2ghycpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6
IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRl
cy1pbi1tZXNzYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI4Mjk0N2ZiMDExNTUxOTdiYWZjNjE2MDc1
MDgyZDcyMTE2NGQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1tZXNzYWdlLmh0bWwK
QEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIkNoZWNrcyB3aGV0aGVy
IFNZTlRBWF9FUlIgaXMgdGhyb3duIHdoZW4gYXR0ZW1waW5nIHRvIHNlbmQgdW5wYWlyZWQgc3Vy
cm9nYXRlcy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwor
dmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVz
dHMvaHliaS9lY2hvIik7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygi
Q29ubmVjdGVkLiIpOworICAgIHNob3VsZFRocm93KCJ3cy5zZW5kKCdcdUQ4MDcnKTsiKTsKKyAg
ICB3cy5jbG9zZSgpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KQorewor
ICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2Uo
KSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIG1lc3NhZ2UgKyAiXCIpIik7CisgICAgd3Mu
Y2xvc2UoKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbigpCit7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130220</attachid>
            <date>2012-03-05 16:08:14 -0800</date>
            <delta_ts>2012-03-05 18:29:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80103-20120306090813.patch</filename>
            <type>text/plain</type>
            <size>30839</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5ODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhMzc5ZDdiOTIwOTgy
MzJmZDkyOGZlMDIwMzAxY2IzYTZhNGNkZS4uODQwYzNmOTFjOThkNWU2ODBhYzlmNmFmOTg0MTI2
MWQ5NDc0MGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTA1ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBTaG91bGQgcmFpc2UgU1lOVEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQg
c3Vycm9nYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdXRmOCB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgV2ViU29ja2V0IG1lc3NhZ2UgYW5kIGNs
b3NlIHJlYXNvbi4KKyAgICAgICAgSW50cm9kdWNlZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCB0eXBlIHNvIHRoYXQKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbCBjYW4g
cGFzcyB0aGUgdmFsaWRhdGlvbiByZXN1bHQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24u
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBh
aXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6IEFkZGVkIFNlbmRSZXN1bHQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OnNlbmRSZXF1ZXN0UmVzdWx0KTogVXNlIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kUmVzdWx0IGluc3RlYWQgb2YgYm9vbC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6c2V0U2VuZFJlcXVlc3RSZXN1bHQpOiBE
aXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmg6CisgICAgICAgIChUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5kKTogUmFpc2UgU1lOVEFYX0VS
UiBpZiB0aGUgbWVzc2FnZSBpcyBpbnZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpjbG9zZSk6IFJhaXNlIFNZTlRBWF9FUlIgaWYgdGhlIHJlYXNvbiBpcyBpbnZhbGlkLgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOiBBZGRlZCB1dGY4IHZhbGlkYXRpb24g
Y2hlY2suCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZy
YW1lKTogVXNlIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IGluc3RlYWQg
b2YgYm9vbC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRn
b2luZ0ZyYW1lUXVldWUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChR
dWV1ZWRGcmFtZSk6IENoYW5nZWQgdGhlIHR5cGUgb2Ygc3RyaW5nRGF0YSBmcm9tIFN0cmluZyB0
byBDU3RyaW5nLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6IFVzZSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBpbnN0ZWFkIG9mIGJvb2wuCisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250
ZXh0RGlkU2VuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOiBEaXR0by4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaDoKKyAgICAgICAgKFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKTogZGl0dG8u
CisgICAgICAgIChCcmlkZ2UpOiBEaXR0by4KKwogMjAxMi0wMy0wNSAgTWlobmVhIE92aWRlbmll
ICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVnaW9uc11bQ1NTT01dUHJldmVu
dCBjcmVhdGlvbiBvZiBOYW1lZEZsb3cgb2JqZWN0IGZvciBpbnZhbGlkIGZsb3cgbmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBhMTQ1ODJhOGZkOGJjM2JlZGQ3NjkyOTczZDEw
MDJhNjEzMTIyMDllLi4zMmVhOGFhZTFmYWZkMWYyMGFhZDkyMzczN2I3NjI4OTI5MDFmOWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNTAsMTMgKzUwLDE5IEBAIHB1YmxpYzoK
ICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgfQogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKIAorICAgIGVudW0gU2VuZFJlc3VsdCB7
CisgICAgICAgIFNlbmRTdWNjZXNzLAorICAgICAgICBTZW5kRmFpbCwKKyAgICAgICAgSW52YWxp
ZE1lc3NhZ2UKKyAgICB9OworCiAgICAgdmlydHVhbCBib29sIHVzZUhpeGllNzZQcm90b2NvbCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgPSAwOyAv
LyBXaWxsIGJlIGF2YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sgaXMgaW52b2tl
ZC4KICAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgPSAwOyAvLyBXaWxsIGJlIGF2YWls
YWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sgaXMgaW52b2tlZC4KLSAgICB2aXJ0dWFs
IGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
c2VuZChjb25zdCBBcnJheUJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25z
dCBCbG9iJikgPSAwOworICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVm
ZmVyJikgPSAwOworICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IEJsb2ImKSA9IDA7
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pID0g
MDsKICAgICAvLyBMb2cgdGhlIHJlYXNvbiB0ZXh0IGFuZCBjbG9zZSB0aGUgY29ubmVjdGlvbi4g
V2lsbCBjYWxsIGRpZENsb3NlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIuY3BwCmluZGV4IGRjYjE4MDJhMjg5OGJmM2I4ODQ3NTFlZjg3MzBl
MjNiYzc1MTA2ZDcuLjlhNGYzZmEyMzMxMmQ4NWU5ZWUwMzUwN2MwMzQxNWE0ZmE5MDI3MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyCiAgICAgLCBtX2NsaWVu
dChjbGllbnQpCiAgICAgLCBtX3N5bmNNZXRob2REb25lKHRydWUpCiAgICAgLCBtX3VzZUhpeGll
NzZQcm90b2NvbCh0cnVlKQotICAgICwgbV9zZW5kUmVxdWVzdFJlc3VsdChmYWxzZSkKKyAgICAs
IG1fc2VuZFJlcXVlc3RSZXN1bHQoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWls
KQogICAgICwgbV9idWZmZXJlZEFtb3VudCgwKQogICAgICwgbV9zdXNwZW5kZWQoZmFsc2UpCiB7
CkBAIC0xMTIsMTIgKzExMiwxMiBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6c2V0RXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmIGV4dGVucwogICAgICAgICBt
ZW1jcHkobV9leHRlbnNpb25zLmRhdGEoKSwgZXh0ZW5zaW9ucy5jaGFyYWN0ZXJzKCksIHNpemVv
ZihVQ2hhcikgKiBsZW5ndGgpOwogfQogCi1ib29sIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6c2VuZFJlcXVlc3RSZXN1bHQoKSBjb25zdAorVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlNlbmRSZXN1bHQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpzZW5kUmVxdWVzdFJlc3VsdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VuZFJl
cXVlc3RSZXN1bHQ7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpzZXRTZW5kUmVxdWVzdFJlc3VsdChib29sIHNlbmRSZXF1ZXN0UmVzdWx0KQordm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldFNlbmRSZXF1ZXN0
UmVzdWx0KFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0
UmVzdWx0KQogewogICAgIG1fc2VuZFJlcXVlc3RSZXN1bHQgPSBzZW5kUmVxdWVzdFJlc3VsdDsK
ICAgICBtX3N5bmNNZXRob2REb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAppbmRleCA0YjliN2ZkZTcyYjljZjBlNjk3MDM5OTBj
YmFkNmFlNzI3NzIxNzRjLi5iZmQxMDYzODFmMWIyMWIyMzRlMjkwNDA2ZTgzODYyNmNmODE2Mzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5o
CkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTY2LDggKzY3
LDggQEAgcHVibGljOgogICAgIFN0cmluZyBleHRlbnNpb25zKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRFeHRlbnNpb25zKGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCBzZW5kUmVxdWVzdFJlc3Vs
dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U2VuZFJlcXVlc3RSZXN1bHQoYm9vbCk7CisgICAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQoKSBj
b25zdDsKKyAgICB2b2lkIHNldFNlbmRSZXF1ZXN0UmVzdWx0KFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0KTsKIAogICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQo
KSBjb25zdDsKICAgICB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcpOwpAQCAt
MTA0LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVz
dCBub3QgaGF2ZSBTdHJpbmcgbWVtYmVyIHZhcmlhYmxlcy4KICAgICBWZWN0b3I8VUNoYXI+IG1f
c3VicHJvdG9jb2w7CiAgICAgVmVjdG9yPFVDaGFyPiBtX2V4dGVuc2lvbnM7Ci0gICAgYm9vbCBt
X3NlbmRSZXF1ZXN0UmVzdWx0OworICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IG1fc2VuZFJlcXVlc3RSZXN1bHQ7CiAgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZlcmVk
QW1vdW50OwogICAgIGJvb2wgbV9zdXNwZW5kZWQ7CiAgICAgVmVjdG9yPE93blB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiA+IG1fcGVuZGluZ1Rhc2tzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA3ZGQ4NTRlZDE1MmEz
MjFmMDQ5MjExMmNlNTVhN2YxMDllODkzM2U3Li5mZDQwZGFkMTM5Y2ZiOTk5YjBjNTE0NDMwNzli
ZmU5NWZmZjRhNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcApAQCAtMjkwLDcgKzI5MCwxMyBAQCBib29sIFdlYlNvY2tldDo6c2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KICAgICAvLyBG
SVhNRTogY2hlY2sgbWVzc2FnZSBpcyB2YWxpZCB1dGY4LgogICAgIEFTU0VSVChtX2NoYW5uZWwp
OwotICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CisgICAgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgcmVzdWx0ID0gbV9jaGFubmVsLT5zZW5kKG1lc3Nh
Z2UpOworICAgIGlmIChyZXN1bHQgPT0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkludmFs
aWRNZXNzYWdlKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJXZWJzb2NrZXQgbWVzc2FnZSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcihzKS4iKTsK
KyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQgPT0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNj
ZXNzOwogfQogCiBib29sIFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlciogYmluYXJ5RGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zMTAsNyArMzE2LDcgQEAgYm9vbCBXZWJTb2NrZXQ6OnNl
bmQoQXJyYXlCdWZmZXIqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VSVChtX2NoYW5uZWwpOwotICAgIHJldHVybiBt
X2NoYW5uZWwtPnNlbmQoKmJpbmFyeURhdGEpOworICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQo
KmJpbmFyeURhdGEpID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsK
IH0KIAogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQmxvYiogYmluYXJ5RGF0YSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0zMzAsNyArMzM2LDcgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQmxvYiogYmlu
YXJ5RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgQVNTRVJUKG1fY2hhbm5lbCk7Ci0gICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZCgqYmlu
YXJ5RGF0YSk7CisgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZCgqYmluYXJ5RGF0YSkgPT0gVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwogfQogCiB2b2lkIFdlYlNvY2tl
dDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTM0Myw4ICszNDksMTUgQEAgdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICAvLyBGSVhNRTogaWYgcmVhc29uIGNvbnRhaW5zIGFueSB1bnBhaXJlZCBzdXJyb2dhdGVz
LCByYWlzZSBTWU5UQVhfRVJSLgotICAgICAgICBpZiAocmVhc29uLnV0ZjgoKS5sZW5ndGgoKSA+
IG1heFJlYXNvblNpemVJbkJ5dGVzKSB7CisgICAgICAgIENTdHJpbmcgdXRmOCA9IHJlYXNvbi51
dGY4KHRydWUpOworICAgICAgICBpZiAodXRmOC5sZW5ndGgoKSA+IG1heFJlYXNvblNpemVJbkJ5
dGVzKSB7CisgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVN
ZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCAiV2ViU29ja2V0IGNsb3NlIG1lc3NhZ2UgaXMgdG9vIGxvbmcuIik7CisgICAgICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Ly8gQ2hlY2tzIHdoZXRoZXIgcmVhc29uIGlzIHZhbGlkIHV0ZjguCisgICAgICAgIGlmICh1dGY4
LmlzTnVsbCgpICYmIHJlYXNvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGNvbnRh
aW5zIGludmFsaWQgY2hhcmFjdGVyKHMpLiIpOwogICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMWVjMjU5
Zjc4ODQxYmY5MTEzZDVmZDQyODQ0Y2RiZDFjNTI5OTdlMy4uNmM5NzZhYWM5ZWUyNmYyYmU3MjVi
ZTI4ZjVjMDIyZjFmYjA1YzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTU3LDM3ICsxNTcsMzkgQEAg
U3RyaW5nIFdlYlNvY2tldENoYW5uZWw6OmV4dGVuc2lvbnMoKQogICAgIHJldHVybiBleHRlbnNp
b25zOwogfQogCi1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQorVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hh
bm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkp
OworICAgIENTdHJpbmcgdXRmOCA9IG1lc3NhZ2UudXRmOCh0cnVlKTsKKyAgICBpZiAodXRmOC5p
c051bGwoKSAmJiBtZXNzYWdlLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gSW52YWxpZE1lc3Nh
Z2U7CiAgICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKSB7Ci0gICAgICAgIENTdHJpbmcgdXRm
OCA9IG1lc3NhZ2UudXRmOCgpOwotICAgICAgICByZXR1cm4gc2VuZEZyYW1lSGl4aWU3Nih1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBzZW5kRnJhbWVIaXhpZTc2
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSA/IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kU3VjY2VzcyA6IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKICAg
ICB9Ci0gICAgZW5xdWV1ZVRleHRGcmFtZShtZXNzYWdlKTsKKyAgICBlbnF1ZXVlVGV4dEZyYW1l
KHV0ZjgpOwogICAgIC8vIEFjY29yZGluZyB0byBXZWJTb2NrZXQgQVBJIHNwZWNpZmljYXRpb24s
IFdlYlNvY2tldC5zZW5kKCkgc2hvdWxkIHJldHVybiB2b2lkIGluc3RlYWQKICAgICAvLyBvZiBi
b29sZWFuLiBIb3dldmVyLCBvdXIgaW1wbGVtZW50YXRpb24gc3RpbGwgcmV0dXJucyBib29sZWFu
IGR1ZSB0byBjb21wYXRpYmlsaXR5CiAgICAgLy8gY29uY2VybiAoc2VlIGJ1ZyA2NTg1MCkuCiAg
ICAgLy8gbV9jaGFubmVsLT5zZW5kKCkgbWF5IGhhcHBlbiBsYXRlciwgdGh1cyBpdCdzIG5vdCBh
bHdheXMgcG9zc2libGUgdG8ga25vdyB3aGV0aGVyCiAgICAgLy8gdGhlIG1lc3NhZ2UgaGFzIGJl
ZW4gc2VudCB0byB0aGUgc29ja2V0IHN1Y2Nlc3NmdWxseS4gSW4gdGhpcyBjYXNlLCB3ZSBoYXZl
IG5vIGNob2ljZQogICAgIC8vIGJ1dCB0byByZXR1cm4gdHJ1ZS4KLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwogfQog
Ci1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURh
dGEpCitUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQogewogICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGFycmF5YnVmZmVyICVwIiwgdGhpcywgJmJp
bmFyeURhdGEpOwogICAgIEFTU0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wpOwogICAgIGVucXVl
dWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpLCBiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kU3VjY2VzczsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEJsb2Im
IGJpbmFyeURhdGEpCitUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEJsb2ImIGJpbmFyeURhdGEpCiB7CiAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgYmxvYiAlcyIsIHRoaXMsIGJpbmFyeURh
dGEudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgQVNTRVJUKCFtX3VzZUhpeGll
NzZQcm90b2NvbCk7CiAgICAgZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
QmluYXJ5LCBiaW5hcnlEYXRhKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwogfQogCiBib29sIFdlYlNvY2tldENo
YW5uZWw6OnNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTg1Niw3ICs4NTgs
NyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYoKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1l
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4
dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKICAgICBBU1NFUlQoIW1fdXNlSGl4aWU3
NlByb3RvY29sKTsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0
Z29pbmdGcmFtZVF1ZXVlT3Blbik7CkBAIC05MDQsOCArOTA2LDcgQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgT3duUHRyPFF1ZXVl
ZEZyYW1lPiBmcmFtZSA9IG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnRha2VGaXJzdCgpOwogICAgICAg
ICBzd2l0Y2ggKGZyYW1lLT5mcmFtZVR5cGUpIHsKICAgICAgICAgY2FzZSBRdWV1ZWRGcmFtZVR5
cGVTdHJpbmc6IHsKLSAgICAgICAgICAgIENTdHJpbmcgdXRmOCA9IGZyYW1lLT5zdHJpbmdEYXRh
LnV0ZjgoKTsKLSAgICAgICAgICAgIGlmICghc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIHV0Zjgu
ZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKSkKKyAgICAgICAgICAgIGlmICghc2VuZEZyYW1lKGZyYW1l
LT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRhdGEoKSwgZnJhbWUtPnN0cmluZ0RhdGEubGVu
Z3RoKCkpKQogICAgICAgICAgICAgICAgIGZhaWwoIkZhaWxlZCB0byBzZW5kIFdlYlNvY2tldCBm
cmFtZS4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA2ZDFm
ZWJiY2EwNmUxZWQ3ZDVjZWUxNTBkODc2MGFmNzgwNDYyMTY2Li42MmI0ZmQzNWY5MzY2NTk4YmM5
NWFhMDU1ZjQ3YWZhNWM5NmQ2NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC03MSw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25z
dCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJs
b2ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJy
YXlCdWZmZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIE9WRVJSSURFOyAv
LyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KICAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBT
dHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7CkBAIC0xNjAsMTEgKzE2MSwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZTsKICAgICAgICAgUXVldWVkRnJh
bWVUeXBlIGZyYW1lVHlwZTsKICAgICAgICAgLy8gT25seSBvbmUgb2YgdGhlIGZvbGxvd2luZyBp
dGVtcyBpcyB1c2VkLCBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIGZyYW1lVHlwZS4KLSAgICAg
ICAgU3RyaW5nIHN0cmluZ0RhdGE7CisgICAgICAgIENTdHJpbmcgc3RyaW5nRGF0YTsKICAgICAg
ICAgVmVjdG9yPGNoYXI+IHZlY3RvckRhdGE7CiAgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iRGF0
YTsKICAgICB9OwotICAgIHZvaWQgZW5xdWV1ZVRleHRGcmFtZShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYpOwogICAgIHZvaWQgZW5xdWV1
ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIGVucXVldWVCbG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZSwgY29uc3QgQmxvYiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCBjNzQ4NjU1N2EzZjhhZmQ4ODBlYWU5OTlkZWU2OWRiNTg5Nzg0MTZm
Li43NjJkYzQzNjkxNTgyMDkyZGM0ZTdiZDc2MTk5N2U3MTU0MDNkNWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTg5LDI0ICs4OSwyNCBAQCBTdHJp
bmcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmV4dGVuc2lvbnMoKQogICAgIHJl
dHVybiBtX3dvcmtlckNsaWVudFdyYXBwZXItPmV4dGVuc2lvbnMoKTsKIH0KIAotYm9vbCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CitUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYg
KCFtX2JyaWRnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIHJldHVybiBtX2JyaWRnZS0+c2Vu
ZChtZXNzYWdlKTsKIH0KIAotYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5k
KGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQogewogICAgIGlmICghbV9icmlkZ2UpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kRmFpbDsKICAgICByZXR1cm4gbV9icmlkZ2UtPnNlbmQoYmluYXJ5RGF0YSk7
CiB9CiAKLWJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3Qg
QmxvYiYgYmluYXJ5RGF0YSkKK1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEJsb2ImIGJpbmFy
eURhdGEpCiB7CiAgICAgaWYgKCFtX2JyaWRnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIHJl
dHVybiBtX2JyaWRnZS0+c2VuZChiaW5hcnlEYXRhKTsKIH0KIApAQCAtMTgwLDcgKzE4MCw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmNvbm5lY3QoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpCiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+Y29u
bmVjdCh1cmwsIHByb3RvY29sKTsKIH0KIAotc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFNl
bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGJvb2wg
c2VuZFJlcXVlc3RSZXN1bHQpCitzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkU2VuZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAgICAgd29y
a2VyQ2xpZW50V3JhcHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1bHQoc2VuZFJlcXVlc3RSZXN1bHQp
OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsIHx8ICFtX3dvcmtlckNs
aWVudFdyYXBwZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0
ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKKyAgICBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldl
YlNvY2tldENoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0
RGlkU2VuZCwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdCksIG1fdGFz
a01vZGUpOwogfQogCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hh
bm5lbCB8fCAhbV93b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICAgICByZXR1cm47Ci0gICAgYm9v
bCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5
RGF0YSk7CisgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJl
cXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEpOwog
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFNlbmQsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwg
c2VuZFJlcXVlc3RSZXN1bHQpLCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3Qg
QmxvYiYgYmluYXJ5RGF0YSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICgh
bV9tYWluV2ViU29ja2V0Q2hhbm5lbCB8fCAhbV93b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICAg
ICByZXR1cm47Ci0gICAgYm9vbCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENo
YW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7CisgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5z
ZW5kKGJpbmFyeURhdGEpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFNlbmQsIG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHQpLCBtX3Rhc2tNb2RlKTsKIH0KIApA
QCAtNDMyLDIzICs0MzIsMjUgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6bWFpblRocmVhZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBwZWVyLT5z
ZW5kKCpibG9iKTsKIH0KIAotYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
QnJpZGdlOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghbV93b3JrZXJDbGll
bnRXcmFwcGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgQVNTRVJUKG1fcGVlcik7CiAgICAg
c2V0TWV0aG9kTm90Q29tcGxldGVkKCk7CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9h
ZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
Om1haW5UaHJlYWRTZW5kLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIG1lc3NhZ2Up
KTsKICAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RD
b21wbGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
KiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwotICAgIHJldHVy
biBjbGllbnRXcmFwcGVyICYmIGNsaWVudFdyYXBwZXItPnNlbmRSZXF1ZXN0UmVzdWx0KCk7Cisg
ICAgaWYgKCFjbGllbnRXcmFwcGVyKQorICAgICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRGYWlsOworICAgIHJldHVybiBjbGllbnRXcmFwcGVyLT5zZW5kUmVxdWVz
dFJlc3VsdCgpOwogfQogCi1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCitUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQogewogICAgIGlm
ICghbV93b3JrZXJDbGllbnRXcmFwcGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgQVNTRVJU
KG1fcGVlcik7CiAgICAgLy8gQXJyYXlCdWZmZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRo
ZSBjb250ZW50IG9mIEFycmF5QnVmZmVyIGlzIGNvcGllZCBpbnRvIFZlY3RvcjxjaGFyPi4KICAg
ICBPd25QdHI8VmVjdG9yPGNoYXI+ID4gZGF0YSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4o
YmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpKTsKQEAgLTQ1OSwyMCArNDYxLDI0IEBAIGJvb2wgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZChjb25zdCBBcnJheUJ1
ZmZlciYgYmluYXJ5RGF0CiAgICAgUmVmUHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlzKTsKICAgICB3
YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQo
KTsKLSAgICByZXR1cm4gY2xpZW50V3JhcHBlciAmJiBjbGllbnRXcmFwcGVyLT5zZW5kUmVxdWVz
dFJlc3VsdCgpOworICAgIGlmICghY2xpZW50V3JhcHBlcikKKyAgICAgICAgcmV0dXJuIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKKyAgICByZXR1cm4gY2xpZW50V3JhcHBl
ci0+c2VuZFJlcXVlc3RSZXN1bHQoKTsKIH0KIAotYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKGNvbnN0IEJsb2ImIGJpbmFyeURhdGEpCitUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKGNvbnN0IEJsb2ImIGJpbmFyeURhdGEpCiB7CiAgICAgaWYg
KCFtX3dvcmtlckNsaWVudFdyYXBwZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKICAgICBBU1NFUlQo
bV9wZWVyKTsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKICAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRCbG9iLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KG1fcGVlciksIGJpbmFyeURhdGEudXJsKCksIGJpbmFyeURhdGEudHlwZSgpLCBiaW5hcnlEYXRh
LnNpemUoKSkpOwogICAgIFJlZlB0cjxCcmlkZ2U+IHByb3RlY3QodGhpcyk7CiAgICAgd2FpdEZv
ck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7Ci0g
ICAgcmV0dXJuIGNsaWVudFdyYXBwZXIgJiYgY2xpZW50V3JhcHBlci0+c2VuZFJlcXVlc3RSZXN1
bHQoKTsKKyAgICBpZiAoIWNsaWVudFdyYXBwZXIpCisgICAgICAgIHJldHVybiBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CisgICAgcmV0dXJuIGNsaWVudFdyYXBwZXItPnNl
bmRSZXF1ZXN0UmVzdWx0KCk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6Om1haW5UaHJlYWRCdWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQZWVyKiBwZWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAppbmRleCAzMTdmY2U5M2NlZmExM2UxMzMwNGE2NzFlYTlmYmY3MTkxMzBkZGM4Li5mYTgxNmRh
NzY3ZDE4NzEyODM4ZmFhMjYwNmE2MmQ1NTU0YjRkMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNjUsOSArNjUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmQo
Y29uc3QgQXJyYXlCdWZmZXImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25z
dCBCbG9iJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0
IEFycmF5QnVmZmVyJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7
CkBAIC0xMzIsOSArMTMyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICB+QnJpZGdl
KCk7CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7Ci0gICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAg
ICBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKLSAgICAgICAgYm9vbCBzZW5kKGNvbnN0
IEJsb2ImKTsKKyAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgICAgICBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJik7CisgICAgICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwog
ICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZvaWQgY2xv
c2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBmYWlsKGNv
bnN0IFN0cmluZyYgcmVhc29uKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzY2Q3OWYxMjg2NWNmNjlhMTRlMDRiYzc3YmM5
OWM4YzEzMjk1OTc5Li42NzNhMzcwMzMwMzFiZGQ1MzM2NjBkYjQyY2ZjYzYzNzI5YjAzMDRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDMtMDUgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFz
aGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFNob3VsZCByYWlzZSBTWU5U
QVhfRVJSIHdoZW4gbWVzc2FnZSBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDEwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB1
bnBhaXJlZCBzdXJyb2dhdGVzIGNoZWNrIGZvciBXZWJTb2NrZXQgbWVzc2FnZSBhbmQgY2xvc2Ug
cmVhc29uLgorICAgICAgICBVcGRhdGVkIHR3byBleHBlY3RhdGlvbnMgZm9yIGNsb3NlKCkgdGVz
dHMgYmVjYXVzZSBmdXJ0aGVyIGVycm9yIG1lc3NhZ2UgaXMgYWRkZWQuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMt
aW4tY2xvc2UtcmVhc29uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRl
cy1pbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1leHBlY3RlZC50eHQ6CisKIDIwMTItMDMtMDUgIE1p
aG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNd
W0NTU09NXVByZXZlbnQgY3JlYXRpb24gb2YgTmFtZWRGbG93IG9iamVjdCBmb3IgaW52YWxpZCBm
bG93IG5hbWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKaW5kZXggY2ZjMTg2MWM1ZmRjYzYz
OGQyNDIyNGQyYjE0OTUwYzNhZjU2NTQ4ZC4uZGI5MjliMDU5MzQ2Y2UxYjRiYTcxNDJkZDYxM2M5
ZWMwMWMyYjhlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw2IEBA
CiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0
aW9uIGlzIGVzdGFibGlzaGVkLgorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgY2xvc2UgbWVz
c2FnZSBpcyB0b28gbG9uZy4KK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IGNsb3NlIG1lc3Nh
Z2UgaXMgdG9vIGxvbmcuCiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVm
b3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgogVmVyaWZ5IFdlYlNvY2tldDo6Y2xv
c2UgYmVoYXZpb3JzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5w
YWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY3YjllNTFiZTcxNTM2NWM1YTRlYTkwZTYyZTY0MGQxMWZiMDYyZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVk
LXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBA
CitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGNvbnRhaW5zIGludmFs
aWQgY2hhcmFjdGVyKHMpLgorQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hl
biBhdHRlbXBpbmcgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aCB1bnBhaXJlZCBzdXJyb2dh
dGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Nvbm5lY3RlZC4KK1BBU1Mgd3Mu
Y2xvc2UoMTAwMCwgJ+2ghycpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERP
TSBFeGNlcHRpb24gMTIuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dh
dGVzLWluLWNsb3NlLXJlYXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YmRmMmExZWU5ZTI5YjliMGU2
YmViZmZlNGVmM2VlNDU4NTc3NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2Ut
cmVhc29uLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIkNo
ZWNrcyB3aGV0aGVyIFNZTlRBWF9FUlIgaXMgdGhyb3duIHdoZW4gYXR0ZW1waW5nIHRvIGNsb3Nl
IHRoZSBjb25uZWN0aW9uIHdpdGggdW5wYWlyZWQgc3Vycm9nYXRlcy4iKTsKKword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHdzID0gbmV3IFdlYlNvY2tldCgi
d3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvIik7CisKK3dzLm9u
b3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiQ29ubmVjdGVkLiIpOworICAgIHNob3Vs
ZFRocm93KCJ3cy5jbG9zZSgxMDAwLCAnXHVEODA3Jyk7Iik7CisgICAgd3MuY2xvc2UoKTsKK307
CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9
IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gKG1l
c3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0
aW9uKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vu
cGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJh
YzMzYjBkYjE0YjMyYTY2ZTQ5YTg0Yjc4NjRmMmRhM2YyYTU2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vy
cm9nYXRlcy1pbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDT05TT0xF
IE1FU1NBR0U6IFdlYnNvY2tldCBtZXNzYWdlIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyKHMp
LgorQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBhdHRlbXBpbmcgdG8g
c2VuZCB1bnBhaXJlZCBzdXJyb2dhdGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K0Nvbm5lY3RlZC4KK1BBU1Mgd3Muc2VuZCgn7aCHJyk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJl
ZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjgyOTQ3ZmIwMTE1NTE5
N2JhZmM2MTYwNzUwODJkNzIxMTY0ZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1l
c3NhZ2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiQ2hl
Y2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBhdHRlbXBpbmcgdG8gc2VuZCB1
bnBhaXJlZCBzdXJyb2dhdGVzLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDApOworCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQorewor
ICAgIGRlYnVnKCJDb25uZWN0ZWQuIik7CisgICAgc2hvdWxkVGhyb3coIndzLnNlbmQoJ1x1RDgw
NycpOyIpOworICAgIHdzLmNsb3NlKCk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAo
ZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIHRlc3RGYWlsZWQo
Im9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJcIiki
KTsKKyAgICB3cy5jbG9zZSgpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dAppbmRl
eCA5N2U4NDBiMmZlYjZlYmM3YjUxMTA5NzA4ZmIxY2Y0NDJhYWRjY2UzLi5iZGRjNmRlMzMwNzg1
ZDU3ZjZjMjMyNGJiMzJmMmYxM2MxYzk4ZmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9j
bG9zZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw2IEBACiBDT05TT0xFIE1FU1NBR0U6IFdlYlNv
Y2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorQ09O
U09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgY2xvc2UgbWVzc2FnZSBpcyB0b28gbG9uZy4KK0NPTlNP
TEUgTUVTU0FHRTogV2ViU29ja2V0IGNsb3NlIG1lc3NhZ2UgaXMgdG9vIGxvbmcuCiBDT05TT0xF
IE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVz
dGFibGlzaGVkLgogVmVyaWZ5IFdlYlNvY2tldDo6Y2xvc2UgYmVoYXZpb3JzIGluIFdvcmtlci4K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130260</attachid>
            <date>2012-03-05 18:29:53 -0800</date>
            <delta_ts>2012-03-06 22:11:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80103-20120306112951.patch</filename>
            <type>text/plain</type>
            <size>11522</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE3OTgxYjEyN2ZhYzJm
N2VkN2Y4NWUxOGQzZGEzMGYwYTc3MTg0Ni4uMjk1ZDY0MzZhNDNlMTU2Y2VlOTg3NzFjMjdiZWE0
YWM5OTJlY2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEyLTAzLTA1ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbV2ViU29ja2V0
XSBTaG91bGQgcmFpc2UgU1lOVEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQg
c3Vycm9nYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgVVRGOCB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgV2ViU29ja2V0IG1lc3NhZ2UgYW5kIGNs
b3NlIHJlYXNvbi4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMt
aW4tbWVzc2FnZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6IFJhaXNlIFNZTlRBWF9F
UlIgaWYgdGhlIG1lc3NhZ2UgaXMgaW52YWxpZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6Y2xvc2UpOlJhaXNlIFNZTlRBWF9FUlIgaWYgdGhlIHJlYXNvbiBpcyBpbnZhbGlkLgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOiBDaGVjayB3aGV0aGVyIG1lc3NhZ2Ug
aXMgYSB2YWxpZCBVVEY4IHN0cmluZy4KKworMjAxMi0wMy0wNSAgS2VuaWNoaSBJc2hpYmFzaGkg
IDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW1dlYlNvY2tldF0gSW50cm9kdWNlIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0CiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDM1NgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGU5ZDljZTZmYmY4MmMxM2Jj
MmYxYzIwYWI2YWJjYjY2ZmUyOTBkOTkuLjc4MTgzZjFmYmQ0OWZiMmEyYjk2YzNiYTQ3M2JiNTg5
Y2I3ODU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCkBAIC0yODgsOSArMjg4LDE0IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fYnVmZmVyZWRB
bW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2Us
IGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIC8vIEZJWE1FOiBjaGVjayBtZXNzYWdlIGlzIHZhbGlkIHV0ZjguCiAgICAg
QVNTRVJUKG1fY2hhbm5lbCk7Ci0gICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKSA9
PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CisgICAgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgcmVzdWx0ID0gbV9jaGFubmVsLT5zZW5kKG1l
c3NhZ2UpOworICAgIGlmIChyZXN1bHQgPT0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Oklu
dmFsaWRNZXNzYWdlKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsICJXZWJzb2NrZXQgbWVzc2FnZSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcihzKS4i
KTsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQgPT0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRT
dWNjZXNzOwogfQogCiBib29sIFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlciogYmluYXJ5RGF0
YSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNDMsOCArMzQ4LDE1IEBAIHZvaWQgV2ViU29ja2V0
OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IGlmIHJlYXNvbiBjb250YWlucyBhbnkg
dW5wYWlyZWQgc3Vycm9nYXRlcywgcmFpc2UgU1lOVEFYX0VSUi4KLSAgICAgICAgaWYgKHJlYXNv
bi51dGY4KCkubGVuZ3RoKCkgPiBtYXhSZWFzb25TaXplSW5CeXRlcykgeworICAgICAgICBDU3Ry
aW5nIHV0ZjggPSByZWFzb24udXRmOCh0cnVlKTsKKyAgICAgICAgaWYgKHV0ZjgubGVuZ3RoKCkg
PiBtYXhSZWFzb25TaXplSW5CeXRlcykgeworICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgIldlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGlzIHRvbyBsb25n
LiIpOworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIC8vIENoZWNrcyB3aGV0aGVyIHJlYXNvbiBpcyB2YWxpZCB1dGY4
LgorICAgICAgICBpZiAodXRmOC5pc051bGwoKSAmJiByZWFzb24ubGVuZ3RoKCkpIHsKKyAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJXZWJTb2NrZXQg
Y2xvc2UgbWVzc2FnZSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcihzKS4iKTsKICAgICAgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCmluZGV4IGZiODdkMzhjZGU2NDhkMTJkY2I4ZTE4ZDA1ZjE1NTQyZTUwNmZjMTguLjZj
OTc2YWFjOWVlMjZmMmJlNzI1YmUyOGY1YzAyMmYxZmIwNWMyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAg
LTE2MCw3ICsxNjAsOSBAQCBTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCiBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpz
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci0gICAg
Q1N0cmluZyB1dGY4ID0gbWVzc2FnZS51dGY4KCk7CisgICAgQ1N0cmluZyB1dGY4ID0gbWVzc2Fn
ZS51dGY4KHRydWUpOworICAgIGlmICh1dGY4LmlzTnVsbCgpICYmIG1lc3NhZ2UubGVuZ3RoKCkp
CisgICAgICAgIHJldHVybiBJbnZhbGlkTWVzc2FnZTsKICAgICBpZiAobV91c2VIaXhpZTc2UHJv
dG9jb2wpIHsKICAgICAgICAgcmV0dXJuIHNlbmRGcmFtZUhpeGllNzYodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpID8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzIDog
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogICAgIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4Yjg3
MzRiNDI4OTNhZGUxYjc3MGE1NDQyNjEwMTlkY2U5ZmY5OTdhLi44NDcxZTIwMjEyMjM2NjJmYTUw
NWFkMmRlMTg0NWQ4ZTdmOTM0OWJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDMtMDUg
IEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJT
b2NrZXRdIFNob3VsZCByYWlzZSBTWU5UQVhfRVJSIHdoZW4gbWVzc2FnZSBjb250YWlucyB1bnBh
aXJlZCBzdXJyb2dhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MDEwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIHRlc3RzIGZvciB1bnBhaXJlZCBzdXJyb2dhdGVzIGNoZWNrIGZvciBXZWJT
b2NrZXQgbWVzc2FnZSBhbmQgY2xvc2UgcmVhc29uLgorICAgICAgICBVcGRhdGVkIHR3byBleHBl
Y3RhdGlvbnMgZm9yIGNsb3NlKCkgdGVzdHMgYmVjYXVzZSBmdXJ0aGVyIGVycm9yIG1lc3NhZ2Ug
aXMgYWRkZWQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4t
bWVzc2FnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1tZXNzYWdlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9z
ZS1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisKIDIwMTItMDMtMDUgIFRvbnkgQ2hhbmcgIDx0b255
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBhZGQgdGVzdHMgZm9yIG11bHRpbGluZSBmbGV4Ym94
IGFuZCBmbGV4LXBhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKaW5kZXggY2ZjMTg2MWM1
ZmRjYzYzOGQyNDIyNGQyYjE0OTUwYzNhZjU2NTQ4ZC4uZGI5MjliMDU5MzQ2Y2UxYjRiYTcxNDJk
ZDYxM2M5ZWMwMWMyYjhlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSw2IEBACiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBj
b25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgY2xv
c2UgbWVzc2FnZSBpcyB0b28gbG9uZy4KK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IGNsb3Nl
IG1lc3NhZ2UgaXMgdG9vIGxvbmcuCiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9z
ZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgogVmVyaWZ5IFdlYlNvY2tl
dDo6Y2xvc2UgYmVoYXZpb3JzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY3YjllNTFiZTcxNTM2NWM1YTRlYTkwZTYyZTY0MGQxMWZiMDYyZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vu
cGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGNvbnRhaW5z
IGludmFsaWQgY2hhcmFjdGVyKHMpLgorQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJv
d24gd2hlbiBhdHRlbXBpbmcgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aCB1bnBhaXJlZCBz
dXJyb2dhdGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Nvbm5lY3RlZC4KK1BB
U1Mgd3MuY2xvc2UoMTAwMCwgJ+2ghycpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9F
UlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1z
dXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YmRmMmExZWU5ZTI5
YjliMGU2YmViZmZlNGVmM2VlNDU4NTc3NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4t
Y2xvc2UtcmVhc29uLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRp
b24oIkNoZWNrcyB3aGV0aGVyIFNZTlRBWF9FUlIgaXMgdGhyb3duIHdoZW4gYXR0ZW1waW5nIHRv
IGNsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGggdW5wYWlyZWQgc3Vycm9nYXRlcy4iKTsKKword2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHdzID0gbmV3IFdlYlNv
Y2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvIik7CisK
K3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiQ29ubmVjdGVkLiIpOworICAg
IHNob3VsZFRocm93KCJ3cy5jbG9zZSgxMDAwLCAnXHVEODA3Jyk7Iik7CisgICAgd3MuY2xvc2Uo
KTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAgICB2YXIgbWVz
c2FnZSA9IGV2ZW50LmRhdGE7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxl
ZC4gKG1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiKSIpOworfTsKKword3Mub25jbG9zZSA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2Fn
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjJhYzMzYjBkYjE0YjMyYTY2ZTQ5YTg0Yjc4NjRmMmRhM2YyYTU2ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWly
ZWQtc3Vycm9nYXRlcy1pbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitD
T05TT0xFIE1FU1NBR0U6IFdlYnNvY2tldCBtZXNzYWdlIGNvbnRhaW5zIGludmFsaWQgY2hhcmFj
dGVyKHMpLgorQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBhdHRlbXBp
bmcgdG8gc2VuZCB1bnBhaXJlZCBzdXJyb2dhdGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK0Nvbm5lY3RlZC4KK1BBU1Mgd3Muc2VuZCgn7aCHJyk7IHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVz
c2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjgyOTQ3ZmIw
MTE1NTE5N2JhZmM2MTYwNzUwODJkNzIxMTY0ZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVz
LWluLW1lc3NhZ2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlv
bigiQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBhdHRlbXBpbmcgdG8g
c2VuZCB1bnBhaXJlZCBzdXJyb2dhdGVzLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4
ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24o
KQoreworICAgIGRlYnVnKCJDb25uZWN0ZWQuIik7CisgICAgc2hvdWxkVGhyb3coIndzLnNlbmQo
J1x1RDgwNycpOyIpOworICAgIHdzLmNsb3NlKCk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5j
dGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIHRlc3RG
YWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSAr
ICJcIikiKTsKKyAgICB3cy5jbG9zZSgpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4
dAppbmRleCA5N2U4NDBiMmZlYjZlYmM3YjUxMTA5NzA4ZmIxY2Y0NDJhYWRjY2UzLi5iZGRjNmRl
MzMwNzg1ZDU3ZjZjMjMyNGJiMzJmMmYxM2MxYzk4ZmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9jbG9zZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw2IEBACiBDT05TT0xFIE1FU1NBR0U6
IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVk
LgorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgY2xvc2UgbWVzc2FnZSBpcyB0b28gbG9uZy4K
K0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IGNsb3NlIG1lc3NhZ2UgaXMgdG9vIGxvbmcuCiBD
T05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLgogVmVyaWZ5IFdlYlNvY2tldDo6Y2xvc2UgYmVoYXZpb3JzIGluIFdv
cmtlci4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130542</attachid>
            <date>2012-03-06 22:11:11 -0800</date>
            <delta_ts>2012-03-07 01:09:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-80103-20120307151109.patch</filename>
            <type>text/plain</type>
            <size>11825</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA1M2JmZGIxOTJmNGQ3
NzUwZTExMDFkNmU1NDU0NTVmNTBkNTk4OC4uYzRmMTg4NjJiMTU5MWQ5YzkyM2QwMzY3OGM3YzA2
M2VjMTZmZDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTA2ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBTaG91bGQgcmFpc2UgU1lOVEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQg
c3Vycm9nYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgVVRGOCB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgV2ViU29ja2V0IG1lc3NhZ2UgYW5kIGNs
b3NlIHJlYXNvbi4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMt
aW4tbWVzc2FnZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6IFJhaXNlIFNZTlRBWF9F
UlIgaWYgdGhlIG1lc3NhZ2UgaXMgaW52YWxpZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6Y2xvc2UpOlJhaXNlIFNZTlRBWF9FUlIgaWYgdGhlIHJlYXNvbiBpcyBpbnZhbGlkLgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOiBDaGVjayB3aGV0aGVyIG1lc3NhZ2Ug
aXMgYSB2YWxpZCBVVEY4IHN0cmluZy4KKwogMjAxMi0wMy0wNiAgSGFqaW1lIE1vcnJpdGEgIDxt
b3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzk5MzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZTlkOWNlNmZiZjgyYzEzYmMyZjFjMjBhYjZhYmNiNjZm
ZTI5MGQ5OS4uNzgxODNmMWZiZDQ5ZmIyYTJiOTZjM2JhNDczYmI1ODljYjc4NTkyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTI4
OCw5ICsyODgsMTQgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2Ug
PSBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSwgZ2V0RnJhbWluZ092ZXJo
ZWFkKHBheWxvYWRTaXplKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgLy8g
RklYTUU6IGNoZWNrIG1lc3NhZ2UgaXMgdmFsaWQgdXRmOC4KICAgICBBU1NFUlQobV9jaGFubmVs
KTsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpID09IFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKKyAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCByZXN1bHQgPSBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CisgICAgaWYg
KHJlc3VsdCA9PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6SW52YWxpZE1lc3NhZ2UpIHsK
KyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldlYnNvY2tl
dCBtZXNzYWdlIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyKHMpLiIpOworICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdCA9PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKIGJv
b2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTM0Myw4ICszNDgsMTUgQEAgdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICAvLyBGSVhNRTogaWYgcmVhc29uIGNvbnRhaW5zIGFueSB1bnBhaXJlZCBzdXJyb2dh
dGVzLCByYWlzZSBTWU5UQVhfRVJSLgotICAgICAgICBpZiAocmVhc29uLnV0ZjgoKS5sZW5ndGgo
KSA+IG1heFJlYXNvblNpemVJbkJ5dGVzKSB7CisgICAgICAgIENTdHJpbmcgdXRmOCA9IHJlYXNv
bi51dGY4KHRydWUpOworICAgICAgICBpZiAodXRmOC5sZW5ndGgoKSA+IG1heFJlYXNvblNpemVJ
bkJ5dGVzKSB7CisgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNv
bGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiV2ViU29ja2V0IGNsb3NlIG1lc3NhZ2UgaXMgdG9vIGxvbmcuIik7CisgICAgICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgLy8gQ2hlY2tzIHdoZXRoZXIgcmVhc29uIGlzIHZhbGlkIHV0ZjguCisgICAgICAgIGlmICh1
dGY4LmlzTnVsbCgpICYmIHJlYXNvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGNv
bnRhaW5zIGludmFsaWQgY2hhcmFjdGVyKHMpLiIpOwogICAgICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZmI4
N2QzOGNkZTY0OGQxMmRjYjhlMThkMDVmMTU1NDJlNTA2ZmMxOC4uNmM5NzZhYWM5ZWUyNmYyYmU3
MjViZTI4ZjVjMDIyZjFmYjA1YzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTYwLDcgKzE2MCw5IEBA
IFN0cmluZyBXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKCkKIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5k
ICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICBDU3RyaW5nIHV0ZjggPSBt
ZXNzYWdlLnV0ZjgoKTsKKyAgICBDU3RyaW5nIHV0ZjggPSBtZXNzYWdlLnV0ZjgodHJ1ZSk7Cisg
ICAgaWYgKHV0ZjguaXNOdWxsKCkgJiYgbWVzc2FnZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IEludmFsaWRNZXNzYWdlOwogICAgIGlmIChtX3VzZUhpeGllNzZQcm90b2NvbCkgewogICAgICAg
ICByZXR1cm4gc2VuZEZyYW1lSGl4aWU3Nih1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSkgPyBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3MgOiBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyYzJlMTBkMDhlMGZlNmQyYmMz
YjljYjZhNGZmNWYyZDA2NThjNGIuLjBkMWU5NDdiZDlhZTUxOTVhZGI0MDg5ZmEyODAzMjliM2E2
MjM0YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wMy0wNiAgS2VuaWNoaSBJc2hpYmFz
aGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYlNvY2tldF0gU2hvdWxkIHJh
aXNlIFNZTlRBWF9FUlIgd2hlbiBtZXNzYWdlIGNvbnRhaW5zIHVucGFpcmVkIHN1cnJvZ2F0ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVz
dHMgZm9yIHVucGFpcmVkIHN1cnJvZ2F0ZXMgY2hlY2sgZm9yIFdlYlNvY2tldCBtZXNzYWdlIGFu
ZCBjbG9zZSByZWFzb24uCisgICAgICAgIFVwZGF0ZWQgdHdvIGV4cGVjdGF0aW9ucyBmb3IgY2xv
c2UoKSB0ZXN0cyBiZWNhdXNlIGZ1cnRoZXIgZXJyb3IgbWVzc2FnZSBpcyBhZGRlZC4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0
OiBVcGRhdGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5w
YWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0
ZXMtaW4tY2xvc2UtcmVhc29uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1tZXNzYWdlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dDog
VXBkYXRlZC4KKwogMjAxMi0wMy0wNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzk5MzUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKaW5kZXggY2ZjMTg2MWM1ZmRjYzYzOGQy
NDIyNGQyYjE0OTUwYzNhZjU2NTQ4ZC4uZGI5MjliMDU5MzQ2Y2UxYjRiYTcxNDJkZDYxM2M5ZWMw
MWMyYjhlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw2IEBACiBD
T05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLgorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgY2xvc2UgbWVzc2Fn
ZSBpcyB0b28gbG9uZy4KK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IGNsb3NlIG1lc3NhZ2Ug
aXMgdG9vIGxvbmcuCiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3Jl
IHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgogVmVyaWZ5IFdlYlNvY2tldDo6Y2xvc2Ug
YmVoYXZpb3JzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWly
ZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVl
YmI1YzI3YzJmNDJiMDBkM2M1OWRmMTg5ZGY1NDdkZjI4MjRhMDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1
cnJvZ2F0ZXMtaW4tY2xvc2UtcmVhc29uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitD
T05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBjbG9zZSBtZXNzYWdlIGNvbnRhaW5zIGludmFsaWQg
Y2hhcmFjdGVyKHMpLgorQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBh
dHRlbXBpbmcgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aCB1bnBhaXJlZCBzdXJyb2dhdGVz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK0Nvbm5lY3RlZC4KK1BBU1MgU1lOVEFY
X0VSUiB3YXMgdGhyb3duLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24uaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9n
YXRlcy1pbi1jbG9zZS1yZWFzb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTY0OTRhY2MwMzAwYjY5MzMy
YjYyMjFiNTc1ZmE0OWRiYjYwYzJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3Nl
LXJlYXNvbi5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJD
aGVja3Mgd2hldGhlciBTWU5UQVhfRVJSIGlzIHRocm93biB3aGVuIGF0dGVtcGluZyB0byBjbG9z
ZSB0aGUgY29ubmVjdGlvbiB3aXRoIHVucGFpcmVkIHN1cnJvZ2F0ZXMuIik7CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2
V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQo
IndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNobyIpOworCit3cy5v
bm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIkNvbm5lY3RlZC4iKTsKKyAgICB0cnkg
eworICAgICAgICB3cy5jbG9zZSgxMDAwLCAnXHVEODA3Jyk7CisgICAgICAgIHRlc3RGYWlsZWQo
J1NZTlRBWF9FUlIgc2hvdWxkIGJlIHRocm93bi4nKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgaWYgKGUubmFtZSA9PSAnU1lOVEFYX0VSUicpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCdT
WU5UQVhfRVJSIHdhcyB0aHJvd24uJyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoJ1VuZXhwZWN0ZWQgZXhjZXB0aW9uOiAnICsgZSk7CisgICAgfQorICAgIHdzLmNsb3Nl
KCk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1l
c3NhZ2UgPSBldmVudC5kYXRhOworICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxs
ZWQuIChtZXNzYWdlID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKK307CisKK3dzLm9uY2xvc2Ug
PSBmdW5jdGlvbigpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3Nh
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmExODEwNjA1YTUzY2U5ZDE2OWY3OWJhMDJiYjRhZDE5NzAyMjc0OGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFp
cmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAor
Q09OU09MRSBNRVNTQUdFOiBXZWJzb2NrZXQgbWVzc2FnZSBjb250YWlucyBpbnZhbGlkIGNoYXJh
Y3RlcihzKS4KK0NoZWNrcyB3aGV0aGVyIFNZTlRBWF9FUlIgaXMgdGhyb3duIHdoZW4gYXR0ZW1w
aW5nIHRvIHNlbmQgdW5wYWlyZWQgc3Vycm9nYXRlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitDb25uZWN0ZWQuCitQQVNTIFNZTlRBWF9FUlIgd2FzIHRocm93bi4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJv
Z2F0ZXMtaW4tbWVzc2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMDJmOWVmY2YyZWJiY2RiMTc0MzhhMjUzMDc0ODc5MzYyNzJhZDNmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJl
ZC1zdXJyb2dhdGVzLWluLW1lc3NhZ2UuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CitkZXNjcmlwdGlvbigiQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBpcyB0aHJvd24gd2hlbiBh
dHRlbXBpbmcgdG8gc2VuZCB1bnBhaXJlZCBzdXJyb2dhdGVzLiIpOworCit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNv
Y2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czov
L2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKKword3Mub25vcGVu
ID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJDb25uZWN0ZWQuIik7CisgICAgdHJ5IHsKKyAg
ICAgICAgd3Muc2VuZCgnXHVEODA3Jyk7CisgICAgICAgIHRlc3RGYWlsZWQoJ1NZTlRBWF9FUlIg
c2hvdWxkIGJlIHRocm93bi4nKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGUubmFt
ZSA9PSAnU1lOVEFYX0VSUicpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCdTWU5UQVhfRVJSIHdh
cyB0aHJvd24uJyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhw
ZWN0ZWQgZXhjZXB0aW9uOiAnICsgZSk7CisgICAgfQorICAgIHdzLmNsb3NlKCk7Cit9OworCit3
cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVu
dC5kYXRhOworICAgIHRlc3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIChtZXNzYWdl
ID0gXCIiICsgbWVzc2FnZSArICJcIikiKTsKKyAgICB3cy5jbG9zZSgpOworfTsKKword3Mub25j
bG9zZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJz
L2Nsb3NlLWV4cGVjdGVkLnR4dAppbmRleCA5N2U4NDBiMmZlYjZlYmM3YjUxMTA5NzA4ZmIxY2Y0
NDJhYWRjY2UzLi5iZGRjNmRlMzMwNzg1ZDU3ZjZjMjMyNGJiMzJmMmYxM2MxYzk4ZmUwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvY2xvc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw2IEBA
CiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0
aW9uIGlzIGVzdGFibGlzaGVkLgorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgY2xvc2UgbWVz
c2FnZSBpcyB0b28gbG9uZy4KK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IGNsb3NlIG1lc3Nh
Z2UgaXMgdG9vIGxvbmcuCiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVm
b3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgogVmVyaWZ5IFdlYlNvY2tldDo6Y2xv
c2UgYmVoYXZpb3JzIGluIFdvcmtlci4KIAo=
</data>
<flag name="commit-queue"
          id="133566"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>