<?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>36168</bug_id>
          
          <creation_ts>2010-03-16 08:27:51 -0700</creation_ts>
          <short_desc>Spatial Navigation: Code simplification in FocusController.cpp and SpatialNavigation.cpp</short_desc>
          <delta_ts>2010-04-20 13:15:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>CLOSED</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>18662</dependson>
    
    <dependson>36167</dependson>
          <blocked>35784</blocked>
    
    <blocked>36463</blocked>
    
    <blocked>36773</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>hausmann</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>200200</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-16 08:27:51 -0700</bug_when>
    <thetext>WebCore::distanceInDirection method was handling much of the logic not strictly 
related only to the distance acquisition between nodes. This method will simplified and renamed to &apos;WebCore::distanceDataForNode&apos;. It now is responsible for not only getting the distance, but also parent document distance, alignment and parent document alignment to the
current focused node. All assignement logic previously there was moved to updateFocusCandidateIfCloser.

patch coming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200201</commentid>
    <comment_count>1</comment_count>
      <attachid>50796</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-16 08:32:54 -0700</bug_when>
    <thetext>Created attachment 50796
patch 0.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200203</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-16 08:35:13 -0700</bug_when>
    <thetext>Attachment 50796 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/860024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200204</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-16 08:35:36 -0700</bug_when>
    <thetext>Attachment 50796 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/928007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200208</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-16 08:37:31 -0700</bug_when>
    <thetext>Attachment 50796 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/FocusController.cpp:410:  Missing space before ( in if(  [whitespace/parens] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200210</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-16 08:39:27 -0700</bug_when>
    <thetext>Attachment 50796 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/919009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200218</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-16 08:42:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Attachment 50796 [details] did not build on gtk:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/919009

please, the build problems are to be ignored, because it depends on patch in
bug 36167</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201313</commentid>
    <comment_count>7</comment_count>
      <attachid>51026</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-18 08:33:21 -0700</bug_when>
    <thetext>Created attachment 51026
patch 0.1.1

Fixed the style issue. It should also build now that the dependency patch has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201320</commentid>
    <comment_count>8</comment_count>
      <attachid>51028</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-18 08:45:17 -0700</bug_when>
    <thetext>Created attachment 51028
patch 0.1.2

Fixed a wrong changeLog entry in patch 0.1.1 (patch 51026)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201495</commentid>
    <comment_count>9</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-18 12:59:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=51028) [details]
&gt; patch 0.1.2
&gt; 
&gt; Fixed a wrong changeLog entry in patch 0.1.1 (patch 51026)

Simon, could you please have a look at that one? I am on my way to make the code more easily understandable and extensible, and this is the second step. 

What patch basically do is move much of the logic in |distanceForNode| method to |updateFocusCandidateIfCloser| . The former also gets renambed to |distanceDataForNode|, and gets responsible now for getting distance, parentDistance, alignment and parentAlignment all at once.

I just finished a follow up patch that will make updateFocusCandidateIfCloser method much clearer than it is now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202054</commentid>
    <comment_count>10</comment_count>
      <attachid>51190</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-19 15:13:12 -0700</bug_when>
    <thetext>Created attachment 51190
patch 0.2

Code simplification and improvements (part I)

see comment #9 (https://bugs.webkit.org/show_bug.cgi?id=36168#c9) for summary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202206</commentid>
    <comment_count>11</comment_count>
      <attachid>51190</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-20 08:00:48 -0700</bug_when>
    <thetext>Comment on attachment 51190
patch 0.2

You are doing many changes at once, so this makes it hard to review. Please split this up in smaller patches, like one making use of the new isNull, etc.

The helper is confusing to me, and doesn&apos;t make it easier for me to understand the code.

Function definitions should be on one line.

Please do not add FIXME_antonio, as told by others before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202242</commentid>
    <comment_count>12</comment_count>
      <attachid>51232</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-20 14:15:16 -0700</bug_when>
    <thetext>Created attachment 51232
(committed in r56311) patch_1 v0.1 - making use of isNull and document methods.

As per kenneth&apos;s request, lets split things up to help reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202245</commentid>
    <comment_count>13</comment_count>
      <attachid>51232</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-20 14:39:10 -0700</bug_when>
    <thetext>Comment on attachment 51232
(committed in r56311) patch_1 v0.1 - making use of isNull and document methods.

Why is this patch called v0.1? Is this not the final one that you are submitting for review?

&gt;      if (alignment != None
&gt; -        || (candidate.node &amp;&amp; candidate.parentAlignment &gt;= alignment
&gt; -        &amp;&amp; (candidate.node-&gt;document() == dest-&gt;document())
&gt; -        &amp;&amp; alignment &gt; None)) {
&gt; +        || (!candidate.isNull() &amp;&amp; candidate.parentAlignment &gt;= alignment
&gt; +        &amp;&amp; candidate.document() == dest-&gt;document())) {
&gt;  

Is it possible to refactor code to bail out earlier if the alignment or the candidate is null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202484</commentid>
    <comment_count>14</comment_count>
      <attachid>51285</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-22 07:48:51 -0700</bug_when>
    <thetext>Created attachment 51285
patch_2 - v1 - code simplification

I will try to help reviewers to understand the refactory going on here, by pointing out that is just code moving around, so one does not need to understand the code completely and in all its details to review it.

--&gt; In the first chunk of the patch: it is code moving from distanceForNode to updateFocusCandidateIfCloser
+    bool sameDocument = candidate.document() == closest.document();
(...)

--&gt; In the 2nd chunk, code is not being removed but moving down to the same method body, 
    with different variable names.
-    // If |focusedNode| and |candidate| are in the same document AND
(...)


--&gt; In the 3rd chunk: it is also about code moving from distanceForNode to updateFocusCandidateIfCloser
+    if (candidate.alignment != None
(...)


--&gt; the last big chunck in distanceInDirection: is not a sonely code removal. It was moved to updateFocusCandidateIfCloser
-    RectsAlignment alignment = alignmentForRects(direction, curRect, targetRect);
(...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202490</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-22 08:06:04 -0700</bug_when>
    <thetext>Attachment 51285 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/978125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202680</commentid>
    <comment_count>16</comment_count>
      <attachid>51285</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-22 12:23:24 -0700</bug_when>
    <thetext>Comment on attachment 51285
patch_2 - v1 - code simplification

(In reply to comment #15)
&gt; Attachment 51285 [details] did not build on mac:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/978125

I talked to Eric and he clarified the Mac build problem:

&quot;The problem here is that you&apos;ve made FocusController (a header file
which is exposed privately from WebCore to WebKit) depend on
SpatialNavigation.h w/o also exposing SpatialNavigation.h.

Do you have to make it depend on the header?  You can definitely mark
SpatialNavigation as a &quot;private&quot; header, instead of &quot;project&quot; as it
defaults to, and then the build will work, but itmight be easier to
just avoid the header spawl all together.&quot;


clearing review as I will address it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202785</commentid>
    <comment_count>17</comment_count>
      <attachid>51362</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-22 15:01:25 -0700</bug_when>
    <thetext>Created attachment 51362
patch_2 - v2 - code simplification

Same as &quot;patch_2 - v1&quot; but updated to not need to expose SpatialNavigation.h to private headers.

Please see comment #14 https://bugs.webkit.org/show_bug.cgi?id=36168#c14 for easy reviewing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203024</commentid>
    <comment_count>18</comment_count>
      <attachid>51417</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-23 06:42:46 -0700</bug_when>
    <thetext>Created attachment 51417
patch_2 - v3 - code simplification

Same as &quot;patch_2 - v2&quot; , but including SpatialNavigation.h as a Private Header to Mac.

please see comment #14 for easy reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205568</commentid>
    <comment_count>19</comment_count>
      <attachid>51940</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-29 11:35:40 -0700</bug_when>
    <thetext>Created attachment 51940
(committed in r57061) patch_2 - v4 - code simplification

Same as &quot;patch_2 - v3&quot;, rebased to Tot.

please see comment #14 for easy reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208086</commentid>
    <comment_count>20</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-04-02 15:11:07 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=51940) [details]
&gt; patch_2 - v4 - code simplification
&gt; 
&gt; Same as &quot;patch_2 - v3&quot;, rebased to Tot.
&gt; 
&gt; please see comment #14 for easy reviewing.

@smfr , could you please help me w/ that one? it blocks bug 36773 and bug 36463 , plus 5 not filed.

thank you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208099</commentid>
    <comment_count>21</comment_count>
      <attachid>51940</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-02 15:21:50 -0700</bug_when>
    <thetext>Comment on attachment 51940
(committed in r57061) patch_2 - v4 - code simplification

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog

&gt; +        data, while all assignement logic previously distanceInDirection method

previously _in_

&gt; +        Parent document distance and alignment acquisitions, on their turns, have

s/on their turns/in turn

&gt; +        also changed location: they are both got from deepFindFocusableNodeInDirection,

s/got from/obtained from

&gt; +        and passed in a recursive call to findFocusableNodeInDirection via the candidateParent
&gt; +        variable (options parameter). Yet on deepFindFocusableNodeInDirection method, the need for the

s/Yet/In addition,


&gt; diff --git a/WebCore/page/FocusController.h b/WebCore/page/FocusController.h

&gt; +    void findFocusableNodeInDirection(Document*, Node*, FocusDirection, KeyboardEvent*, FocusCandidate&amp;, const FocusCandidate&amp; c = FocusCandidate());

I think you should provide names for the two FocusCandidate arguments so it&apos;s possible to tell what they are for.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208388</commentid>
    <comment_count>22</comment_count>
      <attachid>51940</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-04-04 19:58:39 -0700</bug_when>
    <thetext>Comment on attachment 51940
(committed in r57061) patch_2 - v4 - code simplification

clearing flags, 

ps: simon, thank you (again^1000)!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208510</commentid>
    <comment_count>23</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-04-05 09:01:07 -0700</bug_when>
    <thetext>I filed bug 37092 explicitily about clean up / simplify updateFocusCandidateIfCloser, so we can close this one for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211516</commentid>
    <comment_count>24</comment_count>
      <attachid>51940</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-04-11 20:03:40 -0700</bug_when>
    <thetext>Comment on attachment 51940
(committed in r57061) patch_2 - v4 - code simplification

Clearing flags on attachment: 51940

Committed r57061: &lt;http://trac.webkit.org/changeset/57061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211517</commentid>
    <comment_count>25</comment_count>
      <attachid>51232</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-04-11 20:04:40 -0700</bug_when>
    <thetext>Comment on attachment 51232
(committed in r56311) patch_1 v0.1 - making use of isNull and document methods.

Clearing flags on attachment: 51232

Committed r56311: &lt;http://trac.webkit.org/changeset/56311&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214903</commentid>
    <comment_count>26</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-04-20 13:15:27 -0700</bug_when>
    <thetext>
Revision r56311 cherry-picked into qtwebkit-2.0 with commit 85ff8ee031398d33480f47e9c9126774e146349dRevision r57061 cherry-picked into qtwebkit-2.0 with commit bed27b1b0729fc488d61b78e1ce57d695cb2d920</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50796</attachid>
            <date>2010-03-16 08:32:54 -0700</date>
            <delta_ts>2010-03-18 08:33:21 -0700</delta_ts>
            <desc>patch 0.1</desc>
            <filename>0001-Spatial-Navigation-Initial-code-simplification-in-F.patch</filename>
            <type>text/plain</type>
            <size>18491</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBmNjY1NmY1ZDRmOGFiZmIwZTM4ODZlNWJlMGJiYThlZDU3NmY1NDcxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNSBNYXIgMjAxMCAxNjoyMjoxNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogSW5pdGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29u
dHJvbGxlci5jcHAgYW5kIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcAoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuClBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoK
Tm8gYmVoYXZpb3VyIGNoYW5nZSBhdCB0aGlzIHBvaW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJv
dW5kIHRvIHRoZSBwbGFjZQp3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4KCldlYkNvcmU6OmRpc3Rh
bmNlSW5EaXJlY3Rpb24gbWV0aG9kIHdhcyBoYW5kbGluZyBtdWNoIG9mIHRoZSBsb2dpYyBub3Qg
c3RyaWN0bHkgb25seQpyZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVp
c2l0aW9uIGl0c2VsZi4gVGhpcyBtZXRob2Qgd2FzIHNpbXBsaWZpZWQgYW5kCnJlbmFtZWQgdG8g
J1dlYkNvcmU6OmRpc3RhbmNlRGF0YUZvck5vZGUnLiBJdCBub3cgaXMgcmVzcG9uc2libGUgZm9y
IG5vdCBvbmx5IGdldHRpbmcgdGhlCmRpc3RhbmNlLCBidXQgYWxzbyBwYXJlbnQgZG9jdW1lbnQg
ZGlzdGFuY2UsIGFsaWdubWVudCBhbmQgcGFyZW50IGRvY3VtZW50IGFsaWdubWVudCB0byB0aGUK
Y3VycmVudCBmb2N1c2VkIG5vZGUuIEFsbCBhc3NpZ25lbWVudCBsb2dpYyBwcmV2aW91c2x5IHRo
ZXJlIHdhcyBtb3ZlZCB0byB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyLgoKZmluZEZvY3Vz
YWJsZU5vZGVJbkRpcmVjdGlvbiBhbmQgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24g
bWV0aG9kIGhhZCB0aGVpciBsb2dpYwphbHNvIHNpbXBsaWZpZWQgYmFzZWQgb24gdGhlIGNoYW5n
ZXMgYWJvdmUuCgpObyBiZWhhdmlvdXIgY2hhbmdlIGF0IHRoaXMgcG9pbnQuIE1vc3RseSBtb3Zp
bmcgY29kZSBhcm91bmQgdG8gdGhlIHBsYWNlCndoZXJlIGl0IHNob3VsZCBsaXZlIGluLgoKKiBw
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFu
Y2VGb2N1c0RpcmVjdGlvbmFsbHkpOgooV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNs
b3Nlcik6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24pOgooV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJ
bkRpcmVjdGlvbik6CiogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKiBwYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcDoKKFdlYkNvcmU6OmRpc3RhbmNlRGF0YUZvck5vZGUpOgooV2ViQ29yZTo6cmVu
ZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQpOgoqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
aDoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgIHwgICAzMCArKysrKysr
KwogV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgICB8ICAxMzAgKysrKysrKysrKysr
KysrKysrKysrKy0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCAg
ICAgfCAgICA0ICstCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIHwgICA1NSAr
KysrKystLS0tLS0tLS0tCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCAgIHwgICAg
MiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgODYgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjNWUyZDBjLi5hZWI3ZTliIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMyw2ICszLDM2IEBACiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogICAgICAgICBQYXRjaCBieSBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29A
d2Via2l0Lm9yZz4KIAorICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IEluaXRpYWwgY29kZSBz
aW1wbGlmaWNhdGlvbiBpbiBGb2N1c0NvbnRyb2xsZXIuY3BwIGFuZCBTcGF0aWFsTmF2aWdhdGlv
bi5jcHAKKworICAgICAgICBXZWJDb3JlOjpkaXN0YW5jZUluRGlyZWN0aW9uIG1ldGhvZCB3YXMg
aGFuZGxpbmcgbXVjaCBvZiB0aGUgbG9naWMgbm90IHN0cmljdGx5IHJlbGF0ZWQKKyAgICAgICAg
b25seSB0byB0aGUgZGlzdGFuY2UgYmV0d2VlbiBub2RlcyBhY3F1aXNpdGlvbiBpdHNlbGYuIFRo
aXMgbWV0aG9kIHdhcyBzaW1wbGlmaWVkIGFuZAorICAgICAgICByZW5hbWVkIHRvICdXZWJDb3Jl
OjpkaXN0YW5jZURhdGFGb3JOb2RlJy4gSXQgbm93IGlzIHJlc3BvbnNpYmxlIGZvciBub3Qgb25s
eSBnZXR0aW5nIHRoZQorICAgICAgICBkaXN0YW5jZSwgYnV0IGFsc28gcGFyZW50IGRvY3VtZW50
IGRpc3RhbmNlLCBhbGlnbm1lbnQgYW5kIHBhcmVudCBkb2N1bWVudCBhbGlnbm1lbnQgdG8gdGhl
CisgICAgICAgIGN1cnJlbnQgZm9jdXNlZCBub2RlLiBBbGwgYXNzaWduZW1lbnQgbG9naWMgcHJl
dmlvdXNseSB0aGVyZSB3YXMgbW92ZWQgdG8gdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlci4K
KworICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIGFuZCBkZWVwRmluZEZvY3Vz
YWJsZU5vZGVJbkRpcmVjdGlvbiBtZXRob2QgaGFkIHRoZWlyIGxvZ2ljCisgICAgICAgIGFsc28g
c2ltcGxpZmllZCBiYXNlZCBvbiB0aGUgY2hhbmdlcyBhYm92ZS4KKworICAgICAgICBObyBiZWhh
dmlvdXIgY2hhbmdlIGF0IHRoaXMgcG9pbnQuIE1vc3RseSBtb3ZpbmcgY29kZSBhcm91bmQgdG8g
dGhlIHBsYWNlCisgICAgICAgIHdoZXJlIGl0IHNob3VsZCBsaXZlIGluLgorCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
Y3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgorICAgICAg
ICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZURhdGFGb3JOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KToKKyAgICAgICAg
KiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmg6CisKKzIwMTAtMDMtMTUgIEFudG9uaW8gR29tZXMg
IDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgUGF0Y2ggYnkgQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5v
cmc+CisKICAgICAgICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBBZGQgaXNOdWxsKCkgYW5kIGRvY3Vt
ZW50KCkgY29udmVuaWVudCBtZXRob2RzIHRvIEZvY3VzQ2FuZGlkYXRlLgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYxNjcKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcAppbmRleCA5MjBlOGIzLi4xZmM1M2IzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcApAQCAtMzAzLDggKzMwMyw4IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9j
dXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAgLy8g
TW92ZSB1cCBpbiB0aGUgY2hhaW4gb2YgbmVzdGVkIGZyYW1lcy4KICAgICBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRvcCgpOwogCi0gICAgRm9jdXNDYW5kaWRhdGUgZm9jdXNDYW5kaWRhdGU7Ci0g
ICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmcmFtZS0+ZG9jdW1lbnQoKSwgZm9jdXNl
ZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGZvY3VzQ2FuZGlkYXRlKTsKKyAgICBGb2N1c0NhbmRp
ZGF0ZSBmb2N1c0NhbmRpZGF0ZSwgaGVscGVyOworICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24oZnJhbWUtPmRvY3VtZW50KCksIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBm
b2N1c0NhbmRpZGF0ZSwgaGVscGVyKTsKIAogICAgIE5vZGUqIG5vZGUgPSBmb2N1c0NhbmRpZGF0
ZS5ub2RlOwogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CkBAIC0z
NDEsNTIgKzM0MSw4NyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0
aW9uYWxseShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYQogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKE5vZGUqIGZv
Y3VzZWROb2RlLCBOb2RlKiBjYW5kaWRhdGUsIGxvbmcgbG9uZyBkaXN0YW5jZSwgRm9jdXNDYW5k
aWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSkKKy8vIEZJWE1FX3RvbmlraXRvbzogc2ltcGxp
ZnkgdGhlIGxvZ2ljIGhlcmUgIQorc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNs
b3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgRm9jdXNDYW5kaWRhdGUgY2FuZGlkYXRlLCBGb2N1c0Nh
bmRpZGF0ZSYgY2xvc2VzdCkKIHsKLSAgICAvLyBCYWlsIG91dCBpZiB8ZGlzdGFuY2V8IGlzIGJp
Z2dlciB0aGFuIHRoZSBjdXJyZW50IGNsb3Nlc3QgY2FuZGlkYXRlLgotICAgIGlmIChkaXN0YW5j
ZSA+PSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUuZGlzdGFuY2UpCisgICAgYm9vbCBzYW1lRG9jdW1l
bnQgPSBjYW5kaWRhdGUuZG9jdW1lbnQoKSA9PSBjbG9zZXN0LmRvY3VtZW50KCk7CisgICAgaWYg
KHNhbWVEb2N1bWVudCkgeworICAgICAgICBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRh
dGUuYWxpZ25tZW50CisgICAgICAgICAgICB8fCAoY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgJiYg
Y2FuZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50KSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKGNsb3Nlc3QuYWxpZ25tZW50ID4gY2FuZGlkYXRl
LmFsaWdubWVudAorICAgICAgICAgICAgICAgJiYgKGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ICYm
IGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0LnBhcmVudEFsaWdubWVudCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIElmIHxmb2N1c2VkTm9kZXwgYW5kIHxjYW5kaWRhdGV8IGFyZSBp
biB0aGUgc2FtZSBkb2N1bWVudCBBTkQKLSAgICAvLyBjdXJyZW50IHxjbG9zZXN0Rm9jdXNDYW5k
aWRhZHRlfCBpcyBub3QgaW4gYW4ge2l9ZnJhbWUgdGhhdCBpcwotICAgIC8vIHByZWZlcmFibGUg
dG8gZ2V0IGZvY3VzZWQuCi0gICAgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNhbmRp
ZGF0ZS0+ZG9jdW1lbnQoKQotICAgICAgICAmJiBkaXN0YW5jZSA8IGNsb3Nlc3RGb2N1c0NhbmRp
ZGF0ZS5wYXJlbnREaXN0YW5jZSkgewotICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9k
ZSA9IGNhbmRpZGF0ZTsKLSAgICAgICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNlID0g
ZGlzdGFuY2U7Ci0gICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9
IG1heERpc3RhbmNlKCk7Ci0gICAgfSBlbHNlIGlmIChmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSAh
PSBjYW5kaWRhdGUtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgLy8gSWYgdGhlIHxmb2N1c2VkTm9k
ZXwgaXMgaW4gYW4gaW5uZXIgZG9jdW1lbnQgYW5kIHRoZSB8Y2FuZGlkYXRlfCBpcwotICAgICAg
ICAvLyBpbiBhIGRpZmZlcmVudCBkb2N1bWVudCwgd2Ugb25seSBjb25zaWRlciB0byBjaGFuZ2Ug
Zm9jdXMgaWYgdGhlcmUgaXMKLSAgICAgICAgLy8gbm90IGFub3RoZXIgYWxyZWFkeSBnb29kIGZv
Y3VzYWJsZSBjYW5kaWRhdGUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYXMKLSAgICAgICAgLy8gfGZv
Y3VzZWROb2RlfC4KLSAgICAgICAgaWYgKCEoKGlzSW5Sb290RG9jdW1lbnQoY2FuZGlkYXRlKSAm
JiAhaXNJblJvb3REb2N1bWVudChmb2N1c2VkTm9kZSkpCi0gICAgICAgICAgICAmJiBjbG9zZXN0
Rm9jdXNDYW5kaWRhdGUubm9kZQotICAgICAgICAgICAgJiYgZm9jdXNlZE5vZGUtPmRvY3VtZW50
KCkgPT0gY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUtPmRvY3VtZW50KCkpKSB7Ci0gICAgICAg
ICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9kZSA9IGNhbmRpZGF0ZTsKLSAgICAgICAgICAg
IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICB9Cisg
ICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgIT0gTm9uZQorICAgICAgICB8fCAoY2xvc2VzdC5u
b2RlICYmIGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ID49IGNhbmRpZGF0ZS5hbGlnbm1lbnQKKyAg
ICAgICAgJiYgKGNsb3Nlc3QuZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKSkKKyAg
ICAgICAgJiYgY2FuZGlkYXRlLmFsaWdubWVudCA+IE5vbmUpKSB7CisKKyAgICAgICAgLy8gSWYg
d2UgYXJlIG5vdyBpbiBhbiBoaWdoZXIgcHJlY2VkZW50IGNhc2UsIGxldHMgcmVzZXQgdGhlIGN1
cnJlbnQgfGNsb3Nlc3R8J3MKKyAgICAgICAgLy8gfGRpc3RhbmNlfCBzbyB3ZSBmb3JjZSBpdCB0
byBiZSBiaWdnZXIgdGhhbiBhbnkgcmVzdWx0IHdlIHdpbGwgZ2V0IGZyb20KKyAgICAgICAgLy8g
fHNwYXRpYWxEaXN0YW5jZSgpfCAoc2VlIGJlbG93KS4KKyAgICAgICAgaWYgKGNsb3Nlc3QuYWxp
Z25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAgICAgJiYgY2xvc2VzdC5wYXJl
bnRBbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50KQorICAgICAgICAgICAgY2xvc2VzdC5k
aXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisKKyAgICAgICAgY2xvc2VzdC5hbGlnbm1lbnQgPSBj
YW5kaWRhdGUuYWxpZ25tZW50OworICAgIH0KKworICAgIC8vIEJhaWwgb3V0IGlmIGNhbmRpZGF0
ZSdzIGRpc3RhbmNlIGlzIGJpZ2dlciB0aGFuIHRoZSBjbG9zZXN0IGNhbmRpZGF0ZSdzIGRpc3Rh
bmNlLgorICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPj0gY2xvc2VzdC5kaXN0YW5jZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgfGZvY3VzZWROb2RlfCBhbmQgfGNhbmRpZGF0ZXwg
YXJlIGluIHRoZSBzYW1lIGRvY3VtZW50IEFORCBjdXJyZW50CisgICAgLy8gfGNsb3Nlc3R8IGlz
IG5vdCBpbiBhbiB7aX1mcmFtZSB0aGF0IGlzIHByZWZlcmFibGUgdG8gZ2V0IGZvY3VzZWQgLi4u
CisgICAgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNhbmRpZGF0ZS5kb2N1bWVudCgp
CisgICAgICAgICYmIGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QucGFyZW50RGlzdGFuY2Up
CisgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgZWxzZSBpZiAoZm9jdXNlZE5vZGUt
PmRvY3VtZW50KCkgIT0gY2FuZGlkYXRlLmRvY3VtZW50KCkpIHsKKyAgICAgICAgLy8gSWYgdGhl
IHxmb2N1c2VkTm9kZXwgaXMgaW4gYW4gaW5uZXIgZG9jdW1lbnQgYW5kIHxjYW5kaWRhdGV8IGlz
IGluIGEKKyAgICAgICAgLy8gZGlmZmVyZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRv
IGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBpcyBub3QKKyAgICAgICAgLy8gYW5vdGhlciBhbHJlYWR5
IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyB8Zm9jdXNl
ZE5vZGV8LgorICAgICAgICBpZiAoISgoaXNJblJvb3REb2N1bWVudChjYW5kaWRhdGUubm9kZSkg
JiYgIWlzSW5Sb290RG9jdW1lbnQoZm9jdXNlZE5vZGUpKQorICAgICAgICAgICAgJiYgIWNsb3Nl
c3QuaXNOdWxsKCkKKyAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNs
b3Nlc3QuZG9jdW1lbnQoKSkpCisgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAg
IH0KIH0KIAotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rp
b24oRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBmb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RG
b2N1c0NhbmRpZGF0ZSkKK3ZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUlu
RGlyZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogZm9jdXNlZE5vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0RpcmVjdGlv
biBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1
c0NhbmRpZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBoZWxwZXIpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsK
IAotICAgIC8vIFdhbGsgYWxsIHRoZSBjaGlsZCBub2RlcyBhbmQgdXBkYXRlIGZvY3VzQ2FuZGlk
YXRlIGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KLSAgICBmb3IgKE5vZGUqIGNhbmRpZGF0ZSA9
IGRvY3VtZW50LT5maXJzdENoaWxkKCk7IGNhbmRpZGF0ZTsgY2FuZGlkYXRlID0gY2FuZGlkYXRl
LT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAvLyBXYWxrIGFsbCB0aGUgY2hpbGQgbm9kZXMg
YW5kIHVwZGF0ZSB8Y2xvc2VzdEZvY3VzQ2FuZGlkYXRlfCBpZiB3ZSBmaW5kIGEgbmVhcmVyIG5v
ZGUuCisgICAgZm9yIChOb2RlKiBkZXN0ID0gZG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsgZGVzdDsg
ZGVzdCA9IGRlc3QtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAgICAvLyBJbm5lciBkb2N1
bWVudHMgY2FzZS4KLSAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aXNGcmFtZU93bmVyRWxlbWVudCgp
KQotICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oZm9jdXNlZE5v
ZGUsIGNhbmRpZGF0ZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsK
LSAgICAgICAgZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWROb2RlICYmIGNhbmRpZGF0ZS0+
aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKLSAgICAgICAgICAgIGxvbmcgbG9uZyBkaXN0
YW5jZSA9IGRpc3RhbmNlSW5EaXJlY3Rpb24oZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9u
LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwotICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRh
dGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXN0YW5jZSwgY2xvc2VzdEZvY3Vz
Q2FuZGlkYXRlKTsKKyAgICAgICAgaWYgKGRlc3QtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkKKyAg
ICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGZvY3VzZWROb2RlLCBk
ZXN0LCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUsIGhlbHBlcik7Cisg
ICAgICAgIGVsc2UgaWYgKGRlc3QgIT0gZm9jdXNlZE5vZGUgJiYgZGVzdC0+aXNLZXlib2FyZEZv
Y3VzYWJsZShldmVudCkpIHsKKyAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlIGN1cnJlbnRGb2N1
c0NhbmRpZGF0ZShkZXN0KTsKKworICAgICAgICAgICAgLy8gSWYgfGhlbHBlcnwgaXMgbm90IE51
bGwsIGl0IG1lYW5zIHRoYXQgd2UgYXJlIGluIGEgcmVjdXJzaXZlIGNhbGwgZnJvbQorICAgICAg
ICAgICAgLy8gZGVlcEZpbmVGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24gKGkuZS4gcHJvY2Vzc2lu
ZyBhbiBlbGVtZW50IGluIGFuIGlmcmFtZSkuCisgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Us
IHxoZWxwZXJ8IGhvbGRzIHRoZSBpbmZvcm1hdGlvbiBkYXRhIChkaXN0YW5jZSwgYWxpZ25tZW50
LCBldGMpCisgICAgICAgICAgICAvLyBvZiBpZnJhbWUgZWxlbWVudCBpdHNlbGYuCisgICAgICAg
ICAgICBpZighaGVscGVyLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3Vz
Q2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGhlbHBlci5wYXJlbnRBbGlnbm1lbnQ7CisgICAg
ICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudERpc3RhbmNlPSBoZWxwZXIu
cGFyZW50RGlzdGFuY2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRpc3RhbmNlRGF0
YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlKTsK
KyAgICAgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoZm9jdXNlZE5vZGUsIGN1
cnJlbnRGb2N1c0NhbmRpZGF0ZSwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKICAgICAgICAgfQog
ICAgIH0KIH0KIAotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUlu
RGlyZWN0aW9uKE5vZGUqIGZvY3VzZWROb2RlLCBOb2RlKiBjYW5kaWRhdGUsIEZvY3VzRGlyZWN0
aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzQ2FuZGlkYXRlJiBjbG9z
ZXN0Rm9jdXNDYW5kaWRhdGUpCit2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2Fi
bGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogZm9jdXNlZE5vZGUsIE5vZGUqIGNhbmRpZGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRl
JiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUmIGhlbHBlcikKIHsKICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJF
bGVtZW50Kj4oY2FuZGlkYXRlKTsKICAgICBpZiAoIW93bmVyLT5jb250ZW50RnJhbWUoKSkKQEAg
LTM5NywyNCArNDMyLDIzIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJs
ZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBmb2N1c2VkTm9kZSwgTm9kZSoKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGlubmVyRG9jdW1lbnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkpCi0g
ICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNl
ZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CisgICAgICAg
IGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNlZE5vZGUs
IGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwgaGVscGVyKTsKICAgICBl
bHNlIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQge2l9ZnJhbWUgZWxlbWVudCBp
dHNlbGYgaXMgYSBnb29kIGNhbmRpZGF0ZQogICAgICAgICAvLyB0byBtb3ZlIGZvY3VzIHRvLiBJ
ZiBpdCBpcywgdGhlbiB3ZSB0cmF2ZXJzZSBpdHMgaW5uZXIgbm9kZXMuCi0gICAgICAgIC8vIExl
dHMgcGFzcyBhIGNvcHkgb2YgdGhlIGJlc3QgY2FuZGlkYXRlLCB0byBub3QgZ2V0IGZvb2xlZCBi
eSBhCi0gICAgICAgIC8vIGZyYW1lIHdpdGhvdXQgZm9jdXNhYmxlIGVsZW1lbnRzLgotICAgICAg
ICBGb2N1c0NhbmRpZGF0ZSBmb2N1c0NhbmRpZGF0ZUNvcHkgPSBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGU7Ci0gICAgICAgIGxvbmcgbG9uZyBkaXN0YW5jZSA9IGRpc3RhbmNlSW5EaXJlY3Rpb24oZm9j
dXNlZE5vZGUsIGNhbmRpZGF0ZSwgZGlyZWN0aW9uLCBmb2N1c0NhbmRpZGF0ZUNvcHkpOwotICAg
ICAgICBpZiAoZGlzdGFuY2UgPCBmb2N1c0NhbmRpZGF0ZUNvcHkuZGlzdGFuY2UpIHsKLSAgICAg
ICAgICAgIGZvY3VzQ2FuZGlkYXRlQ29weS5wYXJlbnRBbGlnbm1lbnQgPSBmb2N1c0NhbmRpZGF0
ZUNvcHkuYWxpZ25tZW50OwotICAgICAgICAgICAgZm9jdXNDYW5kaWRhdGVDb3B5LnBhcmVudERp
c3RhbmNlID0gZGlzdGFuY2U7Ci0KLSAgICAgICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGZvY3Vz
Q2FuZGlkYXRlQ29weSk7Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIHJlYWxseSBoYXZlIGFuIGlu
bmVyIGNsb3NlciBmb2N1cyBjYW5kaWRhdGUgbm9kZSwgdGFrZSBpdC4KLSAgICAgICAgICAgIGlm
IChjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9kZSAhPSBmb2N1c0NhbmRpZGF0ZUNvcHkubm9kZSkK
LSAgICAgICAgICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUgPSBmb2N1c0NhbmRpZGF0ZUNv
cHk7CisgICAgICAgIGhlbHBlciA9IEZvY3VzQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CisgICAgICAg
IGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwgaGVscGVyKTsKKwor
ICAgICAgICAvLyBGSVhNRTogV2hhdCBhYm91dCBhbGlnbWVudD8KKyAgICAgICAgaWYgKGhlbHBl
ci5kaXN0YW5jZSA8IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSkgeworICAgICAgICAg
ICAgaGVscGVyLnBhcmVudEFsaWdubWVudCA9IGhlbHBlci5hbGlnbm1lbnQ7CisgICAgICAgICAg
ICBoZWxwZXIucGFyZW50RGlzdGFuY2UgPSBoZWxwZXIuZGlzdGFuY2U7CisKKyAgICAgICAgICAg
IGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNlZE5vZGUs
IGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwgaGVscGVyKTsKICAgICAg
ICAgfQorCisgICAgICAgIC8vIEVtcHRpZnkgfGhlbHBlcnwuCisgICAgICAgIGhlbHBlciA9IEZv
Y3VzQ2FuZGlkYXRlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmggYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKaW5kZXggNzU1
OTFjNy4uODdhODdkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5o
CisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaApAQCAtNjMsOCArNjMsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlv
biwgS2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wgYWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVy
KEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgYm9vbCBpbml0aWFsRm9jdXMpOwogCi0g
ICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiwgTm9kZSosIEZv
Y3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmKTsKLSAgICB2b2lk
IGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqLCBOb2RlKiwgRm9jdXNEaXJl
Y3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYpOworICAgIHZvaWQgZmluZEZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbihEb2N1bWVudCosIE5vZGUqLCBGb2N1c0RpcmVjdGlvbiwg
S2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRlJiwgRm9jdXNDYW5kaWRhdGUmKTsKKyAgICB2
b2lkIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqLCBOb2RlKiwgRm9jdXNE
aXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYsIEZvY3VzQ2FuZGlkYXRl
Jik7CiAKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZvY3VzZWRGcmFt
ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9XZWJD
b3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IGJmZDk0MTEuLjAzM2QyMmEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNDcsMTUgKzQ3LDE5IEBAIHN0YXRpYyBi
b29sIGFyZVJlY3RzUGFydGlhbGx5QWxpZ25lZChGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFJlCiBzdGF0aWMgYm9vbCBpc1JlY3RJbkRpcmVjdGlvbihGb2N1c0RpcmVj
dGlvbiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKTsKIHN0YXRpYyB2b2lkIGRlZmxh
dGVJZk92ZXJsYXBwZWQoSW50UmVjdCYsIEludFJlY3QmKTsKIAotbG9uZyBsb25nIGRpc3RhbmNl
SW5EaXJlY3Rpb24oTm9kZSogc3RhcnQsIE5vZGUqIGRlc3QsIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiwgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSkKK3ZvaWQgZGlzdGFuY2VEYXRhRm9yTm9k
ZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1c0NhbmRpZGF0ZSYg
Y2FuZGlkYXRlKQogewogICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXIgPSBzdGFydC0+cmVu
ZGVyZXIoKTsKLSAgICBpZiAoIXN0YXJ0UmVuZGVyKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFu
Y2UoKTsKKyAgICBpZiAoIXN0YXJ0UmVuZGVyKSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5j
ZSA9IG1heERpc3RhbmNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSZW5kZXJP
YmplY3QqIGRlc3RSZW5kZXIgPSBkZXN0LT5yZW5kZXJlcigpOwotICAgIGlmICghZGVzdFJlbmRl
cikKLSAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7CisgICAgUmVuZGVyT2JqZWN0KiBkZXN0
UmVuZGVyID0gY2FuZGlkYXRlLm5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFkZXN0UmVuZGVy
KSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICBJbnRSZWN0IGN1clJlY3QgPSByZW5kZXJSZWN0UmVsYXRp
dmVUb1Jvb3REb2N1bWVudChzdGFydFJlbmRlcik7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0ICA9
IHJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KGRlc3RSZW5kZXIpOwpAQCAtNjUsNDAg
KzY5LDIxIEBAIGxvbmcgbG9uZyBkaXN0YW5jZUluRGlyZWN0aW9uKE5vZGUqIHN0YXJ0LCBOb2Rl
KiBkZXN0LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sCiAgICAgZGVmbGF0ZUlmT3ZlcmxhcHBl
ZChjdXJSZWN0LCB0YXJnZXRSZWN0KTsKIAogICAgIGlmIChjdXJSZWN0LmlzRW1wdHkoKSB8fCB0
YXJnZXRSZWN0LmlzRW1wdHkoKQotICAgICAgICB8fCB0YXJnZXRSZWN0LngoKSA8IDAgfHwgdGFy
Z2V0UmVjdC55KCkgPCAwKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAg
fHwgdGFyZ2V0UmVjdC54KCkgPCAwIHx8IHRhcmdldFJlY3QueSgpIDwgMCkgeworICAgICAgICBj
YW5kaWRhdGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOworICAgICAgICByZXR1cm47CisgICAg
fQogCi0gICAgaWYgKCFpc1JlY3RJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdl
dFJlY3QpKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICBpZiAoIWlzUmVjdElu
RGlyZWN0aW9uKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpIHsKKyAgICAgICAgY2Fu
ZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIC8vIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBub2RlcyBpcyBub3QgdG8gYmUgY29u
c2lkZXJlZCBhbG9uZSB3aGVuIGV2YWx1YXRpbmcvbG9va2luZwogICAgIC8vIGZvciB0aGUgYmVz
dCBmb2N1cyBjYW5kaWRhdGUgbm9kZS4gQWxpZ25tZW50IG9mIHJlY3RzIGNhbiBiZSBhbHNvIGEg
Z29vZCBwb2ludCB0byBiZQogICAgIC8vIGNvbnNpZGVyZWQgaW4gb3JkZXIgdG8gbWFrZSB0aGUg
YWxnb3JpdGhtIHRvIGJlaGF2aW9yIGluIGEgbW9yZSBpbnR1aXRpdmUgd2F5LgotICAgIFJlY3Rz
QWxpZ25tZW50IGFsaWdubWVudCA9IGFsaWdubWVudEZvclJlY3RzKGRpcmVjdGlvbiwgY3VyUmVj
dCwgdGFyZ2V0UmVjdCk7Ci0KLSAgICBib29sIHNhbWVEb2N1bWVudCA9IGNhbmRpZGF0ZS5ub2Rl
ICYmIGRlc3QtPmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLm5vZGUtPmRvY3VtZW50KCk7Ci0gICAg
aWYgKHNhbWVEb2N1bWVudCkgewotICAgICAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA+IGFs
aWdubWVudCB8fCAoY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCAmJiBhbGlnbm1lbnQgPiBjYW5k
aWRhdGUucGFyZW50QWxpZ25tZW50KSkKLSAgICAgICAgICAgIHJldHVybiBtYXhEaXN0YW5jZSgp
OwotICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA+IGFsaWdubWVudCAmJiAoY2Fu
ZGlkYXRlLnBhcmVudEFsaWdubWVudCAmJiBhbGlnbm1lbnQgPiBjYW5kaWRhdGUucGFyZW50QWxp
Z25tZW50KSkKLSAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7Ci0KLSAgICAvLyBGSVhNRV90
b25pa2l0b286IHNpbXBsaWZ5IHRoZSBsb2dpYyBoZXJlICEKLSAgICBpZiAoYWxpZ25tZW50ICE9
IE5vbmUKLSAgICAgICAgfHwgKGNhbmRpZGF0ZS5ub2RlICYmIGNhbmRpZGF0ZS5wYXJlbnRBbGln
bm1lbnQgPj0gYWxpZ25tZW50Ci0gICAgICAgICYmIChjYW5kaWRhdGUubm9kZS0+ZG9jdW1lbnQo
KSA9PSBkZXN0LT5kb2N1bWVudCgpKQotICAgICAgICAmJiBhbGlnbm1lbnQgPiBOb25lKSkgewot
Ci0gICAgICAgIC8vIElmIHdlIGFyZSBub3cgaW4gYW4gaGlnaGVyIHByZWNlZGVudCBjYXNlLCBs
ZXRzIHJlc2V0IHRoZSBjdXJyZW50IHxjYW5kaWRhdGV8J3MKLSAgICAgICAgLy8gfGRpc3RhbmNl
fCBzbyB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhhbiB0aGUgcmVzdWx0IHdlIHdpbGwgZ2V0
IGZyb20KLSAgICAgICAgLy8gfHNwYXRpYWxEaXN0YW5jZXwgKHNlZSBiZWxvdykuCi0gICAgICAg
IGlmIChjYW5kaWRhdGUuYWxpZ25tZW50IDwgYWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5wYXJlbnRB
bGlnbm1lbnQgPCBhbGlnbm1lbnQpCi0gICAgICAgICAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBt
YXhEaXN0YW5jZSgpOwotCi0gICAgICAgIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHNwYXRpYWxEaXN0YW5jZShkaXJlY3Rpb24sIGN1clJlY3Qs
IHRhcmdldFJlY3QpOworICAgIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPSBhbGlnbm1lbnRGb3JSZWN0
cyhkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpOworICAgIGNhbmRpZGF0ZS5kaXN0YW5j
ZSA9IHNwYXRpYWxEaXN0YW5jZShkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpOwogfQog
CiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBiZWhhdmUgY29ycmVjdGx5IHdpdGgg
dHJhbnNmb3JtZWQgZnJhbWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmggYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAppbmRleCAwMzY0NTFh
Li5lMDQ5ODZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAor
KysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApAQCAtMTA5LDcgKzEwOSw3IEBA
IHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgUmVjdHNBbGlnbm1lbnQgcGFyZW50QWxpZ25t
ZW50OwogfTsKIAotbG9uZyBsb25nIGRpc3RhbmNlSW5EaXJlY3Rpb24oTm9kZSosIE5vZGUqLCBG
b2N1c0RpcmVjdGlvbiwgRm9jdXNDYW5kaWRhdGUmKTsKK3ZvaWQgZGlzdGFuY2VEYXRhRm9yTm9k
ZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1c0NhbmRpZGF0ZSYg
Y2FuZGlkYXRlKTsKIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oRnJhbWUqLCBGb2N1c0RpcmVjdGlv
bik7CiB2b2lkIHNjcm9sbEludG9WaWV3KEVsZW1lbnQqKTsKIGJvb2wgaGFzT2Zmc2NyZWVuUmVj
dChOb2RlKik7Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="commit-queue"
          id="33970"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51026</attachid>
            <date>2010-03-18 08:33:21 -0700</date>
            <delta_ts>2010-03-18 08:45:17 -0700</delta_ts>
            <desc>patch 0.1.1</desc>
            <filename>0001-Spatial-Navigation-Initial-code-simplification-in-F.patch</filename>
            <type>text/plain</type>
            <size>18494</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA2NTQ3YjJiYjA2ZWNhYWJhYjljMzMzN2Q1MjAxMDk0NDY4YjYxM2I4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNSBNYXIgMjAxMCAxNjoyMjoxNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogSW5pdGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29u
dHJvbGxlci5jcHAgYW5kIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcAoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuClBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoK
Tm8gYmVoYXZpb3VyIGNoYW5nZSBhdCB0aGlzIHBvaW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJv
dW5kIHRvIHRoZSBwbGFjZQp3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4KCldlYkNvcmU6OmRpc3Rh
bmNlSW5EaXJlY3Rpb24gbWV0aG9kIHdhcyBoYW5kbGluZyBtdWNoIG9mIHRoZSBsb2dpYyBub3Qg
c3RyaWN0bHkgb25seQpyZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVp
c2l0aW9uIGl0c2VsZi4gVGhpcyBtZXRob2Qgd2FzIHNpbXBsaWZpZWQgYW5kCnJlbmFtZWQgdG8g
J1dlYkNvcmU6OmRpc3RhbmNlRGF0YUZvck5vZGUnLiBJdCBub3cgaXMgcmVzcG9uc2libGUgZm9y
IG5vdCBvbmx5IGdldHRpbmcgdGhlCmRpc3RhbmNlLCBidXQgYWxzbyBwYXJlbnQgZG9jdW1lbnQg
ZGlzdGFuY2UsIGFsaWdubWVudCBhbmQgcGFyZW50IGRvY3VtZW50IGFsaWdubWVudCB0byB0aGUK
Y3VycmVudCBmb2N1c2VkIG5vZGUuIEFsbCBhc3NpZ25lbWVudCBsb2dpYyBwcmV2aW91c2x5IHRo
ZXJlIHdhcyBtb3ZlZCB0byB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyLgoKZmluZEZvY3Vz
YWJsZU5vZGVJbkRpcmVjdGlvbiBhbmQgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24g
bWV0aG9kIGhhZCB0aGVpciBsb2dpYwphbHNvIHNpbXBsaWZpZWQgYmFzZWQgb24gdGhlIGNoYW5n
ZXMgYWJvdmUuCgpObyBiZWhhdmlvdXIgY2hhbmdlIGF0IHRoaXMgcG9pbnQuIE1vc3RseSBtb3Zp
bmcgY29kZSBhcm91bmQgdG8gdGhlIHBsYWNlCndoZXJlIGl0IHNob3VsZCBsaXZlIGluLgoKKiBw
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFu
Y2VGb2N1c0RpcmVjdGlvbmFsbHkpOgooV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNs
b3Nlcik6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24pOgooV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJ
bkRpcmVjdGlvbik6CiogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKiBwYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcDoKKFdlYkNvcmU6OmRpc3RhbmNlRGF0YUZvck5vZGUpOgooV2ViQ29yZTo6cmVu
ZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQpOgoqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
aDoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgIHwgICAzMCArKysrKysr
KwogV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgICB8ICAxMzAgKysrKysrKysrKysr
KysrKysrKysrKy0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCAg
ICAgfCAgICA0ICstCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIHwgICA1NSAr
KysrKystLS0tLS0tLS0tCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCAgIHwgICAg
MiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgODYgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAyMzA0ZTgzLi43MTM3ODdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMyw2ICszLDM2IEBACiAgICAgICAgIFJldmlld2VkIGJ5IEd1
c3Rhdm8gTm9yb25oYS4KICAgICAgICAgUGF0Y2ggYnkgQW50b25pbyBHb21lcyA8dG9uaWtpdG9v
QHdlYmtpdC5vcmc+CiAKKyAgICAgICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBJbml0aWFsIGNvZGUg
c2ltcGxpZmljYXRpb24gaW4gRm9jdXNDb250cm9sbGVyLmNwcCBhbmQgU3BhdGlhbE5hdmlnYXRp
b24uY3BwCisKKyAgICAgICAgV2ViQ29yZTo6ZGlzdGFuY2VJbkRpcmVjdGlvbiBtZXRob2Qgd2Fz
IGhhbmRsaW5nIG11Y2ggb2YgdGhlIGxvZ2ljIG5vdCBzdHJpY3RseSByZWxhdGVkCisgICAgICAg
IG9ubHkgdG8gdGhlIGRpc3RhbmNlIGJldHdlZW4gbm9kZXMgYWNxdWlzaXRpb24gaXRzZWxmLiBU
aGlzIG1ldGhvZCB3YXMgc2ltcGxpZmllZCBhbmQKKyAgICAgICAgcmVuYW1lZCB0byAnV2ViQ29y
ZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZScuIEl0IG5vdyBpcyByZXNwb25zaWJsZSBmb3Igbm90IG9u
bHkgZ2V0dGluZyB0aGUKKyAgICAgICAgZGlzdGFuY2UsIGJ1dCBhbHNvIHBhcmVudCBkb2N1bWVu
dCBkaXN0YW5jZSwgYWxpZ25tZW50IGFuZCBwYXJlbnQgZG9jdW1lbnQgYWxpZ25tZW50IHRvIHRo
ZQorICAgICAgICBjdXJyZW50IGZvY3VzZWQgbm9kZS4gQWxsIGFzc2lnbmVtZW50IGxvZ2ljIHBy
ZXZpb3VzbHkgdGhlcmUgd2FzIG1vdmVkIHRvIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIu
CisKKyAgICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiBhbmQgZGVlcEZpbmRGb2N1
c2FibGVOb2RlSW5EaXJlY3Rpb24gbWV0aG9kIGhhZCB0aGVpciBsb2dpYworICAgICAgICBhbHNv
IHNpbXBsaWZpZWQgYmFzZWQgb24gdGhlIGNoYW5nZXMgYWJvdmUuCisKKyAgICAgICAgTm8gYmVo
YXZpb3VyIGNoYW5nZSBhdCB0aGlzIHBvaW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJvdW5kIHRv
IHRoZSBwbGFjZQorICAgICAgICB3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4KKworICAgICAgICAq
IHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJv
bGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRh
dGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJv
bGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAg
ICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmln
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpyZW5kZXJSZWN0UmVsYXRpdmVUb1Jvb3REb2N1bWVudCk6CisgICAgICAg
ICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorCisyMDEwLTAzLTE1ICBBbnRvbmlvIEdvbWVz
ICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIFBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQu
b3JnPgorCiAgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogQWRkIGlzTnVsbCgpIGFuZCBkb2N1
bWVudCgpIGNvbnZlbmllbmNlIG1ldGhvZHMgdG8gRm9jdXNDYW5kaWRhdGUuCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjE2NwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDkyMGU4YjMuLjUwMjNiOTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCkBAIC0zMDMsOCArMzAzLDggQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VG
b2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2EKICAgICAv
LyBNb3ZlIHVwIGluIHRoZSBjaGFpbiBvZiBuZXN0ZWQgZnJhbWVzLgogICAgIGZyYW1lID0gZnJh
bWUtPnRyZWUoKS0+dG9wKCk7CiAKLSAgICBGb2N1c0NhbmRpZGF0ZSBmb2N1c0NhbmRpZGF0ZTsK
LSAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGZyYW1lLT5kb2N1bWVudCgpLCBmb2N1
c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgZm9jdXNDYW5kaWRhdGUpOworICAgIEZvY3VzQ2Fu
ZGlkYXRlIGZvY3VzQ2FuZGlkYXRlLCBoZWxwZXI7CisgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRp
cmVjdGlvbihmcmFtZS0+ZG9jdW1lbnQoKSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQs
IGZvY3VzQ2FuZGlkYXRlLCBoZWxwZXIpOwogCiAgICAgTm9kZSogbm9kZSA9IGZvY3VzQ2FuZGlk
YXRlLm5vZGU7CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKQEAg
LTM0MSw1MiArMzQxLDg3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJl
Y3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSog
Zm9jdXNlZE5vZGUsIE5vZGUqIGNhbmRpZGF0ZSwgbG9uZyBsb25nIGRpc3RhbmNlLCBGb2N1c0Nh
bmRpZGF0ZSYgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKQorLy8gRklYTUVfdG9uaWtpdG9vOiBzaW1w
bGlmeSB0aGUgbG9naWMgaGVyZSAhCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlm
Q2xvc2VyKE5vZGUqIGZvY3VzZWROb2RlLCBGb2N1c0NhbmRpZGF0ZSBjYW5kaWRhdGUsIEZvY3Vz
Q2FuZGlkYXRlJiBjbG9zZXN0KQogewotICAgIC8vIEJhaWwgb3V0IGlmIHxkaXN0YW5jZXwgaXMg
YmlnZ2VyIHRoYW4gdGhlIGN1cnJlbnQgY2xvc2VzdCBjYW5kaWRhdGUuCi0gICAgaWYgKGRpc3Rh
bmNlID49IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSkKKyAgICBib29sIHNhbWVEb2N1
bWVudCA9IGNhbmRpZGF0ZS5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKTsKKyAgICBp
ZiAoc2FtZURvY3VtZW50KSB7CisgICAgICAgIGlmIChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRp
ZGF0ZS5hbGlnbm1lbnQKKyAgICAgICAgICAgIHx8IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAm
JiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRh
dGUuYWxpZ25tZW50CisgICAgICAgICAgICAgICAmJiAoY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQg
JiYgY2FuZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50KSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gSWYgfGZvY3VzZWROb2RlfCBhbmQgfGNhbmRpZGF0ZXwgYXJl
IGluIHRoZSBzYW1lIGRvY3VtZW50IEFORAotICAgIC8vIGN1cnJlbnQgfGNsb3Nlc3RGb2N1c0Nh
bmRpZGFkdGV8IGlzIG5vdCBpbiBhbiB7aX1mcmFtZSB0aGF0IGlzCi0gICAgLy8gcHJlZmVyYWJs
ZSB0byBnZXQgZm9jdXNlZC4KLSAgICBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2Fu
ZGlkYXRlLT5kb2N1bWVudCgpCi0gICAgICAgICYmIGRpc3RhbmNlIDwgY2xvc2VzdEZvY3VzQ2Fu
ZGlkYXRlLnBhcmVudERpc3RhbmNlKSB7Ci0gICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5u
b2RlID0gY2FuZGlkYXRlOwotICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUuZGlzdGFuY2Ug
PSBkaXN0YW5jZTsKLSAgICAgICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLnBhcmVudERpc3RhbmNl
ID0gbWF4RGlzdGFuY2UoKTsKLSAgICB9IGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgp
ICE9IGNhbmRpZGF0ZS0+ZG9jdW1lbnQoKSkgewotICAgICAgICAvLyBJZiB0aGUgfGZvY3VzZWRO
b2RlfCBpcyBpbiBhbiBpbm5lciBkb2N1bWVudCBhbmQgdGhlIHxjYW5kaWRhdGV8IGlzCi0gICAg
ICAgIC8vIGluIGEgZGlmZmVyZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5n
ZSBmb2N1cyBpZiB0aGVyZSBpcwotICAgICAgICAvLyBub3QgYW5vdGhlciBhbHJlYWR5IGdvb2Qg
Zm9jdXNhYmxlIGNhbmRpZGF0ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcwotICAgICAgICAvLyB8
Zm9jdXNlZE5vZGV8LgotICAgICAgICBpZiAoISgoaXNJblJvb3REb2N1bWVudChjYW5kaWRhdGUp
ICYmICFpc0luUm9vdERvY3VtZW50KGZvY3VzZWROb2RlKSkKLSAgICAgICAgICAgICYmIGNsb3Nl
c3RGb2N1c0NhbmRpZGF0ZS5ub2RlCi0gICAgICAgICAgICAmJiBmb2N1c2VkTm9kZS0+ZG9jdW1l
bnQoKSA9PSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9kZS0+ZG9jdW1lbnQoKSkpIHsKLSAgICAg
ICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5ub2RlID0gY2FuZGlkYXRlOwotICAgICAgICAg
ICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNlID0gZGlzdGFuY2U7Ci0gICAgICAgIH0K
KyAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCAhPSBOb25lCisgICAgICAgIHx8IChjbG9zZXN0
Lm5vZGUgJiYgY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgPj0gY2FuZGlkYXRlLmFsaWdubWVudAor
ICAgICAgICAmJiAoY2xvc2VzdC5kb2N1bWVudCgpID09IGNhbmRpZGF0ZS5kb2N1bWVudCgpKQor
ICAgICAgICAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gTm9uZSkpIHsKKworICAgICAgICAvLyBJ
ZiB3ZSBhcmUgbm93IGluIGFuIGhpZ2hlciBwcmVjZWRlbnQgY2FzZSwgbGV0cyByZXNldCB0aGUg
Y3VycmVudCB8Y2xvc2VzdHwncworICAgICAgICAvLyB8ZGlzdGFuY2V8IHNvIHdlIGZvcmNlIGl0
IHRvIGJlIGJpZ2dlciB0aGFuIGFueSByZXN1bHQgd2Ugd2lsbCBnZXQgZnJvbQorICAgICAgICAv
LyB8c3BhdGlhbERpc3RhbmNlKCl8IChzZWUgYmVsb3cpLgorICAgICAgICBpZiAoY2xvc2VzdC5h
bGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50CisgICAgICAgICAgICAmJiBjbG9zZXN0LnBh
cmVudEFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQpCisgICAgICAgICAgICBjbG9zZXN0
LmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKworICAgICAgICBjbG9zZXN0LmFsaWdubWVudCA9
IGNhbmRpZGF0ZS5hbGlnbm1lbnQ7CisgICAgfQorCisgICAgLy8gQmFpbCBvdXQgaWYgY2FuZGlk
YXRlJ3MgZGlzdGFuY2UgaXMgYmlnZ2VyIHRoYW4gdGhlIGNsb3Nlc3QgY2FuZGlkYXRlJ3MgZGlz
dGFuY2UuCisgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA+PSBjbG9zZXN0LmRpc3RhbmNlKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB8Zm9jdXNlZE5vZGV8IGFuZCB8Y2FuZGlkYXRl
fCBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgQU5EIGN1cnJlbnQKKyAgICAvLyB8Y2xvc2VzdHwg
aXMgbm90IGluIGFuIHtpfWZyYW1lIHRoYXQgaXMgcHJlZmVyYWJsZSB0byBnZXQgZm9jdXNlZCAu
Li4KKyAgICBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLmRvY3VtZW50
KCkKKyAgICAgICAgJiYgY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5wYXJlbnREaXN0YW5j
ZSkKKyAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAgICBlbHNlIGlmIChmb2N1c2VkTm9k
ZS0+ZG9jdW1lbnQoKSAhPSBjYW5kaWRhdGUuZG9jdW1lbnQoKSkgeworICAgICAgICAvLyBJZiB0
aGUgfGZvY3VzZWROb2RlfCBpcyBpbiBhbiBpbm5lciBkb2N1bWVudCBhbmQgfGNhbmRpZGF0ZXwg
aXMgaW4gYQorICAgICAgICAvLyBkaWZmZXJlbnQgZG9jdW1lbnQsIHdlIG9ubHkgY29uc2lkZXIg
dG8gY2hhbmdlIGZvY3VzIGlmIHRoZXJlIGlzIG5vdAorICAgICAgICAvLyBhbm90aGVyIGFscmVh
ZHkgZ29vZCBmb2N1c2FibGUgY2FuZGlkYXRlIGluIHRoZSBzYW1lIGRvY3VtZW50IGFzIHxmb2N1
c2VkTm9kZXwuCisgICAgICAgIGlmICghKChpc0luUm9vdERvY3VtZW50KGNhbmRpZGF0ZS5ub2Rl
KSAmJiAhaXNJblJvb3REb2N1bWVudChmb2N1c2VkTm9kZSkpCisgICAgICAgICAgICAmJiAhY2xv
c2VzdC5pc051bGwoKQorICAgICAgICAgICAgJiYgZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0g
Y2xvc2VzdC5kb2N1bWVudCgpKSkKKyAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAg
ICAgfQogfQogCi12b2lkIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVj
dGlvbihEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIGZvY3VzZWROb2RlLCBGb2N1c0RpcmVjdGlv
biBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2Vz
dEZvY3VzQ2FuZGlkYXRlKQordm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2Rl
SW5EaXJlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBmb2N1c2VkTm9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzRGlyZWN0
aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdEZv
Y3VzQ2FuZGlkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRm9jdXNDYW5kaWRhdGUmIGhlbHBlcikKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQp
OwogCi0gICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUgZm9jdXNDYW5k
aWRhdGUgaWYgd2UgZmluZCBhIG5lYXJlciBub2RlLgotICAgIGZvciAoTm9kZSogY2FuZGlkYXRl
ID0gZG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsgY2FuZGlkYXRlOyBjYW5kaWRhdGUgPSBjYW5kaWRh
dGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgIC8vIFdhbGsgYWxsIHRoZSBjaGlsZCBub2Rl
cyBhbmQgdXBkYXRlIHxjbG9zZXN0Rm9jdXNDYW5kaWRhdGV8IGlmIHdlIGZpbmQgYSBuZWFyZXIg
bm9kZS4KKyAgICBmb3IgKE5vZGUqIGRlc3QgPSBkb2N1bWVudC0+Zmlyc3RDaGlsZCgpOyBkZXN0
OyBkZXN0ID0gZGVzdC0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgIC8vIElubmVyIGRv
Y3VtZW50cyBjYXNlLgotICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50
KCkpCi0gICAgICAgICAgICBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmb2N1c2Vk
Tm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUp
OwotICAgICAgICBlbHNlIGlmIChjYW5kaWRhdGUgIT0gZm9jdXNlZE5vZGUgJiYgY2FuZGlkYXRl
LT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkgewotICAgICAgICAgICAgbG9uZyBsb25nIGRp
c3RhbmNlID0gZGlzdGFuY2VJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rp
b24sIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7Ci0gICAgICAgICAgICB1cGRhdGVGb2N1c0NhbmRp
ZGF0ZUlmQ2xvc2VyKGZvY3VzZWROb2RlLCBjYW5kaWRhdGUsIGRpc3RhbmNlLCBjbG9zZXN0Rm9j
dXNDYW5kaWRhdGUpOworICAgICAgICBpZiAoZGVzdC0+aXNGcmFtZU93bmVyRWxlbWVudCgpKQor
ICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oZm9jdXNlZE5vZGUs
IGRlc3QsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwgaGVscGVyKTsK
KyAgICAgICAgZWxzZSBpZiAoZGVzdCAhPSBmb2N1c2VkTm9kZSAmJiBkZXN0LT5pc0tleWJvYXJk
Rm9jdXNhYmxlKGV2ZW50KSkgeworICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUgY3VycmVudEZv
Y3VzQ2FuZGlkYXRlKGRlc3QpOworCisgICAgICAgICAgICAvLyBJZiB8aGVscGVyfCBpcyBub3Qg
TnVsbCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gYSByZWN1cnNpdmUgY2FsbCBmcm9tCisgICAg
ICAgICAgICAvLyBkZWVwRmluZUZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiAoaS5lLiBwcm9jZXNz
aW5nIGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lKS4KKyAgICAgICAgICAgIC8vIEluIHRoaXMgY2Fz
ZSwgfGhlbHBlcnwgaG9sZHMgdGhlIGluZm9ybWF0aW9uIGRhdGEgKGRpc3RhbmNlLCBhbGlnbm1l
bnQsIGV0YykKKyAgICAgICAgICAgIC8vIG9mIGlmcmFtZSBlbGVtZW50IGl0c2VsZi4KKyAgICAg
ICAgICAgIGlmICghaGVscGVyLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZv
Y3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGhlbHBlci5wYXJlbnRBbGlnbm1lbnQ7Cisg
ICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudERpc3RhbmNlPSBoZWxw
ZXIucGFyZW50RGlzdGFuY2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRpc3RhbmNl
RGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRl
KTsKKyAgICAgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoZm9jdXNlZE5vZGUs
IGN1cnJlbnRGb2N1c0NhbmRpZGF0ZSwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKICAgICAgICAg
fQogICAgIH0KIH0KIAotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9k
ZUluRGlyZWN0aW9uKE5vZGUqIGZvY3VzZWROb2RlLCBOb2RlKiBjYW5kaWRhdGUsIEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzQ2FuZGlkYXRlJiBj
bG9zZXN0Rm9jdXNDYW5kaWRhdGUpCit2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1
c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogZm9jdXNlZE5vZGUsIE5vZGUqIGNhbmRpZGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
b2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlk
YXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUmIGhlbHBlcikKIHsKICAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3du
ZXJFbGVtZW50Kj4oY2FuZGlkYXRlKTsKICAgICBpZiAoIW93bmVyLT5jb250ZW50RnJhbWUoKSkK
QEAgLTM5NywyNCArNDMyLDIzIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3Vz
YWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBmb2N1c2VkTm9kZSwgTm9kZSoKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGlubmVyRG9jdW1lbnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkp
Ci0gICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9j
dXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CisgICAg
ICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNlZE5v
ZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwgaGVscGVyKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQge2l9ZnJhbWUgZWxlbWVu
dCBpdHNlbGYgaXMgYSBnb29kIGNhbmRpZGF0ZQogICAgICAgICAvLyB0byBtb3ZlIGZvY3VzIHRv
LiBJZiBpdCBpcywgdGhlbiB3ZSB0cmF2ZXJzZSBpdHMgaW5uZXIgbm9kZXMuCi0gICAgICAgIC8v
IExldHMgcGFzcyBhIGNvcHkgb2YgdGhlIGJlc3QgY2FuZGlkYXRlLCB0byBub3QgZ2V0IGZvb2xl
ZCBieSBhCi0gICAgICAgIC8vIGZyYW1lIHdpdGhvdXQgZm9jdXNhYmxlIGVsZW1lbnRzLgotICAg
ICAgICBGb2N1c0NhbmRpZGF0ZSBmb2N1c0NhbmRpZGF0ZUNvcHkgPSBjbG9zZXN0Rm9jdXNDYW5k
aWRhdGU7Ci0gICAgICAgIGxvbmcgbG9uZyBkaXN0YW5jZSA9IGRpc3RhbmNlSW5EaXJlY3Rpb24o
Zm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSwgZGlyZWN0aW9uLCBmb2N1c0NhbmRpZGF0ZUNvcHkpOwot
ICAgICAgICBpZiAoZGlzdGFuY2UgPCBmb2N1c0NhbmRpZGF0ZUNvcHkuZGlzdGFuY2UpIHsKLSAg
ICAgICAgICAgIGZvY3VzQ2FuZGlkYXRlQ29weS5wYXJlbnRBbGlnbm1lbnQgPSBmb2N1c0NhbmRp
ZGF0ZUNvcHkuYWxpZ25tZW50OwotICAgICAgICAgICAgZm9jdXNDYW5kaWRhdGVDb3B5LnBhcmVu
dERpc3RhbmNlID0gZGlzdGFuY2U7Ci0KLSAgICAgICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5E
aXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGZv
Y3VzQ2FuZGlkYXRlQ29weSk7Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIHJlYWxseSBoYXZlIGFu
IGlubmVyIGNsb3NlciBmb2N1cyBjYW5kaWRhdGUgbm9kZSwgdGFrZSBpdC4KLSAgICAgICAgICAg
IGlmIChjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9kZSAhPSBmb2N1c0NhbmRpZGF0ZUNvcHkubm9k
ZSkKLSAgICAgICAgICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUgPSBmb2N1c0NhbmRpZGF0
ZUNvcHk7CisgICAgICAgIGhlbHBlciA9IEZvY3VzQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CisgICAg
ICAgIGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwgaGVscGVyKTsK
KworICAgICAgICAvLyBGSVhNRTogV2hhdCBhYm91dCBhbGlnbWVudD8KKyAgICAgICAgaWYgKGhl
bHBlci5kaXN0YW5jZSA8IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSkgeworICAgICAg
ICAgICAgaGVscGVyLnBhcmVudEFsaWdubWVudCA9IGhlbHBlci5hbGlnbm1lbnQ7CisgICAgICAg
ICAgICBoZWxwZXIucGFyZW50RGlzdGFuY2UgPSBoZWxwZXIuZGlzdGFuY2U7CisKKyAgICAgICAg
ICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNlZE5v
ZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwgaGVscGVyKTsKICAg
ICAgICAgfQorCisgICAgICAgIC8vIEVtcHRpZnkgfGhlbHBlcnwuCisgICAgICAgIGhlbHBlciA9
IEZvY3VzQ2FuZGlkYXRlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmggYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKaW5kZXgg
NzU1OTFjNy4uODdhODdkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5oCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaApAQCAtNjMsOCArNjMsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVj
dGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wgYWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9y
ZGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgYm9vbCBpbml0aWFsRm9jdXMpOwog
Ci0gICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiwgTm9kZSos
IEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmKTsKLSAgICB2
b2lkIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqLCBOb2RlKiwgRm9jdXNE
aXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYpOworICAgIHZvaWQgZmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihEb2N1bWVudCosIE5vZGUqLCBGb2N1c0RpcmVjdGlv
biwgS2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRlJiwgRm9jdXNDYW5kaWRhdGUmKTsKKyAg
ICB2b2lkIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqLCBOb2RlKiwgRm9j
dXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYsIEZvY3VzQ2FuZGlk
YXRlJik7CiAKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZvY3VzZWRG
cmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9X
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IGJmZDk0MTEuLjAzM2QyMmEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNDcsMTUgKzQ3LDE5IEBAIHN0YXRp
YyBib29sIGFyZVJlY3RzUGFydGlhbGx5QWxpZ25lZChGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFJlCiBzdGF0aWMgYm9vbCBpc1JlY3RJbkRpcmVjdGlvbihGb2N1c0Rp
cmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKTsKIHN0YXRpYyB2b2lkIGRl
ZmxhdGVJZk92ZXJsYXBwZWQoSW50UmVjdCYsIEludFJlY3QmKTsKIAotbG9uZyBsb25nIGRpc3Rh
bmNlSW5EaXJlY3Rpb24oTm9kZSogc3RhcnQsIE5vZGUqIGRlc3QsIEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbiwgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSkKK3ZvaWQgZGlzdGFuY2VEYXRhRm9y
Tm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1c0NhbmRpZGF0
ZSYgY2FuZGlkYXRlKQogewogICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXIgPSBzdGFydC0+
cmVuZGVyZXIoKTsKLSAgICBpZiAoIXN0YXJ0UmVuZGVyKQotICAgICAgICByZXR1cm4gbWF4RGlz
dGFuY2UoKTsKKyAgICBpZiAoIXN0YXJ0UmVuZGVyKSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0
YW5jZSA9IG1heERpc3RhbmNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSZW5k
ZXJPYmplY3QqIGRlc3RSZW5kZXIgPSBkZXN0LT5yZW5kZXJlcigpOwotICAgIGlmICghZGVzdFJl
bmRlcikKLSAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7CisgICAgUmVuZGVyT2JqZWN0KiBk
ZXN0UmVuZGVyID0gY2FuZGlkYXRlLm5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFkZXN0UmVu
ZGVyKSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICBJbnRSZWN0IGN1clJlY3QgPSByZW5kZXJSZWN0UmVs
YXRpdmVUb1Jvb3REb2N1bWVudChzdGFydFJlbmRlcik7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0
ICA9IHJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KGRlc3RSZW5kZXIpOwpAQCAtNjUs
NDAgKzY5LDIxIEBAIGxvbmcgbG9uZyBkaXN0YW5jZUluRGlyZWN0aW9uKE5vZGUqIHN0YXJ0LCBO
b2RlKiBkZXN0LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sCiAgICAgZGVmbGF0ZUlmT3Zlcmxh
cHBlZChjdXJSZWN0LCB0YXJnZXRSZWN0KTsKIAogICAgIGlmIChjdXJSZWN0LmlzRW1wdHkoKSB8
fCB0YXJnZXRSZWN0LmlzRW1wdHkoKQotICAgICAgICB8fCB0YXJnZXRSZWN0LngoKSA8IDAgfHwg
dGFyZ2V0UmVjdC55KCkgPCAwKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICAg
ICAgfHwgdGFyZ2V0UmVjdC54KCkgPCAwIHx8IHRhcmdldFJlY3QueSgpIDwgMCkgeworICAgICAg
ICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi0gICAgaWYgKCFpc1JlY3RJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGN1clJlY3QsIHRh
cmdldFJlY3QpKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICBpZiAoIWlzUmVj
dEluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpIHsKKyAgICAgICAg
Y2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIC8vIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBub2RlcyBpcyBub3QgdG8gYmUg
Y29uc2lkZXJlZCBhbG9uZSB3aGVuIGV2YWx1YXRpbmcvbG9va2luZwogICAgIC8vIGZvciB0aGUg
YmVzdCBmb2N1cyBjYW5kaWRhdGUgbm9kZS4gQWxpZ25tZW50IG9mIHJlY3RzIGNhbiBiZSBhbHNv
IGEgZ29vZCBwb2ludCB0byBiZQogICAgIC8vIGNvbnNpZGVyZWQgaW4gb3JkZXIgdG8gbWFrZSB0
aGUgYWxnb3JpdGhtIHRvIGJlaGF2aW9yIGluIGEgbW9yZSBpbnR1aXRpdmUgd2F5LgotICAgIFJl
Y3RzQWxpZ25tZW50IGFsaWdubWVudCA9IGFsaWdubWVudEZvclJlY3RzKGRpcmVjdGlvbiwgY3Vy
UmVjdCwgdGFyZ2V0UmVjdCk7Ci0KLSAgICBib29sIHNhbWVEb2N1bWVudCA9IGNhbmRpZGF0ZS5u
b2RlICYmIGRlc3QtPmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLm5vZGUtPmRvY3VtZW50KCk7Ci0g
ICAgaWYgKHNhbWVEb2N1bWVudCkgewotICAgICAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA+
IGFsaWdubWVudCB8fCAoY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCAmJiBhbGlnbm1lbnQgPiBj
YW5kaWRhdGUucGFyZW50QWxpZ25tZW50KSkKLSAgICAgICAgICAgIHJldHVybiBtYXhEaXN0YW5j
ZSgpOwotICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA+IGFsaWdubWVudCAmJiAo
Y2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCAmJiBhbGlnbm1lbnQgPiBjYW5kaWRhdGUucGFyZW50
QWxpZ25tZW50KSkKLSAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7Ci0KLSAgICAvLyBGSVhN
RV90b25pa2l0b286IHNpbXBsaWZ5IHRoZSBsb2dpYyBoZXJlICEKLSAgICBpZiAoYWxpZ25tZW50
ICE9IE5vbmUKLSAgICAgICAgfHwgKGNhbmRpZGF0ZS5ub2RlICYmIGNhbmRpZGF0ZS5wYXJlbnRB
bGlnbm1lbnQgPj0gYWxpZ25tZW50Ci0gICAgICAgICYmIChjYW5kaWRhdGUubm9kZS0+ZG9jdW1l
bnQoKSA9PSBkZXN0LT5kb2N1bWVudCgpKQotICAgICAgICAmJiBhbGlnbm1lbnQgPiBOb25lKSkg
ewotCi0gICAgICAgIC8vIElmIHdlIGFyZSBub3cgaW4gYW4gaGlnaGVyIHByZWNlZGVudCBjYXNl
LCBsZXRzIHJlc2V0IHRoZSBjdXJyZW50IHxjYW5kaWRhdGV8J3MKLSAgICAgICAgLy8gfGRpc3Rh
bmNlfCBzbyB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhhbiB0aGUgcmVzdWx0IHdlIHdpbGwg
Z2V0IGZyb20KLSAgICAgICAgLy8gfHNwYXRpYWxEaXN0YW5jZXwgKHNlZSBiZWxvdykuCi0gICAg
ICAgIGlmIChjYW5kaWRhdGUuYWxpZ25tZW50IDwgYWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5wYXJl
bnRBbGlnbm1lbnQgPCBhbGlnbm1lbnQpCi0gICAgICAgICAgICBjYW5kaWRhdGUuZGlzdGFuY2Ug
PSBtYXhEaXN0YW5jZSgpOwotCi0gICAgICAgIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPSBhbGlnbm1l
bnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNwYXRpYWxEaXN0YW5jZShkaXJlY3Rpb24sIGN1clJl
Y3QsIHRhcmdldFJlY3QpOworICAgIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPSBhbGlnbm1lbnRGb3JS
ZWN0cyhkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpOworICAgIGNhbmRpZGF0ZS5kaXN0
YW5jZSA9IHNwYXRpYWxEaXN0YW5jZShkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpOwog
fQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBiZWhhdmUgY29ycmVjdGx5IHdp
dGggdHJhbnNmb3JtZWQgZnJhbWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmggYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAppbmRleCA3YzE4
M2RmLi45MGZmMWNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
aAorKysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApAQCAtMTE4LDcgKzExOCw3
IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgUmVjdHNBbGlnbm1lbnQgcGFyZW50QWxp
Z25tZW50OwogfTsKIAotbG9uZyBsb25nIGRpc3RhbmNlSW5EaXJlY3Rpb24oTm9kZSosIE5vZGUq
LCBGb2N1c0RpcmVjdGlvbiwgRm9jdXNDYW5kaWRhdGUmKTsKK3ZvaWQgZGlzdGFuY2VEYXRhRm9y
Tm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1c0NhbmRpZGF0
ZSYgY2FuZGlkYXRlKTsKIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oRnJhbWUqLCBGb2N1c0RpcmVj
dGlvbik7CiB2b2lkIHNjcm9sbEludG9WaWV3KEVsZW1lbnQqKTsKIGJvb2wgaGFzT2Zmc2NyZWVu
UmVjdChOb2RlKik7Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="commit-queue"
          id="34220"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51028</attachid>
            <date>2010-03-18 08:45:17 -0700</date>
            <delta_ts>2010-03-19 15:13:12 -0700</delta_ts>
            <desc>patch 0.1.2</desc>
            <filename>0001-Spatial-Navigation-Initial-code-simplification-in-F.patch</filename>
            <type>text/plain</type>
            <size>18394</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBkMzBhMzA3ZjliNzY3Y2YwZmE4YjIzNDJjZjcyOThkNWViYjRmM2Q2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNSBNYXIgMjAxMCAxNjoyMjoxNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogSW5pdGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29u
dHJvbGxlci5jcHAgYW5kIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcAoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuClBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoK
Tm8gYmVoYXZpb3VyIGNoYW5nZSBhdCB0aGlzIHBvaW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJv
dW5kIHRvIHRoZSBwbGFjZQp3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4KCldlYkNvcmU6OmRpc3Rh
bmNlSW5EaXJlY3Rpb24gbWV0aG9kIHdhcyBoYW5kbGluZyBtdWNoIG9mIHRoZSBsb2dpYyBub3Qg
c3RyaWN0bHkgb25seQpyZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVp
c2l0aW9uIGl0c2VsZi4gVGhpcyBtZXRob2Qgd2FzIHNpbXBsaWZpZWQgYW5kCnJlbmFtZWQgdG8g
J1dlYkNvcmU6OmRpc3RhbmNlRGF0YUZvck5vZGUnLiBJdCBub3cgaXMgcmVzcG9uc2libGUgZm9y
IG5vdCBvbmx5IGdldHRpbmcgdGhlCmRpc3RhbmNlLCBidXQgYWxzbyBwYXJlbnQgZG9jdW1lbnQg
ZGlzdGFuY2UsIGFsaWdubWVudCBhbmQgcGFyZW50IGRvY3VtZW50IGFsaWdubWVudCB0byB0aGUK
Y3VycmVudCBmb2N1c2VkIG5vZGUuIEFsbCBhc3NpZ25lbWVudCBsb2dpYyBwcmV2aW91c2x5IHRo
ZXJlIHdhcyBtb3ZlZCB0byB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyLgoKZmluZEZvY3Vz
YWJsZU5vZGVJbkRpcmVjdGlvbiBhbmQgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24g
bWV0aG9kIGhhZCB0aGVpciBsb2dpYwphbHNvIHNpbXBsaWZpZWQgYmFzZWQgb24gdGhlIGNoYW5n
ZXMgYWJvdmUuCgpObyBiZWhhdmlvdXIgY2hhbmdlIGF0IHRoaXMgcG9pbnQuIE1vc3RseSBtb3Zp
bmcgY29kZSBhcm91bmQgdG8gdGhlIHBsYWNlCndoZXJlIGl0IHNob3VsZCBsaXZlIGluLgoKKiBw
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFu
Y2VGb2N1c0RpcmVjdGlvbmFsbHkpOgooV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNs
b3Nlcik6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24pOgooV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJ
bkRpcmVjdGlvbik6CiogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKiBwYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcDoKKFdlYkNvcmU6OmRpc3RhbmNlRGF0YUZvck5vZGUpOgooV2ViQ29yZTo6cmVu
ZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQpOgoqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
aDoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgIHwgICAzMCArKysrKysr
KwogV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgICB8ICAxMzAgKysrKysrKysrKysr
KysrKysrKysrKy0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCAg
ICAgfCAgICA0ICstCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIHwgICA1NSAr
KysrKystLS0tLS0tLS0tCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCAgIHwgICAg
MiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgODYgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzMjI4NGNlLi5jNDkyOTQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEwLTAzLTE1ICBBbnRvbmlvIEdv
bWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIFBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogSW5pdGlhbCBjb2RlIHNpbXBs
aWZpY2F0aW9uIGluIEZvY3VzQ29udHJvbGxlci5jcHAgYW5kIFNwYXRpYWxOYXZpZ2F0aW9uLmNw
cAorCisgICAgICAgIFdlYkNvcmU6OmRpc3RhbmNlSW5EaXJlY3Rpb24gbWV0aG9kIHdhcyBoYW5k
bGluZyBtdWNoIG9mIHRoZSBsb2dpYyBub3Qgc3RyaWN0bHkgcmVsYXRlZAorICAgICAgICBvbmx5
IHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVpc2l0aW9uIGl0c2VsZi4gVGhpcyBt
ZXRob2Qgd2FzIHNpbXBsaWZpZWQgYW5kCisgICAgICAgIHJlbmFtZWQgdG8gJ1dlYkNvcmU6OmRp
c3RhbmNlRGF0YUZvck5vZGUnLiBJdCBub3cgaXMgcmVzcG9uc2libGUgZm9yIG5vdCBvbmx5IGdl
dHRpbmcgdGhlCisgICAgICAgIGRpc3RhbmNlLCBidXQgYWxzbyBwYXJlbnQgZG9jdW1lbnQgZGlz
dGFuY2UsIGFsaWdubWVudCBhbmQgcGFyZW50IGRvY3VtZW50IGFsaWdubWVudCB0byB0aGUKKyAg
ICAgICAgY3VycmVudCBmb2N1c2VkIG5vZGUuIEFsbCBhc3NpZ25lbWVudCBsb2dpYyBwcmV2aW91
c2x5IHRoZXJlIHdhcyBtb3ZlZCB0byB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyLgorCisg
ICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24gYW5kIGRlZXBGaW5kRm9jdXNhYmxl
Tm9kZUluRGlyZWN0aW9uIG1ldGhvZCBoYWQgdGhlaXIgbG9naWMKKyAgICAgICAgYWxzbyBzaW1w
bGlmaWVkIGJhc2VkIG9uIHRoZSBjaGFuZ2VzIGFib3ZlLgorCisgICAgICAgIE5vIGJlaGF2aW91
ciBjaGFuZ2UgYXQgdGhpcyBwb2ludC4gTW9zdGx5IG1vdmluZyBjb2RlIGFyb3VuZCB0byB0aGUg
cGxhY2UKKyAgICAgICAgd2hlcmUgaXQgc2hvdWxkIGxpdmUgaW4uCisKKyAgICAgICAgKiBwYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6
OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRm9j
dXNDYW5kaWRhdGVJZkNsb3Nlcik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6
OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXND
b250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlRGF0YUZvck5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQpOgorICAgICAgICAqIHBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKworMjAxMC0wMy0xNSAgQW50b25pbyBHb21lcyAgPHRv
bmlraXRvb0B3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25o
YS4KICAgICAgICAgUGF0Y2ggYnkgQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggNTdlNTI5Zi4uNzI1ZDJjZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTMwNCw4ICszMDQsOCBAQCBib29sIEZvY3VzQ29udHJv
bGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24s
IEtleWJvYQogICAgIC8vIE1vdmUgdXAgaW4gdGhlIGNoYWluIG9mIG5lc3RlZCBmcmFtZXMuCiAg
ICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50b3AoKTsKIAotICAgIEZvY3VzQ2FuZGlkYXRlIGZv
Y3VzQ2FuZGlkYXRlOwotICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oZnJhbWUtPmRv
Y3VtZW50KCksIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBmb2N1c0NhbmRpZGF0ZSk7
CisgICAgRm9jdXNDYW5kaWRhdGUgZm9jdXNDYW5kaWRhdGUsIGhlbHBlcjsKKyAgICBmaW5kRm9j
dXNhYmxlTm9kZUluRGlyZWN0aW9uKGZyYW1lLT5kb2N1bWVudCgpLCBmb2N1c2VkTm9kZSwgZGly
ZWN0aW9uLCBldmVudCwgZm9jdXNDYW5kaWRhdGUsIGhlbHBlcik7CiAKICAgICBOb2RlKiBub2Rl
ID0gZm9jdXNDYW5kaWRhdGUubm9kZTsKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkgewpAQCAtMzQyLDUyICszNDIsODcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFk
dmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2EK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJ
ZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgTm9kZSogY2FuZGlkYXRlLCBsb25nIGxvbmcgZGlz
dGFuY2UsIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpCisvLyBGSVhNRV90
b25pa2l0b286IHNpbXBsaWZ5IHRoZSBsb2dpYyBoZXJlICEKK3N0YXRpYyB2b2lkIHVwZGF0ZUZv
Y3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSogZm9jdXNlZE5vZGUsIEZvY3VzQ2FuZGlkYXRlIGNh
bmRpZGF0ZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpCiB7Ci0gICAgLy8gQmFpbCBvdXQgaWYg
fGRpc3RhbmNlfCBpcyBiaWdnZXIgdGhhbiB0aGUgY3VycmVudCBjbG9zZXN0IGNhbmRpZGF0ZS4K
LSAgICBpZiAoZGlzdGFuY2UgPj0gY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNlKQorICAg
IGJvb2wgc2FtZURvY3VtZW50ID0gY2FuZGlkYXRlLmRvY3VtZW50KCkgPT0gY2xvc2VzdC5kb2N1
bWVudCgpOworICAgIGlmIChzYW1lRG9jdW1lbnQpIHsKKyAgICAgICAgaWYgKGNsb3Nlc3QuYWxp
Z25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAgICAgfHwgKGNsb3Nlc3QucGFy
ZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0LnBhcmVudEFsaWdu
bWVudCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChjbG9zZXN0LmFsaWdu
bWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKKyAgICAgICAgICAgICAgICYmIChjbG9zZXN0LnBh
cmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2VzdC5wYXJlbnRBbGln
bm1lbnQpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZiB8Zm9jdXNlZE5vZGV8IGFuZCB8
Y2FuZGlkYXRlfCBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgQU5ECi0gICAgLy8gY3VycmVudCB8
Y2xvc2VzdEZvY3VzQ2FuZGlkYWR0ZXwgaXMgbm90IGluIGFuIHtpfWZyYW1lIHRoYXQgaXMKLSAg
ICAvLyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkLgotICAgIGlmIChmb2N1c2VkTm9kZS0+ZG9j
dW1lbnQoKSA9PSBjYW5kaWRhdGUtPmRvY3VtZW50KCkKLSAgICAgICAgJiYgZGlzdGFuY2UgPCBj
bG9zZXN0Rm9jdXNDYW5kaWRhdGUucGFyZW50RGlzdGFuY2UpIHsKLSAgICAgICAgY2xvc2VzdEZv
Y3VzQ2FuZGlkYXRlLm5vZGUgPSBjYW5kaWRhdGU7Ci0gICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRp
ZGF0ZS5kaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUu
cGFyZW50RGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwotICAgIH0gZWxzZSBpZiAoZm9jdXNlZE5v
ZGUtPmRvY3VtZW50KCkgIT0gY2FuZGlkYXRlLT5kb2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIElm
IHRoZSB8Zm9jdXNlZE5vZGV8IGlzIGluIGFuIGlubmVyIGRvY3VtZW50IGFuZCB0aGUgfGNhbmRp
ZGF0ZXwgaXMKLSAgICAgICAgLy8gaW4gYSBkaWZmZXJlbnQgZG9jdW1lbnQsIHdlIG9ubHkgY29u
c2lkZXIgdG8gY2hhbmdlIGZvY3VzIGlmIHRoZXJlIGlzCi0gICAgICAgIC8vIG5vdCBhbm90aGVy
IGFscmVhZHkgZ29vZCBmb2N1c2FibGUgY2FuZGlkYXRlIGluIHRoZSBzYW1lIGRvY3VtZW50IGFz
Ci0gICAgICAgIC8vIHxmb2N1c2VkTm9kZXwuCi0gICAgICAgIGlmICghKChpc0luUm9vdERvY3Vt
ZW50KGNhbmRpZGF0ZSkgJiYgIWlzSW5Sb290RG9jdW1lbnQoZm9jdXNlZE5vZGUpKQotICAgICAg
ICAgICAgJiYgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUKLSAgICAgICAgICAgICYmIGZvY3Vz
ZWROb2RlLT5kb2N1bWVudCgpID09IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5ub2RlLT5kb2N1bWVu
dCgpKSkgewotICAgICAgICAgICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUgPSBjYW5kaWRh
dGU7Ci0gICAgICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUuZGlzdGFuY2UgPSBkaXN0YW5j
ZTsKLSAgICAgICAgfQorICAgIGlmIChjYW5kaWRhdGUuYWxpZ25tZW50ICE9IE5vbmUKKyAgICAg
ICAgfHwgKGNsb3Nlc3Qubm9kZSAmJiBjbG9zZXN0LnBhcmVudEFsaWdubWVudCA+PSBjYW5kaWRh
dGUuYWxpZ25tZW50CisgICAgICAgICYmIChjbG9zZXN0LmRvY3VtZW50KCkgPT0gY2FuZGlkYXRl
LmRvY3VtZW50KCkpCisgICAgICAgICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBOb25lKSkgewor
CisgICAgICAgIC8vIElmIHdlIGFyZSBub3cgaW4gYW4gaGlnaGVyIHByZWNlZGVudCBjYXNlLCBs
ZXRzIHJlc2V0IHRoZSBjdXJyZW50IHxjbG9zZXN0fCdzCisgICAgICAgIC8vIHxkaXN0YW5jZXwg
c28gd2UgZm9yY2UgaXQgdG8gYmUgYmlnZ2VyIHRoYW4gYW55IHJlc3VsdCB3ZSB3aWxsIGdldCBm
cm9tCisgICAgICAgIC8vIHxzcGF0aWFsRGlzdGFuY2UoKXwgKHNlZSBiZWxvdykuCisgICAgICAg
IGlmIChjbG9zZXN0LmFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQKKyAgICAgICAgICAg
ICYmIGNsb3Nlc3QucGFyZW50QWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudCkKKyAgICAg
ICAgICAgIGNsb3Nlc3QuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOworCisgICAgICAgIGNsb3Nl
c3QuYWxpZ25tZW50ID0gY2FuZGlkYXRlLmFsaWdubWVudDsKKyAgICB9CisKKyAgICAvLyBCYWls
IG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBpcyBiaWdnZXIgdGhhbiB0aGUgY2xvc2VzdCBj
YW5kaWRhdGUncyBkaXN0YW5jZS4KKyAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlID49IGNsb3Nl
c3QuZGlzdGFuY2UpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHxmb2N1c2VkTm9kZXwg
YW5kIHxjYW5kaWRhdGV8IGFyZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBBTkQgY3VycmVudAorICAg
IC8vIHxjbG9zZXN0fCBpcyBub3QgaW4gYW4ge2l9ZnJhbWUgdGhhdCBpcyBwcmVmZXJhYmxlIHRv
IGdldCBmb2N1c2VkIC4uLgorICAgIGlmIChmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjYW5k
aWRhdGUuZG9jdW1lbnQoKQorICAgICAgICAmJiBjYW5kaWRhdGUuZGlzdGFuY2UgPCBjbG9zZXN0
LnBhcmVudERpc3RhbmNlKQorICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOworICAgIGVsc2Ug
aWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNhbmRpZGF0ZS5kb2N1bWVudCgpKSB7Cisg
ICAgICAgIC8vIElmIHRoZSB8Zm9jdXNlZE5vZGV8IGlzIGluIGFuIGlubmVyIGRvY3VtZW50IGFu
ZCB8Y2FuZGlkYXRlfCBpcyBpbiBhCisgICAgICAgIC8vIGRpZmZlcmVudCBkb2N1bWVudCwgd2Ug
b25seSBjb25zaWRlciB0byBjaGFuZ2UgZm9jdXMgaWYgdGhlcmUgaXMgbm90CisgICAgICAgIC8v
IGFub3RoZXIgYWxyZWFkeSBnb29kIGZvY3VzYWJsZSBjYW5kaWRhdGUgaW4gdGhlIHNhbWUgZG9j
dW1lbnQgYXMgfGZvY3VzZWROb2RlfC4KKyAgICAgICAgaWYgKCEoKGlzSW5Sb290RG9jdW1lbnQo
Y2FuZGlkYXRlLm5vZGUpICYmICFpc0luUm9vdERvY3VtZW50KGZvY3VzZWROb2RlKSkKKyAgICAg
ICAgICAgICYmICFjbG9zZXN0LmlzTnVsbCgpCisgICAgICAgICAgICAmJiBmb2N1c2VkTm9kZS0+
ZG9jdW1lbnQoKSA9PSBjbG9zZXN0LmRvY3VtZW50KCkpKQorICAgICAgICAgICAgY2xvc2VzdCA9
IGNhbmRpZGF0ZTsKICAgICB9CiB9CiAKLXZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNh
YmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogZm9jdXNlZE5vZGUs
IEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzQ2Fu
ZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpCit2b2lkIEZvY3VzQ29udHJvbGxlcjo6Zmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIGZvY3Vz
ZWROb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlk
YXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0NhbmRpZGF0ZSYgaGVscGVyKQogewogICAgIEFT
U0VSVChkb2N1bWVudCk7CiAKLSAgICAvLyBXYWxrIGFsbCB0aGUgY2hpbGQgbm9kZXMgYW5kIHVw
ZGF0ZSBmb2N1c0NhbmRpZGF0ZSBpZiB3ZSBmaW5kIGEgbmVhcmVyIG5vZGUuCi0gICAgZm9yIChO
b2RlKiBjYW5kaWRhdGUgPSBkb2N1bWVudC0+Zmlyc3RDaGlsZCgpOyBjYW5kaWRhdGU7IGNhbmRp
ZGF0ZSA9IGNhbmRpZGF0ZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgLy8gV2FsayBhbGwg
dGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUgfGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZXwgaWYgd2Ug
ZmluZCBhIG5lYXJlciBub2RlLgorICAgIGZvciAoTm9kZSogZGVzdCA9IGRvY3VtZW50LT5maXJz
dENoaWxkKCk7IGRlc3Q7IGRlc3QgPSBkZXN0LT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAg
ICAgLy8gSW5uZXIgZG9jdW1lbnRzIGNhc2UuCi0gICAgICAgIGlmIChjYW5kaWRhdGUtPmlzRnJh
bWVPd25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGly
ZWN0aW9uKGZvY3VzZWROb2RlLCBjYW5kaWRhdGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RG
b2N1c0NhbmRpZGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNhbmRpZGF0ZSAhPSBmb2N1c2VkTm9k
ZSAmJiBjYW5kaWRhdGUtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7Ci0gICAgICAgICAg
ICBsb25nIGxvbmcgZGlzdGFuY2UgPSBkaXN0YW5jZUluRGlyZWN0aW9uKGZvY3VzZWROb2RlLCBj
YW5kaWRhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpcmVjdGlvbiwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKLSAgICAgICAgICAgIHVw
ZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSwgZGlzdGFu
Y2UsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CisgICAgICAgIGlmIChkZXN0LT5pc0ZyYW1lT3du
ZXJFbGVtZW50KCkpCisgICAgICAgICAgICBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlv
bihmb2N1c2VkTm9kZSwgZGVzdCwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlk
YXRlLCBoZWxwZXIpOworICAgICAgICBlbHNlIGlmIChkZXN0ICE9IGZvY3VzZWROb2RlICYmIGRl
c3QtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7CisgICAgICAgICAgICBGb2N1c0NhbmRp
ZGF0ZSBjdXJyZW50Rm9jdXNDYW5kaWRhdGUoZGVzdCk7CisKKyAgICAgICAgICAgIC8vIElmIHxo
ZWxwZXJ8IGlzIG5vdCBOdWxsLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBj
YWxsIGZyb20KKyAgICAgICAgICAgIC8vIGRlZXBGaW5lRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9u
IChpLmUuIHByb2Nlc3NpbmcgYW4gZWxlbWVudCBpbiBhbiBpZnJhbWUpLgorICAgICAgICAgICAg
Ly8gSW4gdGhpcyBjYXNlLCB8aGVscGVyfCBob2xkcyB0aGUgaW5mb3JtYXRpb24gZGF0YSAoZGlz
dGFuY2UsIGFsaWdubWVudCwgZXRjKQorICAgICAgICAgICAgLy8gb2YgaWZyYW1lIGVsZW1lbnQg
aXRzZWxmLgorICAgICAgICAgICAgaWYgKCFoZWxwZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgICAg
ICAgICBjdXJyZW50Rm9jdXNDYW5kaWRhdGUucGFyZW50QWxpZ25tZW50ID0gaGVscGVyLnBhcmVu
dEFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBjdXJyZW50Rm9jdXNDYW5kaWRhdGUucGFyZW50
RGlzdGFuY2U9IGhlbHBlci5wYXJlbnREaXN0YW5jZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rpb24sIGZvY3VzZWROb2RlLCBjdXJyZW50
Rm9jdXNDYW5kaWRhdGUpOworICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nl
cihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGUpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIEZvY3VzQ29udHJvbGxlcjo6ZGVlcEZp
bmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogZm9jdXNlZE5vZGUsIE5vZGUqIGNhbmRp
ZGF0ZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwgRm9j
dXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSkKK3ZvaWQgRm9jdXNDb250cm9sbGVy
OjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBmb2N1c2VkTm9kZSwgTm9k
ZSogY2FuZGlkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZl
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0NhbmRpZGF0ZSYg
aGVscGVyKQogewogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBzdGF0aWNfY2Fz
dDxIVE1MRnJhbWVPd25lckVsZW1lbnQqPihjYW5kaWRhdGUpOwogICAgIGlmICghb3duZXItPmNv
bnRlbnRGcmFtZSgpKQpAQCAtMzk4LDI0ICs0MzMsMjMgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6
OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqIGZvY3VzZWROb2RlLCBOb2Rl
KgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaW5uZXJEb2N1bWVudCA9PSBmb2N1c2VkTm9k
ZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihpbm5l
ckRvY3VtZW50LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2Fu
ZGlkYXRlKTsKKyAgICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihpbm5lckRvY3Vt
ZW50LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRl
LCBoZWxwZXIpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCB7
aX1mcmFtZSBlbGVtZW50IGl0c2VsZiBpcyBhIGdvb2QgY2FuZGlkYXRlCiAgICAgICAgIC8vIHRv
IG1vdmUgZm9jdXMgdG8uIElmIGl0IGlzLCB0aGVuIHdlIHRyYXZlcnNlIGl0cyBpbm5lciBub2Rl
cy4KLSAgICAgICAgLy8gTGV0cyBwYXNzIGEgY29weSBvZiB0aGUgYmVzdCBjYW5kaWRhdGUsIHRv
IG5vdCBnZXQgZm9vbGVkIGJ5IGEKLSAgICAgICAgLy8gZnJhbWUgd2l0aG91dCBmb2N1c2FibGUg
ZWxlbWVudHMuCi0gICAgICAgIEZvY3VzQ2FuZGlkYXRlIGZvY3VzQ2FuZGlkYXRlQ29weSA9IGNs
b3Nlc3RGb2N1c0NhbmRpZGF0ZTsKLSAgICAgICAgbG9uZyBsb25nIGRpc3RhbmNlID0gZGlzdGFu
Y2VJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rpb24sIGZvY3VzQ2Fu
ZGlkYXRlQ29weSk7Ci0gICAgICAgIGlmIChkaXN0YW5jZSA8IGZvY3VzQ2FuZGlkYXRlQ29weS5k
aXN0YW5jZSkgewotICAgICAgICAgICAgZm9jdXNDYW5kaWRhdGVDb3B5LnBhcmVudEFsaWdubWVu
dCA9IGZvY3VzQ2FuZGlkYXRlQ29weS5hbGlnbm1lbnQ7Ci0gICAgICAgICAgICBmb2N1c0NhbmRp
ZGF0ZUNvcHkucGFyZW50RGlzdGFuY2UgPSBkaXN0YW5jZTsKLQotICAgICAgICAgICAgZmluZEZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbihpbm5lckRvY3VtZW50LCBmb2N1c2VkTm9kZSwgZGlyZWN0
aW9uLCBldmVudCwgZm9jdXNDYW5kaWRhdGVDb3B5KTsKLQotICAgICAgICAgICAgLy8gSWYgd2Ug
cmVhbGx5IGhhdmUgYW4gaW5uZXIgY2xvc2VyIGZvY3VzIGNhbmRpZGF0ZSBub2RlLCB0YWtlIGl0
LgotICAgICAgICAgICAgaWYgKGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5ub2RlICE9IGZvY3VzQ2Fu
ZGlkYXRlQ29weS5ub2RlKQotICAgICAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSA9
IGZvY3VzQ2FuZGlkYXRlQ29weTsKKyAgICAgICAgaGVscGVyID0gRm9jdXNDYW5kaWRhdGUoY2Fu
ZGlkYXRlKTsKKyAgICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rpb24sIGZvY3VzZWRO
b2RlLCBoZWxwZXIpOworCisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IGFsaWdtZW50Pwor
ICAgICAgICBpZiAoaGVscGVyLmRpc3RhbmNlIDwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRpc3Rh
bmNlKSB7CisgICAgICAgICAgICBoZWxwZXIucGFyZW50QWxpZ25tZW50ID0gaGVscGVyLmFsaWdu
bWVudDsKKyAgICAgICAgICAgIGhlbHBlci5wYXJlbnREaXN0YW5jZSA9IGhlbHBlci5kaXN0YW5j
ZTsKKworICAgICAgICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihpbm5lckRvY3Vt
ZW50LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRl
LCBoZWxwZXIpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gRW1wdGlmeSB8aGVscGVyfC4KKyAg
ICAgICAgaGVscGVyID0gRm9jdXNDYW5kaWRhdGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuaAppbmRleCA3NTU5MWM3Li44N2E4N2RjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCkBA
IC02Myw4ICs2Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhZHZhbmNlRm9jdXNEaXJlY3Rpb25h
bGx5KEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7CiAgICAgYm9vbCBhZHZhbmNlRm9j
dXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBib29sIGlu
aXRpYWxGb2N1cyk7CiAKLSAgICB2b2lkIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oRG9j
dW1lbnQqLCBOb2RlKiwgRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRp
ZGF0ZSYpOwotICAgIHZvaWQgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSos
IE5vZGUqLCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRlJik7
CisgICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiwgTm9kZSos
IEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmLCBGb2N1c0Nh
bmRpZGF0ZSYpOworICAgIHZvaWQgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9k
ZSosIE5vZGUqLCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRl
JiwgRm9jdXNDYW5kaWRhdGUmKTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBSZWZQdHI8RnJh
bWU+IG1fZm9jdXNlZEZyYW1lOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKaW5kZXggYmZk
OTQxMS4uMDMzZDIyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC00NywxNSAr
NDcsMTkgQEAgc3RhdGljIGJvb2wgYXJlUmVjdHNQYXJ0aWFsbHlBbGlnbmVkKEZvY3VzRGlyZWN0
aW9uLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmUKIHN0YXRpYyBib29sIGlzUmVjdEluRGly
ZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpOwog
c3RhdGljIHZvaWQgZGVmbGF0ZUlmT3ZlcmxhcHBlZChJbnRSZWN0JiwgSW50UmVjdCYpOwogCi1s
b25nIGxvbmcgZGlzdGFuY2VJbkRpcmVjdGlvbihOb2RlKiBzdGFydCwgTm9kZSogZGVzdCwgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKQordm9pZCBk
aXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgTm9kZSogc3RhcnQs
IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJl
bmRlciA9IHN0YXJ0LT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5kZXIpCi0gICAgICAg
IHJldHVybiBtYXhEaXN0YW5jZSgpOworICAgIGlmICghc3RhcnRSZW5kZXIpIHsKKyAgICAgICAg
Y2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIFJlbmRlck9iamVjdCogZGVzdFJlbmRlciA9IGRlc3QtPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFkZXN0UmVuZGVyKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICBS
ZW5kZXJPYmplY3QqIGRlc3RSZW5kZXIgPSBjYW5kaWRhdGUubm9kZS0+cmVuZGVyZXIoKTsKKyAg
ICBpZiAoIWRlc3RSZW5kZXIpIHsKKyAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlz
dGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEludFJlY3QgY3VyUmVjdCA9
IHJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KHN0YXJ0UmVuZGVyKTsKICAgICBJbnRS
ZWN0IHRhcmdldFJlY3QgID0gcmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQoZGVzdFJl
bmRlcik7CkBAIC02NSw0MCArNjksMjEgQEAgbG9uZyBsb25nIGRpc3RhbmNlSW5EaXJlY3Rpb24o
Tm9kZSogc3RhcnQsIE5vZGUqIGRlc3QsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICBk
ZWZsYXRlSWZPdmVybGFwcGVkKGN1clJlY3QsIHRhcmdldFJlY3QpOwogCiAgICAgaWYgKGN1clJl
Y3QuaXNFbXB0eSgpIHx8IHRhcmdldFJlY3QuaXNFbXB0eSgpCi0gICAgICAgIHx8IHRhcmdldFJl
Y3QueCgpIDwgMCB8fCB0YXJnZXRSZWN0LnkoKSA8IDApCi0gICAgICAgIHJldHVybiBtYXhEaXN0
YW5jZSgpOworICAgICAgICB8fCB0YXJnZXRSZWN0LngoKSA8IDAgfHwgdGFyZ2V0UmVjdC55KCkg
PCAwKSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIWlzUmVjdEluRGlyZWN0aW9uKGRpcmVjdGlv
biwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpCi0gICAgICAgIHJldHVybiBtYXhEaXN0YW5jZSgpOwor
ICAgIGlmICghaXNSZWN0SW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0
KSkgeworICAgICAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQogCiAgICAgLy8gVGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIG5vZGVz
IGlzIG5vdCB0byBiZSBjb25zaWRlcmVkIGFsb25lIHdoZW4gZXZhbHVhdGluZy9sb29raW5nCiAg
ICAgLy8gZm9yIHRoZSBiZXN0IGZvY3VzIGNhbmRpZGF0ZSBub2RlLiBBbGlnbm1lbnQgb2YgcmVj
dHMgY2FuIGJlIGFsc28gYSBnb29kIHBvaW50IHRvIGJlCiAgICAgLy8gY29uc2lkZXJlZCBpbiBv
cmRlciB0byBtYWtlIHRoZSBhbGdvcml0aG0gdG8gYmVoYXZpb3IgaW4gYSBtb3JlIGludHVpdGl2
ZSB3YXkuCi0gICAgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50ID0gYWxpZ25tZW50Rm9yUmVjdHMo
ZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0KTsKLQotICAgIGJvb2wgc2FtZURvY3VtZW50
ID0gY2FuZGlkYXRlLm5vZGUgJiYgZGVzdC0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUubm9kZS0+
ZG9jdW1lbnQoKTsKLSAgICBpZiAoc2FtZURvY3VtZW50KSB7Ci0gICAgICAgIGlmIChjYW5kaWRh
dGUuYWxpZ25tZW50ID4gYWxpZ25tZW50IHx8IChjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50ICYm
IGFsaWdubWVudCA+IGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQpKQotICAgICAgICAgICAgcmV0
dXJuIG1heERpc3RhbmNlKCk7Ci0gICAgfSBlbHNlIGlmIChjYW5kaWRhdGUuYWxpZ25tZW50ID4g
YWxpZ25tZW50ICYmIChjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50ICYmIGFsaWdubWVudCA+IGNh
bmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQpKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsK
LQotICAgIC8vIEZJWE1FX3RvbmlraXRvbzogc2ltcGxpZnkgdGhlIGxvZ2ljIGhlcmUgIQotICAg
IGlmIChhbGlnbm1lbnQgIT0gTm9uZQotICAgICAgICB8fCAoY2FuZGlkYXRlLm5vZGUgJiYgY2Fu
ZGlkYXRlLnBhcmVudEFsaWdubWVudCA+PSBhbGlnbm1lbnQKLSAgICAgICAgJiYgKGNhbmRpZGF0
ZS5ub2RlLT5kb2N1bWVudCgpID09IGRlc3QtPmRvY3VtZW50KCkpCi0gICAgICAgICYmIGFsaWdu
bWVudCA+IE5vbmUpKSB7Ci0KLSAgICAgICAgLy8gSWYgd2UgYXJlIG5vdyBpbiBhbiBoaWdoZXIg
cHJlY2VkZW50IGNhc2UsIGxldHMgcmVzZXQgdGhlIGN1cnJlbnQgfGNhbmRpZGF0ZXwncwotICAg
ICAgICAvLyB8ZGlzdGFuY2V8IHNvIHdlIGZvcmNlIGl0IHRvIGJlIGJpZ2dlciB0aGFuIHRoZSBy
ZXN1bHQgd2Ugd2lsbCBnZXQgZnJvbQotICAgICAgICAvLyB8c3BhdGlhbERpc3RhbmNlfCAoc2Vl
IGJlbG93KS4KLSAgICAgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPCBhbGlnbm1lbnQgJiYg
Y2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA8IGFsaWdubWVudCkKLSAgICAgICAgICAgIGNhbmRp
ZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7Ci0KLSAgICAgICAgY2FuZGlkYXRlLmFsaWdu
bWVudCA9IGFsaWdubWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3BhdGlhbERpc3RhbmNlKGRp
cmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCk7CisgICAgY2FuZGlkYXRlLmFsaWdubWVudCA9
IGFsaWdubWVudEZvclJlY3RzKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCk7CisgICAg
Y2FuZGlkYXRlLmRpc3RhbmNlID0gc3BhdGlhbERpc3RhbmNlKGRpcmVjdGlvbiwgY3VyUmVjdCwg
dGFyZ2V0UmVjdCk7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGJlaGF2
ZSBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1lZCBmcmFtZXMuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5oCmluZGV4IDdjMTgzZGYuLjkwZmYxY2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0
aWFsTmF2aWdhdGlvbi5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCkBA
IC0xMTgsNyArMTE4LDcgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBSZWN0c0FsaWdu
bWVudCBwYXJlbnRBbGlnbm1lbnQ7CiB9OwogCi1sb25nIGxvbmcgZGlzdGFuY2VJbkRpcmVjdGlv
bihOb2RlKiwgTm9kZSosIEZvY3VzRGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYpOwordm9pZCBk
aXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgTm9kZSogc3RhcnQs
IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpOwogYm9vbCBzY3JvbGxJbkRpcmVjdGlvbihGcmFt
ZSosIEZvY3VzRGlyZWN0aW9uKTsKIHZvaWQgc2Nyb2xsSW50b1ZpZXcoRWxlbWVudCopOwogYm9v
bCBoYXNPZmZzY3JlZW5SZWN0KE5vZGUqKTsKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="commit-queue"
          id="34224"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51190</attachid>
            <date>2010-03-19 15:13:12 -0700</date>
            <delta_ts>2010-03-20 14:15:16 -0700</delta_ts>
            <desc>patch 0.2</desc>
            <filename>0001-Spatial-Navigation-Initial-code-simplification-in-F.patch</filename>
            <type>text/plain</type>
            <size>18748</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBmZTY0N2RiYjY1YmM1ZmQzYjAwOTZlZWNmMmIwY2Q5YjJiMjk2YjE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNSBNYXIgMjAxMCAxNjoyMjoxNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogSW5pdGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29u
dHJvbGxlci5jcHAgYW5kIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcAoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuClBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoK
Tm8gYmVoYXZpb3VyIGNoYW5nZSBhdCB0aGlzIHBvaW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJv
dW5kIHRvIHRoZSBwbGFjZQp3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4KCldlYkNvcmU6OmRpc3Rh
bmNlSW5EaXJlY3Rpb24gbWV0aG9kIHdhcyBoYW5kbGluZyBtdWNoIG9mIHRoZSBsb2dpYyBub3Qg
c3RyaWN0bHkgb25seQpyZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVp
c2l0aW9uLiBUaGlzIG1ldGhvZCB3YXMgc2ltcGxpZmllZCBhbmQKcmVuYW1lZCB0byAnV2ViQ29y
ZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZScuIEl0IGlzIG5vdyByZXNwb25zaWJsZSBmb3IgZ2V0dGlu
ZyB0aGUKZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9ubHkuIFBhcmVudCBkb2N1bWVudCBk
aXN0YW5jZSBhbmQgYWxpZ25tZW50IGFjcXVpc2l0aW9ucywKb24gdGhlaXIgdHVybnMsIGhhdmUg
YWxzbyBjaGFuZ2VkIGxvY2F0aW9uIChzZWUgdGhlIHVzZSBvZiB0aGUgbmV3bHkgaW50cm9kdWNl
ZCB8aGVscGVyfApwYXJhbWV0ZXIpLgpBbGwgYXNzaWduZW1lbnQgbG9naWMgcHJldmlvdXNseSBk
aXN0YW5jZUluRGlyZWN0aW9uIG1ldGhvZCB3YXMgbW92ZWQgdG8gdXBkYXRlRm9jdXNDYW5kaWRh
dGVJZkNsb3Nlci4KCmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24gYW5kIGRlZXBGaW5kRm9j
dXNhYmxlTm9kZUluRGlyZWN0aW9uIG1ldGhvZCBoYWQgdGhlaXIgbG9naWMKYWxzbyBzaW1wbGlm
aWVkIGJhc2VkIG9uIHRoZSBjaGFuZ2VzIGFib3ZlLCBhbmQgb24gdGhlIHVzZSBvZiBpc051bGwg
YW5kIGRvY3VtZW50IG1ldGhvZHMKZnJvbSBGb2N1c0NhbmRpZGF0ZSBjbGFzcy4KCk5vIGJlaGF2
aW91ciBjaGFuZ2UgYXQgdGhpcyBwb2ludC4gTW9zdGx5IG1vdmluZyBjb2RlIGFyb3VuZCB0byB0
aGUgcGxhY2UKd2hlcmUgaXQgc2hvdWxkIGxpdmUgaW4uCgoqIHBhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcDoKKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxs
eSk6CihXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKToKKFdlYkNvcmU6OkZv
Y3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CihXZWJDb3JlOjpG
b2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKiBwYWdl
L0ZvY3VzQ29udHJvbGxlci5oOgoqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgooV2ViQ29y
ZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZSk6CihXZWJDb3JlOjpyZW5kZXJSZWN0UmVsYXRpdmVUb1Jv
b3REb2N1bWVudCk6CiogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgotLS0KIFdlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgfCAgIDMyICsrKysrKysrKwogV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAgICB8ICAxMzIgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t
LS0tLS0tCiBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmggICAgIHwgICAgNCArLQogV2Vi
Q29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCB8ICAgNTUgKysrKysrLS0tLS0tLS0tLQog
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmggICB8ICAgIDIgKy0KIDUgZmlsZXMgY2hh
bmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDg2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmEwNzcyZC4uMDM3NzJi
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNSBAQAorMjAxMC0wMy0xNSAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICBQYXRjaCBieSBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBTcGF0aWFsIE5hdmlnYXRpb246IEluaXRpYWwgY29kZSBzaW1wbGlmaWNhdGlvbiBpbiBGb2N1
c0NvbnRyb2xsZXIuY3BwIGFuZCBTcGF0aWFsTmF2aWdhdGlvbi5jcHAKKworICAgICAgICBXZWJD
b3JlOjpkaXN0YW5jZUluRGlyZWN0aW9uIG1ldGhvZCB3YXMgaGFuZGxpbmcgbXVjaCBvZiB0aGUg
bG9naWMgbm90IHN0cmljdGx5IG9ubHkKKyAgICAgICAgcmVsYXRlZCB0byB0aGUgZGlzdGFuY2Ug
YmV0d2VlbiBub2RlcyBhY3F1aXNpdGlvbi4gVGhpcyBtZXRob2Qgd2FzIHNpbXBsaWZpZWQgYW5k
CisgICAgICAgIHJlbmFtZWQgdG8gJ1dlYkNvcmU6OmRpc3RhbmNlRGF0YUZvck5vZGUnLiBUaGUg
bGF0dGVyIGlzIG5vdyByZXNwb25zaWJsZSBmb3Igb25seSBnZXR0aW5nIHRoZQorICAgICAgICBk
aXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEuIFBhcmVudCBkb2N1bWVudCBkaXN0YW5jZSBhbmQg
YWxpZ25tZW50IGFjcXVpc2l0aW9ucywgb24gdGhlaXIgdHVybnMsCisgICAgICAgIGhhdmUgYWxz
byBjaGFuZ2VkIGxvY2F0aW9uIChzZWUgdGhlIHVzZSBvZiB0aGUgbmV3bHkgaW50cm9kdWNlZCB8
aGVscGVyfCBwYXJhbWV0ZXIpLgorICAgICAgICBBbGwgYXNzaWduZW1lbnQgbG9naWMgcHJldmlv
dXNseSBkaXN0YW5jZUluRGlyZWN0aW9uIG1ldGhvZCB3YXMgbW92ZWQgdG8gdXBkYXRlRm9jdXND
YW5kaWRhdGVJZkNsb3Nlci4KKworICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9u
IGFuZCBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiBtZXRob2QgaGFkIHRoZWlyIGxv
Z2ljCisgICAgICAgIGFsc28gc2ltcGxpZmllZCBiYXNlZCBvbiB0aGUgY2hhbmdlcyBhYm92ZSwg
YW5kIG9uIHRoZSB1c2Ugb2YgaXNOdWxsIGFuZCBkb2N1bWVudCBtZXRob2RzCisgICAgICAgIGZy
b20gRm9jdXNDYW5kaWRhdGUgY2xhc3MuCisKKyAgICAgICAgTm8gYmVoYXZpb3VyIGNoYW5nZSBh
dCB0aGlzIHBvaW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJvdW5kIHRvIHRoZSBwbGFjZQorICAg
ICAgICB3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4KKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZv
Y3VzRGlyZWN0aW9uYWxseSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0
ZUlmQ2xvc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3Vz
YWJsZU5vZGVJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6
OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZW5kZXJSZWN0UmVsYXRpdmVUb1Jvb3REb2N1bWVudCk6CisgICAgICAgICogcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5oOgorCiAyMDEwLTAzLTE5ICBLZXZpbiBEZWNrZXIgIDxrZGVja2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgQnJhZHkgRWlkc29u
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA1N2U1MjlmLi5hODZmMDU2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcApAQCAtMzA0LDggKzMwNCw4IEBAIGJvb2wgRm9jdXNDb250cm9s
bGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwg
S2V5Ym9hCiAgICAgLy8gTW92ZSB1cCBpbiB0aGUgY2hhaW4gb2YgbmVzdGVkIGZyYW1lcy4KICAg
ICBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRvcCgpOwogCi0gICAgRm9jdXNDYW5kaWRhdGUgZm9j
dXNDYW5kaWRhdGU7Ci0gICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmcmFtZS0+ZG9j
dW1lbnQoKSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGZvY3VzQ2FuZGlkYXRlKTsK
KyAgICBGb2N1c0NhbmRpZGF0ZSBmb2N1c0NhbmRpZGF0ZSwgaGVscGVyOworICAgIGZpbmRGb2N1
c2FibGVOb2RlSW5EaXJlY3Rpb24oZnJhbWUtPmRvY3VtZW50KCksIGZvY3VzZWROb2RlLCBkaXJl
Y3Rpb24sIGV2ZW50LCBmb2N1c0NhbmRpZGF0ZSwgaGVscGVyKTsKIAogICAgIE5vZGUqIG5vZGUg
PSBmb2N1c0NhbmRpZGF0ZS5ub2RlOwogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKSB7CkBAIC0zNDIsNTIgKzM0Miw4OSBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2
YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlm
Q2xvc2VyKE5vZGUqIGZvY3VzZWROb2RlLCBOb2RlKiBjYW5kaWRhdGUsIGxvbmcgbG9uZyBkaXN0
YW5jZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSkKKy8vIEZJWE1FX3Rv
bmlraXRvbzogc2ltcGxpZnkgdGhlIGxvZ2ljIGhlcmUgIQorc3RhdGljIHZvaWQgdXBkYXRlRm9j
dXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgRm9jdXNDYW5kaWRhdGUgY2Fu
ZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKIHsKLSAgICAvLyBCYWlsIG91dCBpZiB8
ZGlzdGFuY2V8IGlzIGJpZ2dlciB0aGFuIHRoZSBjdXJyZW50IGNsb3Nlc3QgY2FuZGlkYXRlLgot
ICAgIGlmIChkaXN0YW5jZSA+PSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUuZGlzdGFuY2UpCisgICAg
Ym9vbCBzYW1lRG9jdW1lbnQgPSBjYW5kaWRhdGUuZG9jdW1lbnQoKSA9PSBjbG9zZXN0LmRvY3Vt
ZW50KCk7CisgICAgaWYgKHNhbWVEb2N1bWVudCkgeworICAgICAgICBpZiAoY2xvc2VzdC5hbGln
bm1lbnQgPiBjYW5kaWRhdGUuYWxpZ25tZW50CisgICAgICAgICAgICB8fCAoY2xvc2VzdC5wYXJl
bnRBbGlnbm1lbnQgJiYgY2FuZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3QucGFyZW50QWxpZ25t
ZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKGNsb3Nlc3QuYWxpZ25t
ZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAgICAgICAgJiYgKGNsb3Nlc3QucGFy
ZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0LnBhcmVudEFsaWdu
bWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIElmIHxmb2N1c2VkTm9kZXwgYW5kIHxj
YW5kaWRhdGV8IGFyZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBBTkQKLSAgICAvLyBjdXJyZW50IHxj
bG9zZXN0Rm9jdXNDYW5kaWRhZHRlfCBpcyBub3QgaW4gYW4ge2l9ZnJhbWUgdGhhdCBpcwotICAg
IC8vIHByZWZlcmFibGUgdG8gZ2V0IGZvY3VzZWQuCi0gICAgaWYgKGZvY3VzZWROb2RlLT5kb2N1
bWVudCgpID09IGNhbmRpZGF0ZS0+ZG9jdW1lbnQoKQotICAgICAgICAmJiBkaXN0YW5jZSA8IGNs
b3Nlc3RGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSkgewotICAgICAgICBjbG9zZXN0Rm9j
dXNDYW5kaWRhdGUubm9kZSA9IGNhbmRpZGF0ZTsKLSAgICAgICAgY2xvc2VzdEZvY3VzQ2FuZGlk
YXRlLmRpc3RhbmNlID0gZGlzdGFuY2U7Ci0gICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5w
YXJlbnREaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7Ci0gICAgfSBlbHNlIGlmIChmb2N1c2VkTm9k
ZS0+ZG9jdW1lbnQoKSAhPSBjYW5kaWRhdGUtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgLy8gSWYg
dGhlIHxmb2N1c2VkTm9kZXwgaXMgaW4gYW4gaW5uZXIgZG9jdW1lbnQgYW5kIHRoZSB8Y2FuZGlk
YXRlfCBpcwotICAgICAgICAvLyBpbiBhIGRpZmZlcmVudCBkb2N1bWVudCwgd2Ugb25seSBjb25z
aWRlciB0byBjaGFuZ2UgZm9jdXMgaWYgdGhlcmUgaXMKLSAgICAgICAgLy8gbm90IGFub3RoZXIg
YWxyZWFkeSBnb29kIGZvY3VzYWJsZSBjYW5kaWRhdGUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYXMK
LSAgICAgICAgLy8gfGZvY3VzZWROb2RlfC4KLSAgICAgICAgaWYgKCEoKGlzSW5Sb290RG9jdW1l
bnQoY2FuZGlkYXRlKSAmJiAhaXNJblJvb3REb2N1bWVudChmb2N1c2VkTm9kZSkpCi0gICAgICAg
ICAgICAmJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9kZQotICAgICAgICAgICAgJiYgZm9jdXNl
ZE5vZGUtPmRvY3VtZW50KCkgPT0gY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUtPmRvY3VtZW50
KCkpKSB7Ci0gICAgICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9kZSA9IGNhbmRpZGF0
ZTsKLSAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSA9IGRpc3RhbmNl
OwotICAgICAgICB9CisgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgIT0gTm9uZQorICAgICAg
ICB8fCAoY2xvc2VzdC5ub2RlICYmIGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ID49IGNhbmRpZGF0
ZS5hbGlnbm1lbnQKKyAgICAgICAgJiYgKGNsb3Nlc3QuZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUu
ZG9jdW1lbnQoKSkKKyAgICAgICAgJiYgY2FuZGlkYXRlLmFsaWdubWVudCA+IE5vbmUpKSB7CisK
KyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdyBpbiBhbiBoaWdoZXIgcHJlY2VkZW50IGNhc2UsIGxl
dHMgcmVzZXQgdGhlIGN1cnJlbnQgfGNsb3Nlc3R8J3MKKyAgICAgICAgLy8gfGRpc3RhbmNlfCBz
byB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhhbiBhbnkgcmVzdWx0IHdlIHdpbGwgZ2V0IGZy
b20KKyAgICAgICAgLy8gfHNwYXRpYWxEaXN0YW5jZSgpfCAoc2VlIGJlbG93KS4KKyAgICAgICAg
aWYgKGNsb3Nlc3QuYWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAgICAg
JiYgY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50KQorICAgICAg
ICAgICAgY2xvc2VzdC5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisKKyAgICAgICAgY2xvc2Vz
dC5hbGlnbm1lbnQgPSBjYW5kaWRhdGUuYWxpZ25tZW50OworICAgIH0KKworICAgIC8vIEJhaWwg
b3V0IGlmIGNhbmRpZGF0ZSdzIGRpc3RhbmNlIGlzIGJpZ2dlciB0aGFuIHRoZSBjbG9zZXN0IGNh
bmRpZGF0ZSdzIGRpc3RhbmNlLgorICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPj0gY2xvc2Vz
dC5kaXN0YW5jZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgfGZvY3VzZWROb2RlfCBh
bmQgfGNhbmRpZGF0ZXwgYXJlIGluIHRoZSBzYW1lIGRvY3VtZW50IEFORCBjdXJyZW50CisgICAg
Ly8gfGNsb3Nlc3R8IGlzIG5vdCBpbiBhbiB7aX1mcmFtZSB0aGF0IGlzIHByZWZlcmFibGUgdG8g
Z2V0IGZvY3VzZWQgLi4uCisgICAgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNhbmRp
ZGF0ZS5kb2N1bWVudCgpCisgICAgICAgICYmIGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3Qu
cGFyZW50RGlzdGFuY2UpCisgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgZWxzZSBp
ZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgIT0gY2FuZGlkYXRlLmRvY3VtZW50KCkpIHsKKyAg
ICAgICAgLy8gSWYgdGhlIHxmb2N1c2VkTm9kZXwgaXMgaW4gYW4gaW5uZXIgZG9jdW1lbnQgYW5k
IHxjYW5kaWRhdGV8IGlzIGluIGEKKyAgICAgICAgLy8gZGlmZmVyZW50IGRvY3VtZW50LCB3ZSBv
bmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBpcyBub3QKKyAgICAgICAgLy8g
YW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0ZSBpbiB0aGUgc2FtZSBkb2N1
bWVudCBhcyB8Zm9jdXNlZE5vZGV8LgorICAgICAgICBpZiAoISgoaXNJblJvb3REb2N1bWVudChj
YW5kaWRhdGUubm9kZSkgJiYgIWlzSW5Sb290RG9jdW1lbnQoZm9jdXNlZE5vZGUpKQorICAgICAg
ICAgICAgJiYgIWNsb3Nlc3QuaXNOdWxsKCkKKyAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5k
b2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKSkpCisgICAgICAgICAgICBjbG9zZXN0ID0g
Y2FuZGlkYXRlOwogICAgIH0KIH0KIAotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2Fi
bGVOb2RlSW5EaXJlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBmb2N1c2VkTm9kZSwg
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwgRm9jdXNDYW5k
aWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSkKK3ZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5k
Rm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogZm9jdXNl
ZE5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNDYW5kaWRh
dGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBoZWxwZXIpCiB7CiAgICAgQVNT
RVJUKGRvY3VtZW50KTsKIAotICAgIC8vIFdhbGsgYWxsIHRoZSBjaGlsZCBub2RlcyBhbmQgdXBk
YXRlIGZvY3VzQ2FuZGlkYXRlIGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KLSAgICBmb3IgKE5v
ZGUqIGNhbmRpZGF0ZSA9IGRvY3VtZW50LT5maXJzdENoaWxkKCk7IGNhbmRpZGF0ZTsgY2FuZGlk
YXRlID0gY2FuZGlkYXRlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICAvLyBXYWxrIGFsbCB0
aGUgY2hpbGQgbm9kZXMgYW5kIHVwZGF0ZSB8Y2xvc2VzdEZvY3VzQ2FuZGlkYXRlfCBpZiB3ZSBm
aW5kIGEgbmVhcmVyIG5vZGUuCisgICAgZm9yIChOb2RlKiBkZXN0ID0gZG9jdW1lbnQtPmZpcnN0
Q2hpbGQoKTsgZGVzdDsgZGVzdCA9IGRlc3QtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAg
ICAvLyBJbm5lciBkb2N1bWVudHMgY2FzZS4KLSAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aXNGcmFt
ZU93bmVyRWxlbWVudCgpKQotICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24oZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZv
Y3VzQ2FuZGlkYXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWROb2Rl
ICYmIGNhbmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKLSAgICAgICAgICAg
IGxvbmcgbG9uZyBkaXN0YW5jZSA9IGRpc3RhbmNlSW5EaXJlY3Rpb24oZm9jdXNlZE5vZGUsIGNh
bmRpZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlyZWN0aW9uLCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwotICAgICAgICAgICAgdXBk
YXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXN0YW5j
ZSwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKKyAgICAgICAgaWYgKGRlc3QtPmlzRnJhbWVPd25l
ckVsZW1lbnQoKSkKKyAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9u
KGZvY3VzZWROb2RlLCBkZXN0LCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGUsIGhlbHBlcik7CisgICAgICAgIGVsc2UgaWYgKGRlc3QgIT0gZm9jdXNlZE5vZGUgJiYgZGVz
dC0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKKyAgICAgICAgICAgIEZvY3VzQ2FuZGlk
YXRlIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZShkZXN0KTsKKworICAgICAgICAgICAgLy8gR2V0IGRp
c3RhbmNlIGFuZCBhbGlnbm1lbnQgZnJvbSBjdXJyZW50IGNhbmRpZGF0ZS4KKyAgICAgICAgICAg
IGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwgY3VycmVudEZvY3Vz
Q2FuZGlkYXRlKTsKKworICAgICAgICAgICAgLy8gSWYgfGhlbHBlcnwgaXMgbm90IE51bGwsIGl0
IG1lYW5zIHRoYXQgd2UgYXJlIGluIGEgcmVjdXJzaXZlIGNhbGwgZnJvbQorICAgICAgICAgICAg
Ly8gZGVlcEZpbmVGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24gKGkuZS4gcHJvY2Vzc2luZyBhbiBl
bGVtZW50IGluIGFuIGlmcmFtZSkuCisgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHxoZWxw
ZXJ8IGhvbGRzIHRoZSBpbmZvcm1hdGlvbiBkYXRhIChkaXN0YW5jZSwgYWxpZ25tZW50LCBldGMp
CisgICAgICAgICAgICAvLyBvZiBpZnJhbWUgZWxlbWVudCBpdHNlbGYuCisgICAgICAgICAgICBp
ZiAoIWhlbHBlci5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRp
ZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPSBoZWxwZXIucGFyZW50QWxpZ25tZW50OworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGhlbHBlci5wYXJl
bnREaXN0YW5jZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5k
aWRhdGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9zZXN0
Rm9jdXNDYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIEZvY3VzQ29udHJv
bGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogZm9jdXNlZE5vZGUs
IE5vZGUqIGNhbmRpZGF0ZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50
KiBldmVudCwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSkKK3ZvaWQgRm9j
dXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBmb2N1
c2VkTm9kZSwgTm9kZSogY2FuZGlkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9h
cmRFdmVudCogZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1
c0NhbmRpZGF0ZSYgaGVscGVyKQogewogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIg
PSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQqPihjYW5kaWRhdGUpOwogICAgIGlm
ICghb3duZXItPmNvbnRlbnRGcmFtZSgpKQpAQCAtMzk4LDI0ICs0MzUsMjMgQEAgdm9pZCBGb2N1
c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqIGZvY3Vz
ZWROb2RlLCBOb2RlKgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaW5uZXJEb2N1bWVudCA9
PSBmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRp
cmVjdGlvbihpbm5lckRvY3VtZW50LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xv
c2VzdEZvY3VzQ2FuZGlkYXRlKTsKKyAgICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlv
bihpbm5lckRvY3VtZW50LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZv
Y3VzQ2FuZGlkYXRlLCBoZWxwZXIpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDaGVjayBpZiB0
aGUgY3VycmVudCB7aX1mcmFtZSBlbGVtZW50IGl0c2VsZiBpcyBhIGdvb2QgY2FuZGlkYXRlCiAg
ICAgICAgIC8vIHRvIG1vdmUgZm9jdXMgdG8uIElmIGl0IGlzLCB0aGVuIHdlIHRyYXZlcnNlIGl0
cyBpbm5lciBub2Rlcy4KLSAgICAgICAgLy8gTGV0cyBwYXNzIGEgY29weSBvZiB0aGUgYmVzdCBj
YW5kaWRhdGUsIHRvIG5vdCBnZXQgZm9vbGVkIGJ5IGEKLSAgICAgICAgLy8gZnJhbWUgd2l0aG91
dCBmb2N1c2FibGUgZWxlbWVudHMuCi0gICAgICAgIEZvY3VzQ2FuZGlkYXRlIGZvY3VzQ2FuZGlk
YXRlQ29weSA9IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZTsKLSAgICAgICAgbG9uZyBsb25nIGRpc3Rh
bmNlID0gZGlzdGFuY2VJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rp
b24sIGZvY3VzQ2FuZGlkYXRlQ29weSk7Ci0gICAgICAgIGlmIChkaXN0YW5jZSA8IGZvY3VzQ2Fu
ZGlkYXRlQ29weS5kaXN0YW5jZSkgewotICAgICAgICAgICAgZm9jdXNDYW5kaWRhdGVDb3B5LnBh
cmVudEFsaWdubWVudCA9IGZvY3VzQ2FuZGlkYXRlQ29weS5hbGlnbm1lbnQ7Ci0gICAgICAgICAg
ICBmb2N1c0NhbmRpZGF0ZUNvcHkucGFyZW50RGlzdGFuY2UgPSBkaXN0YW5jZTsKLQotICAgICAg
ICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihpbm5lckRvY3VtZW50LCBmb2N1c2Vk
Tm9kZSwgZGlyZWN0aW9uLCBldmVudCwgZm9jdXNDYW5kaWRhdGVDb3B5KTsKLQotICAgICAgICAg
ICAgLy8gSWYgd2UgcmVhbGx5IGhhdmUgYW4gaW5uZXIgY2xvc2VyIGZvY3VzIGNhbmRpZGF0ZSBu
b2RlLCB0YWtlIGl0LgotICAgICAgICAgICAgaWYgKGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5ub2Rl
ICE9IGZvY3VzQ2FuZGlkYXRlQ29weS5ub2RlKQotICAgICAgICAgICAgICAgIGNsb3Nlc3RGb2N1
c0NhbmRpZGF0ZSA9IGZvY3VzQ2FuZGlkYXRlQ29weTsKKyAgICAgICAgaGVscGVyID0gRm9jdXND
YW5kaWRhdGUoY2FuZGlkYXRlKTsKKyAgICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rp
b24sIGZvY3VzZWROb2RlLCBoZWxwZXIpOworCisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0
IGFsaWdtZW50PworICAgICAgICBpZiAoaGVscGVyLmRpc3RhbmNlIDwgY2xvc2VzdEZvY3VzQ2Fu
ZGlkYXRlLmRpc3RhbmNlKSB7CisgICAgICAgICAgICBoZWxwZXIucGFyZW50QWxpZ25tZW50ID0g
aGVscGVyLmFsaWdubWVudDsKKyAgICAgICAgICAgIGhlbHBlci5wYXJlbnREaXN0YW5jZSA9IGhl
bHBlci5kaXN0YW5jZTsKKworICAgICAgICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlv
bihpbm5lckRvY3VtZW50LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZv
Y3VzQ2FuZGlkYXRlLCBoZWxwZXIpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gRW1wdGlmeSB8
aGVscGVyfC4KKyAgICAgICAgaGVscGVyID0gRm9jdXNDYW5kaWRhdGUoKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuaAppbmRleCA3NTU5MWM3Li44N2E4N2RjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5oCkBAIC02Myw4ICs2Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhZHZhbmNlRm9j
dXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7CiAgICAgYm9v
bCBhZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZl
bnQqLCBib29sIGluaXRpYWxGb2N1cyk7CiAKLSAgICB2b2lkIGZpbmRGb2N1c2FibGVOb2RlSW5E
aXJlY3Rpb24oRG9jdW1lbnQqLCBOb2RlKiwgRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQq
LCBGb2N1c0NhbmRpZGF0ZSYpOwotICAgIHZvaWQgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24oTm9kZSosIE5vZGUqLCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZvY3Vz
Q2FuZGlkYXRlJik7CisgICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3Vt
ZW50KiwgTm9kZSosIEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRh
dGUmLCBGb2N1c0NhbmRpZGF0ZSYpOworICAgIHZvaWQgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5E
aXJlY3Rpb24oTm9kZSosIE5vZGUqLCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZv
Y3VzQ2FuZGlkYXRlJiwgRm9jdXNDYW5kaWRhdGUmKTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKICAg
ICBSZWZQdHI8RnJhbWU+IG1fZm9jdXNlZEZyYW1lOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5j
cHAKaW5kZXggYmZkOTQxMS4uMDMzZDIyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3Bw
CkBAIC00NywxNSArNDcsMTkgQEAgc3RhdGljIGJvb2wgYXJlUmVjdHNQYXJ0aWFsbHlBbGlnbmVk
KEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmUKIHN0YXRpYyBib29s
IGlzUmVjdEluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50UmVjdCYpOwogc3RhdGljIHZvaWQgZGVmbGF0ZUlmT3ZlcmxhcHBlZChJbnRSZWN0JiwgSW50
UmVjdCYpOwogCi1sb25nIGxvbmcgZGlzdGFuY2VJbkRpcmVjdGlvbihOb2RlKiBzdGFydCwgTm9k
ZSogZGVzdCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlk
YXRlKQordm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwg
Tm9kZSogc3RhcnQsIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCiB7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBzdGFydFJlbmRlciA9IHN0YXJ0LT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5k
ZXIpCi0gICAgICAgIHJldHVybiBtYXhEaXN0YW5jZSgpOworICAgIGlmICghc3RhcnRSZW5kZXIp
IHsKKyAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAotICAgIFJlbmRlck9iamVjdCogZGVzdFJlbmRlciA9IGRlc3QtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFkZXN0UmVuZGVyKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFu
Y2UoKTsKKyAgICBSZW5kZXJPYmplY3QqIGRlc3RSZW5kZXIgPSBjYW5kaWRhdGUubm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICBpZiAoIWRlc3RSZW5kZXIpIHsKKyAgICAgICAgY2FuZGlkYXRlLmRpc3Rh
bmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEludFJl
Y3QgY3VyUmVjdCA9IHJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KHN0YXJ0UmVuZGVy
KTsKICAgICBJbnRSZWN0IHRhcmdldFJlY3QgID0gcmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9j
dW1lbnQoZGVzdFJlbmRlcik7CkBAIC02NSw0MCArNjksMjEgQEAgbG9uZyBsb25nIGRpc3RhbmNl
SW5EaXJlY3Rpb24oTm9kZSogc3RhcnQsIE5vZGUqIGRlc3QsIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiwKICAgICBkZWZsYXRlSWZPdmVybGFwcGVkKGN1clJlY3QsIHRhcmdldFJlY3QpOwogCiAg
ICAgaWYgKGN1clJlY3QuaXNFbXB0eSgpIHx8IHRhcmdldFJlY3QuaXNFbXB0eSgpCi0gICAgICAg
IHx8IHRhcmdldFJlY3QueCgpIDwgMCB8fCB0YXJnZXRSZWN0LnkoKSA8IDApCi0gICAgICAgIHJl
dHVybiBtYXhEaXN0YW5jZSgpOworICAgICAgICB8fCB0YXJnZXRSZWN0LngoKSA8IDAgfHwgdGFy
Z2V0UmVjdC55KCkgPCAwKSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3Rh
bmNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIWlzUmVjdEluRGlyZWN0
aW9uKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpCi0gICAgICAgIHJldHVybiBtYXhE
aXN0YW5jZSgpOworICAgIGlmICghaXNSZWN0SW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjdXJSZWN0
LCB0YXJnZXRSZWN0KSkgeworICAgICAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5j
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gVGhlIGRpc3RhbmNlIGJldHdl
ZW4gdHdvIG5vZGVzIGlzIG5vdCB0byBiZSBjb25zaWRlcmVkIGFsb25lIHdoZW4gZXZhbHVhdGlu
Zy9sb29raW5nCiAgICAgLy8gZm9yIHRoZSBiZXN0IGZvY3VzIGNhbmRpZGF0ZSBub2RlLiBBbGln
bm1lbnQgb2YgcmVjdHMgY2FuIGJlIGFsc28gYSBnb29kIHBvaW50IHRvIGJlCiAgICAgLy8gY29u
c2lkZXJlZCBpbiBvcmRlciB0byBtYWtlIHRoZSBhbGdvcml0aG0gdG8gYmVoYXZpb3IgaW4gYSBt
b3JlIGludHVpdGl2ZSB3YXkuCi0gICAgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50ID0gYWxpZ25t
ZW50Rm9yUmVjdHMoZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0KTsKLQotICAgIGJvb2wg
c2FtZURvY3VtZW50ID0gY2FuZGlkYXRlLm5vZGUgJiYgZGVzdC0+ZG9jdW1lbnQoKSA9PSBjYW5k
aWRhdGUubm9kZS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoc2FtZURvY3VtZW50KSB7Ci0gICAgICAg
IGlmIChjYW5kaWRhdGUuYWxpZ25tZW50ID4gYWxpZ25tZW50IHx8IChjYW5kaWRhdGUucGFyZW50
QWxpZ25tZW50ICYmIGFsaWdubWVudCA+IGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQpKQotICAg
ICAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7Ci0gICAgfSBlbHNlIGlmIChjYW5kaWRhdGUu
YWxpZ25tZW50ID4gYWxpZ25tZW50ICYmIChjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50ICYmIGFs
aWdubWVudCA+IGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQpKQotICAgICAgICByZXR1cm4gbWF4
RGlzdGFuY2UoKTsKLQotICAgIC8vIEZJWE1FX3RvbmlraXRvbzogc2ltcGxpZnkgdGhlIGxvZ2lj
IGhlcmUgIQotICAgIGlmIChhbGlnbm1lbnQgIT0gTm9uZQotICAgICAgICB8fCAoY2FuZGlkYXRl
Lm5vZGUgJiYgY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA+PSBhbGlnbm1lbnQKLSAgICAgICAg
JiYgKGNhbmRpZGF0ZS5ub2RlLT5kb2N1bWVudCgpID09IGRlc3QtPmRvY3VtZW50KCkpCi0gICAg
ICAgICYmIGFsaWdubWVudCA+IE5vbmUpKSB7Ci0KLSAgICAgICAgLy8gSWYgd2UgYXJlIG5vdyBp
biBhbiBoaWdoZXIgcHJlY2VkZW50IGNhc2UsIGxldHMgcmVzZXQgdGhlIGN1cnJlbnQgfGNhbmRp
ZGF0ZXwncwotICAgICAgICAvLyB8ZGlzdGFuY2V8IHNvIHdlIGZvcmNlIGl0IHRvIGJlIGJpZ2dl
ciB0aGFuIHRoZSByZXN1bHQgd2Ugd2lsbCBnZXQgZnJvbQotICAgICAgICAvLyB8c3BhdGlhbERp
c3RhbmNlfCAoc2VlIGJlbG93KS4KLSAgICAgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPCBh
bGlnbm1lbnQgJiYgY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA8IGFsaWdubWVudCkKLSAgICAg
ICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7Ci0KLSAgICAgICAgY2Fu
ZGlkYXRlLmFsaWdubWVudCA9IGFsaWdubWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3BhdGlh
bERpc3RhbmNlKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCk7CisgICAgY2FuZGlkYXRl
LmFsaWdubWVudCA9IGFsaWdubWVudEZvclJlY3RzKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0
UmVjdCk7CisgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gc3BhdGlhbERpc3RhbmNlKGRpcmVjdGlv
biwgY3VyUmVjdCwgdGFyZ2V0UmVjdCk7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRv
ZXMgbm90IGJlaGF2ZSBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1lZCBmcmFtZXMuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCBiL1dlYkNvcmUvcGFnZS9TcGF0
aWFsTmF2aWdhdGlvbi5oCmluZGV4IDdjMTgzZGYuLjkwZmYxY2YgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5oCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAg
ICBSZWN0c0FsaWdubWVudCBwYXJlbnRBbGlnbm1lbnQ7CiB9OwogCi1sb25nIGxvbmcgZGlzdGFu
Y2VJbkRpcmVjdGlvbihOb2RlKiwgTm9kZSosIEZvY3VzRGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0
ZSYpOwordm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwg
Tm9kZSogc3RhcnQsIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpOwogYm9vbCBzY3JvbGxJbkRp
cmVjdGlvbihGcmFtZSosIEZvY3VzRGlyZWN0aW9uKTsKIHZvaWQgc2Nyb2xsSW50b1ZpZXcoRWxl
bWVudCopOwogYm9vbCBoYXNPZmZzY3JlZW5SZWN0KE5vZGUqKTsKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="34410"
          type_id="1"
          status="-"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="34411"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51232</attachid>
            <date>2010-03-20 14:15:16 -0700</date>
            <delta_ts>2010-04-11 20:04:40 -0700</delta_ts>
            <desc>(committed in r56311) patch_1 v0.1 - making use of isNull and document methods.</desc>
            <filename>0001-Spatial-Navigation-Code-simplification-in-FocusCont.patch</filename>
            <type>text/plain</type>
            <size>4002</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBlNzcyZDc1MGU3OTM2OWE3MjFlN2Q1YzhjZjU4NDA3ZDMxNjg3OTY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogU2F0LCAyMCBNYXIgMjAxMCAxNzoxMjo1NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogQ29kZSBzaW1wbGlmaWNhdGlvbiBpbiBGb2N1c0NvbnRyb2xsZXIu
Y3BwIGFuZCBTcGF0aWFsTmF2aWdhdGlvbi5jcHAgKHBhcnQgSSkKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjE2OAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
ClBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKTWFrZSB1c2Ug
b2YgaXNOdWxsIGFuZCBkb2N1bWVudCBtZXRob2RzIGludHJvZHVjZWQgaW4gRm9jdXNDYW5kaWRh
dGUgY2xhc3MgYnkgcGF0Y2ggaW4gYnVnIDM2MTY3LgpObyBmdW5jdGlvbmFsdHkgY2hhbmdlLgoK
KiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CihXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0
ZUlmQ2xvc2VyKToKKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKKFdlYkNvcmU6OmRpc3Rh
bmNlSW5EaXJlY3Rpb24pOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
fCAgIDE2ICsrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
ICAgfCAgICAzICstLQogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCB8ICAgIDcg
KysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNmEwNzcyZC4uZDZlMjRlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wMy0yMCAgQW50b25pbyBH
b21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICBQYXRjaCBieSBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IENvZGUgc2ltcGxpZmljYXRp
b24gaW4gRm9jdXNDb250cm9sbGVyLmNwcCBhbmQgU3BhdGlhbE5hdmlnYXRpb24uY3BwIChwYXJ0
IEkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjE2
OAorCisgICAgICAgIE1ha2UgdXNlIG9mIGlzTnVsbCBhbmQgZG9jdW1lbnQgbWV0aG9kcyBpbnRy
b2R1Y2VkIGluIEZvY3VzQ2FuZGlkYXRlIGNsYXNzIGJ5IHBhdGNoIGluIGJ1ZyAzNjE2Ny4KKyAg
ICAgICAgTm8gZnVuY3Rpb25hbHR5IGNoYW5nZS4KKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9z
ZXIpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZGlzdGFuY2VJbkRpcmVjdGlvbik6CisKIDIwMTAtMDMtMTkgIEtldmluIERlY2tlciAg
PGtkZWNrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFu
ZCBCcmFkeSBFaWRzb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDkyMGU4YjMuLjA4
OWZiOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0zNjEsOCArMzYxLDcgQEAgc3Rh
dGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwg
Tm9kZSogY2FuZGlkYXRlLCBsb24KICAgICAgICAgLy8gbm90IGFub3RoZXIgYWxyZWFkeSBnb29k
IGZvY3VzYWJsZSBjYW5kaWRhdGUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYXMKICAgICAgICAgLy8g
fGZvY3VzZWROb2RlfC4KICAgICAgICAgaWYgKCEoKGlzSW5Sb290RG9jdW1lbnQoY2FuZGlkYXRl
KSAmJiAhaXNJblJvb3REb2N1bWVudChmb2N1c2VkTm9kZSkpCi0gICAgICAgICAgICAmJiBjbG9z
ZXN0Rm9jdXNDYW5kaWRhdGUubm9kZQotICAgICAgICAgICAgJiYgZm9jdXNlZE5vZGUtPmRvY3Vt
ZW50KCkgPT0gY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUtPmRvY3VtZW50KCkpKSB7CisgICAg
ICAgICAgICAmJiBmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGUuZG9jdW1lbnQoKSkpIHsKICAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5ub2Rl
ID0gY2FuZGlkYXRlOwogICAgICAgICAgICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNl
ID0gZGlzdGFuY2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4
IGJmZDk0MTEuLjg2YzljNWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBsb25nIGxvbmcgZGlzdGFuY2VJbkRpcmVjdGlvbihOb2RlKiBzdGFydCwgTm9k
ZSogZGVzdCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLAogICAgIC8vIGNvbnNpZGVyZWQgaW4g
b3JkZXIgdG8gbWFrZSB0aGUgYWxnb3JpdGhtIHRvIGJlaGF2aW9yIGluIGEgbW9yZSBpbnR1aXRp
dmUgd2F5LgogICAgIFJlY3RzQWxpZ25tZW50IGFsaWdubWVudCA9IGFsaWdubWVudEZvclJlY3Rz
KGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCk7CiAKLSAgICBib29sIHNhbWVEb2N1bWVu
dCA9IGNhbmRpZGF0ZS5ub2RlICYmIGRlc3QtPmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLm5vZGUt
PmRvY3VtZW50KCk7CisgICAgYm9vbCBzYW1lRG9jdW1lbnQgPSBkZXN0LT5kb2N1bWVudCgpID09
IGNhbmRpZGF0ZS5kb2N1bWVudCgpOwogICAgIGlmIChzYW1lRG9jdW1lbnQpIHsKICAgICAgICAg
aWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBhbGlnbm1lbnQgfHwgKGNhbmRpZGF0ZS5wYXJlbnRB
bGlnbm1lbnQgJiYgYWxpZ25tZW50ID4gY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCkpCiAgICAg
ICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKQEAgLTg1LDkgKzg1LDggQEAgbG9uZyBsb25n
IGRpc3RhbmNlSW5EaXJlY3Rpb24oTm9kZSogc3RhcnQsIE5vZGUqIGRlc3QsIEZvY3VzRGlyZWN0
aW9uIGRpcmVjdGlvbiwKIAogICAgIC8vIEZJWE1FX3RvbmlraXRvbzogc2ltcGxpZnkgdGhlIGxv
Z2ljIGhlcmUgIQogICAgIGlmIChhbGlnbm1lbnQgIT0gTm9uZQotICAgICAgICB8fCAoY2FuZGlk
YXRlLm5vZGUgJiYgY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA+PSBhbGlnbm1lbnQKLSAgICAg
ICAgJiYgKGNhbmRpZGF0ZS5ub2RlLT5kb2N1bWVudCgpID09IGRlc3QtPmRvY3VtZW50KCkpCi0g
ICAgICAgICYmIGFsaWdubWVudCA+IE5vbmUpKSB7CisgICAgICAgIHx8ICghY2FuZGlkYXRlLmlz
TnVsbCgpICYmIGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPj0gYWxpZ25tZW50CisgICAgICAg
ICYmIGNhbmRpZGF0ZS5kb2N1bWVudCgpID09IGRlc3QtPmRvY3VtZW50KCkpKSB7CiAKICAgICAg
ICAgLy8gSWYgd2UgYXJlIG5vdyBpbiBhbiBoaWdoZXIgcHJlY2VkZW50IGNhc2UsIGxldHMgcmVz
ZXQgdGhlIGN1cnJlbnQgfGNhbmRpZGF0ZXwncwogICAgICAgICAvLyB8ZGlzdGFuY2V8IHNvIHdl
IGZvcmNlIGl0IHRvIGJlIGJpZ2dlciB0aGFuIHRoZSByZXN1bHQgd2Ugd2lsbCBnZXQgZnJvbQot
LSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51285</attachid>
            <date>2010-03-22 07:48:51 -0700</date>
            <delta_ts>2010-03-22 15:01:25 -0700</delta_ts>
            <desc>patch_2 - v1 - code simplification</desc>
            <filename>0001-2010-03-22-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>16941</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBiZTdmMjM2MWNlZjJhMzIxMGRiZGM1NGE3OWUzODEyNDE3MjcyNjU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogU2F0LCAyMCBNYXIgMjAxMCAxODoxMjo0MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIw
MTAtMDMtMjIgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjog
SW5pdGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29udHJvbGxlci5jcHAgYW5kIFNw
YXRpYWxOYXZpZ2F0aW9uLmNwcAoKICAgICAgICBXZWJDb3JlOjpkaXN0YW5jZUluRGlyZWN0aW9u
IG1ldGhvZCB3YXMgaGFuZGxpbmcgbXVjaCBvZiB0aGUgbG9naWMgbm90IHN0cmljdGx5IG9ubHkK
ICAgICAgICByZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVpc2l0aW9u
LiBUaGlzIG1ldGhvZCB3YXMgc2ltcGxpZmllZCBhbmQKICAgICAgICByZW5hbWVkIHRvICdXZWJD
b3JlOjpkaXN0YW5jZURhdGFGb3JOb2RlJy4gVGhlIGxhdHRlciBpcyBub3cgcmVzcG9uc2libGUg
Zm9yIG9ubHkgZ2V0dGluZyB0aGUKICAgICAgICBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEs
IHdoaWxlIGFsbCBhc3NpZ25lbWVudCBsb2dpYyBwcmV2aW91c2x5IGRpc3RhbmNlSW5EaXJlY3Rp
b24gbWV0aG9kCiAgICAgICAgd2FzIG1vdmVkIHBsYWNlIHRvIHVwZGF0ZUZvY3VzQ2FuZGlkYXRl
SWZDbG9zZXIuCgogICAgICAgIFBhcmVudCBkb2N1bWVudCBkaXN0YW5jZSBhbmQgYWxpZ25tZW50
IGFjcXVpc2l0aW9ucywgb24gdGhlaXIgdHVybnMsIGhhdmUgYWxzbyBjaGFuZ2VkIGxvY2F0aW9u
OgogICAgICAgIHRoZXkgYXJlIGJvdGggZ290IGZyb20gZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5E
aXJlY3Rpb24sIGFuZCBwYXNzZWQgaW4gYSByZWN1cnNpdmUgY2FsbCB0bwogICAgICAgIGZpbmRG
b2N1c2FibGVOb2RlSW5EaXJlY3Rpb24gdmlhIHRoZSBjYW5kaWRhdGVQYXJlbnQgdmFyaWFibGUg
KG9wdGlvbmFsIHBhcmFtZXRlcikuCiAgICAgICAgWWV0IG9uIGRlZXBGaW5kRm9jdXNhYmxlTm9k
ZUluRGlyZWN0aW9uIG1ldGhvZCwgdGhlIG5lZWQgZm9yIHRoZSAnZm9jdXNDYW5kaWRhdGVDb3B5
LmRpc3RhbmNlJwogICAgICAgIHZhcmlhYmxlIHdhcyByZW1vdmVkLCBtYWtpbmcgdGhlIGNvZGUg
bXVjaCBjbGVhbmVyLgoKICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlIGF0IHRoaXMgcG9pbnQu
IE1vc3RseSBtb3ZpbmcgY29kZSBhcm91bmQgdG8gdGhlIHBsYWNlCiAgICAgICAgd2hlcmUgaXQg
c2hvdWxkIGxpdmUgaW4uCgogICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgogICAg
ICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkp
OgogICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKToKICAgICAg
ICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9u
KToKICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5v
ZGVJbkRpcmVjdGlvbik6CiAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5oOgogICAgICAg
ICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CiAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNl
RGF0YUZvck5vZGUpOgogICAgICAgIChXZWJDb3JlOjpyZW5kZXJSZWN0UmVsYXRpdmVUb1Jvb3RE
b2N1bWVudCk6CiAgICAgICAgKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmg6Ci0tLQogV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICB8ICAgMzMgKysrKysrKysrKysrCiBXZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCAgIHwgIDEwMiArKysrKysrKysrKysrKysrKysrKysr
LS0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCAgICAgfCAgICA0
ICstCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIHwgICA1NCArKysrKysrLS0t
LS0tLS0tLS0tCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCAgIHwgICAgMiArLQog
NSBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NGI2
YjBmLi5lZDE1MzE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEwLTAzLTIyICBBbnRvbmlvIEdvbWVzICA8
dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIFBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogSW5pdGlhbCBjb2RlIHNpbXBsaWZpY2F0
aW9uIGluIEZvY3VzQ29udHJvbGxlci5jcHAgYW5kIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcAorCisg
ICAgICAgIFdlYkNvcmU6OmRpc3RhbmNlSW5EaXJlY3Rpb24gbWV0aG9kIHdhcyBoYW5kbGluZyBt
dWNoIG9mIHRoZSBsb2dpYyBub3Qgc3RyaWN0bHkgb25seQorICAgICAgICByZWxhdGVkIHRvIHRo
ZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVpc2l0aW9uLiBUaGlzIG1ldGhvZCB3YXMgc2lt
cGxpZmllZCBhbmQKKyAgICAgICAgcmVuYW1lZCB0byAnV2ViQ29yZTo6ZGlzdGFuY2VEYXRhRm9y
Tm9kZScuIFRoZSBsYXR0ZXIgaXMgbm93IHJlc3BvbnNpYmxlIGZvciBvbmx5IGdldHRpbmcgdGhl
CisgICAgICAgIGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZGF0YSwgd2hpbGUgYWxsIGFzc2lnbmVt
ZW50IGxvZ2ljIHByZXZpb3VzbHkgZGlzdGFuY2VJbkRpcmVjdGlvbiBtZXRob2QKKyAgICAgICAg
d2FzIG1vdmVkIHBsYWNlIHRvIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIuCisKKyAgICAg
ICAgUGFyZW50IGRvY3VtZW50IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgYWNxdWlzaXRpb25zLCBv
biB0aGVpciB0dXJucywgaGF2ZSBhbHNvIGNoYW5nZWQgbG9jYXRpb246CisgICAgICAgIHRoZXkg
YXJlIGJvdGggZ290IGZyb20gZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24sIGFuZCBw
YXNzZWQgaW4gYSByZWN1cnNpdmUgY2FsbCB0bworICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUlu
RGlyZWN0aW9uIHZpYSB0aGUgY2FuZGlkYXRlUGFyZW50IHZhcmlhYmxlIChvcHRpb25hbCBwYXJh
bWV0ZXIpLgorICAgICAgICBZZXQgb24gZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24g
bWV0aG9kLCB0aGUgbmVlZCBmb3IgdGhlICdmb2N1c0NhbmRpZGF0ZUNvcHkuZGlzdGFuY2UnCisg
ICAgICAgIHZhcmlhYmxlIHdhcyByZW1vdmVkLCBtYWtpbmcgdGhlIGNvZGUgbXVjaCBjbGVhbmVy
LgorCisgICAgICAgIE5vIGJlaGF2aW91ciBjaGFuZ2UgYXQgdGhpcyBwb2ludC4gTW9zdGx5IG1v
dmluZyBjb2RlIGFyb3VuZCB0byB0aGUgcGxhY2UKKyAgICAgICAgd2hlcmUgaXQgc2hvdWxkIGxp
dmUgaW4uCisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJ
bkRpcmVjdGlvbik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNl
RGF0YUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290
RG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKwogMjAxMC0w
My0yMiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCAw
ODlmYjhmLi5iZTA5OTFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMzQxLDQ2ICsz
NDEsNzYgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHko
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9k
ZSwgTm9kZSogY2FuZGlkYXRlLCBsb25nIGxvbmcgZGlzdGFuY2UsIEZvY3VzQ2FuZGlkYXRlJiBj
bG9zZXN0Rm9jdXNDYW5kaWRhdGUpCisvLyBGSVhNRTogTWFrZSB0aGlzIG1ldGhvZCBtb3JlIG1v
ZHVsYXIsIGFuZCBzaW1wbGVyIHRvIHVuZGVyc3RhbmQgYW5kIG1haW50YWluLgorc3RhdGljIHZv
aWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgRm9jdXND
YW5kaWRhdGUgY2FuZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKIHsKLSAgICAvLyBC
YWlsIG91dCBpZiB8ZGlzdGFuY2V8IGlzIGJpZ2dlciB0aGFuIHRoZSBjdXJyZW50IGNsb3Nlc3Qg
Y2FuZGlkYXRlLgotICAgIGlmIChkaXN0YW5jZSA+PSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUuZGlz
dGFuY2UpCisgICAgYm9vbCBzYW1lRG9jdW1lbnQgPSBjYW5kaWRhdGUuZG9jdW1lbnQoKSA9PSBj
bG9zZXN0LmRvY3VtZW50KCk7CisgICAgaWYgKHNhbWVEb2N1bWVudCkgeworICAgICAgICBpZiAo
Y2xvc2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRhdGUuYWxpZ25tZW50CisgICAgICAgICAgICB8fCAo
Y2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgJiYgY2FuZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3Qu
cGFyZW50QWxpZ25tZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKGNs
b3Nlc3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAgICAgICAgJiYg
KGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0
LnBhcmVudEFsaWdubWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIElmIHxmb2N1c2Vk
Tm9kZXwgYW5kIHxjYW5kaWRhdGV8IGFyZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBBTkQKLSAgICAv
LyBjdXJyZW50IHxjbG9zZXN0Rm9jdXNDYW5kaWRhZHRlfCBpcyBub3QgaW4gYW4ge2l9ZnJhbWUg
dGhhdCBpcwotICAgIC8vIHByZWZlcmFibGUgdG8gZ2V0IGZvY3VzZWQuCi0gICAgaWYgKGZvY3Vz
ZWROb2RlLT5kb2N1bWVudCgpID09IGNhbmRpZGF0ZS0+ZG9jdW1lbnQoKQotICAgICAgICAmJiBk
aXN0YW5jZSA8IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSkgewotICAgICAg
ICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9kZSA9IGNhbmRpZGF0ZTsKLSAgICAgICAgY2xvc2Vz
dEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNlID0gZGlzdGFuY2U7Ci0gICAgICAgIGNsb3Nlc3RGb2N1
c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7Ci0gICAgfSBlbHNlIGlm
IChmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSAhPSBjYW5kaWRhdGUtPmRvY3VtZW50KCkpIHsKLSAg
ICAgICAgLy8gSWYgdGhlIHxmb2N1c2VkTm9kZXwgaXMgaW4gYW4gaW5uZXIgZG9jdW1lbnQgYW5k
IHRoZSB8Y2FuZGlkYXRlfCBpcwotICAgICAgICAvLyBpbiBhIGRpZmZlcmVudCBkb2N1bWVudCwg
d2Ugb25seSBjb25zaWRlciB0byBjaGFuZ2UgZm9jdXMgaWYgdGhlcmUgaXMKLSAgICAgICAgLy8g
bm90IGFub3RoZXIgYWxyZWFkeSBnb29kIGZvY3VzYWJsZSBjYW5kaWRhdGUgaW4gdGhlIHNhbWUg
ZG9jdW1lbnQgYXMKLSAgICAgICAgLy8gfGZvY3VzZWROb2RlfC4KLSAgICAgICAgaWYgKCEoKGlz
SW5Sb290RG9jdW1lbnQoY2FuZGlkYXRlKSAmJiAhaXNJblJvb3REb2N1bWVudChmb2N1c2VkTm9k
ZSkpCi0gICAgICAgICAgICAmJiBmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjbG9zZXN0Rm9j
dXNDYW5kaWRhdGUuZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRp
ZGF0ZS5ub2RlID0gY2FuZGlkYXRlOwotICAgICAgICAgICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRl
LmRpc3RhbmNlID0gZGlzdGFuY2U7Ci0gICAgICAgIH0KKyAgICBpZiAoY2FuZGlkYXRlLmFsaWdu
bWVudCAhPSBOb25lCisgICAgICAgIHx8ICghY2xvc2VzdC5pc051bGwoKSAmJiBjbG9zZXN0LnBh
cmVudEFsaWdubWVudCA+PSBjYW5kaWRhdGUuYWxpZ25tZW50CisgICAgICAgICYmIGNsb3Nlc3Qu
ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKSkpIHsKKworICAgICAgICAvLyBJZiB3
ZSBhcmUgbm93IGluIGFuIGhpZ2hlciBwcmVjZWRlbnQgY2FzZSwgbGV0cyByZXNldCB0aGUgY3Vy
cmVudCB8Y2xvc2VzdHwncworICAgICAgICAvLyB8ZGlzdGFuY2V8IHNvIHdlIGZvcmNlIGl0IHRv
IGJlIGJpZ2dlciB0aGFuIGFueSByZXN1bHQgd2Ugd2lsbCBnZXQgZnJvbQorICAgICAgICAvLyB8
c3BhdGlhbERpc3RhbmNlKCl8IChzZWUgYmVsb3cpLgorICAgICAgICBpZiAoY2xvc2VzdC5hbGln
bm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50CisgICAgICAgICAgICAmJiBjbG9zZXN0LnBhcmVu
dEFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQpCisgICAgICAgICAgICBjbG9zZXN0LmRp
c3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKworICAgICAgICBjbG9zZXN0LmFsaWdubWVudCA9IGNh
bmRpZGF0ZS5hbGlnbm1lbnQ7CisgICAgfQorCisgICAgLy8gQmFpbCBvdXQgaWYgY2FuZGlkYXRl
J3MgZGlzdGFuY2UgaXMgYmlnZ2VyIHRoYW4gdGhlIGNsb3Nlc3QgY2FuZGlkYXRlJ3MgZGlzdGFu
Y2UuCisgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA+PSBjbG9zZXN0LmRpc3RhbmNlKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBJZiB8Zm9jdXNlZE5vZGV8IGFuZCB8Y2FuZGlkYXRlfCBh
cmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYW5kIGN1cnJlbnQKKyAgICAvLyB8Y2xvc2VzdHwgaXMg
bm90IGluIGFuIHtpfWZyYW1lIHRoYXQgaXMgcHJlZmVyYWJsZSB0byBnZXQgZm9jdXNlZCAuLi4K
KyAgICBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLmRvY3VtZW50KCkK
KyAgICAgICAgJiYgY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5wYXJlbnREaXN0YW5jZSkK
KyAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAgICBlbHNlIGlmIChmb2N1c2VkTm9kZS0+
ZG9jdW1lbnQoKSAhPSBjYW5kaWRhdGUuZG9jdW1lbnQoKSkgeworICAgICAgICAvLyBJZiB0aGUg
fGZvY3VzZWROb2RlfCBpcyBpbiBhbiBpbm5lciBkb2N1bWVudCBhbmQgfGNhbmRpZGF0ZXwgaXMg
aW4gYQorICAgICAgICAvLyBkaWZmZXJlbnQgZG9jdW1lbnQsIHdlIG9ubHkgY29uc2lkZXIgdG8g
Y2hhbmdlIGZvY3VzIGlmIHRoZXJlIGlzIG5vdAorICAgICAgICAvLyBhbm90aGVyIGFscmVhZHkg
Z29vZCBmb2N1c2FibGUgY2FuZGlkYXRlIGluIHRoZSBzYW1lIGRvY3VtZW50IGFzIHxmb2N1c2Vk
Tm9kZXwuCisgICAgICAgIGlmICghKChpc0luUm9vdERvY3VtZW50KGNhbmRpZGF0ZS5ub2RlKSAm
JiAhaXNJblJvb3REb2N1bWVudChmb2N1c2VkTm9kZSkpCisgICAgICAgICAgICAmJiBmb2N1c2Vk
Tm9kZS0+ZG9jdW1lbnQoKSA9PSBjbG9zZXN0LmRvY3VtZW50KCkpKQorICAgICAgICAgICAgY2xv
c2VzdCA9IGNhbmRpZGF0ZTsKICAgICB9CiB9CiAKLXZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5k
Rm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogZm9jdXNl
ZE5vZGUsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZv
Y3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpCit2b2lkIEZvY3VzQ29udHJvbGxl
cjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUq
IGZvY3VzZWROb2RlLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2
ZW50LCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLCBjb25zdCBGb2N1c0Nh
bmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAKLSAg
ICAvLyBXYWxrIGFsbCB0aGUgY2hpbGQgbm9kZXMgYW5kIHVwZGF0ZSBmb2N1c0NhbmRpZGF0ZSBp
ZiB3ZSBmaW5kIGEgbmVhcmVyIG5vZGUuCisgICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVz
IGFuZCB1cGRhdGUgfGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZXwgaWYgd2UgZmluZCBhIG5lYXJlciBu
b2RlLgogICAgIGZvciAoTm9kZSogY2FuZGlkYXRlID0gZG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsg
Y2FuZGlkYXRlOyBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewog
ICAgICAgICAvLyBJbm5lciBkb2N1bWVudHMgY2FzZS4KKwogICAgICAgICBpZiAoY2FuZGlkYXRl
LT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICBkZWVwRmluZEZvY3VzYWJsZU5v
ZGVJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rpb24sIGV2ZW50LCBj
bG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwogICAgICAgICBlbHNlIGlmIChjYW5kaWRhdGUgIT0gZm9j
dXNlZE5vZGUgJiYgY2FuZGlkYXRlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkgewotICAg
ICAgICAgICAgbG9uZyBsb25nIGRpc3RhbmNlID0gZGlzdGFuY2VJbkRpcmVjdGlvbihmb2N1c2Vk
Tm9kZSwgY2FuZGlkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaXJlY3Rpb24sIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7Ci0gICAgICAg
ICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKGZvY3VzZWROb2RlLCBjYW5kaWRhdGUs
IGRpc3RhbmNlLCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOworICAgICAgICAgICAgRm9jdXNDYW5k
aWRhdGUgY3VycmVudEZvY3VzQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CisKKyAgICAgICAgICAgIC8v
IEdldCBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGZyb20gY3VycmVudCBjYW5kaWRhdGUuCisgICAg
ICAgICAgICBkaXN0YW5jZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGN1cnJl
bnRGb2N1c0NhbmRpZGF0ZSk7CisKKyAgICAgICAgICAgIC8vIElmIHxjYW5kaWRhdGVQYXJlbnR8
IGlzIG5vdCBOdWxsLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsCisg
ICAgICAgICAgICAvLyBmcm9tIGRlZXBGaW5lRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIChpLmUu
IHByb2Nlc3NpbmcgYW4gZWxlbWVudCBpbiBhbiBpZnJhbWUpLAorICAgICAgICAgICAgLy8gYW5k
IGhvbGRzIHRoZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEgb2YgdGhlIGlmcmFtZSBlbGVt
ZW50IGl0c2VsZi4KKyAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7
CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9
IGNhbmRpZGF0ZVBhcmVudC5hbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3Vz
Q2FuZGlkYXRlLnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKGZv
Y3VzZWROb2RlLCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00MDAsMjAgKzQzMCwxMiBAQCB2b2lkIEZvY3VzQ29u
dHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogZm9jdXNlZE5v
ZGUsIE5vZGUqCiAgICAgZWxzZSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHtp
fWZyYW1lIGVsZW1lbnQgaXRzZWxmIGlzIGEgZ29vZCBjYW5kaWRhdGUKICAgICAgICAgLy8gdG8g
bW92ZSBmb2N1cyB0by4gSWYgaXQgaXMsIHRoZW4gd2UgdHJhdmVyc2UgaXRzIGlubmVyIG5vZGVz
LgotICAgICAgICAvLyBMZXRzIHBhc3MgYSBjb3B5IG9mIHRoZSBiZXN0IGNhbmRpZGF0ZSwgdG8g
bm90IGdldCBmb29sZWQgYnkgYQotICAgICAgICAvLyBmcmFtZSB3aXRob3V0IGZvY3VzYWJsZSBl
bGVtZW50cy4KLSAgICAgICAgRm9jdXNDYW5kaWRhdGUgZm9jdXNDYW5kaWRhdGVDb3B5ID0gY2xv
c2VzdEZvY3VzQ2FuZGlkYXRlOwotICAgICAgICBsb25nIGxvbmcgZGlzdGFuY2UgPSBkaXN0YW5j
ZUluRGlyZWN0aW9uKGZvY3VzZWROb2RlLCBjYW5kaWRhdGUsIGRpcmVjdGlvbiwgZm9jdXNDYW5k
aWRhdGVDb3B5KTsKLSAgICAgICAgaWYgKGRpc3RhbmNlIDwgZm9jdXNDYW5kaWRhdGVDb3B5LmRp
c3RhbmNlKSB7Ci0gICAgICAgICAgICBmb2N1c0NhbmRpZGF0ZUNvcHkucGFyZW50QWxpZ25tZW50
ID0gZm9jdXNDYW5kaWRhdGVDb3B5LmFsaWdubWVudDsKLSAgICAgICAgICAgIGZvY3VzQ2FuZGlk
YXRlQ29weS5wYXJlbnREaXN0YW5jZSA9IGRpc3RhbmNlOwotCi0gICAgICAgICAgICBmaW5kRm9j
dXNhYmxlTm9kZUluRGlyZWN0aW9uKGlubmVyRG9jdW1lbnQsIGZvY3VzZWROb2RlLCBkaXJlY3Rp
b24sIGV2ZW50LCBmb2N1c0NhbmRpZGF0ZUNvcHkpOwotCi0gICAgICAgICAgICAvLyBJZiB3ZSBy
ZWFsbHkgaGF2ZSBhbiBpbm5lciBjbG9zZXIgZm9jdXMgY2FuZGlkYXRlIG5vZGUsIHRha2UgaXQu
Ci0gICAgICAgICAgICBpZiAoY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUgIT0gZm9jdXNDYW5k
aWRhdGVDb3B5Lm5vZGUpCi0gICAgICAgICAgICAgICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlID0g
Zm9jdXNDYW5kaWRhdGVDb3B5OwotICAgICAgICB9CisgICAgICAgIEZvY3VzQ2FuZGlkYXRlIGNh
bmRpZGF0ZVBhcmVudCA9IEZvY3VzQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CisgICAgICAgIGRpc3Rh
bmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwgY2FuZGlkYXRlUGFyZW50KTsK
KworICAgICAgICAvLyBGSVhNRTogV2hhdCBhYm91dCBhbGlnbWVudD8KKyAgICAgICAgaWYgKGNh
bmRpZGF0ZVBhcmVudC5kaXN0YW5jZSA8IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSkK
KyAgICAgICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwg
Zm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwgY2Fu
ZGlkYXRlUGFyZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAppbmRleCA3NTU5
MWM3Li4xYmVjZDc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgK
KysrIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIEZvY3VzQ29udHJvbGxlcl9oCiAKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgor
I2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBA
IC0zOCw3ICszOSw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBQYWdlOwotc3RydWN0IEZvY3VzQ2FuZGlkYXRlOwogCiBjbGFzcyBGb2N1
c0NvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgpAQCAtNjMsNyArNjMs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0Rp
cmVjdGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wgYWR2YW5jZUZvY3VzSW5Eb2N1bWVu
dE9yZGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgYm9vbCBpbml0aWFsRm9jdXMp
OwogCi0gICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiwgTm9k
ZSosIEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmKTsKKyAg
ICB2b2lkIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oRG9jdW1lbnQqLCBOb2RlKiwgRm9j
dXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYsIGNvbnN0IEZvY3Vz
Q2FuZGlkYXRlJiBjID0gRm9jdXNDYW5kaWRhdGUoKSk7CiAgICAgdm9pZCBkZWVwRmluZEZvY3Vz
YWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiwgTm9kZSosIEZvY3VzRGlyZWN0aW9uLCBLZXlib2Fy
ZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmKTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvU3Bh
dGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDg2YzljNWQuLjAzM2QyMmEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmNwcApAQCAtNDcsMTUgKzQ3LDE5IEBAIHN0YXRpYyBib29sIGFyZVJlY3Rz
UGFydGlhbGx5QWxpZ25lZChGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFJlCiBzdGF0aWMgYm9vbCBpc1JlY3RJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IEludFJlY3QmKTsKIHN0YXRpYyB2b2lkIGRlZmxhdGVJZk92ZXJsYXBw
ZWQoSW50UmVjdCYsIEludFJlY3QmKTsKIAotbG9uZyBsb25nIGRpc3RhbmNlSW5EaXJlY3Rpb24o
Tm9kZSogc3RhcnQsIE5vZGUqIGRlc3QsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jdXND
YW5kaWRhdGUmIGNhbmRpZGF0ZSkKK3ZvaWQgZGlzdGFuY2VEYXRhRm9yTm9kZShGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKQog
ewogICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXIgPSBzdGFydC0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAoIXN0YXJ0UmVuZGVyKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICBp
ZiAoIXN0YXJ0UmVuZGVyKSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3Rh
bmNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSZW5kZXJPYmplY3QqIGRlc3RS
ZW5kZXIgPSBkZXN0LT5yZW5kZXJlcigpOwotICAgIGlmICghZGVzdFJlbmRlcikKLSAgICAgICAg
cmV0dXJuIG1heERpc3RhbmNlKCk7CisgICAgUmVuZGVyT2JqZWN0KiBkZXN0UmVuZGVyID0gY2Fu
ZGlkYXRlLm5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFkZXN0UmVuZGVyKSB7CisgICAgICAg
IGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBJbnRSZWN0IGN1clJlY3QgPSByZW5kZXJSZWN0UmVsYXRpdmVUb1Jvb3REb2N1
bWVudChzdGFydFJlbmRlcik7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0ICA9IHJlbmRlclJlY3RS
ZWxhdGl2ZVRvUm9vdERvY3VtZW50KGRlc3RSZW5kZXIpOwpAQCAtNjUsMzkgKzY5LDIxIEBAIGxv
bmcgbG9uZyBkaXN0YW5jZUluRGlyZWN0aW9uKE5vZGUqIHN0YXJ0LCBOb2RlKiBkZXN0LCBGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24sCiAgICAgZGVmbGF0ZUlmT3ZlcmxhcHBlZChjdXJSZWN0LCB0
YXJnZXRSZWN0KTsKIAogICAgIGlmIChjdXJSZWN0LmlzRW1wdHkoKSB8fCB0YXJnZXRSZWN0Lmlz
RW1wdHkoKQotICAgICAgICB8fCB0YXJnZXRSZWN0LngoKSA8IDAgfHwgdGFyZ2V0UmVjdC55KCkg
PCAwKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgfHwgdGFyZ2V0UmVj
dC54KCkgPCAwIHx8IHRhcmdldFJlY3QueSgpIDwgMCkgeworICAgICAgICBjYW5kaWRhdGUuZGlz
dGFuY2UgPSBtYXhEaXN0YW5jZSgpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYg
KCFpc1JlY3RJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpKQotICAg
ICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICBpZiAoIWlzUmVjdEluRGlyZWN0aW9uKGRp
cmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpIHsKKyAgICAgICAgY2FuZGlkYXRlLmRpc3Rh
bmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIFRo
ZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBub2RlcyBpcyBub3QgdG8gYmUgY29uc2lkZXJlZCBhbG9u
ZSB3aGVuIGV2YWx1YXRpbmcvbG9va2luZwogICAgIC8vIGZvciB0aGUgYmVzdCBmb2N1cyBjYW5k
aWRhdGUgbm9kZS4gQWxpZ25tZW50IG9mIHJlY3RzIGNhbiBiZSBhbHNvIGEgZ29vZCBwb2ludCB0
byBiZQogICAgIC8vIGNvbnNpZGVyZWQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgYWxnb3JpdGhtIHRv
IGJlaGF2aW9yIGluIGEgbW9yZSBpbnR1aXRpdmUgd2F5LgotICAgIFJlY3RzQWxpZ25tZW50IGFs
aWdubWVudCA9IGFsaWdubWVudEZvclJlY3RzKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVj
dCk7Ci0KLSAgICBib29sIHNhbWVEb2N1bWVudCA9IGRlc3QtPmRvY3VtZW50KCkgPT0gY2FuZGlk
YXRlLmRvY3VtZW50KCk7Ci0gICAgaWYgKHNhbWVEb2N1bWVudCkgewotICAgICAgICBpZiAoY2Fu
ZGlkYXRlLmFsaWdubWVudCA+IGFsaWdubWVudCB8fCAoY2FuZGlkYXRlLnBhcmVudEFsaWdubWVu
dCAmJiBhbGlnbm1lbnQgPiBjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50KSkKLSAgICAgICAgICAg
IHJldHVybiBtYXhEaXN0YW5jZSgpOwotICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLmFsaWdubWVu
dCA+IGFsaWdubWVudCAmJiAoY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCAmJiBhbGlnbm1lbnQg
PiBjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50KSkKLSAgICAgICAgcmV0dXJuIG1heERpc3RhbmNl
KCk7Ci0KLSAgICAvLyBGSVhNRV90b25pa2l0b286IHNpbXBsaWZ5IHRoZSBsb2dpYyBoZXJlICEK
LSAgICBpZiAoYWxpZ25tZW50ICE9IE5vbmUKLSAgICAgICAgfHwgKCFjYW5kaWRhdGUuaXNOdWxs
KCkgJiYgY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA+PSBhbGlnbm1lbnQKLSAgICAgICAgJiYg
Y2FuZGlkYXRlLmRvY3VtZW50KCkgPT0gZGVzdC0+ZG9jdW1lbnQoKSkpIHsKLQotICAgICAgICAv
LyBJZiB3ZSBhcmUgbm93IGluIGFuIGhpZ2hlciBwcmVjZWRlbnQgY2FzZSwgbGV0cyByZXNldCB0
aGUgY3VycmVudCB8Y2FuZGlkYXRlfCdzCi0gICAgICAgIC8vIHxkaXN0YW5jZXwgc28gd2UgZm9y
Y2UgaXQgdG8gYmUgYmlnZ2VyIHRoYW4gdGhlIHJlc3VsdCB3ZSB3aWxsIGdldCBmcm9tCi0gICAg
ICAgIC8vIHxzcGF0aWFsRGlzdGFuY2V8IChzZWUgYmVsb3cpLgotICAgICAgICBpZiAoY2FuZGlk
YXRlLmFsaWdubWVudCA8IGFsaWdubWVudCAmJiBjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50IDwg
YWxpZ25tZW50KQotICAgICAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2Uo
KTsKLQotICAgICAgICBjYW5kaWRhdGUuYWxpZ25tZW50ID0gYWxpZ25tZW50OwotICAgIH0KLQot
ICAgIHJldHVybiBzcGF0aWFsRGlzdGFuY2UoZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0
KTsKKyAgICBjYW5kaWRhdGUuYWxpZ25tZW50ID0gYWxpZ25tZW50Rm9yUmVjdHMoZGlyZWN0aW9u
LCBjdXJSZWN0LCB0YXJnZXRSZWN0KTsKKyAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBzcGF0aWFs
RGlzdGFuY2UoZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0KTsKIH0KIAogLy8gRklYTUU6
IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYmVoYXZlIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybWVk
IGZyYW1lcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oIGIv
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKaW5kZXggN2MxODNkZi4uOTBmZjFjZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKKysrIGIvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBzdHJ1Y3QgRm9j
dXNDYW5kaWRhdGUgewogICAgIFJlY3RzQWxpZ25tZW50IHBhcmVudEFsaWdubWVudDsKIH07CiAK
LWxvbmcgbG9uZyBkaXN0YW5jZUluRGlyZWN0aW9uKE5vZGUqLCBOb2RlKiwgRm9jdXNEaXJlY3Rp
b24sIEZvY3VzQ2FuZGlkYXRlJik7Cit2b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBzdGFydCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7
CiBib29sIHNjcm9sbEluRGlyZWN0aW9uKEZyYW1lKiwgRm9jdXNEaXJlY3Rpb24pOwogdm9pZCBz
Y3JvbGxJbnRvVmlldyhFbGVtZW50Kik7CiBib29sIGhhc09mZnNjcmVlblJlY3QoTm9kZSopOwot
LSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51362</attachid>
            <date>2010-03-22 15:01:25 -0700</date>
            <delta_ts>2010-03-23 06:42:46 -0700</delta_ts>
            <desc>patch_2 - v2 - code simplification</desc>
            <filename>0001-2010-03-22-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>17369</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBlMDhhZmRhNTFjYmNiYzJmMzkzZjU3YWFhNTNlZDRkOGJjZDU1N2M4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogU2F0LCAyMCBNYXIgMjAxMCAxODoxMjo0MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIw
MTAtMDMtMjIgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAgICAgICAgUGF0Y2ggYnkgQW50b25pbyBHb21l
cyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogSW5p
dGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29udHJvbGxlci5jcHAgYW5kIFNwYXRp
YWxOYXZpZ2F0aW9uLmNwcAoKICAgICAgICBXZWJDb3JlOjpkaXN0YW5jZUluRGlyZWN0aW9uIG1l
dGhvZCB3YXMgaGFuZGxpbmcgbXVjaCBvZiB0aGUgbG9naWMgbm90CiAgICAgICAgc3RyaWN0bHkg
b25seSByZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVpc2l0aW9uLiBU
aGlzCiAgICAgICAgbWV0aG9kIHdhcyBzaW1wbGlmaWVkIGFuZCByZW5hbWVkIHRvICdXZWJDb3Jl
OjpkaXN0YW5jZURhdGFGb3JOb2RlJy4KICAgICAgICBUaGUgbGF0dGVyIGlzIG5vdyByZXNwb25z
aWJsZSBmb3Igb25seSBnZXR0aW5nIHRoZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50CiAgICAgICAg
ZGF0YSwgd2hpbGUgYWxsIGFzc2lnbmVtZW50IGxvZ2ljIHByZXZpb3VzbHkgZGlzdGFuY2VJbkRp
cmVjdGlvbiBtZXRob2QKICAgICAgICB3YXMgbW92ZWQgcGxhY2UgdG8gdXBkYXRlRm9jdXNDYW5k
aWRhdGVJZkNsb3Nlci4KCiAgICAgICAgUGFyZW50IGRvY3VtZW50IGRpc3RhbmNlIGFuZCBhbGln
bm1lbnQgYWNxdWlzaXRpb25zLCBvbiB0aGVpciB0dXJucywgaGF2ZQogICAgICAgIGFsc28gY2hh
bmdlZCBsb2NhdGlvbjogdGhleSBhcmUgYm90aCBnb3QgZnJvbSBkZWVwRmluZEZvY3VzYWJsZU5v
ZGVJbkRpcmVjdGlvbiwKICAgICAgICBhbmQgcGFzc2VkIGluIGEgcmVjdXJzaXZlIGNhbGwgdG8g
ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiB2aWEgdGhlIGNhbmRpZGF0ZVBhcmVudAogICAg
ICAgIHZhcmlhYmxlLiBZZXQgb24gZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24gbWV0
aG9kLCB0aGUgbmVlZCBmb3IgdGhlCiAgICAgICAgJ2ZvY3VzQ2FuZGlkYXRlQ29weS5kaXN0YW5j
ZScgdmFyaWFibGUgd2FzIHJlbW92ZWQsIG1ha2luZyB0aGUgY29kZSBtdWNoIGNsZWFuZXIuCgog
ICAgICAgIE5vIGJlaGF2aW91ciBjaGFuZ2UgYXQgdGhpcyBwb2ludC4gTW9zdGx5IG1vdmluZyBj
b2RlIGFyb3VuZCB0byB0aGUgcGxhY2UKICAgICAgICB3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4K
CiAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkZv
Y3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6CiAgICAgICAgKFdlYkNv
cmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgogICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgogICAgICAgIChXZWJD
b3JlOjpGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToK
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CiAgICAgICAgKiBwYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmNwcDoKICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZSk6CiAg
ICAgICAgKFdlYkNvcmU6OnJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KToKICAgICAg
ICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgIHwgICAzNCArKysrKysrKysrKysKIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwICAgfCAgMTA2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQog
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgfCAgIDU0ICsrKysrKystLS0tLS0tLS0tLS0KIFdlYkNv
cmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oICAgfCAgICAyICstCiA1IGZpbGVzIGNoYW5nZWQs
IDEyMCBpbnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY0YjZiMGYuLjg5OTE0YTMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTAtMDMtMjIgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgUGF0
Y2ggYnkgQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3Bh
dGlhbCBOYXZpZ2F0aW9uOiBJbml0aWFsIGNvZGUgc2ltcGxpZmljYXRpb24gaW4gRm9jdXNDb250
cm9sbGVyLmNwcCBhbmQgU3BhdGlhbE5hdmlnYXRpb24uY3BwCisKKyAgICAgICAgV2ViQ29yZTo6
ZGlzdGFuY2VJbkRpcmVjdGlvbiBtZXRob2Qgd2FzIGhhbmRsaW5nIG11Y2ggb2YgdGhlIGxvZ2lj
IG5vdAorICAgICAgICBzdHJpY3RseSBvbmx5IHJlbGF0ZWQgdG8gdGhlIGRpc3RhbmNlIGJldHdl
ZW4gbm9kZXMgYWNxdWlzaXRpb24uIFRoaXMKKyAgICAgICAgbWV0aG9kIHdhcyBzaW1wbGlmaWVk
IGFuZCByZW5hbWVkIHRvICdXZWJDb3JlOjpkaXN0YW5jZURhdGFGb3JOb2RlJy4KKyAgICAgICAg
VGhlIGxhdHRlciBpcyBub3cgcmVzcG9uc2libGUgZm9yIG9ubHkgZ2V0dGluZyB0aGUgZGlzdGFu
Y2UgYW5kIGFsaWdubWVudAorICAgICAgICBkYXRhLCB3aGlsZSBhbGwgYXNzaWduZW1lbnQgbG9n
aWMgcHJldmlvdXNseSBkaXN0YW5jZUluRGlyZWN0aW9uIG1ldGhvZAorICAgICAgICB3YXMgbW92
ZWQgcGxhY2UgdG8gdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlci4KKworICAgICAgICBQYXJl
bnQgZG9jdW1lbnQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBhY3F1aXNpdGlvbnMsIG9uIHRoZWly
IHR1cm5zLCBoYXZlCisgICAgICAgIGFsc28gY2hhbmdlZCBsb2NhdGlvbjogdGhleSBhcmUgYm90
aCBnb3QgZnJvbSBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiwKKyAgICAgICAgYW5k
IHBhc3NlZCBpbiBhIHJlY3Vyc2l2ZSBjYWxsIHRvIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rp
b24gdmlhIHRoZSBjYW5kaWRhdGVQYXJlbnQKKyAgICAgICAgdmFyaWFibGUuIFlldCBvbiBkZWVw
RmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiBtZXRob2QsIHRoZSBuZWVkIGZvciB0aGUKKyAg
ICAgICAgJ2ZvY3VzQ2FuZGlkYXRlQ29weS5kaXN0YW5jZScgdmFyaWFibGUgd2FzIHJlbW92ZWQs
IG1ha2luZyB0aGUgY29kZSBtdWNoIGNsZWFuZXIuCisKKyAgICAgICAgTm8gYmVoYXZpb3VyIGNo
YW5nZSBhdCB0aGlzIHBvaW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJvdW5kIHRvIHRoZSBwbGFj
ZQorICAgICAgICB3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4KKworICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2
YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0Nh
bmRpZGF0ZUlmQ2xvc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Zmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRy
b2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKiBwYWdl
L0ZvY3VzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpyZW5kZXJSZWN0UmVsYXRpdmVUb1Jvb3REb2N1bWVudCk6CisgICAgICAgICogcGFnZS9T
cGF0aWFsTmF2aWdhdGlvbi5oOgorCiAyMDEwLTAzLTIyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDg0ODRhMjAuLmI5OTljNmUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6
OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXli
b2EKICAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRvcCgpOwogCiAgICAgRm9jdXNDYW5kaWRh
dGUgZm9jdXNDYW5kaWRhdGU7Ci0gICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmcmFt
ZS0+ZG9jdW1lbnQoKSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGZvY3VzQ2FuZGlk
YXRlKTsKKyAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGZyYW1lLT5kb2N1bWVudCgp
LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgZm9jdXNDYW5kaWRhdGUsIEZvY3VzQ2Fu
ZGlkYXRlKCkpOwogCiAgICAgTm9kZSogbm9kZSA9IGZvY3VzQ2FuZGlkYXRlLm5vZGU7CiAgICAg
aWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKQEAgLTM0Miw0NiArMzQyLDc2
IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSogZm9jdXNlZE5vZGUsIE5v
ZGUqIGNhbmRpZGF0ZSwgbG9uZyBsb25nIGRpc3RhbmNlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2Vz
dEZvY3VzQ2FuZGlkYXRlKQorLy8gRklYTUU6IE1ha2UgdGhpcyBtZXRob2QgbW9yZSBtb2R1bGFy
LCBhbmQgc2ltcGxlciB0byB1bmRlcnN0YW5kIGFuZCBtYWludGFpbi4KK3N0YXRpYyB2b2lkIHVw
ZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSogZm9jdXNlZE5vZGUsIEZvY3VzQ2FuZGlk
YXRlIGNhbmRpZGF0ZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpCiB7Ci0gICAgLy8gQmFpbCBv
dXQgaWYgfGRpc3RhbmNlfCBpcyBiaWdnZXIgdGhhbiB0aGUgY3VycmVudCBjbG9zZXN0IGNhbmRp
ZGF0ZS4KLSAgICBpZiAoZGlzdGFuY2UgPj0gY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNl
KQorICAgIGJvb2wgc2FtZURvY3VtZW50ID0gY2FuZGlkYXRlLmRvY3VtZW50KCkgPT0gY2xvc2Vz
dC5kb2N1bWVudCgpOworICAgIGlmIChzYW1lRG9jdW1lbnQpIHsKKyAgICAgICAgaWYgKGNsb3Nl
c3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAgICAgfHwgKGNsb3Nl
c3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0LnBhcmVu
dEFsaWdubWVudCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChjbG9zZXN0
LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKKyAgICAgICAgICAgICAgICYmIChjbG9z
ZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2VzdC5wYXJl
bnRBbGlnbm1lbnQpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZiB8Zm9jdXNlZE5vZGV8
IGFuZCB8Y2FuZGlkYXRlfCBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgQU5ECi0gICAgLy8gY3Vy
cmVudCB8Y2xvc2VzdEZvY3VzQ2FuZGlkYWR0ZXwgaXMgbm90IGluIGFuIHtpfWZyYW1lIHRoYXQg
aXMKLSAgICAvLyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkLgotICAgIGlmIChmb2N1c2VkTm9k
ZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUtPmRvY3VtZW50KCkKLSAgICAgICAgJiYgZGlzdGFu
Y2UgPCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUucGFyZW50RGlzdGFuY2UpIHsKLSAgICAgICAgY2xv
c2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUgPSBjYW5kaWRhdGU7Ci0gICAgICAgIGNsb3Nlc3RGb2N1
c0NhbmRpZGF0ZS5kaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICBjbG9zZXN0Rm9jdXNDYW5k
aWRhdGUucGFyZW50RGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwotICAgIH0gZWxzZSBpZiAoZm9j
dXNlZE5vZGUtPmRvY3VtZW50KCkgIT0gY2FuZGlkYXRlLT5kb2N1bWVudCgpKSB7Ci0gICAgICAg
IC8vIElmIHRoZSB8Zm9jdXNlZE5vZGV8IGlzIGluIGFuIGlubmVyIGRvY3VtZW50IGFuZCB0aGUg
fGNhbmRpZGF0ZXwgaXMKLSAgICAgICAgLy8gaW4gYSBkaWZmZXJlbnQgZG9jdW1lbnQsIHdlIG9u
bHkgY29uc2lkZXIgdG8gY2hhbmdlIGZvY3VzIGlmIHRoZXJlIGlzCi0gICAgICAgIC8vIG5vdCBh
bm90aGVyIGFscmVhZHkgZ29vZCBmb2N1c2FibGUgY2FuZGlkYXRlIGluIHRoZSBzYW1lIGRvY3Vt
ZW50IGFzCi0gICAgICAgIC8vIHxmb2N1c2VkTm9kZXwuCi0gICAgICAgIGlmICghKChpc0luUm9v
dERvY3VtZW50KGNhbmRpZGF0ZSkgJiYgIWlzSW5Sb290RG9jdW1lbnQoZm9jdXNlZE5vZGUpKQot
ICAgICAgICAgICAgJiYgZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2xvc2VzdEZvY3VzQ2Fu
ZGlkYXRlLmRvY3VtZW50KCkpKSB7Ci0gICAgICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUu
bm9kZSA9IGNhbmRpZGF0ZTsKLSAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0
YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICB9CisgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQg
IT0gTm9uZQorICAgICAgICB8fCAoIWNsb3Nlc3QuaXNOdWxsKCkgJiYgY2xvc2VzdC5wYXJlbnRB
bGlnbm1lbnQgPj0gY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAmJiBjbG9zZXN0LmRvY3Vt
ZW50KCkgPT0gY2FuZGlkYXRlLmRvY3VtZW50KCkpKSB7CisKKyAgICAgICAgLy8gSWYgd2UgYXJl
IG5vdyBpbiBhbiBoaWdoZXIgcHJlY2VkZW50IGNhc2UsIGxldHMgcmVzZXQgdGhlIGN1cnJlbnQg
fGNsb3Nlc3R8J3MKKyAgICAgICAgLy8gfGRpc3RhbmNlfCBzbyB3ZSBmb3JjZSBpdCB0byBiZSBi
aWdnZXIgdGhhbiBhbnkgcmVzdWx0IHdlIHdpbGwgZ2V0IGZyb20KKyAgICAgICAgLy8gfHNwYXRp
YWxEaXN0YW5jZSgpfCAoc2VlIGJlbG93KS4KKyAgICAgICAgaWYgKGNsb3Nlc3QuYWxpZ25tZW50
IDwgY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAgICAgJiYgY2xvc2VzdC5wYXJlbnRBbGln
bm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50KQorICAgICAgICAgICAgY2xvc2VzdC5kaXN0YW5j
ZSA9IG1heERpc3RhbmNlKCk7CisKKyAgICAgICAgY2xvc2VzdC5hbGlnbm1lbnQgPSBjYW5kaWRh
dGUuYWxpZ25tZW50OworICAgIH0KKworICAgIC8vIEJhaWwgb3V0IGlmIGNhbmRpZGF0ZSdzIGRp
c3RhbmNlIGlzIGJpZ2dlciB0aGFuIHRoZSBjbG9zZXN0IGNhbmRpZGF0ZSdzIGRpc3RhbmNlLgor
ICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPj0gY2xvc2VzdC5kaXN0YW5jZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gSWYgfGZvY3VzZWROb2RlfCBhbmQgfGNhbmRpZGF0ZXwgYXJlIGlu
IHRoZSBzYW1lIGRvY3VtZW50IGFuZCBjdXJyZW50CisgICAgLy8gfGNsb3Nlc3R8IGlzIG5vdCBp
biBhbiB7aX1mcmFtZSB0aGF0IGlzIHByZWZlcmFibGUgdG8gZ2V0IGZvY3VzZWQgLi4uCisgICAg
aWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNhbmRpZGF0ZS5kb2N1bWVudCgpCisgICAg
ICAgICYmIGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QucGFyZW50RGlzdGFuY2UpCisgICAg
ICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgZWxzZSBpZiAoZm9jdXNlZE5vZGUtPmRvY3Vt
ZW50KCkgIT0gY2FuZGlkYXRlLmRvY3VtZW50KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHxmb2N1
c2VkTm9kZXwgaXMgaW4gYW4gaW5uZXIgZG9jdW1lbnQgYW5kIHxjYW5kaWRhdGV8IGlzIGluIGEK
KyAgICAgICAgLy8gZGlmZmVyZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5n
ZSBmb2N1cyBpZiB0aGVyZSBpcyBub3QKKyAgICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2Qg
Zm9jdXNhYmxlIGNhbmRpZGF0ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyB8Zm9jdXNlZE5vZGV8
LgorICAgICAgICBpZiAoISgoaXNJblJvb3REb2N1bWVudChjYW5kaWRhdGUubm9kZSkgJiYgIWlz
SW5Sb290RG9jdW1lbnQoZm9jdXNlZE5vZGUpKQorICAgICAgICAgICAgJiYgZm9jdXNlZE5vZGUt
PmRvY3VtZW50KCkgPT0gY2xvc2VzdC5kb2N1bWVudCgpKSkKKyAgICAgICAgICAgIGNsb3Nlc3Qg
PSBjYW5kaWRhdGU7CiAgICAgfQogfQogCi12b2lkIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3Vz
YWJsZU5vZGVJbkRpcmVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIGZvY3VzZWROb2Rl
LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LCBGb2N1c0Nh
bmRpZGF0ZSYgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKQordm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZp
bmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBmb2N1
c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwg
Rm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwgRm9jdXNDYW5kaWRhdGUgY2Fu
ZGlkYXRlUGFyZW50KQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAKLSAgICAvLyBXYWxrIGFs
bCB0aGUgY2hpbGQgbm9kZXMgYW5kIHVwZGF0ZSBmb2N1c0NhbmRpZGF0ZSBpZiB3ZSBmaW5kIGEg
bmVhcmVyIG5vZGUuCisgICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUg
fGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZXwgaWYgd2UgZmluZCBhIG5lYXJlciBub2RlLgogICAgIGZv
ciAoTm9kZSogY2FuZGlkYXRlID0gZG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsgY2FuZGlkYXRlOyBj
YW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAgICAvLyBJ
bm5lciBkb2N1bWVudHMgY2FzZS4KKwogICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3du
ZXJFbGVtZW50KCkpCiAgICAgICAgICAgICBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlv
bihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXND
YW5kaWRhdGUpOwogICAgICAgICBlbHNlIGlmIChjYW5kaWRhdGUgIT0gZm9jdXNlZE5vZGUgJiYg
Y2FuZGlkYXRlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkgewotICAgICAgICAgICAgbG9u
ZyBsb25nIGRpc3RhbmNlID0gZGlzdGFuY2VJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlk
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXJlY3Rpb24sIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7Ci0gICAgICAgICAgICB1cGRhdGVG
b2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKGZvY3VzZWROb2RlLCBjYW5kaWRhdGUsIGRpc3RhbmNlLCBj
bG9zZXN0Rm9jdXNDYW5kaWRhdGUpOworICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUgY3VycmVu
dEZvY3VzQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CisKKyAgICAgICAgICAgIC8vIEdldCBkaXN0YW5j
ZSBhbmQgYWxpZ25tZW50IGZyb20gY3VycmVudCBjYW5kaWRhdGUuCisgICAgICAgICAgICBkaXN0
YW5jZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGN1cnJlbnRGb2N1c0NhbmRp
ZGF0ZSk7CisKKyAgICAgICAgICAgIC8vIElmIHxjYW5kaWRhdGVQYXJlbnR8IGlzIG5vdCBOdWxs
LCBpdCBtZWFucyB0aGF0IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsCisgICAgICAgICAgICAv
LyBmcm9tIGRlZXBGaW5lRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIChpLmUuIHByb2Nlc3Npbmcg
YW4gZWxlbWVudCBpbiBhbiBpZnJhbWUpLAorICAgICAgICAgICAgLy8gYW5kIGhvbGRzIHRoZSBk
aXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEgb2YgdGhlIGlmcmFtZSBlbGVtZW50IGl0c2VsZi4K
KyAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7CisgICAgICAgICAg
ICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRpZGF0ZVBh
cmVudC5hbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBh
cmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKGZvY3VzZWROb2RlLCBj
dXJyZW50Rm9jdXNDYW5kaWRhdGUsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC0zOTcsMjQgKzQyNywxNiBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZGVl
cEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogZm9jdXNlZE5vZGUsIE5vZGUqCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChpbm5lckRvY3VtZW50ID09IGZvY3VzZWROb2RlLT5k
b2N1bWVudCgpKQotICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGlubmVyRG9j
dW1lbnQsIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGUpOworICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGlubmVyRG9jdW1lbnQs
IGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUsIEZv
Y3VzQ2FuZGlkYXRlKCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3Vy
cmVudCB7aX1mcmFtZSBlbGVtZW50IGl0c2VsZiBpcyBhIGdvb2QgY2FuZGlkYXRlCiAgICAgICAg
IC8vIHRvIG1vdmUgZm9jdXMgdG8uIElmIGl0IGlzLCB0aGVuIHdlIHRyYXZlcnNlIGl0cyBpbm5l
ciBub2Rlcy4KLSAgICAgICAgLy8gTGV0cyBwYXNzIGEgY29weSBvZiB0aGUgYmVzdCBjYW5kaWRh
dGUsIHRvIG5vdCBnZXQgZm9vbGVkIGJ5IGEKLSAgICAgICAgLy8gZnJhbWUgd2l0aG91dCBmb2N1
c2FibGUgZWxlbWVudHMuCi0gICAgICAgIEZvY3VzQ2FuZGlkYXRlIGZvY3VzQ2FuZGlkYXRlQ29w
eSA9IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZTsKLSAgICAgICAgbG9uZyBsb25nIGRpc3RhbmNlID0g
ZGlzdGFuY2VJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rpb24sIGZv
Y3VzQ2FuZGlkYXRlQ29weSk7Ci0gICAgICAgIGlmIChkaXN0YW5jZSA8IGZvY3VzQ2FuZGlkYXRl
Q29weS5kaXN0YW5jZSkgewotICAgICAgICAgICAgZm9jdXNDYW5kaWRhdGVDb3B5LnBhcmVudEFs
aWdubWVudCA9IGZvY3VzQ2FuZGlkYXRlQ29weS5hbGlnbm1lbnQ7Ci0gICAgICAgICAgICBmb2N1
c0NhbmRpZGF0ZUNvcHkucGFyZW50RGlzdGFuY2UgPSBkaXN0YW5jZTsKLQotICAgICAgICAgICAg
ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihpbm5lckRvY3VtZW50LCBmb2N1c2VkTm9kZSwg
ZGlyZWN0aW9uLCBldmVudCwgZm9jdXNDYW5kaWRhdGVDb3B5KTsKLQotICAgICAgICAgICAgLy8g
SWYgd2UgcmVhbGx5IGhhdmUgYW4gaW5uZXIgY2xvc2VyIGZvY3VzIGNhbmRpZGF0ZSBub2RlLCB0
YWtlIGl0LgotICAgICAgICAgICAgaWYgKGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5ub2RlICE9IGZv
Y3VzQ2FuZGlkYXRlQ29weS5ub2RlKQotICAgICAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRp
ZGF0ZSA9IGZvY3VzQ2FuZGlkYXRlQ29weTsKLSAgICAgICAgfQorICAgICAgICBGb2N1c0NhbmRp
ZGF0ZSBjYW5kaWRhdGVQYXJlbnQgPSBGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOworICAgICAg
ICBkaXN0YW5jZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZVBh
cmVudCk7CisKKyAgICAgICAgLy8gRklYTUU6IFdoYXQgYWJvdXQgYWxpZ21lbnQ/CisgICAgICAg
IGlmIChjYW5kaWRhdGVQYXJlbnQuZGlzdGFuY2UgPCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUuZGlz
dGFuY2UpCisgICAgICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGlubmVyRG9j
dW1lbnQsIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGUsIGNhbmRpZGF0ZVBhcmVudCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmggYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKaW5k
ZXggNzU1OTFjNy4uMzI4YjMzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaApAQCAtNjMsNyArNjMs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0Rp
cmVjdGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wgYWR2YW5jZUZvY3VzSW5Eb2N1bWVu
dE9yZGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgYm9vbCBpbml0aWFsRm9jdXMp
OwogCi0gICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiwgTm9k
ZSosIEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmKTsKKyAg
ICB2b2lkIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oRG9jdW1lbnQqLCBOb2RlKiwgRm9j
dXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYsIEZvY3VzQ2FuZGlk
YXRlKTsKICAgICB2b2lkIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqLCBO
b2RlKiwgRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYpOwog
CiAgICAgUGFnZSogbV9wYWdlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKaW5kZXggODZj
OWM1ZC4uMDMzZDIyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC00NywxNSAr
NDcsMTkgQEAgc3RhdGljIGJvb2wgYXJlUmVjdHNQYXJ0aWFsbHlBbGlnbmVkKEZvY3VzRGlyZWN0
aW9uLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmUKIHN0YXRpYyBib29sIGlzUmVjdEluRGly
ZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpOwog
c3RhdGljIHZvaWQgZGVmbGF0ZUlmT3ZlcmxhcHBlZChJbnRSZWN0JiwgSW50UmVjdCYpOwogCi1s
b25nIGxvbmcgZGlzdGFuY2VJbkRpcmVjdGlvbihOb2RlKiBzdGFydCwgTm9kZSogZGVzdCwgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKQordm9pZCBk
aXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgTm9kZSogc3RhcnQs
IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJl
bmRlciA9IHN0YXJ0LT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5kZXIpCi0gICAgICAg
IHJldHVybiBtYXhEaXN0YW5jZSgpOworICAgIGlmICghc3RhcnRSZW5kZXIpIHsKKyAgICAgICAg
Y2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIFJlbmRlck9iamVjdCogZGVzdFJlbmRlciA9IGRlc3QtPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFkZXN0UmVuZGVyKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICBS
ZW5kZXJPYmplY3QqIGRlc3RSZW5kZXIgPSBjYW5kaWRhdGUubm9kZS0+cmVuZGVyZXIoKTsKKyAg
ICBpZiAoIWRlc3RSZW5kZXIpIHsKKyAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlz
dGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEludFJlY3QgY3VyUmVjdCA9
IHJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KHN0YXJ0UmVuZGVyKTsKICAgICBJbnRS
ZWN0IHRhcmdldFJlY3QgID0gcmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQoZGVzdFJl
bmRlcik7CkBAIC02NSwzOSArNjksMjEgQEAgbG9uZyBsb25nIGRpc3RhbmNlSW5EaXJlY3Rpb24o
Tm9kZSogc3RhcnQsIE5vZGUqIGRlc3QsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICBk
ZWZsYXRlSWZPdmVybGFwcGVkKGN1clJlY3QsIHRhcmdldFJlY3QpOwogCiAgICAgaWYgKGN1clJl
Y3QuaXNFbXB0eSgpIHx8IHRhcmdldFJlY3QuaXNFbXB0eSgpCi0gICAgICAgIHx8IHRhcmdldFJl
Y3QueCgpIDwgMCB8fCB0YXJnZXRSZWN0LnkoKSA8IDApCi0gICAgICAgIHJldHVybiBtYXhEaXN0
YW5jZSgpOworICAgICAgICB8fCB0YXJnZXRSZWN0LngoKSA8IDAgfHwgdGFyZ2V0UmVjdC55KCkg
PCAwKSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIWlzUmVjdEluRGlyZWN0aW9uKGRpcmVjdGlv
biwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpCi0gICAgICAgIHJldHVybiBtYXhEaXN0YW5jZSgpOwor
ICAgIGlmICghaXNSZWN0SW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0
KSkgeworICAgICAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQogCiAgICAgLy8gVGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIG5vZGVz
IGlzIG5vdCB0byBiZSBjb25zaWRlcmVkIGFsb25lIHdoZW4gZXZhbHVhdGluZy9sb29raW5nCiAg
ICAgLy8gZm9yIHRoZSBiZXN0IGZvY3VzIGNhbmRpZGF0ZSBub2RlLiBBbGlnbm1lbnQgb2YgcmVj
dHMgY2FuIGJlIGFsc28gYSBnb29kIHBvaW50IHRvIGJlCiAgICAgLy8gY29uc2lkZXJlZCBpbiBv
cmRlciB0byBtYWtlIHRoZSBhbGdvcml0aG0gdG8gYmVoYXZpb3IgaW4gYSBtb3JlIGludHVpdGl2
ZSB3YXkuCi0gICAgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50ID0gYWxpZ25tZW50Rm9yUmVjdHMo
ZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0KTsKLQotICAgIGJvb2wgc2FtZURvY3VtZW50
ID0gZGVzdC0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKTsKLSAgICBpZiAoc2Ft
ZURvY3VtZW50KSB7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuYWxpZ25tZW50ID4gYWxpZ25tZW50
IHx8IChjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50ICYmIGFsaWdubWVudCA+IGNhbmRpZGF0ZS5w
YXJlbnRBbGlnbm1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7Ci0gICAg
fSBlbHNlIGlmIChjYW5kaWRhdGUuYWxpZ25tZW50ID4gYWxpZ25tZW50ICYmIChjYW5kaWRhdGUu
cGFyZW50QWxpZ25tZW50ICYmIGFsaWdubWVudCA+IGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQp
KQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKLQotICAgIC8vIEZJWE1FX3RvbmlraXRv
bzogc2ltcGxpZnkgdGhlIGxvZ2ljIGhlcmUgIQotICAgIGlmIChhbGlnbm1lbnQgIT0gTm9uZQot
ICAgICAgICB8fCAoIWNhbmRpZGF0ZS5pc051bGwoKSAmJiBjYW5kaWRhdGUucGFyZW50QWxpZ25t
ZW50ID49IGFsaWdubWVudAotICAgICAgICAmJiBjYW5kaWRhdGUuZG9jdW1lbnQoKSA9PSBkZXN0
LT5kb2N1bWVudCgpKSkgewotCi0gICAgICAgIC8vIElmIHdlIGFyZSBub3cgaW4gYW4gaGlnaGVy
IHByZWNlZGVudCBjYXNlLCBsZXRzIHJlc2V0IHRoZSBjdXJyZW50IHxjYW5kaWRhdGV8J3MKLSAg
ICAgICAgLy8gfGRpc3RhbmNlfCBzbyB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhhbiB0aGUg
cmVzdWx0IHdlIHdpbGwgZ2V0IGZyb20KLSAgICAgICAgLy8gfHNwYXRpYWxEaXN0YW5jZXwgKHNl
ZSBiZWxvdykuCi0gICAgICAgIGlmIChjYW5kaWRhdGUuYWxpZ25tZW50IDwgYWxpZ25tZW50ICYm
IGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPCBhbGlnbm1lbnQpCi0gICAgICAgICAgICBjYW5k
aWRhdGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwotCi0gICAgICAgIGNhbmRpZGF0ZS5hbGln
bm1lbnQgPSBhbGlnbm1lbnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNwYXRpYWxEaXN0YW5jZShk
aXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpOworICAgIGNhbmRpZGF0ZS5hbGlnbm1lbnQg
PSBhbGlnbm1lbnRGb3JSZWN0cyhkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpOworICAg
IGNhbmRpZGF0ZS5kaXN0YW5jZSA9IHNwYXRpYWxEaXN0YW5jZShkaXJlY3Rpb24sIGN1clJlY3Qs
IHRhcmdldFJlY3QpOwogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBiZWhh
dmUgY29ycmVjdGx5IHdpdGggdHJhbnNmb3JtZWQgZnJhbWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmggYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uaAppbmRleCA3YzE4M2RmLi45MGZmMWNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3Bh
dGlhbE5hdmlnYXRpb24uaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApA
QCAtMTE4LDcgKzExOCw3IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgUmVjdHNBbGln
bm1lbnQgcGFyZW50QWxpZ25tZW50OwogfTsKIAotbG9uZyBsb25nIGRpc3RhbmNlSW5EaXJlY3Rp
b24oTm9kZSosIE5vZGUqLCBGb2N1c0RpcmVjdGlvbiwgRm9jdXNDYW5kaWRhdGUmKTsKK3ZvaWQg
ZGlzdGFuY2VEYXRhRm9yTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0
LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKTsKIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oRnJh
bWUqLCBGb2N1c0RpcmVjdGlvbik7CiB2b2lkIHNjcm9sbEludG9WaWV3KEVsZW1lbnQqKTsKIGJv
b2wgaGFzT2Zmc2NyZWVuUmVjdChOb2RlKik7Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="commit-queue"
          id="34602"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51417</attachid>
            <date>2010-03-23 06:42:46 -0700</date>
            <delta_ts>2010-03-29 11:35:40 -0700</delta_ts>
            <desc>patch_2 - v3 - code simplification</desc>
            <filename>0001-2010-03-22-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>18715</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBjYzY1Y2YyOTNlOTU0MTc4NjA5NTcxODc3ZWVmNzQ3N2E4ZThkYjQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogU2F0LCAyMCBNYXIgMjAxMCAxODoxMjo0MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIw
MTAtMDMtMjIgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAgICAgICAgUGF0Y2ggYnkgQW50b25pbyBHb21l
cyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogSW5p
dGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29udHJvbGxlci5jcHAgYW5kIFNwYXRp
YWxOYXZpZ2F0aW9uLmNwcAoKICAgICAgICBXZWJDb3JlOjpkaXN0YW5jZUluRGlyZWN0aW9uIG1l
dGhvZCB3YXMgaGFuZGxpbmcgbXVjaCBvZiB0aGUgbG9naWMgbm90CiAgICAgICAgc3RyaWN0bHkg
b25seSByZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVpc2l0aW9uLiBU
aGlzCiAgICAgICAgbWV0aG9kIHdhcyBzaW1wbGlmaWVkIGFuZCByZW5hbWVkIHRvICdXZWJDb3Jl
OjpkaXN0YW5jZURhdGFGb3JOb2RlJy4KICAgICAgICBUaGUgbGF0dGVyIGlzIG5vdyByZXNwb25z
aWJsZSBmb3Igb25seSBnZXR0aW5nIHRoZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50CiAgICAgICAg
ZGF0YSwgd2hpbGUgYWxsIGFzc2lnbmVtZW50IGxvZ2ljIHByZXZpb3VzbHkgZGlzdGFuY2VJbkRp
cmVjdGlvbiBtZXRob2QKICAgICAgICB3YXMgbW92ZWQgcGxhY2UgdG8gdXBkYXRlRm9jdXNDYW5k
aWRhdGVJZkNsb3Nlci4KCiAgICAgICAgUGFyZW50IGRvY3VtZW50IGRpc3RhbmNlIGFuZCBhbGln
bm1lbnQgYWNxdWlzaXRpb25zLCBvbiB0aGVpciB0dXJucywgaGF2ZQogICAgICAgIGFsc28gY2hh
bmdlZCBsb2NhdGlvbjogdGhleSBhcmUgYm90aCBnb3QgZnJvbSBkZWVwRmluZEZvY3VzYWJsZU5v
ZGVJbkRpcmVjdGlvbiwKICAgICAgICBhbmQgcGFzc2VkIGluIGEgcmVjdXJzaXZlIGNhbGwgdG8g
ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiB2aWEgdGhlIGNhbmRpZGF0ZVBhcmVudAogICAg
ICAgIHZhcmlhYmxlIChvcHRpb25hbCBwYXJhbWV0ZXIpLiBZZXQgb24gZGVlcEZpbmRGb2N1c2Fi
bGVOb2RlSW5EaXJlY3Rpb24gbWV0aG9kLCB0aGUgbmVlZCBmb3IgdGhlCiAgICAgICAgJ2ZvY3Vz
Q2FuZGlkYXRlQ29weS5kaXN0YW5jZScgdmFyaWFibGUgd2FzIHJlbW92ZWQsIG1ha2luZyB0aGUg
Y29kZSBtdWNoIGNsZWFuZXIuCgogICAgICAgIE5vIGJlaGF2aW91ciBjaGFuZ2UgYXQgdGhpcyBw
b2ludC4gTW9zdGx5IG1vdmluZyBjb2RlIGFyb3VuZCB0byB0aGUgcGxhY2UKICAgICAgICB3aGVy
ZSBpdCBzaG91bGQgbGl2ZSBpbi4KCiAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6
CiAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9u
YWxseSk6CiAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgog
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24pOgogICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNh
YmxlTm9kZUluRGlyZWN0aW9uKToKICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CiAg
ICAgICAgKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKICAgICAgICAoV2ViQ29yZTo6ZGlz
dGFuY2VEYXRhRm9yTm9kZSk6CiAgICAgICAgKFdlYkNvcmU6OnJlbmRlclJlY3RSZWxhdGl2ZVRv
Um9vdERvY3VtZW50KToKICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKLS0tCiBX
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzQgKysrKysrKysr
KwogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgICAyICstCiBX
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCAgICAgICAgICB8ICAxMDMgKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCAgICAg
ICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCAgICAg
ICAgfCAgIDU0ICsrKysrKy0tLS0tLS0tLS0KIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5oICAgICAgICAgIHwgICAgMiArLQogNiBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygr
KSwgNzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2NGI2YjBmLi5jOThhZTU0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEw
LTAzLTIyICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFBhdGNoIGJ5IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjog
SW5pdGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29udHJvbGxlci5jcHAgYW5kIFNw
YXRpYWxOYXZpZ2F0aW9uLmNwcAorCisgICAgICAgIFdlYkNvcmU6OmRpc3RhbmNlSW5EaXJlY3Rp
b24gbWV0aG9kIHdhcyBoYW5kbGluZyBtdWNoIG9mIHRoZSBsb2dpYyBub3QKKyAgICAgICAgc3Ry
aWN0bHkgb25seSByZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVpc2l0
aW9uLiBUaGlzCisgICAgICAgIG1ldGhvZCB3YXMgc2ltcGxpZmllZCBhbmQgcmVuYW1lZCB0byAn
V2ViQ29yZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZScuCisgICAgICAgIFRoZSBsYXR0ZXIgaXMgbm93
IHJlc3BvbnNpYmxlIGZvciBvbmx5IGdldHRpbmcgdGhlIGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQK
KyAgICAgICAgZGF0YSwgd2hpbGUgYWxsIGFzc2lnbmVtZW50IGxvZ2ljIHByZXZpb3VzbHkgZGlz
dGFuY2VJbkRpcmVjdGlvbiBtZXRob2QKKyAgICAgICAgd2FzIG1vdmVkIHBsYWNlIHRvIHVwZGF0
ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIuCisKKyAgICAgICAgUGFyZW50IGRvY3VtZW50IGRpc3Rh
bmNlIGFuZCBhbGlnbm1lbnQgYWNxdWlzaXRpb25zLCBvbiB0aGVpciB0dXJucywgaGF2ZQorICAg
ICAgICBhbHNvIGNoYW5nZWQgbG9jYXRpb246IHRoZXkgYXJlIGJvdGggZ290IGZyb20gZGVlcEZp
bmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24sCisgICAgICAgIGFuZCBwYXNzZWQgaW4gYSByZWN1
cnNpdmUgY2FsbCB0byBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIHZpYSB0aGUgY2FuZGlk
YXRlUGFyZW50CisgICAgICAgIHZhcmlhYmxlIChvcHRpb25zIHBhcmFtZXRlcikuIFlldCBvbiBk
ZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiBtZXRob2QsIHRoZSBuZWVkIGZvciB0aGUK
KyAgICAgICAgJ2ZvY3VzQ2FuZGlkYXRlQ29weS5kaXN0YW5jZScgdmFyaWFibGUgd2FzIHJlbW92
ZWQsIG1ha2luZyB0aGUgY29kZSBtdWNoIGNsZWFuZXIuCisKKyAgICAgICAgTm8gYmVoYXZpb3Vy
IGNoYW5nZSBhdCB0aGlzIHBvaW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJvdW5kIHRvIHRoZSBw
bGFjZQorICAgICAgICB3aGVyZSBpdCBzaG91bGQgbGl2ZSBpbi4KKworICAgICAgICAqIHBhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6
YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1
c0NhbmRpZGF0ZUlmQ2xvc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6
ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0Nv
bnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKiBw
YWdlL0ZvY3VzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5kZXJSZWN0UmVsYXRpdmVUb1Jvb3REb2N1bWVudCk6CisgICAgICAgICogcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorCiAyMDEwLTAzLTIyICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ4Y2UzMzEu
LmY5NWE2ZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMTYxLDcgKzExNjEsNyBAQAogCQk1REZFOEY1NjBEMTY0NzdCMDA3NkU5MzcgLyogU2NoZWR1
bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwICovOyB9
OwogCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EzNzhCQjBEMTVGNjQy
MDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmggKi87IH07CiAJCTYyNkNERTBFMTE0MDQyNEMw
MDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MjZDREUwQzExNDA0MjRDMDAxRTVBNjggLyogU3BhdGlh
bE5hdmlnYXRpb24uY3BwICovOyB9OwotCQk2MjZDREUwRjExNDA0MjRDMDAxRTVBNjggLyogU3Bh
dGlhbE5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDYyNkNERTBEMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5oICov
OyB9OworCQk2MjZDREUwRjExNDA0MjRDMDAxRTVBNjggLyogU3BhdGlhbE5hdmlnYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyNkNERTBEMTE0
MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYzMTg5QUUzMEU4M0EzMzMwMDAxMkU0MSAv
KiBOb2RlUmFyZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDYzMTg5QUUyMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk2M0Q3QjMyRDBFNzhDRDNGMDBGNzYx
N0MgLyogTm9kZVJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2M0Q3QjMyQzBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxl
LmggKi87IH07CiAJCTYzRjVENEY3MEU4QzRCNzEwMEMwQkQwNCAvKiBFbGVtZW50UmFyZURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzN0I3QURF
MEU4NzY3QjgwMEUzMjE5NCAvKiBFbGVtZW50UmFyZURhdGEuaCAqLzsgfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKaW5kZXggODQ4NGEyMC4uMTBmYzg0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAKQEAgLTM0Miw0NiArMzQyLDc3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNl
Rm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9z
ZXIoTm9kZSogZm9jdXNlZE5vZGUsIE5vZGUqIGNhbmRpZGF0ZSwgbG9uZyBsb25nIGRpc3RhbmNl
LCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKQorLy8gRklYTUU6IE1ha2Ug
dGhpcyBtZXRob2QgbW9yZSBtb2R1bGFyLCBhbmQgc2ltcGxlciB0byB1bmRlcnN0YW5kIGFuZCBt
YWludGFpbi4KK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSog
Zm9jdXNlZE5vZGUsIEZvY3VzQ2FuZGlkYXRlIGNhbmRpZGF0ZSwgRm9jdXNDYW5kaWRhdGUmIGNs
b3Nlc3QpCiB7Ci0gICAgLy8gQmFpbCBvdXQgaWYgfGRpc3RhbmNlfCBpcyBiaWdnZXIgdGhhbiB0
aGUgY3VycmVudCBjbG9zZXN0IGNhbmRpZGF0ZS4KLSAgICBpZiAoZGlzdGFuY2UgPj0gY2xvc2Vz
dEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNlKQorICAgIGJvb2wgc2FtZURvY3VtZW50ID0gY2FuZGlk
YXRlLmRvY3VtZW50KCkgPT0gY2xvc2VzdC5kb2N1bWVudCgpOworICAgIGlmIChzYW1lRG9jdW1l
bnQpIHsKKyAgICAgICAgaWYgKGNsb3Nlc3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVu
dAorICAgICAgICAgICAgfHwgKGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5h
bGlnbm1lbnQgPiBjbG9zZXN0LnBhcmVudEFsaWdubWVudCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfSBlbHNlIGlmIChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQK
KyAgICAgICAgICAgICAgICYmIChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUu
YWxpZ25tZW50ID4gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQpKQogICAgICAgICByZXR1cm47CiAK
LSAgICAvLyBJZiB8Zm9jdXNlZE5vZGV8IGFuZCB8Y2FuZGlkYXRlfCBhcmUgaW4gdGhlIHNhbWUg
ZG9jdW1lbnQgQU5ECi0gICAgLy8gY3VycmVudCB8Y2xvc2VzdEZvY3VzQ2FuZGlkYWR0ZXwgaXMg
bm90IGluIGFuIHtpfWZyYW1lIHRoYXQgaXMKLSAgICAvLyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1
c2VkLgotICAgIGlmIChmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUtPmRvY3Vt
ZW50KCkKLSAgICAgICAgJiYgZGlzdGFuY2UgPCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUucGFyZW50
RGlzdGFuY2UpIHsKLSAgICAgICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUgPSBjYW5kaWRh
dGU7Ci0gICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSA9IGRpc3RhbmNlOwot
ICAgICAgICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUucGFyZW50RGlzdGFuY2UgPSBtYXhEaXN0YW5j
ZSgpOwotICAgIH0gZWxzZSBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgIT0gY2FuZGlkYXRl
LT5kb2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSB8Zm9jdXNlZE5vZGV8IGlzIGluIGFu
IGlubmVyIGRvY3VtZW50IGFuZCB0aGUgfGNhbmRpZGF0ZXwgaXMKLSAgICAgICAgLy8gaW4gYSBk
aWZmZXJlbnQgZG9jdW1lbnQsIHdlIG9ubHkgY29uc2lkZXIgdG8gY2hhbmdlIGZvY3VzIGlmIHRo
ZXJlIGlzCi0gICAgICAgIC8vIG5vdCBhbm90aGVyIGFscmVhZHkgZ29vZCBmb2N1c2FibGUgY2Fu
ZGlkYXRlIGluIHRoZSBzYW1lIGRvY3VtZW50IGFzCi0gICAgICAgIC8vIHxmb2N1c2VkTm9kZXwu
Ci0gICAgICAgIGlmICghKChpc0luUm9vdERvY3VtZW50KGNhbmRpZGF0ZSkgJiYgIWlzSW5Sb290
RG9jdW1lbnQoZm9jdXNlZE5vZGUpKQotICAgICAgICAgICAgJiYgZm9jdXNlZE5vZGUtPmRvY3Vt
ZW50KCkgPT0gY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRvY3VtZW50KCkpKSB7Ci0gICAgICAgICAg
ICBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUubm9kZSA9IGNhbmRpZGF0ZTsKLSAgICAgICAgICAgIGNs
b3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICB9CisgICAg
aWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgIT0gTm9uZQorICAgICAgICB8fCAoIWNsb3Nlc3QuaXNO
dWxsKCkgJiYgY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgPj0gY2FuZGlkYXRlLmFsaWdubWVudAor
ICAgICAgICAmJiBjbG9zZXN0LmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLmRvY3VtZW50KCkpKSB7
CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdyBpbiBhbiBoaWdoZXIgcHJlY2VkZW50IGNhc2Us
IGxldHMgcmVzZXQgdGhlIGN1cnJlbnQgfGNsb3Nlc3R8J3MKKyAgICAgICAgLy8gfGRpc3RhbmNl
fCBzbyB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhhbiBhbnkgcmVzdWx0IHdlIHdpbGwgZ2V0
IGZyb20KKyAgICAgICAgLy8gfHNwYXRpYWxEaXN0YW5jZSgpfCAoc2VlIGJlbG93KS4KKyAgICAg
ICAgaWYgKGNsb3Nlc3QuYWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAg
ICAgJiYgY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50KQorICAg
ICAgICAgICAgY2xvc2VzdC5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisKKyAgICAgICAgY2xv
c2VzdC5hbGlnbm1lbnQgPSBjYW5kaWRhdGUuYWxpZ25tZW50OworICAgIH0KKworICAgIC8vIEJh
aWwgb3V0IGlmIGNhbmRpZGF0ZSdzIGRpc3RhbmNlIGlzIGJpZ2dlciB0aGFuIHRoZSBjbG9zZXN0
IGNhbmRpZGF0ZSdzIGRpc3RhbmNlLgorICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPj0gY2xv
c2VzdC5kaXN0YW5jZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgfGZvY3VzZWROb2Rl
fCBhbmQgfGNhbmRpZGF0ZXwgYXJlIGluIHRoZSBzYW1lIGRvY3VtZW50IGFuZCBjdXJyZW50Cisg
ICAgLy8gfGNsb3Nlc3R8IGlzIG5vdCBpbiBhbiB7aX1mcmFtZSB0aGF0IGlzIHByZWZlcmFibGUg
dG8gZ2V0IGZvY3VzZWQgLi4uCisgICAgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNh
bmRpZGF0ZS5kb2N1bWVudCgpCisgICAgICAgICYmIGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nl
c3QucGFyZW50RGlzdGFuY2UpCisgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgZWxz
ZSBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgIT0gY2FuZGlkYXRlLmRvY3VtZW50KCkpIHsK
KyAgICAgICAgLy8gSWYgdGhlIHxmb2N1c2VkTm9kZXwgaXMgaW4gYW4gaW5uZXIgZG9jdW1lbnQg
YW5kIHxjYW5kaWRhdGV8IGlzIGluIGEKKyAgICAgICAgLy8gZGlmZmVyZW50IGRvY3VtZW50LCB3
ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBpcyBub3QKKyAgICAgICAg
Ly8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0ZSBpbiB0aGUgc2FtZSBk
b2N1bWVudCBhcyB8Zm9jdXNlZE5vZGV8LgorICAgICAgICBpZiAoISgoaXNJblJvb3REb2N1bWVu
dChjYW5kaWRhdGUubm9kZSkgJiYgIWlzSW5Sb290RG9jdW1lbnQoZm9jdXNlZE5vZGUpKQorICAg
ICAgICAgICAgJiYgZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2xvc2VzdC5kb2N1bWVudCgp
KSkKKyAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAgICAgfQogfQogCi12b2lkIEZv
Y3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihEb2N1bWVudCogZG9j
dW1lbnQsIE5vZGUqIGZvY3VzZWROb2RlLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJv
YXJkRXZlbnQqIGV2ZW50LCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKQor
dm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oRG9jdW1l
bnQqIGRvY3VtZW50LCBOb2RlKiBmb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
LCBLZXlib2FyZEV2ZW50KiBldmVudCwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRp
ZGF0ZSwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZVBhcmVudCkKIHsKICAgICBBU1NF
UlQoZG9jdW1lbnQpOworICAgIEFTU0VSVCghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpICYmICFz
dGF0aWNfY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQqPihjYW5kaWRhdGVQYXJlbnQubm9kZSkp
OwogCi0gICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUgZm9jdXNDYW5k
aWRhdGUgaWYgd2UgZmluZCBhIG5lYXJlciBub2RlLgorICAgIC8vIFdhbGsgYWxsIHRoZSBjaGls
ZCBub2RlcyBhbmQgdXBkYXRlIHxjbG9zZXN0Rm9jdXNDYW5kaWRhdGV8IGlmIHdlIGZpbmQgYSBu
ZWFyZXIgbm9kZS4KICAgICBmb3IgKE5vZGUqIGNhbmRpZGF0ZSA9IGRvY3VtZW50LT5maXJzdENo
aWxkKCk7IGNhbmRpZGF0ZTsgY2FuZGlkYXRlID0gY2FuZGlkYXRlLT50cmF2ZXJzZU5leHROb2Rl
KCkpIHsKICAgICAgICAgLy8gSW5uZXIgZG9jdW1lbnRzIGNhc2UuCisKICAgICAgICAgaWYgKGNh
bmRpZGF0ZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgZGVlcEZpbmRGb2N1
c2FibGVOb2RlSW5EaXJlY3Rpb24oZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSwgZGlyZWN0aW9uLCBl
dmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2FuZGlkYXRl
ICE9IGZvY3VzZWROb2RlICYmIGNhbmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkp
IHsKLSAgICAgICAgICAgIGxvbmcgbG9uZyBkaXN0YW5jZSA9IGRpc3RhbmNlSW5EaXJlY3Rpb24o
Zm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uLCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwot
ICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY2Fu
ZGlkYXRlLCBkaXN0YW5jZSwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKKyAgICAgICAgICAgIEZv
Y3VzQ2FuZGlkYXRlIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOworCisgICAgICAg
ICAgICAvLyBHZXQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBmcm9tIGN1cnJlbnQgY2FuZGlkYXRl
LgorICAgICAgICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rpb24sIGZvY3VzZWROb2Rl
LCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUpOworCisgICAgICAgICAgICAvLyBJZiB8Y2FuZGlkYXRl
UGFyZW50fCBpcyBub3QgTnVsbCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gYSByZWN1cnNpdmUg
Y2FsbAorICAgICAgICAgICAgLy8gZnJvbSBkZWVwRmluZUZvY3VzYWJsZU5vZGVJbkRpcmVjdGlv
biAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lKSwKKyAgICAgICAgICAg
IC8vIGFuZCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9mIHRoZSBpZnJh
bWUgZWxlbWVudCBpdHNlbGYuCisgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVBhcmVudC5pc051
bGwoKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnRBbGln
bm1lbnQgPSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50OworICAgICAgICAgICAgICAgIGN1cnJl
bnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBhcmVudC5kaXN0YW5j
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNs
b3Nlcihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9zZXN0Rm9jdXNDYW5k
aWRhdGUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDAxLDIwICs0MzIsMTIgQEAgdm9pZCBG
b2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqIGZv
Y3VzZWROb2RlLCBOb2RlKgogICAgIGVsc2UgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3Vy
cmVudCB7aX1mcmFtZSBlbGVtZW50IGl0c2VsZiBpcyBhIGdvb2QgY2FuZGlkYXRlCiAgICAgICAg
IC8vIHRvIG1vdmUgZm9jdXMgdG8uIElmIGl0IGlzLCB0aGVuIHdlIHRyYXZlcnNlIGl0cyBpbm5l
ciBub2Rlcy4KLSAgICAgICAgLy8gTGV0cyBwYXNzIGEgY29weSBvZiB0aGUgYmVzdCBjYW5kaWRh
dGUsIHRvIG5vdCBnZXQgZm9vbGVkIGJ5IGEKLSAgICAgICAgLy8gZnJhbWUgd2l0aG91dCBmb2N1
c2FibGUgZWxlbWVudHMuCi0gICAgICAgIEZvY3VzQ2FuZGlkYXRlIGZvY3VzQ2FuZGlkYXRlQ29w
eSA9IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZTsKLSAgICAgICAgbG9uZyBsb25nIGRpc3RhbmNlID0g
ZGlzdGFuY2VJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rpb24sIGZv
Y3VzQ2FuZGlkYXRlQ29weSk7Ci0gICAgICAgIGlmIChkaXN0YW5jZSA8IGZvY3VzQ2FuZGlkYXRl
Q29weS5kaXN0YW5jZSkgewotICAgICAgICAgICAgZm9jdXNDYW5kaWRhdGVDb3B5LnBhcmVudEFs
aWdubWVudCA9IGZvY3VzQ2FuZGlkYXRlQ29weS5hbGlnbm1lbnQ7Ci0gICAgICAgICAgICBmb2N1
c0NhbmRpZGF0ZUNvcHkucGFyZW50RGlzdGFuY2UgPSBkaXN0YW5jZTsKLQotICAgICAgICAgICAg
ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihpbm5lckRvY3VtZW50LCBmb2N1c2VkTm9kZSwg
ZGlyZWN0aW9uLCBldmVudCwgZm9jdXNDYW5kaWRhdGVDb3B5KTsKLQotICAgICAgICAgICAgLy8g
SWYgd2UgcmVhbGx5IGhhdmUgYW4gaW5uZXIgY2xvc2VyIGZvY3VzIGNhbmRpZGF0ZSBub2RlLCB0
YWtlIGl0LgotICAgICAgICAgICAgaWYgKGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5ub2RlICE9IGZv
Y3VzQ2FuZGlkYXRlQ29weS5ub2RlKQotICAgICAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRp
ZGF0ZSA9IGZvY3VzQ2FuZGlkYXRlQ29weTsKLSAgICAgICAgfQorICAgICAgICBGb2N1c0NhbmRp
ZGF0ZSBjYW5kaWRhdGVQYXJlbnQgPSBGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOworICAgICAg
ICBkaXN0YW5jZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZVBh
cmVudCk7CisKKyAgICAgICAgLy8gRklYTUU6IFdoYXQgYWJvdXQgYWxpZ21lbnQ/CisgICAgICAg
IGlmIChjYW5kaWRhdGVQYXJlbnQuZGlzdGFuY2UgPCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUuZGlz
dGFuY2UpCisgICAgICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGlubmVyRG9j
dW1lbnQsIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGUsIGNhbmRpZGF0ZVBhcmVudCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmggYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKaW5k
ZXggNzU1OTFjNy4uMWJlY2Q3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBGb2N1c0NvbnRyb2xsZXJfaAogCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rp
b24uaCIKKyNpbmNsdWRlICJTcGF0aWFsTmF2aWdhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtMzgsNyArMzksNiBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7
CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKLXN0cnVjdCBGb2N1c0NhbmRpZGF0ZTsKIAogY2xh
c3MgRm9jdXNDb250cm9sbGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKQEAgLTYz
LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHko
Rm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqKTsKICAgICBib29sIGFkdmFuY2VGb2N1c0lu
RG9jdW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIGJvb2wgaW5pdGlh
bEZvY3VzKTsKIAotICAgIHZvaWQgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihEb2N1bWVu
dCosIE5vZGUqLCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRl
Jik7CisgICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiwgTm9k
ZSosIEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmLCBjb25z
dCBGb2N1c0NhbmRpZGF0ZSYgYyA9IEZvY3VzQ2FuZGlkYXRlKCkpOwogICAgIHZvaWQgZGVlcEZp
bmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSosIE5vZGUqLCBGb2N1c0RpcmVjdGlvbiwg
S2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRlJik7CiAKICAgICBQYWdlKiBtX3BhZ2U7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIvV2ViQ29yZS9w
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCA4NmM5YzVkLi4wMzNkMjJhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTQ3LDE1ICs0NywxOSBAQCBzdGF0aWMgYm9vbCBh
cmVSZWN0c1BhcnRpYWxseUFsaWduZWQoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJlY3QmLCBj
b25zdCBJbnRSZQogc3RhdGljIGJvb2wgaXNSZWN0SW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24s
IGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jik7CiBzdGF0aWMgdm9pZCBkZWZsYXRlSWZP
dmVybGFwcGVkKEludFJlY3QmLCBJbnRSZWN0Jik7CiAKLWxvbmcgbG9uZyBkaXN0YW5jZUluRGly
ZWN0aW9uKE5vZGUqIHN0YXJ0LCBOb2RlKiBkZXN0LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24s
IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCit2b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBzdGFydCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRp
ZGF0ZSkKIHsKICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyID0gc3RhcnQtPnJlbmRlcmVy
KCk7Ci0gICAgaWYgKCFzdGFydFJlbmRlcikKLSAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7
CisgICAgaWYgKCFzdGFydFJlbmRlcikgeworICAgICAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBt
YXhEaXN0YW5jZSgpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0
KiBkZXN0UmVuZGVyID0gZGVzdC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWRlc3RSZW5kZXIpCi0g
ICAgICAgIHJldHVybiBtYXhEaXN0YW5jZSgpOworICAgIFJlbmRlck9iamVjdCogZGVzdFJlbmRl
ciA9IGNhbmRpZGF0ZS5ub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghZGVzdFJlbmRlcikgewor
ICAgICAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOworICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgSW50UmVjdCBjdXJSZWN0ID0gcmVuZGVyUmVjdFJlbGF0aXZlVG9S
b290RG9jdW1lbnQoc3RhcnRSZW5kZXIpOwogICAgIEludFJlY3QgdGFyZ2V0UmVjdCAgPSByZW5k
ZXJSZWN0UmVsYXRpdmVUb1Jvb3REb2N1bWVudChkZXN0UmVuZGVyKTsKQEAgLTY1LDM5ICs2OSwy
MSBAQCBsb25nIGxvbmcgZGlzdGFuY2VJbkRpcmVjdGlvbihOb2RlKiBzdGFydCwgTm9kZSogZGVz
dCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLAogICAgIGRlZmxhdGVJZk92ZXJsYXBwZWQoY3Vy
UmVjdCwgdGFyZ2V0UmVjdCk7CiAKICAgICBpZiAoY3VyUmVjdC5pc0VtcHR5KCkgfHwgdGFyZ2V0
UmVjdC5pc0VtcHR5KCkKLSAgICAgICAgfHwgdGFyZ2V0UmVjdC54KCkgPCAwIHx8IHRhcmdldFJl
Y3QueSgpIDwgMCkKLSAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7CisgICAgICAgIHx8IHRh
cmdldFJlY3QueCgpIDwgMCB8fCB0YXJnZXRSZWN0LnkoKSA8IDApIHsKKyAgICAgICAgY2FuZGlk
YXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAot
ICAgIGlmICghaXNSZWN0SW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0
KSkKLSAgICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7CisgICAgaWYgKCFpc1JlY3RJbkRpcmVj
dGlvbihkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpKSB7CisgICAgICAgIGNhbmRpZGF0
ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICAvLyBUaGUgZGlzdGFuY2UgYmV0d2VlbiB0d28gbm9kZXMgaXMgbm90IHRvIGJlIGNvbnNpZGVy
ZWQgYWxvbmUgd2hlbiBldmFsdWF0aW5nL2xvb2tpbmcKICAgICAvLyBmb3IgdGhlIGJlc3QgZm9j
dXMgY2FuZGlkYXRlIG5vZGUuIEFsaWdubWVudCBvZiByZWN0cyBjYW4gYmUgYWxzbyBhIGdvb2Qg
cG9pbnQgdG8gYmUKICAgICAvLyBjb25zaWRlcmVkIGluIG9yZGVyIHRvIG1ha2UgdGhlIGFsZ29y
aXRobSB0byBiZWhhdmlvciBpbiBhIG1vcmUgaW50dWl0aXZlIHdheS4KLSAgICBSZWN0c0FsaWdu
bWVudCBhbGlnbm1lbnQgPSBhbGlnbm1lbnRGb3JSZWN0cyhkaXJlY3Rpb24sIGN1clJlY3QsIHRh
cmdldFJlY3QpOwotCi0gICAgYm9vbCBzYW1lRG9jdW1lbnQgPSBkZXN0LT5kb2N1bWVudCgpID09
IGNhbmRpZGF0ZS5kb2N1bWVudCgpOwotICAgIGlmIChzYW1lRG9jdW1lbnQpIHsKLSAgICAgICAg
aWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBhbGlnbm1lbnQgfHwgKGNhbmRpZGF0ZS5wYXJlbnRB
bGlnbm1lbnQgJiYgYWxpZ25tZW50ID4gY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCkpCi0gICAg
ICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKLSAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS5h
bGlnbm1lbnQgPiBhbGlnbm1lbnQgJiYgKGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgJiYgYWxp
Z25tZW50ID4gY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCkpCi0gICAgICAgIHJldHVybiBtYXhE
aXN0YW5jZSgpOwotCi0gICAgLy8gRklYTUVfdG9uaWtpdG9vOiBzaW1wbGlmeSB0aGUgbG9naWMg
aGVyZSAhCi0gICAgaWYgKGFsaWdubWVudCAhPSBOb25lCi0gICAgICAgIHx8ICghY2FuZGlkYXRl
LmlzTnVsbCgpICYmIGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPj0gYWxpZ25tZW50Ci0gICAg
ICAgICYmIGNhbmRpZGF0ZS5kb2N1bWVudCgpID09IGRlc3QtPmRvY3VtZW50KCkpKSB7Ci0KLSAg
ICAgICAgLy8gSWYgd2UgYXJlIG5vdyBpbiBhbiBoaWdoZXIgcHJlY2VkZW50IGNhc2UsIGxldHMg
cmVzZXQgdGhlIGN1cnJlbnQgfGNhbmRpZGF0ZXwncwotICAgICAgICAvLyB8ZGlzdGFuY2V8IHNv
IHdlIGZvcmNlIGl0IHRvIGJlIGJpZ2dlciB0aGFuIHRoZSByZXN1bHQgd2Ugd2lsbCBnZXQgZnJv
bQotICAgICAgICAvLyB8c3BhdGlhbERpc3RhbmNlfCAoc2VlIGJlbG93KS4KLSAgICAgICAgaWYg
KGNhbmRpZGF0ZS5hbGlnbm1lbnQgPCBhbGlnbm1lbnQgJiYgY2FuZGlkYXRlLnBhcmVudEFsaWdu
bWVudCA8IGFsaWdubWVudCkKLSAgICAgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERp
c3RhbmNlKCk7Ci0KLSAgICAgICAgY2FuZGlkYXRlLmFsaWdubWVudCA9IGFsaWdubWVudDsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gc3BhdGlhbERpc3RhbmNlKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFy
Z2V0UmVjdCk7CisgICAgY2FuZGlkYXRlLmFsaWdubWVudCA9IGFsaWdubWVudEZvclJlY3RzKGRp
cmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCk7CisgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0g
c3BhdGlhbERpc3RhbmNlKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCk7CiB9CiAKIC8v
IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGJlaGF2ZSBjb3JyZWN0bHkgd2l0aCB0cmFu
c2Zvcm1lZCBmcmFtZXMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uaCBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCmluZGV4IDdjMTgzZGYuLjkw
ZmYxY2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCisrKyBi
L1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCkBAIC0xMTgsNyArMTE4LDcgQEAgc3Ry
dWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBSZWN0c0FsaWdubWVudCBwYXJlbnRBbGlnbm1lbnQ7
CiB9OwogCi1sb25nIGxvbmcgZGlzdGFuY2VJbkRpcmVjdGlvbihOb2RlKiwgTm9kZSosIEZvY3Vz
RGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYpOwordm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgTm9kZSogc3RhcnQsIEZvY3VzQ2FuZGlkYXRlJiBjYW5k
aWRhdGUpOwogYm9vbCBzY3JvbGxJbkRpcmVjdGlvbihGcmFtZSosIEZvY3VzRGlyZWN0aW9uKTsK
IHZvaWQgc2Nyb2xsSW50b1ZpZXcoRWxlbWVudCopOwogYm9vbCBoYXNPZmZzY3JlZW5SZWN0KE5v
ZGUqKTsKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="commit-queue"
          id="34655"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51940</attachid>
            <date>2010-03-29 11:35:40 -0700</date>
            <delta_ts>2010-04-11 20:03:40 -0700</delta_ts>
            <desc>(committed in r57061) patch_2 - v4 - code simplification</desc>
            <filename>0001-2010-03-29-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>18657</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA2ZmI2MDMzMWIxMzM1ZDU1ZDZiNGZmMWE2YmYxNmUwYjIwODg3ZjZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogU2F0LCAyMCBNYXIgMjAxMCAxODoxMjo0MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIw
MTAtMDMtMjkgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAgICAgICAgUGF0Y2ggYnkgQW50b25pbyBHb21l
cyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogSW5p
dGlhbCBjb2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29udHJvbGxlci5jcHAgYW5kIFNwYXRp
YWxOYXZpZ2F0aW9uLmNwcAoKICAgICAgICBXZWJDb3JlOjpkaXN0YW5jZUluRGlyZWN0aW9uIG1l
dGhvZCB3YXMgaGFuZGxpbmcgbXVjaCBvZiB0aGUgbG9naWMgbm90CiAgICAgICAgc3RyaWN0bHkg
b25seSByZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVpc2l0aW9uLiBU
aGlzCiAgICAgICAgbWV0aG9kIHdhcyBzaW1wbGlmaWVkIGFuZCByZW5hbWVkIHRvICdXZWJDb3Jl
OjpkaXN0YW5jZURhdGFGb3JOb2RlJy4KICAgICAgICBUaGUgbGF0dGVyIGlzIG5vdyByZXNwb25z
aWJsZSBmb3Igb25seSBnZXR0aW5nIHRoZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50CiAgICAgICAg
ZGF0YSwgd2hpbGUgYWxsIGFzc2lnbmVtZW50IGxvZ2ljIHByZXZpb3VzbHkgZGlzdGFuY2VJbkRp
cmVjdGlvbiBtZXRob2QKICAgICAgICB3YXMgbW92ZWQgcGxhY2UgdG8gdXBkYXRlRm9jdXNDYW5k
aWRhdGVJZkNsb3Nlci4KCiAgICAgICAgUGFyZW50IGRvY3VtZW50IGRpc3RhbmNlIGFuZCBhbGln
bm1lbnQgYWNxdWlzaXRpb25zLCBvbiB0aGVpciB0dXJucywgaGF2ZQogICAgICAgIGFsc28gY2hh
bmdlZCBsb2NhdGlvbjogdGhleSBhcmUgYm90aCBnb3QgZnJvbSBkZWVwRmluZEZvY3VzYWJsZU5v
ZGVJbkRpcmVjdGlvbiwKICAgICAgICBhbmQgcGFzc2VkIGluIGEgcmVjdXJzaXZlIGNhbGwgdG8g
ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiB2aWEgdGhlIGNhbmRpZGF0ZVBhcmVudAogICAg
ICAgIHZhcmlhYmxlIChvcHRpb25hbCBwYXJhbWV0ZXIpLiBZZXQgb24gZGVlcEZpbmRGb2N1c2Fi
bGVOb2RlSW5EaXJlY3Rpb24gbWV0aG9kLCB0aGUKICAgICAgICBuZWVkIGZvciB0aGUgJ2ZvY3Vz
Q2FuZGlkYXRlQ29weScgdmFyaWFibGUgd2FzIHJlbW92ZWQsIG1ha2luZyB0aGUgY29kZSBtdWNo
IGNsZWFuZXIuCgogICAgICAgIE5vIGJlaGF2aW91ciBjaGFuZ2UgYXQgdGhpcyBwb2ludC4gTW9z
dGx5IG1vdmluZyBjb2RlIGFyb3VuZCB0byB0aGUgcGxhY2UKICAgICAgICB3aGVyZSBpdCBzaG91
bGQgbGl2ZSBpbi4KCiAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CiAgICAgICAg
KFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6CiAg
ICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgogICAgICAgIChX
ZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgog
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUlu
RGlyZWN0aW9uKToKICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CiAgICAgICAgKiBw
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VEYXRh
Rm9yTm9kZSk6CiAgICAgICAgKFdlYkNvcmU6OnJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3Vt
ZW50KToKICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKLS0tCiBXZWJDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzQgKysrKysrKysrKwogV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgICAyICstCiBXZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcCAgICAgICAgICB8ICAxMDMgKysrKysrKysrKysrKysrKysr
LS0tLS0tLS0tLS0KIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCAgICAgICAgICAgIHwg
ICAgNCArLQogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCAgICAgICAgfCAgIDU0
ICsrKysrKy0tLS0tLS0tLS0KIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oICAgICAg
ICAgIHwgICAgMiArLQogNiBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgNzggZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhY2JjZTdmLi5iYmI5OTUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEwLTAzLTI5ICBB
bnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPHRvbmlr
aXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogSW5pdGlhbCBj
b2RlIHNpbXBsaWZpY2F0aW9uIGluIEZvY3VzQ29udHJvbGxlci5jcHAgYW5kIFNwYXRpYWxOYXZp
Z2F0aW9uLmNwcAorCisgICAgICAgIFdlYkNvcmU6OmRpc3RhbmNlSW5EaXJlY3Rpb24gbWV0aG9k
IHdhcyBoYW5kbGluZyBtdWNoIG9mIHRoZSBsb2dpYyBub3QKKyAgICAgICAgc3RyaWN0bHkgb25s
eSByZWxhdGVkIHRvIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVzIGFjcXVpc2l0aW9uLiBUaGlz
CisgICAgICAgIG1ldGhvZCB3YXMgc2ltcGxpZmllZCBhbmQgcmVuYW1lZCB0byAnV2ViQ29yZTo6
ZGlzdGFuY2VEYXRhRm9yTm9kZScuCisgICAgICAgIFRoZSBsYXR0ZXIgaXMgbm93IHJlc3BvbnNp
YmxlIGZvciBvbmx5IGdldHRpbmcgdGhlIGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQKKyAgICAgICAg
ZGF0YSwgd2hpbGUgYWxsIGFzc2lnbmVtZW50IGxvZ2ljIHByZXZpb3VzbHkgZGlzdGFuY2VJbkRp
cmVjdGlvbiBtZXRob2QKKyAgICAgICAgd2FzIG1vdmVkIHBsYWNlIHRvIHVwZGF0ZUZvY3VzQ2Fu
ZGlkYXRlSWZDbG9zZXIuCisKKyAgICAgICAgUGFyZW50IGRvY3VtZW50IGRpc3RhbmNlIGFuZCBh
bGlnbm1lbnQgYWNxdWlzaXRpb25zLCBvbiB0aGVpciB0dXJucywgaGF2ZQorICAgICAgICBhbHNv
IGNoYW5nZWQgbG9jYXRpb246IHRoZXkgYXJlIGJvdGggZ290IGZyb20gZGVlcEZpbmRGb2N1c2Fi
bGVOb2RlSW5EaXJlY3Rpb24sCisgICAgICAgIGFuZCBwYXNzZWQgaW4gYSByZWN1cnNpdmUgY2Fs
bCB0byBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIHZpYSB0aGUgY2FuZGlkYXRlUGFyZW50
CisgICAgICAgIHZhcmlhYmxlIChvcHRpb25zIHBhcmFtZXRlcikuIFlldCBvbiBkZWVwRmluZEZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbiBtZXRob2QsIHRoZSBuZWVkIGZvciB0aGUKKyAgICAgICAg
J2ZvY3VzQ2FuZGlkYXRlQ29weScgdmFyaWFibGUgd2FzIHJlbW92ZWQsIG1ha2luZyB0aGUgY29k
ZSBtdWNoIGNsZWFuZXIuCisKKyAgICAgICAgTm8gYmVoYXZpb3VyIGNoYW5nZSBhdCB0aGlzIHBv
aW50LiBNb3N0bHkgbW92aW5nIGNvZGUgYXJvdW5kIHRvIHRoZSBwbGFjZQorICAgICAgICB3aGVy
ZSBpdCBzaG91bGQgbGl2ZSBpbi4KKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0
aW9uYWxseSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJ
bkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5k
Rm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZGlzdGFuY2VEYXRhRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJSZWN0
UmVsYXRpdmVUb1Jvb3REb2N1bWVudCk6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5oOgorCiAyMDEwLTAzLTI4ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODc3YWJmOC4uMTU4YjZiMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNjEsNyArMTE2
MSw3IEBACiAJCTVERkU4RjU2MEQxNjQ3N0IwMDc2RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMzc4QkEw
RDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5jcHAgKi87IH07CiAJCTVERkU4RjU3
MEQxNjQ3N0MwMDc2RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBT
Y2hlZHVsZWRBY3Rpb24uaCAqLzsgfTsKIAkJNjI2Q0RFMEUxMTQwNDI0QzAwMUU1QTY4IC8qIFNw
YXRpYWxOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDYyNkNERTBDMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5j
cHAgKi87IH07Ci0JCTYyNkNERTBGMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjI2Q0RF
MEQxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmggKi87IH07CisJCTYyNkNE
RTBGMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjI2Q0RFMEQxMTQwNDI0QzAwMUU1QTY4
IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNjJDRDMyNTkxMTU3RTU3QzAwNjNCMEE3IC8qIEN1c3RvbUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyQ0Qz
MjU2MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5jcHAgKi87IH07CiAJCTYyQ0QzMjVB
MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjJDRDMyNTcxMTU3RTU3QzAwNjNCMEE3IC8qIEN1c3Rv
bUV2ZW50LmggKi87IH07CiAJCTYzMTg5QUUzMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTg5
QUUyMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9ICgpOyB9OyB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA4NDg0YTIw
Li5jNTAyYmZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMzQyLDQ2ICszNDIsNzcg
QEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgTm9k
ZSogY2FuZGlkYXRlLCBsb25nIGxvbmcgZGlzdGFuY2UsIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0
Rm9jdXNDYW5kaWRhdGUpCisvLyBGSVhNRTogTWFrZSB0aGlzIG1ldGhvZCBtb3JlIG1vZHVsYXIs
IGFuZCBzaW1wbGVyIHRvIHVuZGVyc3RhbmQgYW5kIG1haW50YWluLgorc3RhdGljIHZvaWQgdXBk
YXRlRm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgY29uc3QgRm9jdXND
YW5kaWRhdGUmIGNhbmRpZGF0ZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpCiB7Ci0gICAgLy8g
QmFpbCBvdXQgaWYgfGRpc3RhbmNlfCBpcyBiaWdnZXIgdGhhbiB0aGUgY3VycmVudCBjbG9zZXN0
IGNhbmRpZGF0ZS4KLSAgICBpZiAoZGlzdGFuY2UgPj0gY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRp
c3RhbmNlKQorICAgIGJvb2wgc2FtZURvY3VtZW50ID0gY2FuZGlkYXRlLmRvY3VtZW50KCkgPT0g
Y2xvc2VzdC5kb2N1bWVudCgpOworICAgIGlmIChzYW1lRG9jdW1lbnQpIHsKKyAgICAgICAgaWYg
KGNsb3Nlc3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAgICAgfHwg
KGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0
LnBhcmVudEFsaWdubWVudCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChj
bG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKKyAgICAgICAgICAgICAgICYm
IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2Vz
dC5wYXJlbnRBbGlnbm1lbnQpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZiB8Zm9jdXNl
ZE5vZGV8IGFuZCB8Y2FuZGlkYXRlfCBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgQU5ECi0gICAg
Ly8gY3VycmVudCB8Y2xvc2VzdEZvY3VzQ2FuZGlkYWR0ZXwgaXMgbm90IGluIGFuIHtpfWZyYW1l
IHRoYXQgaXMKLSAgICAvLyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkLgotICAgIGlmIChmb2N1
c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUtPmRvY3VtZW50KCkKLSAgICAgICAgJiYg
ZGlzdGFuY2UgPCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUucGFyZW50RGlzdGFuY2UpIHsKLSAgICAg
ICAgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLm5vZGUgPSBjYW5kaWRhdGU7Ci0gICAgICAgIGNsb3Nl
c3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICBjbG9zZXN0Rm9j
dXNDYW5kaWRhdGUucGFyZW50RGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwotICAgIH0gZWxzZSBp
ZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgIT0gY2FuZGlkYXRlLT5kb2N1bWVudCgpKSB7Ci0g
ICAgICAgIC8vIElmIHRoZSB8Zm9jdXNlZE5vZGV8IGlzIGluIGFuIGlubmVyIGRvY3VtZW50IGFu
ZCB0aGUgfGNhbmRpZGF0ZXwgaXMKLSAgICAgICAgLy8gaW4gYSBkaWZmZXJlbnQgZG9jdW1lbnQs
IHdlIG9ubHkgY29uc2lkZXIgdG8gY2hhbmdlIGZvY3VzIGlmIHRoZXJlIGlzCi0gICAgICAgIC8v
IG5vdCBhbm90aGVyIGFscmVhZHkgZ29vZCBmb2N1c2FibGUgY2FuZGlkYXRlIGluIHRoZSBzYW1l
IGRvY3VtZW50IGFzCi0gICAgICAgIC8vIHxmb2N1c2VkTm9kZXwuCi0gICAgICAgIGlmICghKChp
c0luUm9vdERvY3VtZW50KGNhbmRpZGF0ZSkgJiYgIWlzSW5Sb290RG9jdW1lbnQoZm9jdXNlZE5v
ZGUpKQotICAgICAgICAgICAgJiYgZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2xvc2VzdEZv
Y3VzQ2FuZGlkYXRlLmRvY3VtZW50KCkpKSB7Ci0gICAgICAgICAgICBjbG9zZXN0Rm9jdXNDYW5k
aWRhdGUubm9kZSA9IGNhbmRpZGF0ZTsKLSAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRpZGF0
ZS5kaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICB9CisgICAgaWYgKGNhbmRpZGF0ZS5hbGln
bm1lbnQgIT0gTm9uZQorICAgICAgICB8fCAoY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgPj0gY2Fu
ZGlkYXRlLmFsaWdubWVudAorICAgICAgICAmJiBjbG9zZXN0LmRvY3VtZW50KCkgPT0gY2FuZGlk
YXRlLmRvY3VtZW50KCkpKSB7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdyBpbiBhbiBoaWdo
ZXIgcHJlY2VkZW50IGNhc2UsIGxldHMgcmVzZXQgdGhlIGN1cnJlbnQgY2xvc2VzdCdzCisgICAg
ICAgIC8vIGRpc3RhbmNlIHNvIHdlIGZvcmNlIGl0IHRvIGJlIGJpZ2dlciB0aGFuIGFueSByZXN1
bHQgd2Ugd2lsbCBnZXQgZnJvbQorICAgICAgICAvLyBzcGF0aWFsRGlzdGFuY2UoKS4KKyAgICAg
ICAgaWYgKGNsb3Nlc3QuYWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudAorICAgICAgICAg
ICAgJiYgY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50KQorICAg
ICAgICAgICAgY2xvc2VzdC5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisKKyAgICAgICAgY2xv
c2VzdC5hbGlnbm1lbnQgPSBjYW5kaWRhdGUuYWxpZ25tZW50OworICAgIH0KKworICAgIC8vIEJh
aWwgb3V0IGlmIGNhbmRpZGF0ZSdzIGRpc3RhbmNlIGlzIGxhcmdlciB0aGFuIHRoYXQgb2YgdGhl
IGNsb3Nlc3QgY2FuZGlkYXRlLgorICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPj0gY2xvc2Vz
dC5kaXN0YW5jZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhlIGZvY3VzZWQgbm9k
ZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYW5kIGN1cnJlbnQK
KyAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9ZnJhbWUgdGhhdCBpcyBw
cmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgorICAgIGlmIChmb2N1c2VkTm9kZS0+ZG9jdW1l
bnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQorICAgICAgICAmJiBjYW5kaWRhdGUuZGlzdGFu
Y2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQorICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRl
OworICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNhbmRpZGF0ZS5kb2N1
bWVudCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBmb2N1c2VkTm9kZSBpcyBpbiBhbiBpbm5lciBk
b2N1bWVudCBhbmQgY2FuZGlkYXRlIGlzIGluIGEKKyAgICAgICAgLy8gZGlmZmVyZW50IGRvY3Vt
ZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBpcyBub3QKKyAg
ICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0ZSBpbiB0aGUg
c2FtZSBkb2N1bWVudCBhcyBmb2N1c2VkTm9kZS4KKyAgICAgICAgaWYgKCEoKGlzSW5Sb290RG9j
dW1lbnQoY2FuZGlkYXRlLm5vZGUpICYmICFpc0luUm9vdERvY3VtZW50KGZvY3VzZWROb2RlKSkK
KyAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1l
bnQoKSkpCisgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgIH0KIH0KIAotdm9p
ZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oRG9jdW1lbnQq
IGRvY3VtZW50LCBOb2RlKiBmb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBL
ZXlib2FyZEV2ZW50KiBldmVudCwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0
ZSkKK3ZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERv
Y3VtZW50KiBkb2N1bWVudCwgTm9kZSogZm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXND
YW5kaWRhdGUsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGVQYXJlbnQpCiB7CiAgICAg
QVNTRVJUKGRvY3VtZW50KTsKKyAgICBBU1NFUlQoIWNhbmRpZGF0ZVBhcmVudC5pc051bGwoKSAm
JiAhc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4oY2FuZGlkYXRlUGFyZW50Lm5v
ZGUpKTsKIAotICAgIC8vIFdhbGsgYWxsIHRoZSBjaGlsZCBub2RlcyBhbmQgdXBkYXRlIGZvY3Vz
Q2FuZGlkYXRlIGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KKyAgICAvLyBXYWxrIGFsbCB0aGUg
Y2hpbGQgbm9kZXMgYW5kIHVwZGF0ZSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUgaWYgd2UgZmluZCBh
IG5lYXJlciBub2RlLgogICAgIGZvciAoTm9kZSogY2FuZGlkYXRlID0gZG9jdW1lbnQtPmZpcnN0
Q2hpbGQoKTsgY2FuZGlkYXRlOyBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dE5v
ZGUoKSkgewogICAgICAgICAvLyBJbm5lciBkb2N1bWVudHMgY2FzZS4KKwogICAgICAgICBpZiAo
Y2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICBkZWVwRmluZEZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rpb24s
IGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwogICAgICAgICBlbHNlIGlmIChjYW5kaWRh
dGUgIT0gZm9jdXNlZE5vZGUgJiYgY2FuZGlkYXRlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50
KSkgewotICAgICAgICAgICAgbG9uZyBsb25nIGRpc3RhbmNlID0gZGlzdGFuY2VJbkRpcmVjdGlv
bihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24sIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7
Ci0gICAgICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKGZvY3VzZWROb2RlLCBj
YW5kaWRhdGUsIGRpc3RhbmNlLCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOworICAgICAgICAgICAg
Rm9jdXNDYW5kaWRhdGUgY3VycmVudEZvY3VzQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CisKKyAgICAg
ICAgICAgIC8vIEdldCBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGZyb20gY3VycmVudCBjYW5kaWRh
dGUuCisgICAgICAgICAgICBkaXN0YW5jZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5v
ZGUsIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZSk7CisKKyAgICAgICAgICAgIC8vIElmIGNhbmRpZGF0
ZVBhcmVudCBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gYSByZWN1cnNpdmUg
Y2FsbAorICAgICAgICAgICAgLy8gZnJvbSBkZWVwRmluZUZvY3VzYWJsZU5vZGVJbkRpcmVjdGlv
biAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lKSwKKyAgICAgICAgICAg
IC8vIGFuZCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9mIHRoZSBpZnJh
bWUgZWxlbWVudCBpdHNlbGYuCisgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVBhcmVudC5pc051
bGwoKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnRBbGln
bm1lbnQgPSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50OworICAgICAgICAgICAgICAgIGN1cnJl
bnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBhcmVudC5kaXN0YW5j
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNs
b3Nlcihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9zZXN0Rm9jdXNDYW5k
aWRhdGUpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDAxLDIwICs0MzIsMTIgQEAgdm9pZCBG
b2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqIGZv
Y3VzZWROb2RlLCBOb2RlKgogICAgIGVsc2UgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3Vy
cmVudCB7aX1mcmFtZSBlbGVtZW50IGl0c2VsZiBpcyBhIGdvb2QgY2FuZGlkYXRlCiAgICAgICAg
IC8vIHRvIG1vdmUgZm9jdXMgdG8uIElmIGl0IGlzLCB0aGVuIHdlIHRyYXZlcnNlIGl0cyBpbm5l
ciBub2Rlcy4KLSAgICAgICAgLy8gTGV0cyBwYXNzIGEgY29weSBvZiB0aGUgYmVzdCBjYW5kaWRh
dGUsIHRvIG5vdCBnZXQgZm9vbGVkIGJ5IGEKLSAgICAgICAgLy8gZnJhbWUgd2l0aG91dCBmb2N1
c2FibGUgZWxlbWVudHMuCi0gICAgICAgIEZvY3VzQ2FuZGlkYXRlIGZvY3VzQ2FuZGlkYXRlQ29w
eSA9IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZTsKLSAgICAgICAgbG9uZyBsb25nIGRpc3RhbmNlID0g
ZGlzdGFuY2VJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJlY3Rpb24sIGZv
Y3VzQ2FuZGlkYXRlQ29weSk7Ci0gICAgICAgIGlmIChkaXN0YW5jZSA8IGZvY3VzQ2FuZGlkYXRl
Q29weS5kaXN0YW5jZSkgewotICAgICAgICAgICAgZm9jdXNDYW5kaWRhdGVDb3B5LnBhcmVudEFs
aWdubWVudCA9IGZvY3VzQ2FuZGlkYXRlQ29weS5hbGlnbm1lbnQ7Ci0gICAgICAgICAgICBmb2N1
c0NhbmRpZGF0ZUNvcHkucGFyZW50RGlzdGFuY2UgPSBkaXN0YW5jZTsKLQotICAgICAgICAgICAg
ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihpbm5lckRvY3VtZW50LCBmb2N1c2VkTm9kZSwg
ZGlyZWN0aW9uLCBldmVudCwgZm9jdXNDYW5kaWRhdGVDb3B5KTsKLQotICAgICAgICAgICAgLy8g
SWYgd2UgcmVhbGx5IGhhdmUgYW4gaW5uZXIgY2xvc2VyIGZvY3VzIGNhbmRpZGF0ZSBub2RlLCB0
YWtlIGl0LgotICAgICAgICAgICAgaWYgKGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5ub2RlICE9IGZv
Y3VzQ2FuZGlkYXRlQ29weS5ub2RlKQotICAgICAgICAgICAgICAgIGNsb3Nlc3RGb2N1c0NhbmRp
ZGF0ZSA9IGZvY3VzQ2FuZGlkYXRlQ29weTsKLSAgICAgICAgfQorICAgICAgICBGb2N1c0NhbmRp
ZGF0ZSBjYW5kaWRhdGVQYXJlbnQgPSBGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOworICAgICAg
ICBkaXN0YW5jZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZVBh
cmVudCk7CisKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGFsaWdubWVudD8KKyAgICAgICAg
aWYgKGNhbmRpZGF0ZVBhcmVudC5kaXN0YW5jZSA8IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0
YW5jZSkKKyAgICAgICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1
bWVudCwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0
ZSwgY2FuZGlkYXRlUGFyZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAppbmRl
eCA3NTU5MWM3Li4xYmVjZDc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIEZvY3VzQ29udHJvbGxlcl9oCiAKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlv
bi5oIgorI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC0zOCw3ICszOSw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVudDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwotc3RydWN0IEZvY3VzQ2FuZGlkYXRlOwogCiBjbGFz
cyBGb2N1c0NvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgpAQCAtNjMs
NyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShG
b2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wgYWR2YW5jZUZvY3VzSW5E
b2N1bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgYm9vbCBpbml0aWFs
Rm9jdXMpOwogCi0gICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50
KiwgTm9kZSosIEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUm
KTsKKyAgICB2b2lkIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oRG9jdW1lbnQqLCBOb2Rl
KiwgRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYsIGNvbnN0
IEZvY3VzQ2FuZGlkYXRlJiBjID0gRm9jdXNDYW5kaWRhdGUoKSk7CiAgICAgdm9pZCBkZWVwRmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiwgTm9kZSosIEZvY3VzRGlyZWN0aW9uLCBL
ZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmKTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9XZWJDb3JlL3Bh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDg2YzljNWQuLjAzM2QyMmEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNDcsMTUgKzQ3LDE5IEBAIHN0YXRpYyBib29sIGFy
ZVJlY3RzUGFydGlhbGx5QWxpZ25lZChGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IEludFJlCiBzdGF0aWMgYm9vbCBpc1JlY3RJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKTsKIHN0YXRpYyB2b2lkIGRlZmxhdGVJZk92
ZXJsYXBwZWQoSW50UmVjdCYsIEludFJlY3QmKTsKIAotbG9uZyBsb25nIGRpc3RhbmNlSW5EaXJl
Y3Rpb24oTm9kZSogc3RhcnQsIE5vZGUqIGRlc3QsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwg
Rm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSkKK3ZvaWQgZGlzdGFuY2VEYXRhRm9yTm9kZShGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlk
YXRlKQogewogICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXIgPSBzdGFydC0+cmVuZGVyZXIo
KTsKLSAgICBpZiAoIXN0YXJ0UmVuZGVyKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsK
KyAgICBpZiAoIXN0YXJ0UmVuZGVyKSB7CisgICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1h
eERpc3RhbmNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSZW5kZXJPYmplY3Qq
IGRlc3RSZW5kZXIgPSBkZXN0LT5yZW5kZXJlcigpOwotICAgIGlmICghZGVzdFJlbmRlcikKLSAg
ICAgICAgcmV0dXJuIG1heERpc3RhbmNlKCk7CisgICAgUmVuZGVyT2JqZWN0KiBkZXN0UmVuZGVy
ID0gY2FuZGlkYXRlLm5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFkZXN0UmVuZGVyKSB7Cisg
ICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICBJbnRSZWN0IGN1clJlY3QgPSByZW5kZXJSZWN0UmVsYXRpdmVUb1Jv
b3REb2N1bWVudChzdGFydFJlbmRlcik7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0ICA9IHJlbmRl
clJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KGRlc3RSZW5kZXIpOwpAQCAtNjUsMzkgKzY5LDIx
IEBAIGxvbmcgbG9uZyBkaXN0YW5jZUluRGlyZWN0aW9uKE5vZGUqIHN0YXJ0LCBOb2RlKiBkZXN0
LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sCiAgICAgZGVmbGF0ZUlmT3ZlcmxhcHBlZChjdXJS
ZWN0LCB0YXJnZXRSZWN0KTsKIAogICAgIGlmIChjdXJSZWN0LmlzRW1wdHkoKSB8fCB0YXJnZXRS
ZWN0LmlzRW1wdHkoKQotICAgICAgICB8fCB0YXJnZXRSZWN0LngoKSA8IDAgfHwgdGFyZ2V0UmVj
dC55KCkgPCAwKQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgfHwgdGFy
Z2V0UmVjdC54KCkgPCAwIHx8IHRhcmdldFJlY3QueSgpIDwgMCkgeworICAgICAgICBjYW5kaWRh
dGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0g
ICAgaWYgKCFpc1JlY3RJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3Qp
KQotICAgICAgICByZXR1cm4gbWF4RGlzdGFuY2UoKTsKKyAgICBpZiAoIWlzUmVjdEluRGlyZWN0
aW9uKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpIHsKKyAgICAgICAgY2FuZGlkYXRl
LmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAg
IC8vIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBub2RlcyBpcyBub3QgdG8gYmUgY29uc2lkZXJl
ZCBhbG9uZSB3aGVuIGV2YWx1YXRpbmcvbG9va2luZwogICAgIC8vIGZvciB0aGUgYmVzdCBmb2N1
cyBjYW5kaWRhdGUgbm9kZS4gQWxpZ25tZW50IG9mIHJlY3RzIGNhbiBiZSBhbHNvIGEgZ29vZCBw
b2ludCB0byBiZQogICAgIC8vIGNvbnNpZGVyZWQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgYWxnb3Jp
dGhtIHRvIGJlaGF2aW9yIGluIGEgbW9yZSBpbnR1aXRpdmUgd2F5LgotICAgIFJlY3RzQWxpZ25t
ZW50IGFsaWdubWVudCA9IGFsaWdubWVudEZvclJlY3RzKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFy
Z2V0UmVjdCk7Ci0KLSAgICBib29sIHNhbWVEb2N1bWVudCA9IGRlc3QtPmRvY3VtZW50KCkgPT0g
Y2FuZGlkYXRlLmRvY3VtZW50KCk7Ci0gICAgaWYgKHNhbWVEb2N1bWVudCkgewotICAgICAgICBp
ZiAoY2FuZGlkYXRlLmFsaWdubWVudCA+IGFsaWdubWVudCB8fCAoY2FuZGlkYXRlLnBhcmVudEFs
aWdubWVudCAmJiBhbGlnbm1lbnQgPiBjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50KSkKLSAgICAg
ICAgICAgIHJldHVybiBtYXhEaXN0YW5jZSgpOwotICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLmFs
aWdubWVudCA+IGFsaWdubWVudCAmJiAoY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCAmJiBhbGln
bm1lbnQgPiBjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50KSkKLSAgICAgICAgcmV0dXJuIG1heERp
c3RhbmNlKCk7Ci0KLSAgICAvLyBGSVhNRV90b25pa2l0b286IHNpbXBsaWZ5IHRoZSBsb2dpYyBo
ZXJlICEKLSAgICBpZiAoYWxpZ25tZW50ICE9IE5vbmUKLSAgICAgICAgfHwgKCFjYW5kaWRhdGUu
aXNOdWxsKCkgJiYgY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA+PSBhbGlnbm1lbnQKLSAgICAg
ICAgJiYgY2FuZGlkYXRlLmRvY3VtZW50KCkgPT0gZGVzdC0+ZG9jdW1lbnQoKSkpIHsKLQotICAg
ICAgICAvLyBJZiB3ZSBhcmUgbm93IGluIGFuIGhpZ2hlciBwcmVjZWRlbnQgY2FzZSwgbGV0cyBy
ZXNldCB0aGUgY3VycmVudCB8Y2FuZGlkYXRlfCdzCi0gICAgICAgIC8vIHxkaXN0YW5jZXwgc28g
d2UgZm9yY2UgaXQgdG8gYmUgYmlnZ2VyIHRoYW4gdGhlIHJlc3VsdCB3ZSB3aWxsIGdldCBmcm9t
Ci0gICAgICAgIC8vIHxzcGF0aWFsRGlzdGFuY2V8IChzZWUgYmVsb3cpLgotICAgICAgICBpZiAo
Y2FuZGlkYXRlLmFsaWdubWVudCA8IGFsaWdubWVudCAmJiBjYW5kaWRhdGUucGFyZW50QWxpZ25t
ZW50IDwgYWxpZ25tZW50KQotICAgICAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlz
dGFuY2UoKTsKLQotICAgICAgICBjYW5kaWRhdGUuYWxpZ25tZW50ID0gYWxpZ25tZW50OwotICAg
IH0KLQotICAgIHJldHVybiBzcGF0aWFsRGlzdGFuY2UoZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJn
ZXRSZWN0KTsKKyAgICBjYW5kaWRhdGUuYWxpZ25tZW50ID0gYWxpZ25tZW50Rm9yUmVjdHMoZGly
ZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0KTsKKyAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBz
cGF0aWFsRGlzdGFuY2UoZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0KTsKIH0KIAogLy8g
RklYTUU6IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYmVoYXZlIGNvcnJlY3RseSB3aXRoIHRyYW5z
Zm9ybWVkIGZyYW1lcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5oIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKaW5kZXggN2MxODNkZi4uOTBm
ZjFjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKKysrIGIv
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBzdHJ1
Y3QgRm9jdXNDYW5kaWRhdGUgewogICAgIFJlY3RzQWxpZ25tZW50IHBhcmVudEFsaWdubWVudDsK
IH07CiAKLWxvbmcgbG9uZyBkaXN0YW5jZUluRGlyZWN0aW9uKE5vZGUqLCBOb2RlKiwgRm9jdXNE
aXJlY3Rpb24sIEZvY3VzQ2FuZGlkYXRlJik7Cit2b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBzdGFydCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRp
ZGF0ZSk7CiBib29sIHNjcm9sbEluRGlyZWN0aW9uKEZyYW1lKiwgRm9jdXNEaXJlY3Rpb24pOwog
dm9pZCBzY3JvbGxJbnRvVmlldyhFbGVtZW50Kik7CiBib29sIGhhc09mZnNjcmVlblJlY3QoTm9k
ZSopOwotLSAKMS42LjAuNAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>