<?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>47142</bug_id>
          
          <creation_ts>2010-10-04 21:21:42 -0700</creation_ts>
          <short_desc>Spatial navigation not Working for Map and Area Tags</short_desc>
          <delta_ts>2016-11-14 04:07:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>36044</dependson>
    
    <dependson>48438</dependson>
    
    <dependson>49382</dependson>
          <blocked>46905</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="umesh">sumeshfirst</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>khaireroshan06</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>pgbasin</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.arunp</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289393</commentid>
    <comment_count>0</comment_count>
    <who name="umesh">sumeshfirst</who>
    <bug_when>2010-10-04 21:21:42 -0700</bug_when>
    <thetext>The Spatial navigation finds the best candidate node and moves the focus on it.
In case the HTML page has Map and Area Tags the focus never comes on these items. The Map and Area Tags are not handled for Spatial Navigation. The Render Box does the rendering based on rectangle, the shapes such as circle, polygon are not handled as such. The test sites on which we tested are set as attachement.

For URL : https://www.icicibank.com, the focus never comes on the login form, through Spatial navigation.

For URL : https://www.ebay.com, the focus never comes on certain images implemented as map&apos;s and using Area tags.

I have attached the g.html which is just a test file, After loading this file:
1) press DOWN Arrow KEY the focus comes on the input button
2) press Down Arrow Key the focus never comes on the login form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289396</commentid>
    <comment_count>1</comment_count>
      <attachid>69735</attachid>
    <who name="umesh">sumeshfirst</who>
    <bug_when>2010-10-04 21:22:34 -0700</bug_when>
    <thetext>Created attachment 69735
it is test file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300024</commentid>
    <comment_count>2</comment_count>
    <who name="">pgbasin</who>
    <bug_when>2010-10-26 23:30:58 -0700</bug_when>
    <thetext>A simple test page:

$ cat index.html
&lt;html&gt;
  &lt;body&gt;
    &lt;a href=&quot;#&quot; shape=&quot;rect&quot; name=&quot;link1&quot;&gt;link1&lt;/a&gt;&lt;br&gt;

    &lt;map name=&quot;Map&quot;&gt;
      &lt;area href=&quot;javascript:alert(&apos;a&apos;);&quot; shape=&quot;rect&quot; coords=&quot;  0,   0, 100,  40&quot; alt=&quot;&quot;&gt;
      &lt;area href=&quot;javascript:alert(&apos;b&apos;);&quot; shape=&quot;rect&quot; coords=&quot;  0,  40, 100,  80&quot; alt=&quot;&quot;&gt;
    &lt;/map&gt;
    &lt;img src=&quot;http://www.google.com/images/logos/ps_logo2.png&quot; usemap=&quot;#Map&quot; width=&quot;100&quot; height=&quot;80&quot; border=&quot;0&quot; alt=&quot;&quot;&gt;&lt;br&gt;

    &lt;a href=&quot;#&quot; shape=&quot;rect&quot; name=&quot;link2&quot;&gt;link2&lt;/a&gt;&lt;br&gt;
  &lt;/body&gt;
&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310122</commentid>
    <comment_count>3</comment_count>
    <who name="Arun Patole">webkit.arunp</who>
    <bug_when>2010-11-16 22:03:52 -0800</bug_when>
    <thetext>One way to solve this could be to specifically handle area/map element in spatial navigation. For every area element, while calculating the distance:
-get the parent map element
-get the image from map element
-and the call the already existing function HTMLAreaElement::getRect(RenderObject* obj) to get the area element rect instead of getting rect from renderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312168</commentid>
    <comment_count>4</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-11-21 14:59:41 -0800</bug_when>
    <thetext>I have a patch for this, but it depends on the patch at https://bugs.webkit.org/show_bug.cgi?id=49382.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314222</commentid>
    <comment_count>5</comment_count>
      <attachid>74978</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-11-28 12:12:59 -0800</bug_when>
    <thetext>Created attachment 74978
Patch.

Give area elements special treatment in spatial navigation algorithm by getting the rect of the area from the associated image. Since area elements are likely to overlap if they are not rects, or if authors are not careful, we flatten the rect of area elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314258</commentid>
    <comment_count>6</comment_count>
      <attachid>74978</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-28 22:25:57 -0800</bug_when>
    <thetext>Comment on attachment 74978
Patch.

I think this patch does more that fixing this bug, and because of this, I dislike it. Changes in FocusCandidate should come in its own patch, and should not change any functionally, so no test needed, etc ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314281</commentid>
    <comment_count>7</comment_count>
    <who name="">pgbasin</who>
    <bug_when>2010-11-29 00:34:15 -0800</bug_when>
    <thetext>I tested the patch, and the area element can get focus.
However, I cannot see any focus ring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314365</commentid>
    <comment_count>8</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-11-29 05:33:16 -0800</bug_when>
    <thetext>Focus(In reply to comment #7)
&gt; I tested the patch, and the area element can get focus.
&gt; However, I cannot see any focus ring.

The focus ring of area elements is being worked on in https://bugs.webkit.org/show_bug.cgi?id=49888.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314366</commentid>
    <comment_count>9</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-11-29 05:36:55 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I tested the patch, and the area element can get focus.
&gt; However, I cannot see any focus ring.

BTW, thanks for testing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314396</commentid>
    <comment_count>10</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-11-29 07:17:26 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 74978 [details])
&gt; I think this patch does more that fixing this bug, and because of this, I dislike it. Changes in FocusCandidate should come in its own patch, and should not change any functionally, so no test needed, etc ...

Filed https://bugs.webkit.org/show_bug.cgi?id=50153.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314428</commentid>
    <comment_count>11</comment_count>
      <attachid>75031</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-11-29 08:30:28 -0800</bug_when>
    <thetext>Created attachment 75031
Patch

Update the patch after http://trac.webkit.org/changeset/72797.
BTW, the style error seems bogus to me :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317216</commentid>
    <comment_count>12</comment_count>
      <attachid>75591</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-12-03 19:38:26 -0800</bug_when>
    <thetext>Created attachment 75591
Patch.

Re-baseline the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317333</commentid>
    <comment_count>13</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-12-04 18:59:16 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=75591) [details]
&gt; Patch.
&gt; 
&gt; Re-baseline the patch.

This patch is actually very simple. It does 2 things:
1. HTMLAreaElements are special in that they do not have a rect of their own. So we create a special constructor for FocusController, that explicitly takes an HTMLAreaElement as a parameter instead of a Node. We then use the rect of the area in the image for the spatial navigation algorithm.

2. HTMLAreaElements are not necessarily rects, so instead of using the whole rect of the area, we create a thin rect, 1 pixel thick, in attempt to overcome the overlapping problem. An example for this overlapping is http://www.mozilla.org/access/qa/tiny/map_area.html .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317340</commentid>
    <comment_count>14</comment_count>
      <attachid>75591</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-04 20:20:18 -0800</bug_when>
    <thetext>Comment on attachment 75591
Patch.

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

Looks fine, but we might be able to make it better. Lets see answers for some comments and questions I have before go for it.

&gt; WebCore/page/FocusController.cpp:480
&gt; +            if (!node-&gt;isKeyboardFocusable(event))
&gt; +                continue;

Lets make one the two checks for !node-&gt;isKeyboardFocusable(event) in a follow up.

&gt; WebCore/page/SpatialNavigation.cpp:87
&gt; +    actualNode = area;
&gt; +    node = image;

I do not like the special case you gave for area elements. Maybe we should have a FocusCandidate.isAreaElement() method instead and handling the changes accordingly. It is very implicit for who read the code what or when use &apos;node&apos; instead of &apos;actualNode&apos; , and vice-versa.

Could we try something to improve this?

&gt; WebCore/page/SpatialNavigation.cpp:701
&gt; +    IntRect rect = virtualRectForDirection(direction, rectToAbsoluteCoordinates(area-&gt;document()-&gt;frame(), area-&gt;getRect(area-&gt;imageElement()-&gt;renderer())), 1);

Could you please explain the &apos;1&apos; with other words here. I did not follow it :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317367</commentid>
    <comment_count>15</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-12-05 07:01:52 -0800</bug_when>
    <thetext>(In reply to comment #14)
Thanks for he review, Antonio.

&gt; I do not like the special case you gave for area elements. Maybe we should have a FocusCandidate.isAreaElement() method instead and handling the changes accordingly. It is very implicit for who read the code what or when use &apos;node&apos; instead of &apos;actualNode&apos; , and vice-versa.
&gt; 
&gt; Could we try something to improve this?
I agree that node and actualNode are poor choice for names. How about if we turn FocusCandidate into a class with 2 accessor functions: visibleNode() and focusableNode() ? If we add FocusCandidate.isAreaElement(), the logic of handling HTMLAreaElements would be spread through the spatial navigation code instead of being encapsulated in FocusCandidate, which is what I was trying to do.


&gt; &gt; WebCore/page/SpatialNavigation.cpp:701
&gt; &gt; +    IntRect rect = virtualRectForDirection(direction, rectToAbsoluteCoordinates(area-&gt;document()-&gt;frame(), area-&gt;getRect(area-&gt;imageElement()-&gt;renderer())), 1);
&gt; 
&gt; Could you please explain the &apos;1&apos; with other words here. I did not follow it :(

I was hoping that comment #13 would explain that :-)
HTMLAreaElements are not necessarily rects, and if we use the bounding rects for the spatial navigation algorithm, we might skip some overlapping nodes. Just look at http://www.mozilla.org/access/qa/tiny/map_area.html for an example of a &quot;busy&quot; image map.
In order to make that page work, I needed a way to &quot;shrink&quot; the bounding rects of HTMLAreaElements. The way I did it is by constructing a rect that starts at the same position as HTMLAreaElement::getRect(), but it has a 1 pixel width or height, depending on the direction of navigation.
This avoids the overlap, and now I can reach all the areas in that imagemap.
This works well also with the imagemap at the top of www.ebay.com, which is not using rects either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317374</commentid>
    <comment_count>16</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-05 07:27:16 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; Thanks for he review, Antonio.
&gt; 
&gt; &gt; I do not like the special case you gave for area elements. Maybe we should have a FocusCandidate.isAreaElement() method instead and handling the changes accordingly. It is very implicit for who read the code what or when use &apos;node&apos; instead of &apos;actualNode&apos; , and vice-versa.
&gt; &gt; 
&gt; &gt; Could we try something to improve this?
&gt; I agree that node and actualNode are poor choice for names. How about if we turn FocusCandidate into a class with 2 accessor functions: visibleNode() and focusableNode() ?

I think these (better names) would be the code more readable, Yael. 

&gt; If we add FocusCandidate.isAreaElement(), the logic of handling HTMLAreaElements would be spread through the spatial navigation code instead of being encapsulated in FocusCandidate, which is what I was trying to do.
&gt; 
&gt; 
&gt; &gt; &gt; WebCore/page/SpatialNavigation.cpp:701
&gt; &gt; &gt; +    IntRect rect = virtualRectForDirection(direction, rectToAbsoluteCoordinates(area-&gt;document()-&gt;frame(), area-&gt;getRect(area-&gt;imageElement()-&gt;renderer())), 1);
&gt; &gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317388</commentid>
    <comment_count>17</comment_count>
      <attachid>75631</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-12-05 09:35:25 -0800</bug_when>
    <thetext>Created attachment 75631
Patch.

Change from previous patch:
Rename node =&gt; visibleNode
Rename actualNode =&gt; focusableNode

Consolidated isFocusableNode, as requested in comment #14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318168</commentid>
    <comment_count>18</comment_count>
      <attachid>75631</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-07 06:57:43 -0800</bug_when>
    <thetext>Comment on attachment 75631
Patch.

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

&gt; WebCore/page/SpatialNavigation.h:123
&gt; +    Node* visibleNode;
&gt;      Node* enclosingScrollableBox;
&gt; +    Node* focusableNode;

Please add a comment in the code explaining the difference between visibleNode and focusableNode, and when to use one or the other.

I would also like to see asserts in the code if one is trying to use one, but should be using the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318328</commentid>
    <comment_count>19</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-12-07 11:06:14 -0800</bug_when>
    <thetext>Committed r73452: &lt;http://trac.webkit.org/changeset/73452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250951</commentid>
    <comment_count>20</comment_count>
    <who name="Roshan Khaire">khaireroshan06</who>
    <bug_when>2016-11-14 04:07:08 -0800</bug_when>
    <thetext>Thanks For Post. https://www.hdfc.com/home-loans-salaried</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>69735</attachid>
            <date>2010-10-04 21:22:34 -0700</date>
            <delta_ts>2010-10-04 21:22:34 -0700</delta_ts>
            <desc>it is test file</desc>
            <filename>g.html</filename>
            <type>text/html</type>
            <size>1315</size>
            <attacher name="umesh">sumeshfirst</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+DQo8aHRtbD4NCjxo
ZWFkPg0KCTx0aXRsZT5XZWIgQ2hhbm5lbHM8L3RpdGxlPg0KCQ0KICAgIDxzY3JpcHQgdHlwZSA9
InRleHQvamF2YXNjcmlwdCI+DQoJZnVuY3Rpb24gdW1lc2goKXsNCgkJYWxlcnQoImhlcmVlZWVl
ZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWUiKTsNCg0KfQ0KPC9zY3JpcHQ+DSAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuL2Nzcy9XZWJDaFBhZ2VT
dHlsZS5jc3MiPg0KPC9oZWFkPg0KDQo8Ym9keSBvbmxvYWQ9InNldElucHV0Rm9jdXMoKTsiIGJn
Y29sb3I9IiMwIj4NCjxpbnB1dCB0eXBlPSJidXR0b24iPkFCQzwvaW5wdXQ+DQo8dGFibGU+DQo8
dHI+DQo8dGQ+PGltZyBzcmM9ImhvbWUtbG9naW4tbGhzLmdpZiIgYm9yZGVyPSIwIiB1c2VtYXA9
IiNmb3Jnb3RwYXNzd29yZCI+PC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPG1hcCBuYW1lPSJmb3Jn
b3RwYXNzd29yZCIgaWQ9ImZvcmdvdHBhc3N3b3JkIiA+DQoNCiAgPGFyZWEgc2hhcGU9InJlY3Qi
IGNvb3Jkcz0iNCwzNSwxNDQsNjEiIGhyZWY9Imh0dHA6Ly93d3cuaWNpY2liYW5rLmNvbS9zYWZl
LW9ubGluZS1iYW5raW5nL3NhZmUtb25saW5lLWJhbmtpbmcuaHRtbCIgYWx0PSJQZXJzb25hbCBC
YW5raW5nIj4NCiAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iNSw2NSwxNDUsOTEiIGhyZWY9
Imh0dHBzOi8vY2liLmljaWNpYmFuay5jb20vc2FmZS1vbmxpbmUtQ0lCYmFua2luZy5odG1sIiBh
bHQ9IkNvcnBvcmF0ZSBCYW5raW5nIj4NCiAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iNCw5
NSwxNDMsMTIwIiBocmVmPSJodHRwczovL20yaW5ldC5pY2ljaWJhbmsuY28uaW4vbTJpTmV0L20y
aU5ldExvZ2luRm9ybS5qc3AiIGFsdD0iTW9uZXkySW5kaWEiPg0KICA8YXJlYSBzaGFwZT0icmVj
dCIgY29vcmRzPSI1LDEyNSwxNDUsMTUwIiBocmVmPSJodHRwczovL2luZmluaXR5LmljaWNpYmFu
ay5jby5pbi9CQU5LQVdBWT9BY3Rpb24uS2lkZWJhbmsuSW5pdD1ZJkFwcFNpZ25vbkJhbmtJZD1J
Q0kmQXBwVHlwZT1raWRlYmFuayIgYWx0PSJZb3VuZyBTdGFycyI+DQogIDxhcmVhIHNoYXBlPSJy
ZWN0IiBjb29yZHM9IjIzLDIyOCwxMjgsMjQxIiBocmVmPSIvZ2VuZXJhdGUtcGFzc3dvcmQuaHRt
bCIgYWx0PSJHZW5lcmF0ZSBQYXNzd29yZCI+DQo8L21hcD4gIA0KDQoNCjwvYm9keT4NCjwvaHRt
bD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74978</attachid>
            <date>2010-11-28 12:12:59 -0800</date>
            <delta_ts>2010-11-29 08:30:28 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>47142.patch</filename>
            <type>text/plain</type>
            <size>27825</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mjc4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMTEtMjggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwYXRpYWwgbmF2aWdhdGlvbiBub3QgV29ya2luZyBmb3IgTWFwIGFuZCBBcmVhIFRhZ3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTQyCisKKyAg
ICAgICAgR2l2ZSBhcmVhIGVsZW1lbnRzIHNwZWNpYWwgdHJlYXRtZW50IGluIHNwYXRpYWwgbmF2
aWdhdGlvbiBhbGdvcml0aG0gYnkgZ2V0dGluZyB0aGUKKyAgICAgICAgcmVjdCBvZiB0aGUgYXJl
YSBmcm9tIHRoZSBhc3NvY2lhdGVkIGltYWdlLiBTaW5jZSBhcmVhIGVsZW1lbnRzIGFyZSBsaWtl
bHkgdG8gb3ZlcmxhcAorICAgICAgICBpZiB0aGV5IGFyZSBub3QgcmVjdHMsIG9yIGlmIGF1dGhv
cnMgYXJlIG5vdCBjYXJlZnVsLCB3ZSBmbGF0dGVuIHRoZSByZWN0IG9mIGFyZWEgZWxlbWVudHMu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWlt
YWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50
cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1h
Z2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1zaW1wbGUuaHRtbAorCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRm9jdXND
YW5kaWRhdGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZp
bmRGb2N1c0NhbmRpZGF0ZUluQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29u
dHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6Cisg
ICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuQmVT
Y3JvbGxlZEludG9WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OnZpcnR1YWxSZWN0Rm9yRGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRBbmREaXJl
Y3Rpb24pOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6CisKIDIwMTAtMTEtMjggIEFu
dG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiA3MjcxMSkKKysrIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw3ICs0MSw5IEBACiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUg
IkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNDIyLDcgKzQy
NCw3IEBAIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZChGb2N1c0QKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gSWdub3JlIG9mZiBzY3JlZW4gY2hpbGQgbm9kZXMgb2YgY29udGFp
bmVycyB0aGF0IGRvIG5vdCBzY3JvbGwgKG92ZXJmbG93OmhpZGRlbikKLSAgICBpZiAoaGFzT2Zm
c2NyZWVuUmVjdChjYW5kaWRhdGUubm9kZSkgJiYgIWNhbkJlU2Nyb2xsZWRJbnRvVmlldyhkaXJl
Y3Rpb24sIGNhbmRpZGF0ZSkpCisgICAgaWYgKGNhbmRpZGF0ZS5pc09mZnNjcmVlbiAmJiAhY2Fu
QmVTY3JvbGxlZEludG9WaWV3KGRpcmVjdGlvbiwgY2FuZGlkYXRlKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRm9jdXNDYW5kaWRhdGUgY3VycmVudDsKQEAgLTQzMSw3ICs0MzMsNyBAQCB2b2lk
IHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQoRm9jdXNECiAgICAgaWYgKGNhbmRpZGF0ZS5k
aXN0YW5jZSA9PSBtYXhEaXN0YW5jZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaGFz
T2Zmc2NyZWVuUmVjdChjYW5kaWRhdGUubm9kZSwgZGlyZWN0aW9uKSAmJiBjYW5kaWRhdGUuYWxp
Z25tZW50IDwgRnVsbCkKKyAgICBpZiAoY2FuZGlkYXRlLmlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxp
bmcgJiYgY2FuZGlkYXRlLmFsaWdubWVudCA8IEZ1bGwpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChjbG9zZXN0LmlzTnVsbCgpKSB7CkBAIC00MzksNyArNDQxLDcgQEAgdm9pZCB1cGRhdGVG
b2N1c0NhbmRpZGF0ZUlmTmVlZGVkKEZvY3VzRAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgSW50UmVjdCBpbnRlcnNlY3Rpb25SZWN0ID0gaW50ZXJzZWN0aW9uKG5vZGVSZWN0SW5BYnNv
bHV0ZUNvb3JkaW5hdGVzKGNhbmRpZGF0ZS5ub2RlLCB0cnVlKSwgbm9kZVJlY3RJbkFic29sdXRl
Q29vcmRpbmF0ZXMoY2xvc2VzdC5ub2RlLCB0cnVlKSk7CisgICAgSW50UmVjdCBpbnRlcnNlY3Rp
b25SZWN0ID0gaW50ZXJzZWN0aW9uKGNhbmRpZGF0ZS5yZWN0LCBjbG9zZXN0LnJlY3QpOwogICAg
IGlmICghaW50ZXJzZWN0aW9uUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gSWYgMiBub2Rl
cyBhcmUgaW50ZXJzZWN0aW5nLCBkbyBoaXQgdGVzdCB0byBmaW5kIHdoaWNoIG5vZGUgaW4gb24g
dG9wLgogICAgICAgICBpbnQgeCA9IGludGVyc2VjdGlvblJlY3QueCgpICsgaW50ZXJzZWN0aW9u
UmVjdC53aWR0aCgpIC8gMjsKQEAgLTQ3MywxMyArNDc1LDI3IEBAIHZvaWQgRm9jdXNDb250cm9s
bGVyOjpmaW5kRm9jdXNDYW5kaWRhdGUKICAgICAgICAgaWYgKG5vZGUgPT0gZm9jdXNlZE5vZGUp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShh
cmVhVGFnKSkgeworICAgICAgICAgICAgaWYgKCFub2RlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2
ZW50KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgSFRNTEFyZWFF
bGVtZW50KiBhcmVhID0gc3RhdGljX2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4obm9kZSk7CisgICAg
ICAgICAgICBGb2N1c0NhbmRpZGF0ZSBjYW5kaWRhdGUoYXJlYSwgZGlyZWN0aW9uKTsKKyAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY29udGFp
bmVyOworICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZChkaXJlY3Rpb24s
IHN0YXJ0aW5nUmVjdCwgY2FuZGlkYXRlLCBjbG9zZXN0KTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKICAgICAgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgaWYgKCFub2RlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2
ZW50KSAmJiAhbm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpICYmICFjYW5TY3JvbGxJbkRpcmVj
dGlvbihkaXJlY3Rpb24sIG5vZGUpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
Rm9jdXNDYW5kaWRhdGUgY2FuZGlkYXRlKG5vZGUpOworICAgICAgICBGb2N1c0NhbmRpZGF0ZSBj
YW5kaWRhdGUobm9kZSwgZGlyZWN0aW9uKTsKICAgICAgICAgY2FuZGlkYXRlLmVuY2xvc2luZ1Nj
cm9sbGFibGVCb3ggPSBjb250YWluZXI7CiAgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZO
ZWVkZWQoZGlyZWN0aW9uLCBzdGFydGluZ1JlY3QsIGNhbmRpZGF0ZSwgY2xvc2VzdCk7CiAgICAg
fQpAQCAtNTE1LDcgKzUzMSw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNE
aXJlY3QKICAgICAgICAgLy8gdXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZCgpIHdpbGwgbmV2
ZXIgY29uc2lkZXIgc3VjaCBhbiBpZnJhbWUgYXMgYSBjYW5kaWRhdGUuCiAgICAgICAgIEFTU0VS
VChmcmFtZUVsZW1lbnQtPmNvbnRlbnRGcmFtZSgpKTsKIAotICAgICAgICBpZiAoaGFzT2Zmc2Ny
ZWVuUmVjdChmb2N1c0NhbmRpZGF0ZS5ub2RlLCBkaXJlY3Rpb24pKSB7CisgICAgICAgIGlmIChm
b2N1c0NhbmRpZGF0ZS5pc09mZnNjcmVlbkFmdGVyU2Nyb2xsaW5nKSB7CiAgICAgICAgICAgICBz
Y3JvbGxJbkRpcmVjdGlvbihmb2N1c0NhbmRpZGF0ZS5ub2RlLT5kb2N1bWVudCgpLCBkaXJlY3Rp
b24pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTUzMiw3ICs1NDgs
NyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoY2FuU2Nyb2xsSW5EaXJlY3Rpb24oZGlyZWN0aW9u
LCBmb2N1c0NhbmRpZGF0ZS5ub2RlKSkgewotICAgICAgICBpZiAoaGFzT2Zmc2NyZWVuUmVjdChm
b2N1c0NhbmRpZGF0ZS5ub2RlLCBkaXJlY3Rpb24pKSB7CisgICAgICAgIGlmIChmb2N1c0NhbmRp
ZGF0ZS5pc09mZnNjcmVlbkFmdGVyU2Nyb2xsaW5nKSB7CiAgICAgICAgICAgICBzY3JvbGxJbkRp
cmVjdGlvbihmb2N1c0NhbmRpZGF0ZS5ub2RlLCBkaXJlY3Rpb24pOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTU0MywxNCArNTU5LDE0IEBAIGJvb2wgRm9jdXNDb250
cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3QKICAgICAgICAgICAgIHN0YXJ0aW5nUmVjdCA9IG5v
ZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKGZvY3VzZWROb2RlLCB0cnVlKTsKICAgICAgICAg
cmV0dXJuIGFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHlJbkNvbnRhaW5lcihmb2N1c0NhbmRpZGF0
ZS5ub2RlLCBzdGFydGluZ1JlY3QsIGRpcmVjdGlvbiwgZXZlbnQpOwogICAgIH0KLSAgICBpZiAo
aGFzT2Zmc2NyZWVuUmVjdChmb2N1c0NhbmRpZGF0ZS5ub2RlLCBkaXJlY3Rpb24pKSB7CisgICAg
aWYgKGZvY3VzQ2FuZGlkYXRlLmlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxpbmcpIHsKICAgICAgICAg
Tm9kZSogY29udGFpbmVyID0gZm9jdXNDYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsK
ICAgICAgICAgc2Nyb2xsSW5EaXJlY3Rpb24oY29udGFpbmVyLCBkaXJlY3Rpb24pOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBXZSBmb3VuZCBhIG5ldyBmb2N1cyBub2Rl
LCBuYXZpZ2F0ZSB0byBpdC4KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KGZvY3Vz
Q2FuZGlkYXRlLm5vZGUpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQoZm9jdXND
YW5kaWRhdGUuYWN0dWFsTm9kZSk7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogCiAgICAgZWxlbWVu
dC0+Zm9jdXMoZmFsc2UpOwpAQCAtNTcxLDkgKzU4NywxNSBAQCBib29sIEZvY3VzQ29udHJvbGxl
cjo6YWR2YW5jZUZvY3VzRGlyZWN0CiAKICAgICAvLyBGaWd1cmUgb3V0IHRoZSBzdGFydGluZyBy
ZWN0LgogICAgIEludFJlY3Qgc3RhcnRpbmdSZWN0OwotICAgIGlmIChmb2N1c2VkTm9kZSAmJiAh
aGFzT2Zmc2NyZWVuUmVjdChmb2N1c2VkTm9kZSkpIHsKLSAgICAgICAgY29udGFpbmVyID0gc2Ny
b2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oZGlyZWN0
aW9uLCBmb2N1c2VkTm9kZSk7Ci0gICAgICAgIHN0YXJ0aW5nUmVjdCA9IG5vZGVSZWN0SW5BYnNv
bHV0ZUNvb3JkaW5hdGVzKGZvY3VzZWROb2RlLCB0cnVlIC8qIGlnbm9yZSBib3JkZXIgKi8pOwor
ICAgIGlmIChmb2N1c2VkTm9kZSkgeworICAgICAgICBpZiAoIWhhc09mZnNjcmVlblJlY3QoZm9j
dXNlZE5vZGUpKSB7CisgICAgICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxlRW5jbG9zaW5n
Qm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGZvY3VzZWROb2Rl
KTsKKyAgICAgICAgICAgIHN0YXJ0aW5nUmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5h
dGVzKGZvY3VzZWROb2RlLCB0cnVlIC8qIGlnbm9yZSBib3JkZXIgKi8pOworICAgICAgICB9IGVs
c2UgaWYgKGZvY3VzZWROb2RlLT5oYXNUYWdOYW1lKGFyZWFUYWcpKSB7CisgICAgICAgICAgICBI
VE1MQXJlYUVsZW1lbnQqIGFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MQXJlYUVsZW1lbnQqPihmb2N1
c2VkTm9kZSk7CisgICAgICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxlRW5jbG9zaW5nQm94
T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGFyZWEtPmltYWdlRWxl
bWVudCgpKTsKKyAgICAgICAgICAgIHN0YXJ0aW5nUmVjdCA9IHZpcnR1YWxSZWN0Rm9yQXJlYUVs
ZW1lbnRBbmREaXJlY3Rpb24oZGlyZWN0aW9uLCBhcmVhKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIGJvb2wgY29uc3VtZWQgPSBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcAkocmV2aXNpb24gNzI3MTEpCisrKyBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiwxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVk
ZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC01MSwxNyArNTQsNDIgQEAgc3RhdGljIEludFJlY3QgcmVjdFRvQWJzb2x1dGVD
b29yZGluYXRlcwogc3RhdGljIHZvaWQgZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgc3RhcnRpbmdSZWN0LCBjb25z
dCBJbnRSZWN0JiBwb3RlbnRpYWxSZWN0LCBJbnRQb2ludCYgZXhpdFBvaW50LCBJbnRQb2ludCYg
ZW50cnlQb2ludCk7CiAKIAotRm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKE5vZGUqIG4p
CitGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSogbiwgRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogICAgIDogbm9kZShuKQogICAgICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCgw
KQorICAgICwgYWN0dWFsTm9kZShuKQogICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAg
ICAsIHBhcmVudERpc3RhbmNlKG1heERpc3RhbmNlKCkpCiAgICAgLCBhbGlnbm1lbnQoTm9uZSkK
ICAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQogICAgICwgcmVjdChub2RlUmVjdEluQWJzb2x1
dGVDb29yZGluYXRlcyhuLCB0cnVlIC8qIGlnbm9yZSBib3JkZXIgKi8pKQorICAgICwgaXNPZmZz
Y3JlZW4oaGFzT2Zmc2NyZWVuUmVjdChuKSkKKyAgICAsIGlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxp
bmcoaGFzT2Zmc2NyZWVuUmVjdChuLCBkaXJlY3Rpb24pKQogewogfQogCitGb2N1c0NhbmRpZGF0
ZTo6Rm9jdXNDYW5kaWRhdGUoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24pCisgICAgOiBub2RlKDApCisgICAgLCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94KDAp
CisgICAgLCBhY3R1YWxOb2RlKDApCisgICAgLCBkaXN0YW5jZShtYXhEaXN0YW5jZSgpKQorICAg
ICwgcGFyZW50RGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKKyAgICAsIGFsaWdubWVudChOb25lKQor
ICAgICwgcGFyZW50QWxpZ25tZW50KE5vbmUpCisgICAgLCBpc09mZnNjcmVlbih0cnVlKQorICAg
ICwgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZyh0cnVlKQoreworICAgIEhUTUxJbWFnZUVsZW1l
bnQqIGltYWdlID0gYXJlYS0+aW1hZ2VFbGVtZW50KCk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYWN0dWFsTm9kZSA9IGFyZWE7CisgICAgbm9kZSA9IGltYWdlOwor
ICAgIHJlY3QgPSB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKGRpcmVjdGlv
biwgYXJlYSk7CisgICAgaXNPZmZzY3JlZW4gPSBoYXNPZmZzY3JlZW5SZWN0KGltYWdlKTsKKyAg
ICBpc09mZnNjcmVlbkFmdGVyU2Nyb2xsaW5nID0gaGFzT2Zmc2NyZWVuUmVjdChpbWFnZSwgZGly
ZWN0aW9uKTsKK30KKwogYm9vbCBpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChjb25zdCBGcmFt
ZSogZnJhbWUpCiB7CiAgICAgcmV0dXJuIChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKSAmJiBm
cmFtZS0+c2V0dGluZ3MoKS0+aXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoKSk7CkBAIC02MjIs
NyArNjUwLDcgQEAgdm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIAogCiBi
b29sIGNhbkJlU2Nyb2xsZWRJbnRvVmlldyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0
IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCiB7Ci0gICAgQVNTRVJUKGNhbmRpZGF0ZS5ub2Rl
ICYmIGhhc09mZnNjcmVlblJlY3QoY2FuZGlkYXRlLm5vZGUpKTsKKyAgICBBU1NFUlQoY2FuZGlk
YXRlLm5vZGUgJiYgY2FuZGlkYXRlLmlzT2Zmc2NyZWVuKTsKICAgICBJbnRSZWN0IGNhbmRpZGF0
ZVJlY3QgPSBjYW5kaWRhdGUucmVjdDsKICAgICBmb3IgKE5vZGUqIHBhcmVudE5vZGUgPSBjYW5k
aWRhdGUubm9kZS0+cGFyZW50KCk7IHBhcmVudE5vZGU7IHBhcmVudE5vZGUgPSBwYXJlbnROb2Rl
LT5wYXJlbnQoKSkgewogICAgICAgICBJbnRSZWN0IHBhcmVudFJlY3QgPSBub2RlUmVjdEluQWJz
b2x1dGVDb29yZGluYXRlcyhwYXJlbnROb2RlKTsKQEAgLTY0MSwyMyArNjY5LDIzIEBAIGJvb2wg
Y2FuQmVTY3JvbGxlZEludG9WaWV3KEZvY3VzRGlyZWN0aW8KIC8vIENvbXBvc2UgYSB2aXJ0dWFs
IHN0YXJ0aW5nIHJlY3QgaWYgdGhlcmUgaXMgbm8gZm9jdXNlZCBub2RlIG9yIGlmIGl0IGlzIG9m
ZiBzY3JlZW4uCiAvLyBUaGUgdmlydHVhbCByZWN0IGlzIHRoZSBlZGdlIG9mIHRoZSBjb250YWlu
ZXIgb3IgZnJhbWUuIFdlIHNlbGVjdCB3aGljaAogLy8gZWRnZSBkZXBlbmRpbmcgb24gdGhlIGRp
cmVjdGlvbiBvZiB0aGUgbmF2aWdhdGlvbi4KLUludFJlY3QgdmlydHVhbFJlY3RGb3JEaXJlY3Rp
b24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGluZ1JlY3Qp
CitJbnRSZWN0IHZpcnR1YWxSZWN0Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
biwgY29uc3QgSW50UmVjdCYgc3RhcnRpbmdSZWN0LCBpbnQgd2lkdGgpCiB7CiAgICAgSW50UmVj
dCB2aXJ0dWFsU3RhcnRpbmdSZWN0ID0gc3RhcnRpbmdSZWN0OwogICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6Ci0gICAgICAgIHZpcnR1YWxTdGFy
dGluZ1JlY3Quc2V0WCh2aXJ0dWFsU3RhcnRpbmdSZWN0LnJpZ2h0KCkpOwotICAgICAgICB2aXJ0
dWFsU3RhcnRpbmdSZWN0LnNldFdpZHRoKDApOworICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0
LnNldFgodmlydHVhbFN0YXJ0aW5nUmVjdC5yaWdodCgpIC0gd2lkdGgpOworICAgICAgICB2aXJ0
dWFsU3RhcnRpbmdSZWN0LnNldFdpZHRoKHdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGb2N1c0RpcmVjdGlvblVwOgotICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldFkodmly
dHVhbFN0YXJ0aW5nUmVjdC5ib3R0b20oKSk7Ci0gICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Qu
c2V0SGVpZ2h0KDApOworICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldFkodmlydHVhbFN0
YXJ0aW5nUmVjdC5ib3R0b20oKSAtIHdpZHRoKTsKKyAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVj
dC5zZXRIZWlnaHQod2lkdGgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvY3VzRGlyZWN0
aW9uUmlnaHQ6Ci0gICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0V2lkdGgoMCk7CisgICAg
ICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0V2lkdGgod2lkdGgpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKLSAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVj
dC5zZXRIZWlnaHQoMCk7CisgICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0SGVpZ2h0KHdp
ZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC02NjYsNSArNjk0LDEzIEBAIEludFJlY3QgdmlydHVhbFJlY3RGb3JEaXJl
Y3Rpb24oRm9jdXNEaXIKICAgICByZXR1cm4gdmlydHVhbFN0YXJ0aW5nUmVjdDsKIH0KIAorSW50
UmVjdCB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9u
IGRpcmVjdGlvbiwgSFRNTEFyZWFFbGVtZW50KiBhcmVhKQoreworICAgIC8vIEFyZWEgZWxlbWVu
dHMgdGVuZCB0byBvdmVybGFwIG1vcmUgdGhhbiBvdGhlciBmb2N1c2FibGUgZWxlbWVudHMuIFdl
IGZsYXR0ZW4gdGhlIHJlY3Qgb2YgdGhlIGFyZWEgZWxlbWVudHMKKyAgICAvLyB0byBtaW5pbWl6
ZSB0aGUgZWZmZWN0IG9mIG92ZXJsYXBwaW5nIGFyZWFzLgorICAgIEludFJlY3QgcmVjdCA9IHZp
cnR1YWxSZWN0Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbiwgcmVjdFRvQWJzb2x1dGVDb29yZGluYXRl
cyhhcmVhLT5kb2N1bWVudCgpLT5mcmFtZSgpLCBhcmVhLT5nZXRSZWN0KGFyZWEtPmltYWdlRWxl
bWVudCgpLT5yZW5kZXJlcigpKSksIDEpOworICAgIHJldHVybiByZWN0OworfQorCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCShyZXZpc2lv
biA3MjcxMSkKKysrIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIEZyYW1lOworY2xhc3MgSFRNTEFyZWFFbGVtZW50OwogY2xhc3MgSW50UmVjdDsK
IGNsYXNzIFJlbmRlck9iamVjdDsKIApAQCAtMTAxLDI1ICsxMDIsMzIgQEAgc3RydWN0IEZvY3Vz
Q2FuZGlkYXRlIHsKICAgICBGb2N1c0NhbmRpZGF0ZSgpCiAgICAgICAgIDogbm9kZSgwKQogICAg
ICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKKyAgICAgICAgLCBhY3R1YWxOb2RlKDAp
CiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBwYXJlbnREaXN0
YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChOb25lKQogICAgICAgICAs
IHBhcmVudEFsaWdubWVudChOb25lKQorICAgICAgICAsIGlzT2Zmc2NyZWVuKHRydWUpCisgICAg
ICAgICwgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZyh0cnVlKQogICAgIHsKICAgICB9CiAKLSAg
ICBGb2N1c0NhbmRpZGF0ZShOb2RlKiBuKTsKKyAgICBGb2N1c0NhbmRpZGF0ZShOb2RlKiBuLCBG
b2N1c0RpcmVjdGlvbik7CisgICAgZXhwbGljaXQgRm9jdXNDYW5kaWRhdGUoSFRNTEFyZWFFbGVt
ZW50KiBhcmVhLCBGb2N1c0RpcmVjdGlvbik7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbm9kZTsgfQogICAgIGJvb2wgaW5TY3JvbGxhYmxlQ29udGFpbmVyKCkgY29uc3QgeyBy
ZXR1cm4gbm9kZSAmJiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94OyB9CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50KCkgY29uc3QgeyByZXR1cm4gbm9kZSA/IG5vZGUtPmRvY3VtZW50KCkgOiAwOyB9CiAK
ICAgICBOb2RlKiBub2RlOwogICAgIE5vZGUqIGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7CisgICAg
Tm9kZSogYWN0dWFsTm9kZTsKICAgICBsb25nIGxvbmcgZGlzdGFuY2U7CiAgICAgbG9uZyBsb25n
IHBhcmVudERpc3RhbmNlOwogICAgIFJlY3RzQWxpZ25tZW50IGFsaWdubWVudDsKICAgICBSZWN0
c0FsaWdubWVudCBwYXJlbnRBbGlnbm1lbnQ7CiAgICAgSW50UmVjdCByZWN0OworICAgIGJvb2wg
aXNPZmZzY3JlZW47CisgICAgYm9vbCBpc09mZnNjcmVlbkFmdGVyU2Nyb2xsaW5nOwogfTsKIAog
Ym9vbCBzY3JvbGxJbkRpcmVjdGlvbihGcmFtZSosIEZvY3VzRGlyZWN0aW9uKTsKQEAgLTEzNCw3
ICsxNDIsOCBAQCBJbnRSZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKE5vCiBJbnRS
ZWN0IGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhGcmFtZSopOwogdm9pZCBkaXN0YW5j
ZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVudCwgRm9j
dXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7CiBib29sIGNhbkJlU2Nyb2xsZWRJbnRvVmlldyhGb2N1
c0RpcmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRhdGUmKTsKLUludFJlY3QgdmlydHVhbFJlY3RG
b3JEaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCk7
CitJbnRSZWN0IHZpcnR1YWxSZWN0Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJ
bnRSZWN0JiBzdGFydGluZ1JlY3QsIGludCB3aWR0aCA9IDApOworSW50UmVjdCB2aXJ0dWFsUmVj
dEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBIVE1MQXJlYUVsZW1l
bnQqKTsKIH0gLy8gbmFtc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU3BhdGlhbE5hdmlnYXRp
b25faApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzI3ODApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0xMS0yOCAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3BhdGlhbCBuYXZpZ2F0aW9uIG5vdCBXb3JraW5nIGZvciBNYXAg
YW5kIEFyZWEgVGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDcxNDIKKworICAgICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LWltYWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEt
bm90LWZvY3VzYWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFs
LW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1p
bWFnZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
dmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdh
dGlvbi9zbmF2LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTExLTI2ICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LWltYWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2Vt
YXAtYXJlYS1ub3QtZm9jdXNhYmxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEt
bm90LWZvY3VzYWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAor
IAorCisKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitUaGlzIHRlc3QgdGVzdHMgdGhhdCBh
cmVhcyBvZiBhbiBpbWFnZW1hcCB3aXRob3V0IGFuIGhyZWYgYXJlIG5vdCBmb2N1c2FibGUsIHRo
dXMgY2FuIG5vdCBiZSByZWFjaGVkIHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9uLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJl
YS1ub3QtZm9jdXNhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS1ub3QtZm9jdXNhYmxlLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLW5vdC1mb2N1c2FibGUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1OCBAQAorPGh0bWw+CisgIDxoZWFkPgorCisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0
TWFwID0gWworICAgICAgWyJEb3duIiwgIjEiXSwKKyAgICAgIFsiRG93biIsICIzIl0sCisgICAg
ICBbIlVwIiwgIjEiXSwKKyAgICAgIFsiVXAiLCAic3RhcnQiXSwKKyAgICAgIFsiRE9ORSIsICJE
T05FIl0KKyAgICBdOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUpOworICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRUYWJUb0xpbmtzUHJl
ZmVyZW5jZUtleSIsIDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIC8vIHN0
YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCisgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAgICBpbml0VGVzdChy
ZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21w
bGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3
aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgor
CisgIDxib2R5IGlkPSJzb21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIj4KKyAgPG1hcCBuYW1lPSJtYXAiIHRpdGxlPSJtYXAiIGlkPSJmaXJzdG1hcCI+Cisg
ICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjAsMjAsNzAsNzAiIGhyZWY9IiMiIGlkPSIx
Ij4KKyAgICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMCwxMzAsNzAsMTgwIiBpZD0iMiI+
CisgIDwvbWFwPgorCisgICAgPGEgaWQ9InN0YXJ0IiBocmVmPSJhIj48aW1nIHNyYz0icmVzb3Vy
Y2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAgPGRpdj4KKyAg
ICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD0yMDBweCBoZWlnaHQ9MjAw
cHggdXNlbWFwPSIjbWFwIj48YSBpZD0iNiIgaHJlZj0iYSI+PGltZyBzcmM9InJlc291cmNlcy9n
cmVlbi5wbmciIHdpZHRoPTUwcHggaGVpZ2h0PTUwcHg+PC9hPgorICAgIDwvZGl2PgorICAgIDxh
IGlkPSIzIiBocmVmPSJhIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBw
eCBoZWlnaHQ9NTBweD48L2E+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPGRp
dj5UaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCB3aXRob3V0IGFuIGhy
ZWYgYXJlIG5vdCBmb2N1c2FibGUsIHRodXMgY2FuIG5vdCBiZSByZWFjaGVkIHdpdGggc3BhdGlh
bCBuYXZpZ2F0aW9uLjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0
aG91dC1pbWFnZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS13aXRob3V0LWltYWdl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Nw
YXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0aG91dC1pbWFnZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorIAorCisKK1BBU1MgZ0ZvY3VzZWRE
b2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0Zv
Y3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQi
CitUaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCB3aXRob3V0IGFuIGlt
YWdlIHVzaW5nIGl0LCBhcmUgbm90IGZvY3VzYWJsZSwgdGh1cyBjYW4gbm90IGJlIHJlYWNoZWQg
d2l0aCBzcGF0aWFsIG5hdmlnYXRpb24uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24v
c25hdi1pbWFnZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFy
ZWEtd2l0aG91dC1pbWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACis8aHRt
bD4KKyAgPGhlYWQ+CisKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwt
bmF2aWdhdGlvbi11dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Ij4KKworICAgIHZhciByZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24i
LCAiMyJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAgICAgWyJET05FIiwgIkRPTkUiXQor
ICAgIF07CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNl
S2V5IiwgMSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgLy8gc3RhcnRpbmcg
dGhlIHRlc3QgaXRzZWxmOiBnZXQgdG8gYSBrbm93biBwbGFjZS4KKyAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisKKyAgICAgIGluaXRUZXN0KHJlc3VsdE1h
cCwgdGVzdENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdENvbXBsZXRlZCgp
CisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5v
bmxvYWQgPSBydW5UZXN0OworCisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICA8L2hlYWQ+CisKKyAgPGJv
ZHkgaWQ9InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi
PgorICA8bWFwIG5hbWU9Im1hcCIgdGl0bGU9Im1hcCIgaWQ9ImZpcnN0bWFwIj4KKyAgICA8YXJl
YSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMCwyMCw3MCw3MCIgaHJlZj0iIyIgaWQ9IjEiPgorICAg
IDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDEzMCw3MCwxODAiIGhyZWY9IiMiIGlkPSIy
Ij4KKyAgPC9tYXA+CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNv
dXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8ZGl2Pgor
ICAgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTIwMHB4IGhlaWdodD0y
MDBweCB1c2VtYXA9IiNvdGhlcm1hcCI+PGEgaWQ9IjYiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNv
dXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8L2Rpdj4K
KyAgICA8YSBpZD0iMyIgaHJlZj0iYSI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdp
ZHRoPTUwcHggaGVpZ2h0PTUwcHg+PC9hPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgIDxkaXY+VGhpcyB0ZXN0IHRlc3RzIHRoYXQgYXJlYXMgb2YgYW4gaW1hZ2VtYXAgd2l0aG91
dCBhbiBpbWFnZSB1c2luZyBpdCwgYXJlIG5vdCBmb2N1c2FibGUsIHRodXMgY2FuIG5vdCBiZSBy
ZWFjaGVkIHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9uLjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLW92
ZXJsYXBwZWQtYXJlYXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1h
cmVhcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKyAKKworCitQ
QVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMg
IjQiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlk
IikgaXMgIjEiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1
dGUoImlkIikgaXMgIjIiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRB
dHRyaWJ1dGUoImlkIikgaXMgIjUiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjQiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZl
RWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjMiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQu
YWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGdGb2N1c2VkRG9j
dW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGdGb2N1
c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjMiCitQQVNT
IGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIi
CitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikg
aXMgIjEiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImlkIikgaXMgInN0YXJ0IgorVGhpcyB0ZXN0IHRlc3RzIHRoYXQgYXJlYXMgb2YgYW4gaW1hZ2Vt
YXAgY2FuIGJlIHJlYWNoZWQgd2l0aCBzcGF0aWFsIG5hdmlnYXRpb24gZXZlbiBpZiB0aGV5IGFy
ZSBvdmVybGFwcGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZp
Z2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFw
LW92ZXJsYXBwZWQtYXJlYXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+CisgIDxoZWFkPgorCisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+
CisKKyAgICB2YXIgcmVzdWx0TWFwID0gWworICAgICAgWyJEb3duIiwgIjQiXSwKKyAgICAgIFsi
RG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMiJdLAorICAgICAgWyJEb3duIiwgIjUiXSwK
KyAgICAgIFsiVXAiLCAiNCJdLAorICAgICAgWyJVcCIsICIzIl0sCisgICAgICBbIlVwIiwgIjIi
XSwKKyAgICAgIFsiTGVmdCIsICIxIl0sCisgICAgICBbIlJpZ2h0IiwgIjMiXSwKKyAgICAgIFsi
TGVmdCIsICIyIl0sCisgICAgICBbIlVwIiwgIjEiXSwKKyAgICAgIFsiVXAiLCAic3RhcnQiXSwK
KyAgICAgIFsiRE9ORSIsICJET05FIl0KKyAgICBdOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
KHRydWUpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSIsIDEpOworICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQor
ICAgIHsKKyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24g
cGxhY2UuCisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOwor
CisgICAgICBpbml0VGVzdChyZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKworICAgIDwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKyAgPC9oZWFkPgorCisgIDxib2R5IGlkPSJzb21lLWNvbnRlbnQiIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAgPG1hcCBuYW1lPSJtYXAiIHRpdGxlPSJtYXAi
IGlkPSJmaXJzdG1hcCI+CisgICAgPGFyZWEgc2hhcGU9ImNpcmNsZSIgY29vcmRzPSI0NSw0NSwy
NSIgaHJlZj0iIyIgaWQ9IjEiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjQ1LDYw
LDk1LDExMCIgaHJlZj0iIyIgaWQ9IjIiPgorICAgIDxhcmVhIHNoYXBlPSJwb2x5IiBjb29yZHM9
IjgwLDIwLDEzMCwyMCwxMzAsMTgwLDMwLDE4MCwzMCwxMzAsODAsMTMwIiBocmVmPSIjIiBpZD0i
MyI+CisgICAgPGFyZWEgc2hhcGU9ImRlZmF1bHQiIGhyZWY9IiMiIGlkPSI0Ij4KKyAgPC9tYXA+
CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4u
cG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8ZGl2PgorICAgICAgPGltZyBz
cmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTIwMHB4IGhlaWdodD0yMDBweCB1c2VtYXA9
IiNtYXAiPgorICAgIDwvZGl2PgorICAgIDxhIGlkPSI1IiBocmVmPSJhIj48aW1nIHNyYz0icmVz
b3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgPGRpdj5UaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBv
ZiBhbiBpbWFnZW1hcCBjYW4gYmUgcmVhY2hlZCB3aXRoIHNwYXRpYWwgbmF2aWdhdGlvbiBldmVu
IGlmIHRoZXkgYXJlIG92ZXJsYXBwZWQuPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2Vt
YXAtc2ltcGxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1zaW1wbGUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNCBAQAorIAorCisKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVu
dC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWRE
b2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNCIKK1BBU1MgZ0Zv
Y3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNiIKK1BB
U1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
NCIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQi
KSBpcyAiMiIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0
ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0
dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitUaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBh
biBpbWFnZW1hcCBjYW4gYmUgcmVhY2hlZCB3aXRoIHNwYXRpYWwgbmF2aWdhdGlvbi4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFw
LXNpbXBsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRp
YWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLXNpbXBsZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAt
c2ltcGxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKzxodG1sPgorICA8aGVh
ZD4KKworICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3BhdGlhbC1uYXZpZ2F0aW9u
LXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiPgorCisgICAgdmFyIHJlc3VsdE1hcCA9IFsKKyAgICAgIFsiRG93biIsICIxIl0sCisg
ICAgICBbIkRvd24iLCAiMyJdLAorICAgICAgWyJEb3duIiwgIjUiXSwKKyAgICAgIFsiVXAiLCAi
MyJdLAorICAgICAgWyJSaWdodCIsICI0Il0sCisgICAgICBbIlJpZ2h0IiwgIjYiXSwKKyAgICAg
IFsiTGVmdCIsICI0Il0sCisgICAgICBbIlVwIiwgIjIiXSwKKyAgICAgIFsiTGVmdCIsICIxIl0s
CisgICAgICBbIlVwIiwgInN0YXJ0Il0sCisgICAgICBbIkRPTkUiLCAiRE9ORSJdCisgICAgXTsK
KworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAx
KTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVz
dCBpdHNlbGY6IGdldCB0byBhIGtub3duIHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsKKworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCB0ZXN0
Q29tcGxldGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7
CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9
IHJ1blRlc3Q7CisKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keSBpZD0i
c29tZS1jb250ZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgIDxt
YXAgbmFtZT0ibWFwIiB0aXRsZT0ibWFwIiBpZD0iZmlyc3RtYXAiPgorICAgIDxhcmVhIHNoYXBl
PSJyZWN0IiBjb29yZHM9IjIwLDIwLDcwLDcwIiBocmVmPSIjIiBpZD0iMSI+CisgICAgPGFyZWEg
c2hhcGU9InJlY3QiIGNvb3Jkcz0iMTMwLDIwLDE4MCw3MCIgaHJlZj0iIyIgaWQ9IjIiPgorICAg
IDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDEzMCw3MCwxODAiIGhyZWY9IiMiIGlkPSIz
Ij4KKyAgICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxMzAsMTMwLDE4MCwxODAiIGhyZWY9
IiMiIGlkPSI0Ij4KKyAgPC9tYXA+CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPjxpbWcg
c3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAg
ICA8ZGl2PgorICAgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTIwMHB4
IGhlaWdodD0yMDBweCB1c2VtYXA9IiNtYXAiPjxhIGlkPSI2IiBocmVmPSJhIj48aW1nIHNyYz0i
cmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAgPC9k
aXY+CisgICAgPGEgaWQ9IjUiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5n
IiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICA8ZGl2PlRoaXMgdGVzdCB0ZXN0cyB0aGF0IGFyZWFzIG9mIGFuIGltYWdlbWFwIGNh
biBiZSByZWFjaGVkIHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9uLjwvZGl2PgorICA8L2JvZHk+Cis8
L2h0bWw+CisK
</data>
<flag name="review"
          id="65694"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75031</attachid>
            <date>2010-11-29 08:30:28 -0800</date>
            <delta_ts>2010-12-03 19:38:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>47142.patch</filename>
            <type>text/plain</type>
            <size>23738</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mjc5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMjkgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwYXRpYWwgbmF2aWdhdGlvbiBub3QgV29ya2luZyBmb3IgTWFwIGFuZCBBcmVhIFRhZ3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTQyCisKKyAg
ICAgICAgR2l2ZSBhcmVhIGVsZW1lbnRzIHNwZWNpYWwgdHJlYXRtZW50IGluIHNwYXRpYWwgbmF2
aWdhdGlvbiBhbGdvcml0aG0gYnkgZ2V0dGluZyB0aGUKKyAgICAgICAgcmVjdCBvZiB0aGUgYXJl
YSBmcm9tIHRoZSBhc3NvY2lhdGVkIGltYWdlLiBTaW5jZSBhcmVhIGVsZW1lbnRzIGFyZSBsaWtl
bHkgdG8gb3ZlcmxhcAorICAgICAgICBpZiB0aGV5IGFyZSBub3QgcmVjdHMsIG9yIGlmIGF1dGhv
cnMgYXJlIG5vdCBjYXJlZnVsLCB3ZSBmbGF0dGVuIHRoZSByZWN0IG9mIGFyZWEgZWxlbWVudHMu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWlt
YWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50
cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1h
Z2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1zaW1wbGUuaHRtbAorCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpmaW5kRm9jdXNDYW5kaWRhdGVJbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHlJbkNvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFs
bHkpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnZpcnR1YWxSZWN0Rm9yRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnZpcnR1YWxSZWN0
Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmln
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0
ZSk6CisKIDIwMTAtMTEtMjkgIEplcmVteSBNb3Nrb3ZpY2ggIDxqZXJlbXlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDcyNzk4KQorKysgV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDkgQEAKICNpbmNsdWRlICJGcmFt
ZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCisjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgi
CkBAIC00NzMsNiArNDc1LDIwIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNDYW5k
aWRhdGUKICAgICAgICAgaWYgKG5vZGUgPT0gZm9jdXNlZE5vZGUpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAorICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShhcmVhVGFnKSkgeworICAgICAg
ICAgICAgaWYgKCFub2RlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgSFRNTEFyZWFFbGVtZW50KiBhcmVhID0gc3Rh
dGljX2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4obm9kZSk7CisgICAgICAgICAgICBGb2N1c0NhbmRp
ZGF0ZSBjYW5kaWRhdGUoYXJlYSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChjYW5kaWRh
dGUuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNh
bmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY29udGFpbmVyOworICAgICAgICAgICAg
dXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZChkaXJlY3Rpb24sIHN0YXJ0aW5nUmVjdCwgY2Fu
ZGlkYXRlLCBjbG9zZXN0KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAg
ICAgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAg
LTU1MCw3ICs1NjYsNyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0
CiAgICAgfQogCiAgICAgLy8gV2UgZm91bmQgYSBuZXcgZm9jdXMgbm9kZSwgbmF2aWdhdGUgdG8g
aXQuCi0gICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChmb2N1c0NhbmRpZGF0ZS5ub2Rl
KTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KGZvY3VzQ2FuZGlkYXRlLmFjdHVh
bE5vZGUpOwogICAgIEFTU0VSVChlbGVtZW50KTsKIAogICAgIGVsZW1lbnQtPmZvY3VzKGZhbHNl
KTsKQEAgLTU3MSw5ICs1ODcsMTUgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1
c0RpcmVjdAogCiAgICAgLy8gRmlndXJlIG91dCB0aGUgc3RhcnRpbmcgcmVjdC4KICAgICBJbnRS
ZWN0IHN0YXJ0aW5nUmVjdDsKLSAgICBpZiAoZm9jdXNlZE5vZGUgJiYgIWhhc09mZnNjcmVlblJl
Y3QoZm9jdXNlZE5vZGUpKSB7Ci0gICAgICAgIGNvbnRhaW5lciA9IHNjcm9sbGFibGVFbmNsb3Np
bmdCb3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKGRpcmVjdGlvbiwgZm9jdXNlZE5v
ZGUpOwotICAgICAgICBzdGFydGluZ1JlY3QgPSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRl
cyhmb2N1c2VkTm9kZSwgdHJ1ZSAvKiBpZ25vcmUgYm9yZGVyICovKTsKKyAgICBpZiAoZm9jdXNl
ZE5vZGUpIHsKKyAgICAgICAgaWYgKCFoYXNPZmZzY3JlZW5SZWN0KGZvY3VzZWROb2RlKSkgewor
ICAgICAgICAgICAgY29udGFpbmVyID0gc2Nyb2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJh
bWVGb3JOb2RlSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSk7CisgICAgICAgICAg
ICBzdGFydGluZ1JlY3QgPSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhmb2N1c2VkTm9k
ZSwgdHJ1ZSAvKiBpZ25vcmUgYm9yZGVyICovKTsKKyAgICAgICAgfSBlbHNlIGlmIChmb2N1c2Vk
Tm9kZS0+aGFzVGFnTmFtZShhcmVhVGFnKSkgeworICAgICAgICAgICAgSFRNTEFyZWFFbGVtZW50
KiBhcmVhID0gc3RhdGljX2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4oZm9jdXNlZE5vZGUpOworICAg
ICAgICAgICAgY29udGFpbmVyID0gc2Nyb2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVG
b3JOb2RlSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBhcmVhLT5pbWFnZUVsZW1lbnQoKSk7CisgICAg
ICAgICAgICBzdGFydGluZ1JlY3QgPSB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0
aW9uKGRpcmVjdGlvbiwgYXJlYSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGNvbnN1
bWVkID0gZmFsc2U7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAJKHJldmlzaW9u
IDcyNzk4KQorKysgV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsMTAgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxBcmVhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTQs
NiArNTcsNyBAQCBzdGF0aWMgdm9pZCBlbnRyeUFuZEV4aXRQb2ludHNGb3JEaXJlY3RpCiBGb2N1
c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSogbiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uKQogICAgIDogbm9kZShuKQogICAgICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCgwKQorICAg
ICwgYWN0dWFsTm9kZShuKQogICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAsIHBh
cmVudERpc3RhbmNlKG1heERpc3RhbmNlKCkpCiAgICAgLCBhbGlnbm1lbnQoTm9uZSkKQEAgLTY0
LDYgKzY4LDI4IEBAIEZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZShOb2RlKiBuLCAKIHsK
IH0KIAorRm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKEhUTUxBcmVhRWxlbWVudCogYXJl
YSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQorICAgIDogbm9kZSgwKQorICAgICwgZW5jbG9z
aW5nU2Nyb2xsYWJsZUJveCgwKQorICAgICwgYWN0dWFsTm9kZSgwKQorICAgICwgZGlzdGFuY2Uo
bWF4RGlzdGFuY2UoKSkKKyAgICAsIHBhcmVudERpc3RhbmNlKG1heERpc3RhbmNlKCkpCisgICAg
LCBhbGlnbm1lbnQoTm9uZSkKKyAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQorICAgICwgaXNP
ZmZzY3JlZW4odHJ1ZSkKKyAgICAsIGlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxpbmcodHJ1ZSkKK3sK
KyAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSA9IGFyZWEtPmltYWdlRWxlbWVudCgpOworICAg
IGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGFjdHVhbE5vZGUgPSBhcmVhOwor
ICAgIG5vZGUgPSBpbWFnZTsKKyAgICByZWN0ID0gdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFu
ZERpcmVjdGlvbihkaXJlY3Rpb24sIGFyZWEpOworICAgIGlzT2Zmc2NyZWVuID0gaGFzT2Zmc2Ny
ZWVuUmVjdChpbWFnZSk7CisgICAgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZyA9IGhhc09mZnNj
cmVlblJlY3QoaW1hZ2UsIGRpcmVjdGlvbik7Cit9CisKIGJvb2wgaXNTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQoY29uc3QgRnJhbWUqIGZyYW1lKQogewogICAgIHJldHVybiAoZnJhbWUgJiYgZnJh
bWUtPnNldHRpbmdzKCkgJiYgZnJhbWUtPnNldHRpbmdzKCktPmlzU3BhdGlhbE5hdmlnYXRpb25F
bmFibGVkKCkpOwpAQCAtNjQzLDIzICs2NjksMjMgQEAgYm9vbCBjYW5CZVNjcm9sbGVkSW50b1Zp
ZXcoRm9jdXNEaXJlY3RpbwogLy8gQ29tcG9zZSBhIHZpcnR1YWwgc3RhcnRpbmcgcmVjdCBpZiB0
aGVyZSBpcyBubyBmb2N1c2VkIG5vZGUgb3IgaWYgaXQgaXMgb2ZmIHNjcmVlbi4KIC8vIFRoZSB2
aXJ0dWFsIHJlY3QgaXMgdGhlIGVkZ2Ugb2YgdGhlIGNvbnRhaW5lciBvciBmcmFtZS4gV2Ugc2Vs
ZWN0IHdoaWNoCiAvLyBlZGdlIGRlcGVuZGluZyBvbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBuYXZp
Z2F0aW9uLgotSW50UmVjdCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24sIGNvbnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCkKK0ludFJlY3QgdmlydHVhbFJl
Y3RGb3JEaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBz
dGFydGluZ1JlY3QsIGludCB3aWR0aCkKIHsKICAgICBJbnRSZWN0IHZpcnR1YWxTdGFydGluZ1Jl
Y3QgPSBzdGFydGluZ1JlY3Q7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIEZv
Y3VzRGlyZWN0aW9uTGVmdDoKLSAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRYKHZpcnR1
YWxTdGFydGluZ1JlY3QucmlnaHQoKSk7Ci0gICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0
V2lkdGgoMCk7CisgICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0WCh2aXJ0dWFsU3RhcnRp
bmdSZWN0LnJpZ2h0KCkgLSB3aWR0aCk7CisgICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0
V2lkdGgod2lkdGgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6
Ci0gICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0WSh2aXJ0dWFsU3RhcnRpbmdSZWN0LmJv
dHRvbSgpKTsKLSAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRIZWlnaHQoMCk7CisgICAg
ICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0WSh2aXJ0dWFsU3RhcnRpbmdSZWN0LmJvdHRvbSgp
IC0gd2lkdGgpOworICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldEhlaWdodCh3aWR0aCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKLSAgICAgICAg
dmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRXaWR0aCgwKTsKKyAgICAgICAgdmlydHVhbFN0YXJ0aW5n
UmVjdC5zZXRXaWR0aCh3aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9jdXNEaXJl
Y3Rpb25Eb3duOgotICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldEhlaWdodCgwKTsKKyAg
ICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRIZWlnaHQod2lkdGgpOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY2OCw1
ICs2OTQsMTMgQEAgSW50UmVjdCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcgogICAg
IHJldHVybiB2aXJ0dWFsU3RhcnRpbmdSZWN0OwogfQogCitJbnRSZWN0IHZpcnR1YWxSZWN0Rm9y
QXJlYUVsZW1lbnRBbmREaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBIVE1MQXJl
YUVsZW1lbnQqIGFyZWEpCit7CisgICAgLy8gQXJlYSBlbGVtZW50cyB0ZW5kIHRvIG92ZXJsYXAg
bW9yZSB0aGFuIG90aGVyIGZvY3VzYWJsZSBlbGVtZW50cy4gV2UgZmxhdHRlbiB0aGUgcmVjdCBv
ZiB0aGUgYXJlYSBlbGVtZW50cworICAgIC8vIHRvIG1pbmltaXplIHRoZSBlZmZlY3Qgb2Ygb3Zl
cmxhcHBpbmcgYXJlYXMuCisgICAgSW50UmVjdCByZWN0ID0gdmlydHVhbFJlY3RGb3JEaXJlY3Rp
b24oZGlyZWN0aW9uLCByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKGFyZWEtPmRvY3VtZW50KCkt
PmZyYW1lKCksIGFyZWEtPmdldFJlY3QoYXJlYS0+aW1hZ2VFbGVtZW50KCktPnJlbmRlcmVyKCkp
KSwgMSk7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgJKHJldmlzaW9uIDcyNzk4KQorKysgV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7Citj
bGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0
OwogCkBAIC0xMDEsNiArMTAyLDcgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBGb2N1
c0NhbmRpZGF0ZSgpCiAgICAgICAgIDogbm9kZSgwKQogICAgICAgICAsIGVuY2xvc2luZ1Njcm9s
bGFibGVCb3goMCkKKyAgICAgICAgLCBhY3R1YWxOb2RlKDApCiAgICAgICAgICwgZGlzdGFuY2Uo
bWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQog
ICAgICAgICAsIGFsaWdubWVudChOb25lKQpAQCAtMTExLDEyICsxMTMsMTQgQEAgc3RydWN0IEZv
Y3VzQ2FuZGlkYXRlIHsKICAgICB9CiAKICAgICBGb2N1c0NhbmRpZGF0ZShOb2RlKiBuLCBGb2N1
c0RpcmVjdGlvbik7CisgICAgZXhwbGljaXQgRm9jdXNDYW5kaWRhdGUoSFRNTEFyZWFFbGVtZW50
KiBhcmVhLCBGb2N1c0RpcmVjdGlvbik7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbm9kZTsgfQogICAgIGJvb2wgaW5TY3JvbGxhYmxlQ29udGFpbmVyKCkgY29uc3QgeyByZXR1
cm4gbm9kZSAmJiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94OyB9CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gbm9kZSA/IG5vZGUtPmRvY3VtZW50KCkgOiAwOyB9CiAKICAg
ICBOb2RlKiBub2RlOwogICAgIE5vZGUqIGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7CisgICAgTm9k
ZSogYWN0dWFsTm9kZTsKICAgICBsb25nIGxvbmcgZGlzdGFuY2U7CiAgICAgbG9uZyBsb25nIHBh
cmVudERpc3RhbmNlOwogICAgIFJlY3RzQWxpZ25tZW50IGFsaWdubWVudDsKQEAgLTEzOCw3ICsx
NDIsOCBAQCBJbnRSZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKE5vCiBJbnRSZWN0
IGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhGcmFtZSopOwogdm9pZCBkaXN0YW5jZURh
dGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVudCwgRm9jdXND
YW5kaWRhdGUmIGNhbmRpZGF0ZSk7CiBib29sIGNhbkJlU2Nyb2xsZWRJbnRvVmlldyhGb2N1c0Rp
cmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRhdGUmKTsKLUludFJlY3QgdmlydHVhbFJlY3RGb3JE
aXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCk7CitJ
bnRSZWN0IHZpcnR1YWxSZWN0Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRS
ZWN0JiBzdGFydGluZ1JlY3QsIGludCB3aWR0aCA9IDApOworSW50UmVjdCB2aXJ0dWFsUmVjdEZv
ckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBIVE1MQXJlYUVsZW1lbnQq
KTsKIH0gLy8gbmFtc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU3BhdGlhbE5hdmlnYXRpb25f
aApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNzI3OTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0xMS0yOSAgWWFlbCBBaGFyb24gIDx5
YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3BhdGlhbCBuYXZpZ2F0aW9uIG5vdCBXb3JraW5nIGZvciBNYXAgYW5k
IEFyZWEgVGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDcxNDIKKworICAgICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWltYWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtbm90
LWZvY3VzYWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFn
ZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtaW1hZ2VtYXAtc2ltcGxlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTExLTI5ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBz
a2lwcGluZyBjcmFzaGluZyB0ZXN0LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3Bh
dGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS1ub3QtZm9jdXNhYmxlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLW5vdC1mb2N1c2FibGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3Nu
YXYtaW1hZ2VtYXAtYXJlYS1ub3QtZm9jdXNhYmxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4IEBACisgCisKKworUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1l
bnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2
ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIzIgorUEFTUyBnRm9jdXNlZERvY3VtZW50
LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBnRm9jdXNlZERv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJzdGFydCIKK1RoaXMg
dGVzdCB0ZXN0cyB0aGF0IGFyZWFzIG9mIGFuIGltYWdlbWFwIHdpdGhvdXQgYW4gaHJlZiBhcmUg
bm90IGZvY3VzYWJsZSwgdGh1cyBjYW4gbm90IGJlIHJlYWNoZWQgd2l0aCBzcGF0aWFsIG5hdmln
YXRpb24uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24v
c25hdi1pbWFnZW1hcC1hcmVhLW5vdC1mb2N1c2FibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVh
LW5vdC1mb2N1c2FibGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACis8aHRtbD4KKyAgPGhlYWQ+CisKKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwtbmF2aWdhdGlvbi11dGlscy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4K
KworICAgIHZhciByZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24iLCAiMSJdLAorICAgICAgWyJE
b3duIiwgIjMiXSwKKyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAor
ICAgICAgWyJET05FIiwgIkRPTkUiXQorICAgIF07CisKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
dHJ1ZSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisg
ICAgeworICAgICAgLy8gc3RhcnRpbmcgdGhlIHRlc3QgaXRzZWxmOiBnZXQgdG8gYSBrbm93biBw
bGFjZS4KKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisK
KyAgICAgIGluaXRUZXN0KHJlc3VsdE1hcCwgdGVzdENvbXBsZXRlZCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdENvbXBsZXRlZCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworCisgICAgPC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorICA8L2hlYWQ+CisKKyAgPGJvZHkgaWQ9InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICA8bWFwIG5hbWU9Im1hcCIgdGl0bGU9Im1hcCIg
aWQ9ImZpcnN0bWFwIj4KKyAgICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMCwyMCw3MCw3
MCIgaHJlZj0iIyIgaWQ9IjEiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDEz
MCw3MCwxODAiIGlkPSIyIj4KKyAgPC9tYXA+CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9ImEi
PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4Pjwv
YT4KKyAgICA8ZGl2PgorICAgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRo
PTIwMHB4IGhlaWdodD0yMDBweCB1c2VtYXA9IiNtYXAiPjxhIGlkPSI2IiBocmVmPSJhIj48aW1n
IHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+Cisg
ICAgPC9kaXY+CisgICAgPGEgaWQ9IjMiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3Jl
ZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICA8ZGl2PlRoaXMgdGVzdCB0ZXN0cyB0aGF0IGFyZWFzIG9mIGFuIGltYWdl
bWFwIHdpdGhvdXQgYW4gaHJlZiBhcmUgbm90IGZvY3VzYWJsZSwgdGh1cyBjYW4gbm90IGJlIHJl
YWNoZWQgd2l0aCBzcGF0aWFsIG5hdmlnYXRpb24uPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYt
aW1hZ2VtYXAtYXJlYS13aXRob3V0LWltYWdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1h
cmVhLXdpdGhvdXQtaW1hZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS13aXRo
b3V0LWltYWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACisgCisK
KworUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIp
IGlzICIzIgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KCJpZCIpIGlzICJzdGFydCIKK1RoaXMgdGVzdCB0ZXN0cyB0aGF0IGFyZWFzIG9mIGFuIGltYWdl
bWFwIHdpdGhvdXQgYW4gaW1hZ2UgdXNpbmcgaXQsIGFyZSBub3QgZm9jdXNhYmxlLCB0aHVzIGNh
biBub3QgYmUgcmVhY2hlZCB3aXRoIHNwYXRpYWwgbmF2aWdhdGlvbi4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0
aG91dC1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Nw
YXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0aG91dC1pbWFnZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtaW1hZ2VtYXAtYXJlYS13aXRob3V0LWltYWdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTYgQEAKKzxodG1sPgorICA8aGVhZD4KKworICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc3BhdGlhbC1uYXZpZ2F0aW9uLXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisgICAgdmFyIHJlc3VsdE1hcCA9
IFsKKyAgICAgIFsiRG93biIsICIzIl0sCisgICAgICBbIlVwIiwgInN0YXJ0Il0sCisgICAgICBb
IkRPTkUiLCAiRE9ORSJdCisgICAgXTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCh0cnVlKTsK
KyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VGFi
VG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7Cisg
ICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3duIHBsYWNlLgor
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsKKworICAgICAg
aW5pdFRlc3QocmVzdWx0TWFwLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
fQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAgICA8L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cisg
IDwvaGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCI+CisgIDxtYXAgbmFtZT0ibWFwIiB0aXRsZT0ibWFwIiBpZD0iZmly
c3RtYXAiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDIwLDcwLDcwIiBocmVm
PSIjIiBpZD0iMSI+CisgICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjAsMTMwLDcwLDE4
MCIgaHJlZj0iIyIgaWQ9IjIiPgorICA8L21hcD4KKworICAgIDxhIGlkPSJzdGFydCIgaHJlZj0i
YSI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTUwcHggaGVpZ2h0PTUwcHg+
PC9hPgorICAgIDxkaXY+CisgICAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lk
dGg9MjAwcHggaGVpZ2h0PTIwMHB4IHVzZW1hcD0iI290aGVybWFwIj48YSBpZD0iNiIgaHJlZj0i
YSI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTUwcHggaGVpZ2h0PTUwcHg+
PC9hPgorICAgIDwvZGl2PgorICAgIDxhIGlkPSIzIiBocmVmPSJhIj48aW1nIHNyYz0icmVzb3Vy
Y2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgPGRpdj5UaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBh
biBpbWFnZW1hcCB3aXRob3V0IGFuIGltYWdlIHVzaW5nIGl0LCBhcmUgbm90IGZvY3VzYWJsZSwg
dGh1cyBjYW4gbm90IGJlIHJlYWNoZWQgd2l0aCBzcGF0aWFsIG5hdmlnYXRpb24uPC9kaXY+Cisg
IDwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFn
ZW1hcC1vdmVybGFwcGVkLWFyZWFzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNiBAQAorIAorCisKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0
dHJpYnV0ZSgiaWQiKSBpcyAiNCIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50
LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVF
bGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5h
Y3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNSIKK1BBU1MgZ0ZvY3VzZWREb2N1
bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNCIKK1BBU1MgZ0ZvY3Vz
ZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1Mg
Z0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMiIK
K1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBp
cyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitUaGlzIHRlc3QgdGVzdHMgdGhhdCBh
cmVhcyBvZiBhbiBpbWFnZW1hcCBjYW4gYmUgcmVhY2hlZCB3aXRoIHNwYXRpYWwgbmF2aWdhdGlv
biBldmVuIGlmIHRoZXkgYXJlIG92ZXJsYXBwZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAt
b3ZlcmxhcHBlZC1hcmVhcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACis8aHRt
bD4KKyAgPGhlYWQ+CisKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwt
bmF2aWdhdGlvbi11dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Ij4KKworICAgIHZhciByZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24i
LCAiNCJdLAorICAgICAgWyJEb3duIiwgIjEiXSwKKyAgICAgIFsiRG93biIsICIyIl0sCisgICAg
ICBbIkRvd24iLCAiNSJdLAorICAgICAgWyJVcCIsICI0Il0sCisgICAgICBbIlVwIiwgIjMiXSwK
KyAgICAgIFsiVXAiLCAiMiJdLAorICAgICAgWyJMZWZ0IiwgIjEiXSwKKyAgICAgIFsiUmlnaHQi
LCAiMyJdLAorICAgICAgWyJMZWZ0IiwgIjIiXSwKKyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAg
WyJVcCIsICJzdGFydCJdLAorICAgICAgWyJET05FIiwgIkRPTkUiXQorICAgIF07CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTcGF0aWFs
TmF2aWdhdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgLy8gc3RhcnRpbmcgdGhlIHRlc3QgaXRzZWxm
OiBnZXQgdG8gYSBrbm93biBwbGFjZS4KKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
dGFydCIpLmZvY3VzKCk7CisKKyAgICAgIGluaXRUZXN0KHJlc3VsdE1hcCwgdGVzdENvbXBsZXRl
ZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdENvbXBsZXRlZCgpCisgICAgeworICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0
OworCisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICA8L2hlYWQ+CisKKyAgPGJvZHkgaWQ9InNvbWUtY29u
dGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICA8bWFwIG5hbWU9
Im1hcCIgdGl0bGU9Im1hcCIgaWQ9ImZpcnN0bWFwIj4KKyAgICA8YXJlYSBzaGFwZT0iY2lyY2xl
IiBjb29yZHM9IjQ1LDQ1LDI1IiBocmVmPSIjIiBpZD0iMSI+CisgICAgPGFyZWEgc2hhcGU9InJl
Y3QiIGNvb3Jkcz0iNDUsNjAsOTUsMTEwIiBocmVmPSIjIiBpZD0iMiI+CisgICAgPGFyZWEgc2hh
cGU9InBvbHkiIGNvb3Jkcz0iODAsMjAsMTMwLDIwLDEzMCwxODAsMzAsMTgwLDMwLDEzMCw4MCwx
MzAiIGhyZWY9IiMiIGlkPSIzIj4KKyAgICA8YXJlYSBzaGFwZT0iZGVmYXVsdCIgaHJlZj0iIyIg
aWQ9IjQiPgorICA8L21hcD4KKworICAgIDxhIGlkPSJzdGFydCIgaHJlZj0iYSI+PGltZyBzcmM9
InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTUwcHggaGVpZ2h0PTUwcHg+PC9hPgorICAgIDxk
aXY+CisgICAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9MjAwcHggaGVp
Z2h0PTIwMHB4IHVzZW1hcD0iI21hcCI+CisgICAgPC9kaXY+CisgICAgPGEgaWQ9IjUiIGhyZWY9
ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4
PjwvYT4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8ZGl2PlRoaXMgdGVzdCB0
ZXN0cyB0aGF0IGFyZWFzIG9mIGFuIGltYWdlbWFwIGNhbiBiZSByZWFjaGVkIHdpdGggc3BhdGlh
bCBuYXZpZ2F0aW9uIGV2ZW4gaWYgdGhleSBhcmUgb3ZlcmxhcHBlZC48L2Rpdj4KKyAgPC9ib2R5
PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1pbWFnZW1hcC1zaW1wbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLXNp
bXBsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1zaW1wbGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACisgCisKKworUEFTUyBnRm9jdXNlZERvY3VtZW50
LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBnRm9jdXNlZERv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIzIgorUEFTUyBnRm9j
dXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICI1IgorUEFT
UyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIz
IgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIp
IGlzICI0IgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KCJpZCIpIGlzICI2IgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0
cmlidXRlKCJpZCIpIGlzICI0IgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVsZW1lbnQu
Z2V0QXR0cmlidXRlKCJpZCIpIGlzICIyIgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBnRm9jdXNlZERvY3VtZW50LmFj
dGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJzdGFydCIKK1RoaXMgdGVzdCB0ZXN0
cyB0aGF0IGFyZWFzIG9mIGFuIGltYWdlbWFwIGNhbiBiZSByZWFjaGVkIHdpdGggc3BhdGlhbCBu
YXZpZ2F0aW9uLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRp
b24vc25hdi1pbWFnZW1hcC1zaW1wbGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBA
QAorPGh0bWw+CisgIDxoZWFkPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
cGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
YXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwID0gWworICAgICAg
WyJEb3duIiwgIjEiXSwKKyAgICAgIFsiRG93biIsICIzIl0sCisgICAgICBbIkRvd24iLCAiNSJd
LAorICAgICAgWyJVcCIsICIzIl0sCisgICAgICBbIlJpZ2h0IiwgIjQiXSwKKyAgICAgIFsiUmln
aHQiLCAiNiJdLAorICAgICAgWyJMZWZ0IiwgIjQiXSwKKyAgICAgIFsiVXAiLCAiMiJdLAorICAg
ICAgWyJMZWZ0IiwgIjEiXSwKKyAgICAgIFsiVXAiLCAic3RhcnQiXSwKKyAgICAgIFsiRE9ORSIs
ICJET05FIl0KKyAgICBdOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUpOworICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRUYWJUb0xpbmtz
UHJlZmVyZW5jZUtleSIsIDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIC8v
IHN0YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCisgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAgICBpbml0VGVz
dChyZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RD
b21wbGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAg
ICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgPC9oZWFk
PgorCisgIDxib2R5IGlkPSJzb21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sIj4KKyAgPG1hcCBuYW1lPSJtYXAiIHRpdGxlPSJtYXAiIGlkPSJmaXJzdG1hcCI+
CisgICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjAsMjAsNzAsNzAiIGhyZWY9IiMiIGlk
PSIxIj4KKyAgICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxMzAsMjAsMTgwLDcwIiBocmVm
PSIjIiBpZD0iMiI+CisgICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjAsMTMwLDcwLDE4
MCIgaHJlZj0iIyIgaWQ9IjMiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjEzMCwx
MzAsMTgwLDE4MCIgaHJlZj0iIyIgaWQ9IjQiPgorICA8L21hcD4KKworICAgIDxhIGlkPSJzdGFy
dCIgaHJlZj0iYSI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTUwcHggaGVp
Z2h0PTUwcHg+PC9hPgorICAgIDxkaXY+CisgICAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVu
LnBuZyIgd2lkdGg9MjAwcHggaGVpZ2h0PTIwMHB4IHVzZW1hcD0iI21hcCI+PGEgaWQ9IjYiIGhy
ZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01
MHB4PjwvYT4KKyAgICA8L2Rpdj4KKyAgICA8YSBpZD0iNSIgaHJlZj0iYSI+PGltZyBzcmM9InJl
c291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTUwcHggaGVpZ2h0PTUwcHg+PC9hPgorICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxkaXY+VGhpcyB0ZXN0IHRlc3RzIHRoYXQgYXJlYXMg
b2YgYW4gaW1hZ2VtYXAgY2FuIGJlIHJlYWNoZWQgd2l0aCBzcGF0aWFsIG5hdmlnYXRpb24uPC9k
aXY+CisgIDwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75591</attachid>
            <date>2010-12-03 19:38:26 -0800</date>
            <delta_ts>2010-12-05 09:35:25 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>47142.patch</filename>
            <type>text/plain</type>
            <size>23562</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzMyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMjkgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwYXRpYWwgbmF2aWdhdGlvbiBub3QgV29ya2luZyBmb3IgTWFwIGFuZCBBcmVhIFRhZ3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTQyCisKKyAg
ICAgICAgR2l2ZSBhcmVhIGVsZW1lbnRzIHNwZWNpYWwgdHJlYXRtZW50IGluIHNwYXRpYWwgbmF2
aWdhdGlvbiBhbGdvcml0aG0gYnkgZ2V0dGluZyB0aGUKKyAgICAgICAgcmVjdCBvZiB0aGUgYXJl
YSBmcm9tIHRoZSBhc3NvY2lhdGVkIGltYWdlLiBTaW5jZSBhcmVhIGVsZW1lbnRzIGFyZSBsaWtl
bHkgdG8gb3ZlcmxhcAorICAgICAgICBpZiB0aGV5IGFyZSBub3QgcmVjdHMsIG9yIGlmIGF1dGhv
cnMgYXJlIG5vdCBjYXJlZnVsLCB3ZSBmbGF0dGVuIHRoZSByZWN0IG9mIGFyZWEgZWxlbWVudHMu
CisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAt
YXJlYS1ub3QtZm9jdXNhYmxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc3BhdGlhbC1uYXZp
Z2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS13aXRob3V0LWltYWdlLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVh
cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdl
bWFwLXNpbXBsZS5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c0NhbmRpZGF0ZUluQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3Vz
RGlyZWN0aW9uYWxseUluQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJv
bGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6CisgICAgICAgICogcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXND
YW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6dmlydHVhbFJlY3RGb3JEaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6dmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbik6
CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKKwogMjAxMC0xMi0wMyAgRGltaXRyaSBH
bGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczMzIz
KQorKysgV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDkgKzQwLDExIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisj
aW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC00NzMsNiArNDc1
LDIwIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNDYW5kaWRhdGUKICAgICAgICAg
aWYgKG5vZGUgPT0gZm9jdXNlZE5vZGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAg
ICBpZiAobm9kZS0+aGFzVGFnTmFtZShhcmVhVGFnKSkgeworICAgICAgICAgICAgaWYgKCFub2Rl
LT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgSFRNTEFyZWFFbGVtZW50KiBhcmVhID0gc3RhdGljX2Nhc3Q8SFRNTEFy
ZWFFbGVtZW50Kj4obm9kZSk7CisgICAgICAgICAgICBGb2N1c0NhbmRpZGF0ZSBjYW5kaWRhdGUo
YXJlYSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuaXNOdWxsKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3Np
bmdTY3JvbGxhYmxlQm94ID0gY29udGFpbmVyOworICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5k
aWRhdGVJZk5lZWRlZChkaXJlY3Rpb24sIHN0YXJ0aW5nUmVjdCwgY2FuZGlkYXRlLCBjbG9zZXN0
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgaWYgKCFub2Rl
LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTU1MCw3ICs1NjYsNyBA
QCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0CiAgICAgfQogCiAgICAg
Ly8gV2UgZm91bmQgYSBuZXcgZm9jdXMgbm9kZSwgbmF2aWdhdGUgdG8gaXQuCi0gICAgRWxlbWVu
dCogZWxlbWVudCA9IHRvRWxlbWVudChmb2N1c0NhbmRpZGF0ZS5ub2RlKTsKKyAgICBFbGVtZW50
KiBlbGVtZW50ID0gdG9FbGVtZW50KGZvY3VzQ2FuZGlkYXRlLmFjdHVhbE5vZGUpOwogICAgIEFT
U0VSVChlbGVtZW50KTsKIAogICAgIGVsZW1lbnQtPmZvY3VzKGZhbHNlKTsKQEAgLTU3MSw5ICs1
ODcsMTUgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdAogCiAgICAg
Ly8gRmlndXJlIG91dCB0aGUgc3RhcnRpbmcgcmVjdC4KICAgICBJbnRSZWN0IHN0YXJ0aW5nUmVj
dDsKLSAgICBpZiAoZm9jdXNlZE5vZGUgJiYgIWhhc09mZnNjcmVlblJlY3QoZm9jdXNlZE5vZGUp
KSB7Ci0gICAgICAgIGNvbnRhaW5lciA9IHNjcm9sbGFibGVFbmNsb3NpbmdCb3hPclBhcmVudEZy
YW1lRm9yTm9kZUluRGlyZWN0aW9uKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUpOwotICAgICAgICBz
dGFydGluZ1JlY3QgPSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhmb2N1c2VkTm9kZSwg
dHJ1ZSAvKiBpZ25vcmUgYm9yZGVyICovKTsKKyAgICBpZiAoZm9jdXNlZE5vZGUpIHsKKyAgICAg
ICAgaWYgKCFoYXNPZmZzY3JlZW5SZWN0KGZvY3VzZWROb2RlKSkgeworICAgICAgICAgICAgY29u
dGFpbmVyID0gc2Nyb2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJl
Y3Rpb24oZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSk7CisgICAgICAgICAgICBzdGFydGluZ1JlY3Qg
PSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhmb2N1c2VkTm9kZSwgdHJ1ZSAvKiBpZ25v
cmUgYm9yZGVyICovKTsKKyAgICAgICAgfSBlbHNlIGlmIChmb2N1c2VkTm9kZS0+aGFzVGFnTmFt
ZShhcmVhVGFnKSkgeworICAgICAgICAgICAgSFRNTEFyZWFFbGVtZW50KiBhcmVhID0gc3RhdGlj
X2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4oZm9jdXNlZE5vZGUpOworICAgICAgICAgICAgY29udGFp
bmVyID0gc2Nyb2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rp
b24oZGlyZWN0aW9uLCBhcmVhLT5pbWFnZUVsZW1lbnQoKSk7CisgICAgICAgICAgICBzdGFydGlu
Z1JlY3QgPSB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKGRpcmVjdGlvbiwg
YXJlYSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGNvbnN1bWVkID0gZmFsc2U7Cklu
ZGV4OiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAJKHJldmlzaW9uIDczMzIzKQorKysgV2Vi
Q29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsMTAgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTQsNiArNTcsNyBAQCBzdGF0
aWMgdm9pZCBlbnRyeUFuZEV4aXRQb2ludHNGb3JEaXJlY3RpCiBGb2N1c0NhbmRpZGF0ZTo6Rm9j
dXNDYW5kaWRhdGUoTm9kZSogbiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIDogbm9k
ZShuKQogICAgICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCgwKQorICAgICwgYWN0dWFsTm9kZShu
KQogICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAsIHBhcmVudERpc3RhbmNlKG1h
eERpc3RhbmNlKCkpCiAgICAgLCBhbGlnbm1lbnQoTm9uZSkKQEAgLTY0LDYgKzY4LDI4IEBAIEZv
Y3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZShOb2RlKiBuLCAKIHsKIH0KIAorRm9jdXNDYW5k
aWRhdGU6OkZvY3VzQ2FuZGlkYXRlKEhUTUxBcmVhRWxlbWVudCogYXJlYSwgRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uKQorICAgIDogbm9kZSgwKQorICAgICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJv
eCgwKQorICAgICwgYWN0dWFsTm9kZSgwKQorICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkK
KyAgICAsIHBhcmVudERpc3RhbmNlKG1heERpc3RhbmNlKCkpCisgICAgLCBhbGlnbm1lbnQoTm9u
ZSkKKyAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQorICAgICwgaXNPZmZzY3JlZW4odHJ1ZSkK
KyAgICAsIGlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxpbmcodHJ1ZSkKK3sKKyAgICBIVE1MSW1hZ2VF
bGVtZW50KiBpbWFnZSA9IGFyZWEtPmltYWdlRWxlbWVudCgpOworICAgIGlmICghaW1hZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIGFjdHVhbE5vZGUgPSBhcmVhOworICAgIG5vZGUgPSBpbWFn
ZTsKKyAgICByZWN0ID0gdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbihkaXJl
Y3Rpb24sIGFyZWEpOworICAgIGlzT2Zmc2NyZWVuID0gaGFzT2Zmc2NyZWVuUmVjdChpbWFnZSk7
CisgICAgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZyA9IGhhc09mZnNjcmVlblJlY3QoaW1hZ2Us
IGRpcmVjdGlvbik7Cit9CisKIGJvb2wgaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoY29uc3Qg
RnJhbWUqIGZyYW1lKQogewogICAgIHJldHVybiAoZnJhbWUgJiYgZnJhbWUtPnNldHRpbmdzKCkg
JiYgZnJhbWUtPnNldHRpbmdzKCktPmlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCkpOwpAQCAt
NjQzLDIzICs2NjksMjMgQEAgYm9vbCBjYW5CZVNjcm9sbGVkSW50b1ZpZXcoRm9jdXNEaXJlY3Rp
bwogLy8gQ29tcG9zZSBhIHZpcnR1YWwgc3RhcnRpbmcgcmVjdCBpZiB0aGVyZSBpcyBubyBmb2N1
c2VkIG5vZGUgb3IgaWYgaXQgaXMgb2ZmIHNjcmVlbi4KIC8vIFRoZSB2aXJ0dWFsIHJlY3QgaXMg
dGhlIGVkZ2Ugb2YgdGhlIGNvbnRhaW5lciBvciBmcmFtZS4gV2Ugc2VsZWN0IHdoaWNoCiAvLyBl
ZGdlIGRlcGVuZGluZyBvbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBuYXZpZ2F0aW9uLgotSW50UmVj
dCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0
IEludFJlY3QmIHN0YXJ0aW5nUmVjdCkKK0ludFJlY3QgdmlydHVhbFJlY3RGb3JEaXJlY3Rpb24o
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGluZ1JlY3QsIGlu
dCB3aWR0aCkKIHsKICAgICBJbnRSZWN0IHZpcnR1YWxTdGFydGluZ1JlY3QgPSBzdGFydGluZ1Jl
Y3Q7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVm
dDoKLSAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRYKHZpcnR1YWxTdGFydGluZ1JlY3Qu
cmlnaHQoKSk7Ci0gICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0V2lkdGgoMCk7CisgICAg
ICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0WCh2aXJ0dWFsU3RhcnRpbmdSZWN0LnJpZ2h0KCkg
LSB3aWR0aCk7CisgICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0V2lkdGgod2lkdGgpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6Ci0gICAgICAgIHZpcnR1
YWxTdGFydGluZ1JlY3Quc2V0WSh2aXJ0dWFsU3RhcnRpbmdSZWN0LmJvdHRvbSgpKTsKLSAgICAg
ICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRIZWlnaHQoMCk7CisgICAgICAgIHZpcnR1YWxTdGFy
dGluZ1JlY3Quc2V0WSh2aXJ0dWFsU3RhcnRpbmdSZWN0LmJvdHRvbSgpIC0gd2lkdGgpOworICAg
ICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldEhlaWdodCh3aWR0aCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKLSAgICAgICAgdmlydHVhbFN0YXJ0aW5n
UmVjdC5zZXRXaWR0aCgwKTsKKyAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRXaWR0aCh3
aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgotICAg
ICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldEhlaWdodCgwKTsKKyAgICAgICAgdmlydHVhbFN0
YXJ0aW5nUmVjdC5zZXRIZWlnaHQod2lkdGgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY2OCw1ICs2OTQsMTMgQEAgSW50
UmVjdCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcgogICAgIHJldHVybiB2aXJ0dWFs
U3RhcnRpbmdSZWN0OwogfQogCitJbnRSZWN0IHZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRBbmRE
aXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBIVE1MQXJlYUVsZW1lbnQqIGFyZWEp
Cit7CisgICAgLy8gQXJlYSBlbGVtZW50cyB0ZW5kIHRvIG92ZXJsYXAgbW9yZSB0aGFuIG90aGVy
IGZvY3VzYWJsZSBlbGVtZW50cy4gV2UgZmxhdHRlbiB0aGUgcmVjdCBvZiB0aGUgYXJlYSBlbGVt
ZW50cworICAgIC8vIHRvIG1pbmltaXplIHRoZSBlZmZlY3Qgb2Ygb3ZlcmxhcHBpbmcgYXJlYXMu
CisgICAgSW50UmVjdCByZWN0ID0gdmlydHVhbFJlY3RGb3JEaXJlY3Rpb24oZGlyZWN0aW9uLCBy
ZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKGFyZWEtPmRvY3VtZW50KCktPmZyYW1lKCksIGFyZWEt
PmdldFJlY3QoYXJlYS0+aW1hZ2VFbGVtZW50KCktPnJlbmRlcmVyKCkpKSwgMSk7CisgICAgcmV0
dXJuIHJlY3Q7Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmgJKHJldmlzaW9uIDczMzIzKQorKysgV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MQXJlYUVs
ZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogCkBAIC0xMDEsNiAr
MTAyLDcgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBGb2N1c0NhbmRpZGF0ZSgpCiAg
ICAgICAgIDogbm9kZSgwKQogICAgICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKKyAg
ICAgICAgLCBhY3R1YWxOb2RlKDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkK
ICAgICAgICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdu
bWVudChOb25lKQpAQCAtMTExLDEyICsxMTMsMTQgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsK
ICAgICB9CiAKICAgICBGb2N1c0NhbmRpZGF0ZShOb2RlKiBuLCBGb2N1c0RpcmVjdGlvbik7Cisg
ICAgZXhwbGljaXQgRm9jdXNDYW5kaWRhdGUoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBGb2N1c0Rp
cmVjdGlvbik7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbm9kZTsgfQogICAg
IGJvb2wgaW5TY3JvbGxhYmxlQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbm9kZSAmJiBlbmNs
b3NpbmdTY3JvbGxhYmxlQm94OyB9CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbm9kZSA/IG5vZGUtPmRvY3VtZW50KCkgOiAwOyB9CiAKICAgICBOb2RlKiBub2RlOwog
ICAgIE5vZGUqIGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7CisgICAgTm9kZSogYWN0dWFsTm9kZTsK
ICAgICBsb25nIGxvbmcgZGlzdGFuY2U7CiAgICAgbG9uZyBsb25nIHBhcmVudERpc3RhbmNlOwog
ICAgIFJlY3RzQWxpZ25tZW50IGFsaWdubWVudDsKQEAgLTEzOCw3ICsxNDIsOCBAQCBJbnRSZWN0
IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKE5vCiBJbnRSZWN0IGZyYW1lUmVjdEluQWJz
b2x1dGVDb29yZGluYXRlcyhGcmFtZSopOwogdm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZvY3Vz
RGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVudCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRp
ZGF0ZSk7CiBib29sIGNhbkJlU2Nyb2xsZWRJbnRvVmlldyhGb2N1c0RpcmVjdGlvbiwgY29uc3Qg
Rm9jdXNDYW5kaWRhdGUmKTsKLUludFJlY3QgdmlydHVhbFJlY3RGb3JEaXJlY3Rpb24oRm9jdXNE
aXJlY3Rpb24sIGNvbnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCk7CitJbnRSZWN0IHZpcnR1YWxS
ZWN0Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGluZ1Jl
Y3QsIGludCB3aWR0aCA9IDApOworSW50UmVjdCB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5k
RGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBIVE1MQXJlYUVsZW1lbnQqKTsKIH0gLy8gbmFtc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU3BhdGlhbE5hdmlnYXRpb25faApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNzMzMjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMC0xMS0yOSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3BhdGlhbCBuYXZpZ2F0aW9uIG5vdCBXb3JraW5nIGZvciBNYXAgYW5kIEFyZWEgVGFncworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcxNDIKKworICAg
ICAgICAqIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS1ub3QtZm9j
dXNhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLW5vdC1mb2N1c2FibGUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLXdpdGhvdXQt
aW1hZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwYXRpYWwtbmF2aWdh
dGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0aG91dC1pbWFnZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJl
YXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1zaW1wbGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFw
LXNpbXBsZS5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0wMyAgTWFydGluIFJvYmluc29uICA8bXJv
Ymluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIGEgcGxhdGZvcm0tc3BlY2lmaWMgYmFz
ZWxpbmUgZm9yIEdUSysgYWZ0ZXIgcjczMTI4LiBUaGlzIHRlc3QKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS1ub3QtZm9jdXNhYmxl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWlt
YWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorIAorCisKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVu
dC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitUaGlzIHRlc3Qg
dGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCB3aXRob3V0IGFuIGhyZWYgYXJlIG5vdCBm
b2N1c2FibGUsIHRodXMgY2FuIG5vdCBiZSByZWFjaGVkIHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9u
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1h
cC1hcmVhLW5vdC1mb2N1c2FibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1pbWFnZW1hcC1hcmVhLW5vdC1mb2N1c2FibGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1OCBAQAorPGh0bWw+CisgIDxoZWFkPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlw
ZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwID0gWworICAg
ICAgWyJEb3duIiwgIjEiXSwKKyAgICAgIFsiRG93biIsICIzIl0sCisgICAgICBbIlVwIiwgIjEi
XSwKKyAgICAgIFsiVXAiLCAic3RhcnQiXSwKKyAgICAgIFsiRE9ORSIsICJET05FIl0KKyAgICBd
OworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUpOworICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSIs
IDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0
ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCisgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAsIHRl
c3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQorICAg
IHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2Fk
ID0gcnVuVGVzdDsKKworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJqcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgorCisgIDxib2R5IGlkPSJz
b21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAgPG1h
cCBuYW1lPSJtYXAiIHRpdGxlPSJtYXAiIGlkPSJmaXJzdG1hcCI+CisgICAgPGFyZWEgc2hhcGU9
InJlY3QiIGNvb3Jkcz0iMjAsMjAsNzAsNzAiIGhyZWY9IiMiIGlkPSIxIj4KKyAgICA8YXJlYSBz
aGFwZT0icmVjdCIgY29vcmRzPSIyMCwxMzAsNzAsMTgwIiBpZD0iMiI+CisgIDwvbWFwPgorCisg
ICAgPGEgaWQ9InN0YXJ0IiBocmVmPSJhIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIg
d2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAgPGRpdj4KKyAgICAgIDxpbWcgc3JjPSJy
ZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD0yMDBweCBoZWlnaHQ9MjAwcHggdXNlbWFwPSIjbWFw
Ij48YSBpZD0iNiIgaHJlZj0iYSI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRo
PTUwcHggaGVpZ2h0PTUwcHg+PC9hPgorICAgIDwvZGl2PgorICAgIDxhIGlkPSIzIiBocmVmPSJh
Ij48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48
L2E+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPGRpdj5UaGlzIHRlc3QgdGVz
dHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCB3aXRob3V0IGFuIGhyZWYgYXJlIG5vdCBmb2N1
c2FibGUsIHRodXMgY2FuIG5vdCBiZSByZWFjaGVkIHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9uLjwv
ZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS13aXRob3V0LWltYWdlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWltYWdlbWFwLWFyZWEtd2l0aG91dC1pbWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEt
d2l0aG91dC1pbWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAor
IAorCisKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAic3RhcnQiCitUaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBp
bWFnZW1hcCB3aXRob3V0IGFuIGltYWdlIHVzaW5nIGl0LCBhcmUgbm90IGZvY3VzYWJsZSwgdGh1
cyBjYW4gbm90IGJlIHJlYWNoZWQgd2l0aCBzcGF0aWFsIG5hdmlnYXRpb24uCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0aG91
dC1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZp
Z2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS13aXRob3V0LWltYWdlLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFy
ZWEtd2l0aG91dC1pbWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACis8aHRt
bD4KKyAgPGhlYWQ+CisKKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwtbmF2
aWdhdGlvbi11dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Ij4KKworICAgIHZhciByZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24iLCAi
MyJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAgICAgWyJET05FIiwgIkRPTkUiXQorICAg
IF07CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5
IiwgMSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgLy8gc3RhcnRpbmcgdGhl
IHRlc3QgaXRzZWxmOiBnZXQgdG8gYSBrbm93biBwbGFjZS4KKyAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisKKyAgICAgIGluaXRUZXN0KHJlc3VsdE1hcCwg
dGVzdENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdENvbXBsZXRlZCgpCisg
ICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5vbmxv
YWQgPSBydW5UZXN0OworCisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImpzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICA8L2hlYWQ+CisKKyAgPGJvZHkgaWQ9
InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICA8
bWFwIG5hbWU9Im1hcCIgdGl0bGU9Im1hcCIgaWQ9ImZpcnN0bWFwIj4KKyAgICA8YXJlYSBzaGFw
ZT0icmVjdCIgY29vcmRzPSIyMCwyMCw3MCw3MCIgaHJlZj0iIyIgaWQ9IjEiPgorICAgIDxhcmVh
IHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDEzMCw3MCwxODAiIGhyZWY9IiMiIGlkPSIyIj4KKyAg
PC9tYXA+CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMv
Z3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8ZGl2PgorICAgICAg
PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTIwMHB4IGhlaWdodD0yMDBweCB1
c2VtYXA9IiNvdGhlcm1hcCI+PGEgaWQ9IjYiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMv
Z3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8L2Rpdj4KKyAgICA8
YSBpZD0iMyIgaHJlZj0iYSI+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTUw
cHggaGVpZ2h0PTUwcHg+PC9hPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxk
aXY+VGhpcyB0ZXN0IHRlc3RzIHRoYXQgYXJlYXMgb2YgYW4gaW1hZ2VtYXAgd2l0aG91dCBhbiBp
bWFnZSB1c2luZyBpdCwgYXJlIG5vdCBmb2N1c2FibGUsIHRodXMgY2FuIG5vdCBiZSByZWFjaGVk
IHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9uLjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3Zl
cmxhcHBlZC1hcmVhcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTYgQEAKKyAKKworCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZl
RWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjQiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQu
YWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGdGb2N1c2VkRG9j
dW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGdGb2N1
c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjUiCitQQVNT
IGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjQi
CitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikg
aXMgIjMiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImlkIikgaXMgIjIiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRy
aWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5n
ZXRBdHRyaWJ1dGUoImlkIikgaXMgIjMiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0
aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGdGb2N1c2VkRG9jdW1l
bnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0IgorVGhpcyB0ZXN0
IHRlc3RzIHRoYXQgYXJlYXMgb2YgYW4gaW1hZ2VtYXAgY2FuIGJlIHJlYWNoZWQgd2l0aCBzcGF0
aWFsIG5hdmlnYXRpb24gZXZlbiBpZiB0aGV5IGFyZSBvdmVybGFwcGVkLgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFy
ZWFzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRp
b24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFzLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLW92ZXJsYXBw
ZWQtYXJlYXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+CisgIDxo
ZWFkPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24t
dXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNj
cmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwID0gWworICAgICAgWyJEb3duIiwgIjQiXSwKKyAg
ICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMiJdLAorICAgICAgWyJEb3duIiwg
IjUiXSwKKyAgICAgIFsiVXAiLCAiNCJdLAorICAgICAgWyJVcCIsICIzIl0sCisgICAgICBbIlVw
IiwgIjIiXSwKKyAgICAgIFsiTGVmdCIsICIxIl0sCisgICAgICBbIlJpZ2h0IiwgIjMiXSwKKyAg
ICAgIFsiTGVmdCIsICIyIl0sCisgICAgICBbIlVwIiwgIjEiXSwKKyAgICAgIFsiVXAiLCAic3Rh
cnQiXSwKKyAgICAgIFsiRE9ORSIsICJET05FIl0KKyAgICBdOworCisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25F
bmFibGVkKHRydWUpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSIsIDEpOworICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKQorICAgIHsKKyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEg
a25vd24gcGxhY2UuCisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1
cygpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKworICAgIDwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJqcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKyAgPC9oZWFkPgorCisgIDxib2R5IGlkPSJzb21lLWNvbnRlbnQiIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAgPG1hcCBuYW1lPSJtYXAiIHRpdGxlPSJt
YXAiIGlkPSJmaXJzdG1hcCI+CisgICAgPGFyZWEgc2hhcGU9ImNpcmNsZSIgY29vcmRzPSI0NSw0
NSwyNSIgaHJlZj0iIyIgaWQ9IjEiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjQ1
LDYwLDk1LDExMCIgaHJlZj0iIyIgaWQ9IjIiPgorICAgIDxhcmVhIHNoYXBlPSJwb2x5IiBjb29y
ZHM9IjgwLDIwLDEzMCwyMCwxMzAsMTgwLDMwLDE4MCwzMCwxMzAsODAsMTMwIiBocmVmPSIjIiBp
ZD0iMyI+CisgICAgPGFyZWEgc2hhcGU9ImRlZmF1bHQiIGhyZWY9IiMiIGlkPSI0Ij4KKyAgPC9t
YXA+CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3Jl
ZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8ZGl2PgorICAgICAgPGlt
ZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTIwMHB4IGhlaWdodD0yMDBweCB1c2Vt
YXA9IiNtYXAiPgorICAgIDwvZGl2PgorICAgIDxhIGlkPSI1IiBocmVmPSJhIj48aW1nIHNyYz0i
cmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPGRpdj5UaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVh
cyBvZiBhbiBpbWFnZW1hcCBjYW4gYmUgcmVhY2hlZCB3aXRoIHNwYXRpYWwgbmF2aWdhdGlvbiBl
dmVuIGlmIHRoZXkgYXJlIG92ZXJsYXBwZWQuPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1z
aW1wbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAt
c2ltcGxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorIAorCisK
K1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBp
cyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAiNSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNCIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNiIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVu
dC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNCIKK1BBU1MgZ0ZvY3VzZWRE
b2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZ0Zv
Y3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BB
U1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
c3RhcnQiCitUaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCBjYW4gYmUg
cmVhY2hlZCB3aXRoIHNwYXRpYWwgbmF2aWdhdGlvbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
c3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1zaW1w
bGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYg
QEAKKzxodG1sPgorICA8aGVhZD4KKworICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3Bh
dGlhbC1uYXZpZ2F0aW9uLXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9ImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisgICAgdmFyIHJlc3VsdE1hcCA9IFsKKyAgICAgIFsi
RG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMyJdLAorICAgICAgWyJEb3duIiwgIjUiXSwK
KyAgICAgIFsiVXAiLCAiMyJdLAorICAgICAgWyJSaWdodCIsICI0Il0sCisgICAgICBbIlJpZ2h0
IiwgIjYiXSwKKyAgICAgIFsiTGVmdCIsICI0Il0sCisgICAgICBbIlVwIiwgIjIiXSwKKyAgICAg
IFsiTGVmdCIsICIxIl0sCisgICAgICBbIlVwIiwgInN0YXJ0Il0sCisgICAgICBbIkRPTkUiLCAi
RE9ORSJdCisgICAgXTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1By
ZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAvLyBz
dGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3duIHBsYWNlLgorICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsKKworICAgICAgaW5pdFRlc3Qo
cmVzdWx0TWFwLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0Q29t
cGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAg
d2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0ianMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKwor
ICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+CisgIDxtYXAgbmFtZT0ibWFwIiB0aXRsZT0ibWFwIiBpZD0iZmlyc3RtYXAiPgorICAg
IDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDIwLDcwLDcwIiBocmVmPSIjIiBpZD0iMSI+
CisgICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMTMwLDIwLDE4MCw3MCIgaHJlZj0iIyIg
aWQ9IjIiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDEzMCw3MCwxODAiIGhy
ZWY9IiMiIGlkPSIzIj4KKyAgICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIxMzAsMTMwLDE4
MCwxODAiIGhyZWY9IiMiIGlkPSI0Ij4KKyAgPC9tYXA+CisKKyAgICA8YSBpZD0ic3RhcnQiIGhy
ZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01
MHB4PjwvYT4KKyAgICA8ZGl2PgorICAgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmci
IHdpZHRoPTIwMHB4IGhlaWdodD0yMDBweCB1c2VtYXA9IiNtYXAiPjxhIGlkPSI2IiBocmVmPSJh
Ij48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48
L2E+CisgICAgPC9kaXY+CisgICAgPGEgaWQ9IjUiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJj
ZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICA8ZGl2PlRoaXMgdGVzdCB0ZXN0cyB0aGF0IGFyZWFzIG9mIGFu
IGltYWdlbWFwIGNhbiBiZSByZWFjaGVkIHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9uLjwvZGl2Pgor
ICA8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75631</attachid>
            <date>2010-12-05 09:35:25 -0800</date>
            <delta_ts>2010-12-07 06:57:43 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>47142.patch</filename>
            <type>text/plain</type>
            <size>30312</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzMyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMjkgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwYXRpYWwgbmF2aWdhdGlvbiBub3QgV29ya2luZyBmb3IgTWFwIGFuZCBBcmVhIFRhZ3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTQyCisKKyAg
ICAgICAgR2l2ZSBhcmVhIGVsZW1lbnRzIHNwZWNpYWwgdHJlYXRtZW50IGluIHNwYXRpYWwgbmF2
aWdhdGlvbiBhbGdvcml0aG0gYnkgZ2V0dGluZyB0aGUKKyAgICAgICAgcmVjdCBvZiB0aGUgYXJl
YSBmcm9tIHRoZSBhc3NvY2lhdGVkIGltYWdlLiBTaW5jZSBhcmVhIGVsZW1lbnRzIGFyZSBsaWtl
bHkgdG8gb3ZlcmxhcAorICAgICAgICBpZiB0aGV5IGFyZSBub3QgcmVjdHMsIG9yIGlmIGF1dGhv
cnMgYXJlIG5vdCBjYXJlZnVsLCB3ZSBmbGF0dGVuIHRoZSByZWN0IG9mIGFyZWEgZWxlbWVudHMu
CisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAt
YXJlYS1ub3QtZm9jdXNhYmxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc3BhdGlhbC1uYXZp
Z2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS13aXRob3V0LWltYWdlLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVh
cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdl
bWFwLXNpbXBsZS5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c0NhbmRpZGF0ZUluQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3Vz
RGlyZWN0aW9uYWxseUluQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJv
bGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseSk6CisgICAgICAgICogcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXND
YW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6dmlydHVhbFJlY3RGb3JEaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6dmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbik6
CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKKwogMjAxMC0xMi0wMyAgRGltaXRyaSBH
bGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczMzIz
KQorKysgV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDkgKzQwLDExIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisj
aW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC00MTQsMTEgKzQx
NiwxMSBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKGJvb2wgYWN0CiAKIHZvaWQg
dXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNv
bnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgRm9j
dXNDYW5kaWRhdGUmIGNsb3Nlc3QpCiB7Ci0gICAgaWYgKCFjYW5kaWRhdGUubm9kZS0+aXNFbGVt
ZW50Tm9kZSgpIHx8ICFjYW5kaWRhdGUubm9kZS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoIWNhbmRp
ZGF0ZS52aXNpYmxlTm9kZS0+aXNFbGVtZW50Tm9kZSgpIHx8ICFjYW5kaWRhdGUudmlzaWJsZU5v
ZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElnbm9yZSBpZnJhbWVz
IHRoYXQgZG9uJ3QgaGF2ZSBhIHNyYyBhdHRyaWJ1dGUKLSAgICBpZiAoY2FuZGlkYXRlLm5vZGUt
PmlzRnJhbWVPd25lckVsZW1lbnQoKSAmJiAhc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVt
ZW50Kj4oY2FuZGlkYXRlLm5vZGUpLT5jb250ZW50RnJhbWUoKSkKKyAgICBpZiAoY2FuZGlkYXRl
LnZpc2libGVOb2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgJiYgIXN0YXRpY19jYXN0PEhUTUxG
cmFtZU93bmVyRWxlbWVudCo+KGNhbmRpZGF0ZS52aXNpYmxlTm9kZSktPmNvbnRlbnRGcmFtZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZ25vcmUgb2ZmIHNjcmVlbiBjaGlsZCBub2Rl
cyBvZiBjb250YWluZXJzIHRoYXQgZG8gbm90IHNjcm9sbCAob3ZlcmZsb3c6aGlkZGVuKQpAQCAt
NDQ0LDEyICs0NDYsMTIgQEAgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkKEZvY3Vz
RAogICAgICAgICAvLyBJZiAyIG5vZGVzIGFyZSBpbnRlcnNlY3RpbmcsIGRvIGhpdCB0ZXN0IHRv
IGZpbmQgd2hpY2ggbm9kZSBpbiBvbiB0b3AuCiAgICAgICAgIGludCB4ID0gaW50ZXJzZWN0aW9u
UmVjdC54KCkgKyBpbnRlcnNlY3Rpb25SZWN0LndpZHRoKCkgLyAyOwogICAgICAgICBpbnQgeSA9
IGludGVyc2VjdGlvblJlY3QueSgpICsgaW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKSAvIDI7Ci0g
ICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLm5vZGUtPmRvY3VtZW50KCkt
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChJbnRQb2ludCh4LCB5KSwgZmFsc2UsIHRydWUpOwotICAgICAgICBpZiAoY2FuZGlkYXRlLm5v
ZGUtPmNvbnRhaW5zKHJlc3VsdC5pbm5lck5vZGUoKSkpIHsKKyAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBjYW5kaWRhdGUudmlzaWJsZU5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCh4
LCB5KSwgZmFsc2UsIHRydWUpOworICAgICAgICBpZiAoY2FuZGlkYXRlLnZpc2libGVOb2RlLT5j
b250YWlucyhyZXN1bHQuaW5uZXJOb2RlKCkpKSB7CiAgICAgICAgICAgICBjbG9zZXN0ID0gY2Fu
ZGlkYXRlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjbG9z
ZXN0Lm5vZGUtPmNvbnRhaW5zKHJlc3VsdC5pbm5lck5vZGUoKSkpCisgICAgICAgIGlmIChjbG9z
ZXN0LnZpc2libGVOb2RlLT5jb250YWlucyhyZXN1bHQuaW5uZXJOb2RlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDczLDExICs0NzUsMTkgQEAgdm9pZCBGb2N1c0NvbnRy
b2xsZXI6OmZpbmRGb2N1c0NhbmRpZGF0ZQogICAgICAgICBpZiAobm9kZSA9PSBmb2N1c2VkTm9k
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICghbm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgaWYgKCFub2RlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiAhbm9k
ZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpICYmICFjYW5TY3JvbGxJbkRpcmVjdGlvbihkaXJlY3Rp
b24sIG5vZGUpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCFub2RlLT5p
c0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiAhbm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgp
ICYmICFjYW5TY3JvbGxJbkRpcmVjdGlvbihkaXJlY3Rpb24sIG5vZGUpKQorICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShhcmVhVGFnKSkgeworICAgICAgICAgICAgSFRNTEFyZWFFbGVtZW50
KiBhcmVhID0gc3RhdGljX2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4obm9kZSk7CisgICAgICAgICAg
ICBGb2N1c0NhbmRpZGF0ZSBjYW5kaWRhdGUoYXJlYSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAg
IGlmIChjYW5kaWRhdGUuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY29udGFpbmVyOwor
ICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZChkaXJlY3Rpb24sIHN0YXJ0
aW5nUmVjdCwgY2FuZGlkYXRlLCBjbG9zZXN0KTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CiAKICAgICAgICAgRm9jdXNDYW5kaWRhdGUgY2FuZGlkYXRlKG5vZGUsIGRpcmVjdGlv
bik7CiAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY29udGFpbmVy
OwpAQCAtNTA4LDE1ICs1MTgsMTUgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1
c0RpcmVjdAogICAgICAgICAvLyBSZXR1cm4gZmFsc2Ugd2lsbCBjYXVzZSBhIHJlLXRyeSwgc2tp
cHBpbmcgdGhpcyBjb250YWluZXIuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
aWYgKGZvY3VzQ2FuZGlkYXRlLm5vZGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkgewotICAgICAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIGZyYW1lRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxG
cmFtZU93bmVyRWxlbWVudCo+KGZvY3VzQ2FuZGlkYXRlLm5vZGUpOworICAgIGlmIChmb2N1c0Nh
bmRpZGF0ZS52aXNpYmxlTm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7CisgICAgICAgIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1l
T3duZXJFbGVtZW50Kj4oZm9jdXNDYW5kaWRhdGUudmlzaWJsZU5vZGUpOwogICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGFuIGlmcmFtZSB3aXRob3V0IHRoZSBzcmMgYXR0cmlidXRlLCBpdCB3aWxsIG5v
dCBoYXZlIGEgY29udGVudEZyYW1lKCkuCiAgICAgICAgIC8vIFdlIEFTU0VSVCBoZXJlIHRvIG1h
a2Ugc3VyZSB0aGF0CiAgICAgICAgIC8vIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQoKSB3
aWxsIG5ldmVyIGNvbnNpZGVyIHN1Y2ggYW4gaWZyYW1lIGFzIGEgY2FuZGlkYXRlLgogICAgICAg
ICBBU1NFUlQoZnJhbWVFbGVtZW50LT5jb250ZW50RnJhbWUoKSk7CiAKICAgICAgICAgaWYgKGZv
Y3VzQ2FuZGlkYXRlLmlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxpbmcpIHsKLSAgICAgICAgICAgIHNj
cm9sbEluRGlyZWN0aW9uKGZvY3VzQ2FuZGlkYXRlLm5vZGUtPmRvY3VtZW50KCksIGRpcmVjdGlv
bik7CisgICAgICAgICAgICBzY3JvbGxJbkRpcmVjdGlvbihmb2N1c0NhbmRpZGF0ZS52aXNpYmxl
Tm9kZS0+ZG9jdW1lbnQoKSwgZGlyZWN0aW9uKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgICAgIC8vIE5hdmlnYXRlIGludG8gYSBuZXcgZnJhbWUuCkBAIC01Mjcs
MTMgKzUzNywxMyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0CiAg
ICAgICAgIGZyYW1lRWxlbWVudC0+Y29udGVudEZyYW1lKCktPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgICAgICBpZiAoIWFkdmFuY2VGb2N1
c0RpcmVjdGlvbmFsbHlJbkNvbnRhaW5lcihmcmFtZUVsZW1lbnQtPmNvbnRlbnRGcmFtZSgpLT5k
b2N1bWVudCgpLCByZWN0LCBkaXJlY3Rpb24sIGV2ZW50KSkgewogICAgICAgICAgICAgLy8gVGhl
IG5ldyBmcmFtZSBoYWQgbm90aGluZyBpbnRlcmVzdGluZywgbmVlZCB0byBmaW5kIGFub3RoZXIg
Y2FuZGlkYXRlLgotICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHlJ
bkNvbnRhaW5lcihjb250YWluZXIsIG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKGZvY3Vz
Q2FuZGlkYXRlLm5vZGUsIHRydWUpLCBkaXJlY3Rpb24sIGV2ZW50KTsKKyAgICAgICAgICAgIHJl
dHVybiBhZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5SW5Db250YWluZXIoY29udGFpbmVyLCBub2Rl
UmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhmb2N1c0NhbmRpZGF0ZS52aXNpYmxlTm9kZSwgdHJ1
ZSksIGRpcmVjdGlvbiwgZXZlbnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBpZiAoY2FuU2Nyb2xsSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBmb2N1c0NhbmRp
ZGF0ZS5ub2RlKSkgeworICAgIGlmIChjYW5TY3JvbGxJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGZv
Y3VzQ2FuZGlkYXRlLnZpc2libGVOb2RlKSkgewogICAgICAgICBpZiAoZm9jdXNDYW5kaWRhdGUu
aXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZykgewotICAgICAgICAgICAgc2Nyb2xsSW5EaXJlY3Rp
b24oZm9jdXNDYW5kaWRhdGUubm9kZSwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIHNjcm9sbElu
RGlyZWN0aW9uKGZvY3VzQ2FuZGlkYXRlLnZpc2libGVOb2RlLCBkaXJlY3Rpb24pOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gTmF2aWdhdGUgaW50byBh
IG5ldyBzY3JvbGxhYmxlIGNvbnRhaW5lci4KQEAgLTU0MSw3ICs1NTEsNyBAQCBib29sIEZvY3Vz
Q29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0CiAgICAgICAgIE5vZGUqIGZvY3VzZWROb2Rl
ID0gZm9jdXNlZE9yTWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAgICAg
ICAgIGlmIChmb2N1c2VkTm9kZSAmJiAhaGFzT2Zmc2NyZWVuUmVjdChmb2N1c2VkTm9kZSkpCiAg
ICAgICAgICAgICBzdGFydGluZ1JlY3QgPSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhm
b2N1c2VkTm9kZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBhZHZhbmNlRm9jdXNEaXJlY3Rpb25h
bGx5SW5Db250YWluZXIoZm9jdXNDYW5kaWRhdGUubm9kZSwgc3RhcnRpbmdSZWN0LCBkaXJlY3Rp
b24sIGV2ZW50KTsKKyAgICAgICAgcmV0dXJuIGFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHlJbkNv
bnRhaW5lcihmb2N1c0NhbmRpZGF0ZS52aXNpYmxlTm9kZSwgc3RhcnRpbmdSZWN0LCBkaXJlY3Rp
b24sIGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGZvY3VzQ2FuZGlkYXRlLmlzT2Zmc2NyZWVuQWZ0
ZXJTY3JvbGxpbmcpIHsKICAgICAgICAgTm9kZSogY29udGFpbmVyID0gZm9jdXNDYW5kaWRhdGUu
ZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsKQEAgLTU1MCw3ICs1NjAsNyBAQCBib29sIEZvY3VzQ29u
dHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0CiAgICAgfQogCiAgICAgLy8gV2UgZm91bmQgYSBu
ZXcgZm9jdXMgbm9kZSwgbmF2aWdhdGUgdG8gaXQuCi0gICAgRWxlbWVudCogZWxlbWVudCA9IHRv
RWxlbWVudChmb2N1c0NhbmRpZGF0ZS5ub2RlKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9F
bGVtZW50KGZvY3VzQ2FuZGlkYXRlLmZvY3VzYWJsZU5vZGUpOwogICAgIEFTU0VSVChlbGVtZW50
KTsKIAogICAgIGVsZW1lbnQtPmZvY3VzKGZhbHNlKTsKQEAgLTU3MSw5ICs1ODEsMTUgQEAgYm9v
bCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdAogCiAgICAgLy8gRmlndXJlIG91
dCB0aGUgc3RhcnRpbmcgcmVjdC4KICAgICBJbnRSZWN0IHN0YXJ0aW5nUmVjdDsKLSAgICBpZiAo
Zm9jdXNlZE5vZGUgJiYgIWhhc09mZnNjcmVlblJlY3QoZm9jdXNlZE5vZGUpKSB7Ci0gICAgICAg
IGNvbnRhaW5lciA9IHNjcm9sbGFibGVFbmNsb3NpbmdCb3hPclBhcmVudEZyYW1lRm9yTm9kZUlu
RGlyZWN0aW9uKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUpOwotICAgICAgICBzdGFydGluZ1JlY3Qg
PSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhmb2N1c2VkTm9kZSwgdHJ1ZSAvKiBpZ25v
cmUgYm9yZGVyICovKTsKKyAgICBpZiAoZm9jdXNlZE5vZGUpIHsKKyAgICAgICAgaWYgKCFoYXNP
ZmZzY3JlZW5SZWN0KGZvY3VzZWROb2RlKSkgeworICAgICAgICAgICAgY29udGFpbmVyID0gc2Ny
b2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oZGlyZWN0
aW9uLCBmb2N1c2VkTm9kZSk7CisgICAgICAgICAgICBzdGFydGluZ1JlY3QgPSBub2RlUmVjdElu
QWJzb2x1dGVDb29yZGluYXRlcyhmb2N1c2VkTm9kZSwgdHJ1ZSAvKiBpZ25vcmUgYm9yZGVyICov
KTsKKyAgICAgICAgfSBlbHNlIGlmIChmb2N1c2VkTm9kZS0+aGFzVGFnTmFtZShhcmVhVGFnKSkg
eworICAgICAgICAgICAgSFRNTEFyZWFFbGVtZW50KiBhcmVhID0gc3RhdGljX2Nhc3Q8SFRNTEFy
ZWFFbGVtZW50Kj4oZm9jdXNlZE5vZGUpOworICAgICAgICAgICAgY29udGFpbmVyID0gc2Nyb2xs
YWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oZGlyZWN0aW9u
LCBhcmVhLT5pbWFnZUVsZW1lbnQoKSk7CisgICAgICAgICAgICBzdGFydGluZ1JlY3QgPSB2aXJ0
dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKGRpcmVjdGlvbiwgYXJlYSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBib29sIGNvbnN1bWVkID0gZmFsc2U7CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9T
cGF0aWFsTmF2aWdhdGlvbi5jcHAJKHJldmlzaW9uIDczMzIzKQorKysgV2ViQ29yZS9wYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsMTAgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgorI2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFt
ZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb2Rl
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTIsOCArNTUsOSBAQCBzdGF0aWMgdm9pZCBlbnRy
eUFuZEV4aXRQb2ludHNGb3JEaXJlY3RpCiAKIAogRm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlk
YXRlKE5vZGUqIG4sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKLSAgICA6IG5vZGUobikKKyAg
ICA6IHZpc2libGVOb2RlKG4pCiAgICAgLCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94KDApCisgICAg
LCBmb2N1c2FibGVOb2RlKG4pCiAgICAgLCBkaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICwg
cGFyZW50RGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAsIGFsaWdubWVudChOb25lKQpAQCAt
NjQsNiArNjgsMjggQEAgRm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKE5vZGUqIG4sIAog
ewogfQogCitGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoSFRNTEFyZWFFbGVtZW50KiBh
cmVhLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCisgICAgOiB2aXNpYmxlTm9kZSgwKQorICAg
ICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCgwKQorICAgICwgZm9jdXNhYmxlTm9kZSgwKQorICAg
ICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKKyAgICAsIHBhcmVudERpc3RhbmNlKG1heERpc3Rh
bmNlKCkpCisgICAgLCBhbGlnbm1lbnQoTm9uZSkKKyAgICAsIHBhcmVudEFsaWdubWVudChOb25l
KQorICAgICwgaXNPZmZzY3JlZW4odHJ1ZSkKKyAgICAsIGlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxp
bmcodHJ1ZSkKK3sKKyAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSA9IGFyZWEtPmltYWdlRWxl
bWVudCgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGZvY3VzYWJs
ZU5vZGUgPSBhcmVhOworICAgIHZpc2libGVOb2RlID0gaW1hZ2U7CisgICAgcmVjdCA9IHZpcnR1
YWxSZWN0Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24oZGlyZWN0aW9uLCBhcmVhKTsKKyAgICBp
c09mZnNjcmVlbiA9IGhhc09mZnNjcmVlblJlY3QoaW1hZ2UpOworICAgIGlzT2Zmc2NyZWVuQWZ0
ZXJTY3JvbGxpbmcgPSBoYXNPZmZzY3JlZW5SZWN0KGltYWdlLCBkaXJlY3Rpb24pOworfQorCiBi
b29sIGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKICAg
ICByZXR1cm4gKGZyYW1lICYmIGZyYW1lLT5zZXR0aW5ncygpICYmIGZyYW1lLT5zZXR0aW5ncygp
LT5pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgpKTsKQEAgLTU3MSw3ICs1OTcsNyBAQCB2b2lk
IGRpc3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24gCiB7CiAgICAgaWYgKGNhbmRpZGF0
ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICghY2FuZGlkYXRlLm5vZGUtPnJl
bmRlcmVyKCkpCisgICAgaWYgKCFjYW5kaWRhdGUudmlzaWJsZU5vZGUtPnJlbmRlcmVyKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBJbnRSZWN0IG5vZGVSZWN0ID0gY2FuZGlkYXRlLnJlY3Q7CiAg
ICAgSW50UmVjdCBjdXJyZW50UmVjdCA9IGN1cnJlbnQucmVjdDsKQEAgLTYxOCwxNSArNjQ0LDE1
IEBAIHZvaWQgZGlzdGFuY2VEYXRhRm9yTm9kZShGb2N1c0RpcmVjdGlvbiAKIAogICAgIGZsb2F0
IGRpc3RhbmNlID0gZXVjbGlkaWFuRGlzdGFuY2UgKyBzYW1lQXhpc0Rpc3RhbmNlICsgMiAqIG90
aGVyQXhpc0Rpc3RhbmNlOwogICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IHJvdW5kZihkaXN0YW5j
ZSk7Ci0gICAgSW50U2l6ZSB2aWV3U2l6ZSA9IGNhbmRpZGF0ZS5ub2RlLT5kb2N1bWVudCgpLT5w
YWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsK
KyAgICBJbnRTaXplIHZpZXdTaXplID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5kb2N1bWVudCgp
LT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpLnNpemUo
KTsKICAgICBjYW5kaWRhdGUuYWxpZ25tZW50ID0gYWxpZ25tZW50Rm9yUmVjdHMoZGlyZWN0aW9u
LCBjdXJyZW50UmVjdCwgbm9kZVJlY3QsIHZpZXdTaXplKTsKIH0KIAogYm9vbCBjYW5CZVNjcm9s
bGVkSW50b1ZpZXcoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhbmRpZGF0
ZSYgY2FuZGlkYXRlKQogewotICAgIEFTU0VSVChjYW5kaWRhdGUubm9kZSAmJiBjYW5kaWRhdGUu
aXNPZmZzY3JlZW4pOworICAgIEFTU0VSVChjYW5kaWRhdGUudmlzaWJsZU5vZGUgJiYgY2FuZGlk
YXRlLmlzT2Zmc2NyZWVuKTsKICAgICBJbnRSZWN0IGNhbmRpZGF0ZVJlY3QgPSBjYW5kaWRhdGUu
cmVjdDsKLSAgICBmb3IgKE5vZGUqIHBhcmVudE5vZGUgPSBjYW5kaWRhdGUubm9kZS0+cGFyZW50
Tm9kZSgpOyBwYXJlbnROb2RlOyBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS0+cGFyZW50Tm9kZSgp
KSB7CisgICAgZm9yIChOb2RlKiBwYXJlbnROb2RlID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5w
YXJlbnROb2RlKCk7IHBhcmVudE5vZGU7IHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLT5wYXJlbnRO
b2RlKCkpIHsKICAgICAgICAgSW50UmVjdCBwYXJlbnRSZWN0ID0gbm9kZVJlY3RJbkFic29sdXRl
Q29vcmRpbmF0ZXMocGFyZW50Tm9kZSk7CiAgICAgICAgIGlmICghY2FuZGlkYXRlUmVjdC5pbnRl
cnNlY3RzKHBhcmVudFJlY3QpKSB7CiAgICAgICAgICAgICBpZiAoKChkaXJlY3Rpb24gPT0gRm9j
dXNEaXJlY3Rpb25MZWZ0IHx8IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvblJpZ2h0KSAmJiBw
YXJlbnROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5vdmVyZmxvd1goKSA9PSBPSElEREVOKQpA
QCAtNjQzLDIzICs2NjksMjMgQEAgYm9vbCBjYW5CZVNjcm9sbGVkSW50b1ZpZXcoRm9jdXNEaXJl
Y3RpbwogLy8gQ29tcG9zZSBhIHZpcnR1YWwgc3RhcnRpbmcgcmVjdCBpZiB0aGVyZSBpcyBubyBm
b2N1c2VkIG5vZGUgb3IgaWYgaXQgaXMgb2ZmIHNjcmVlbi4KIC8vIFRoZSB2aXJ0dWFsIHJlY3Qg
aXMgdGhlIGVkZ2Ugb2YgdGhlIGNvbnRhaW5lciBvciBmcmFtZS4gV2Ugc2VsZWN0IHdoaWNoCiAv
LyBlZGdlIGRlcGVuZGluZyBvbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBuYXZpZ2F0aW9uLgotSW50
UmVjdCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNv
bnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCkKK0ludFJlY3QgdmlydHVhbFJlY3RGb3JEaXJlY3Rp
b24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGluZ1JlY3Qs
IGludCB3aWR0aCkKIHsKICAgICBJbnRSZWN0IHZpcnR1YWxTdGFydGluZ1JlY3QgPSBzdGFydGlu
Z1JlY3Q7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIEZvY3VzRGlyZWN0aW9u
TGVmdDoKLSAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRYKHZpcnR1YWxTdGFydGluZ1Jl
Y3QucmlnaHQoKSk7Ci0gICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0V2lkdGgoMCk7Cisg
ICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0WCh2aXJ0dWFsU3RhcnRpbmdSZWN0LnJpZ2h0
KCkgLSB3aWR0aCk7CisgICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0V2lkdGgod2lkdGgp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6Ci0gICAgICAgIHZp
cnR1YWxTdGFydGluZ1JlY3Quc2V0WSh2aXJ0dWFsU3RhcnRpbmdSZWN0LmJvdHRvbSgpKTsKLSAg
ICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRIZWlnaHQoMCk7CisgICAgICAgIHZpcnR1YWxT
dGFydGluZ1JlY3Quc2V0WSh2aXJ0dWFsU3RhcnRpbmdSZWN0LmJvdHRvbSgpIC0gd2lkdGgpOwor
ICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldEhlaWdodCh3aWR0aCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKLSAgICAgICAgdmlydHVhbFN0YXJ0
aW5nUmVjdC5zZXRXaWR0aCgwKTsKKyAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRXaWR0
aCh3aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgot
ICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldEhlaWdodCgwKTsKKyAgICAgICAgdmlydHVh
bFN0YXJ0aW5nUmVjdC5zZXRIZWlnaHQod2lkdGgpOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY2OCw1ICs2OTQsMTMgQEAg
SW50UmVjdCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcgogICAgIHJldHVybiB2aXJ0
dWFsU3RhcnRpbmdSZWN0OwogfQogCitJbnRSZWN0IHZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRB
bmREaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBIVE1MQXJlYUVsZW1lbnQqIGFy
ZWEpCit7CisgICAgLy8gQXJlYSBlbGVtZW50cyB0ZW5kIHRvIG92ZXJsYXAgbW9yZSB0aGFuIG90
aGVyIGZvY3VzYWJsZSBlbGVtZW50cy4gV2UgZmxhdHRlbiB0aGUgcmVjdCBvZiB0aGUgYXJlYSBl
bGVtZW50cworICAgIC8vIHRvIG1pbmltaXplIHRoZSBlZmZlY3Qgb2Ygb3ZlcmxhcHBpbmcgYXJl
YXMuCisgICAgSW50UmVjdCByZWN0ID0gdmlydHVhbFJlY3RGb3JEaXJlY3Rpb24oZGlyZWN0aW9u
LCByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKGFyZWEtPmRvY3VtZW50KCktPmZyYW1lKCksIGFy
ZWEtPmdldFJlY3QoYXJlYS0+aW1hZ2VFbGVtZW50KCktPnJlbmRlcmVyKCkpKSwgMSk7CisgICAg
cmV0dXJuIHJlY3Q7Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmgJKHJldmlzaW9uIDczMzIzKQorKysgV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MQXJl
YUVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogCkBAIC05OSw4
ICsxMDAsOSBAQCBlbnVtIFJlY3RzQWxpZ25tZW50IHsKIAogc3RydWN0IEZvY3VzQ2FuZGlkYXRl
IHsKICAgICBGb2N1c0NhbmRpZGF0ZSgpCi0gICAgICAgIDogbm9kZSgwKQorICAgICAgICA6IHZp
c2libGVOb2RlKDApCiAgICAgICAgICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCgwKQorICAgICAg
ICAsIGZvY3VzYWJsZU5vZGUoMCkKICAgICAgICAgLCBkaXN0YW5jZShtYXhEaXN0YW5jZSgpKQog
ICAgICAgICAsIHBhcmVudERpc3RhbmNlKG1heERpc3RhbmNlKCkpCiAgICAgICAgICwgYWxpZ25t
ZW50KE5vbmUpCkBAIC0xMTEsMTIgKzExMywxNCBAQCBzdHJ1Y3QgRm9jdXNDYW5kaWRhdGUgewog
ICAgIH0KIAogICAgIEZvY3VzQ2FuZGlkYXRlKE5vZGUqIG4sIEZvY3VzRGlyZWN0aW9uKTsKLSAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFub2RlOyB9Ci0gICAgYm9vbCBpblNjcm9s
bGFibGVDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBub2RlICYmIGVuY2xvc2luZ1Njcm9sbGFi
bGVCb3g7IH0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBub2RlID8g
bm9kZS0+ZG9jdW1lbnQoKSA6IDA7IH0KKyAgICBleHBsaWNpdCBGb2N1c0NhbmRpZGF0ZShIVE1M
QXJlYUVsZW1lbnQqIGFyZWEsIEZvY3VzRGlyZWN0aW9uKTsKKyAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuICF2aXNpYmxlTm9kZTsgfQorICAgIGJvb2wgaW5TY3JvbGxhYmxlQ29udGFp
bmVyKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZU5vZGUgJiYgZW5jbG9zaW5nU2Nyb2xsYWJsZUJv
eDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVOb2Rl
ID8gdmlzaWJsZU5vZGUtPmRvY3VtZW50KCkgOiAwOyB9CiAKLSAgICBOb2RlKiBub2RlOworICAg
IE5vZGUqIHZpc2libGVOb2RlOwogICAgIE5vZGUqIGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7Cisg
ICAgTm9kZSogZm9jdXNhYmxlTm9kZTsKICAgICBsb25nIGxvbmcgZGlzdGFuY2U7CiAgICAgbG9u
ZyBsb25nIHBhcmVudERpc3RhbmNlOwogICAgIFJlY3RzQWxpZ25tZW50IGFsaWdubWVudDsKQEAg
LTEzOCw3ICsxNDIsOCBAQCBJbnRSZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKE5v
CiBJbnRSZWN0IGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhGcmFtZSopOwogdm9pZCBk
aXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVu
dCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7CiBib29sIGNhbkJlU2Nyb2xsZWRJbnRvVmll
dyhGb2N1c0RpcmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRhdGUmKTsKLUludFJlY3QgdmlydHVh
bFJlY3RGb3JEaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJlY3QmIHN0YXJ0aW5n
UmVjdCk7CitJbnRSZWN0IHZpcnR1YWxSZWN0Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBj
b25zdCBJbnRSZWN0JiBzdGFydGluZ1JlY3QsIGludCB3aWR0aCA9IDApOworSW50UmVjdCB2aXJ0
dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBIVE1MQXJl
YUVsZW1lbnQqKTsKIH0gLy8gbmFtc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU3BhdGlhbE5h
dmlnYXRpb25faApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzMzMjMpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0xMS0yOSAgWWFlbCBB
aGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3BhdGlhbCBuYXZpZ2F0aW9uIG5vdCBXb3JraW5nIGZv
ciBNYXAgYW5kIEFyZWEgVGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDcxNDIKKworICAgICAgICAqIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3Nu
YXYtaW1hZ2VtYXAtYXJlYS1ub3QtZm9jdXNhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLW5vdC1mb2N1
c2FibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1pbWFnZW1hcC1hcmVhLXdpdGhvdXQtaW1hZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0aG91dC1p
bWFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFn
ZW1hcC1zaW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwYXRpYWwt
bmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLXNpbXBsZS5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0w
MyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRk
IGEgcGxhdGZvcm0tc3BlY2lmaWMgYmFzZWxpbmUgZm9yIEdUSysgYWZ0ZXIgcjczMTI4LiBUaGlz
IHRlc3QKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1h
Z2VtYXAtYXJlYS1ub3QtZm9jdXNhYmxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtbm90LWZv
Y3VzYWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Nw
YXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtbm90LWZvY3VzYWJsZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorIAorCisKK1BBU1MgZ0ZvY3VzZWRE
b2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0Zv
Y3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BB
U1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
MSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQi
KSBpcyAic3RhcnQiCitUaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCB3
aXRob3V0IGFuIGhyZWYgYXJlIG5vdCBmb2N1c2FibGUsIHRodXMgY2FuIG5vdCBiZSByZWFjaGVk
IHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9uLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFs
LW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLW5vdC1mb2N1c2FibGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFw
LWFyZWEtbm90LWZvY3VzYWJsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1hcmVhLW5vdC1mb2N1c2FibGUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+CisgIDxoZWFkPgorCisgICAg
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAg
ICB2YXIgcmVzdWx0TWFwID0gWworICAgICAgWyJEb3duIiwgIjEiXSwKKyAgICAgIFsiRG93biIs
ICIzIl0sCisgICAgICBbIlVwIiwgIjEiXSwKKyAgICAgIFsiVXAiLCAic3RhcnQiXSwKKyAgICAg
IFsiRE9ORSIsICJET05FIl0KKyAgICBdOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUp
OworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRU
YWJUb0xpbmtzUHJlZmVyZW5jZUtleSIsIDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsK
KyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2Uu
CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAg
ICBpbml0VGVzdChyZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHRlc3RDb21wbGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKworICAgIDwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJqcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAg
PC9oZWFkPgorCisgIDxib2R5IGlkPSJzb21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIj4KKyAgPG1hcCBuYW1lPSJtYXAiIHRpdGxlPSJtYXAiIGlkPSJmaXJz
dG1hcCI+CisgICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjAsMjAsNzAsNzAiIGhyZWY9
IiMiIGlkPSIxIj4KKyAgICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMCwxMzAsNzAsMTgw
IiBpZD0iMiI+CisgIDwvbWFwPgorCisgICAgPGEgaWQ9InN0YXJ0IiBocmVmPSJhIj48aW1nIHNy
Yz0icmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAg
PGRpdj4KKyAgICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD0yMDBweCBo
ZWlnaHQ9MjAwcHggdXNlbWFwPSIjbWFwIj48YSBpZD0iNiIgaHJlZj0iYSI+PGltZyBzcmM9InJl
c291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTUwcHggaGVpZ2h0PTUwcHg+PC9hPgorICAgIDwvZGl2
PgorICAgIDxhIGlkPSIzIiBocmVmPSJhIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIg
d2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgPGRpdj5UaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCB3aXRo
b3V0IGFuIGhyZWYgYXJlIG5vdCBmb2N1c2FibGUsIHRodXMgY2FuIG5vdCBiZSByZWFjaGVkIHdp
dGggc3BhdGlhbCBuYXZpZ2F0aW9uLjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS13
aXRob3V0LWltYWdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0aG91dC1pbWFnZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdh
dGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0aG91dC1pbWFnZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorIAorCisKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVu
dC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitUaGlzIHRlc3Qg
dGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCB3aXRob3V0IGFuIGltYWdlIHVzaW5nIGl0
LCBhcmUgbm90IGZvY3VzYWJsZSwgdGh1cyBjYW4gbm90IGJlIHJlYWNoZWQgd2l0aCBzcGF0aWFs
IG5hdmlnYXRpb24uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LWltYWdlbWFwLWFyZWEtd2l0aG91dC1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtYXJlYS13aXRob3V0
LWltYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWltYWdlbWFwLWFyZWEtd2l0aG91dC1pbWFnZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU2IEBACis8aHRtbD4KKyAgPGhlYWQ+CisKKyAgICA8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NwYXRpYWwtbmF2aWdhdGlvbi11dGlscy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworICAgIHZhciByZXN1bHRN
YXAgPSBbCisgICAgICBbIkRvd24iLCAiMyJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAg
ICAgWyJET05FIiwgIkRPTkUiXQorICAgIF07CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQodHJ1
ZSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAg
eworICAgICAgLy8gc3RhcnRpbmcgdGhlIHRlc3QgaXRzZWxmOiBnZXQgdG8gYSBrbm93biBwbGFj
ZS4KKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisKKyAg
ICAgIGluaXRUZXN0KHJlc3VsdE1hcCwgdGVzdENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdENvbXBsZXRlZCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworCisgICAgPC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9ImpzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
ICA8L2hlYWQ+CisKKyAgPGJvZHkgaWQ9InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiPgorICA8bWFwIG5hbWU9Im1hcCIgdGl0bGU9Im1hcCIgaWQ9ImZp
cnN0bWFwIj4KKyAgICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMCwyMCw3MCw3MCIgaHJl
Zj0iIyIgaWQ9IjEiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDEzMCw3MCwx
ODAiIGhyZWY9IiMiIGlkPSIyIj4KKyAgPC9tYXA+CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9
ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4
PjwvYT4KKyAgICA8ZGl2PgorICAgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdp
ZHRoPTIwMHB4IGhlaWdodD0yMDBweCB1c2VtYXA9IiNvdGhlcm1hcCI+PGEgaWQ9IjYiIGhyZWY9
ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4
PjwvYT4KKyAgICA8L2Rpdj4KKyAgICA8YSBpZD0iMyIgaHJlZj0iYSI+PGltZyBzcmM9InJlc291
cmNlcy9ncmVlbi5wbmciIHdpZHRoPTUwcHggaGVpZ2h0PTUwcHg+PC9hPgorICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgIDxkaXY+VGhpcyB0ZXN0IHRlc3RzIHRoYXQgYXJlYXMgb2Yg
YW4gaW1hZ2VtYXAgd2l0aG91dCBhbiBpbWFnZSB1c2luZyBpdCwgYXJlIG5vdCBmb2N1c2FibGUs
IHRodXMgY2FuIG5vdCBiZSByZWFjaGVkIHdpdGggc3BhdGlhbCBuYXZpZ2F0aW9uLjwvZGl2Pgor
ICA8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZp
Z2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVhcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1h
cC1vdmVybGFwcGVkLWFyZWFzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtb3ZlcmxhcHBlZC1hcmVh
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKyAKKworCitQQVNT
IGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjQi
CitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikg
aXMgIjEiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImlkIikgaXMgIjIiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRy
aWJ1dGUoImlkIikgaXMgIjUiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5n
ZXRBdHRyaWJ1dGUoImlkIikgaXMgIjQiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjMiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0
aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGdGb2N1c2VkRG9jdW1l
bnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGdGb2N1c2Vk
RG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjMiCitQQVNTIGdG
b2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQ
QVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMg
IjEiCitQQVNTIGdGb2N1c2VkRG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlk
IikgaXMgInN0YXJ0IgorVGhpcyB0ZXN0IHRlc3RzIHRoYXQgYXJlYXMgb2YgYW4gaW1hZ2VtYXAg
Y2FuIGJlIHJlYWNoZWQgd2l0aCBzcGF0aWFsIG5hdmlnYXRpb24gZXZlbiBpZiB0aGV5IGFyZSBv
dmVybGFwcGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1pbWFnZW1hcC1vdmVybGFwcGVkLWFyZWFz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWltYWdlbWFwLW92ZXJsYXBwZWQtYXJlYXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2OCBAQAorPGh0bWw+CisgIDxoZWFkPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
dHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwID0gWwor
ICAgICAgWyJEb3duIiwgIjQiXSwKKyAgICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIkRvd24i
LCAiMiJdLAorICAgICAgWyJEb3duIiwgIjUiXSwKKyAgICAgIFsiVXAiLCAiNCJdLAorICAgICAg
WyJVcCIsICIzIl0sCisgICAgICBbIlVwIiwgIjIiXSwKKyAgICAgIFsiTGVmdCIsICIxIl0sCisg
ICAgICBbIlJpZ2h0IiwgIjMiXSwKKyAgICAgIFsiTGVmdCIsICIyIl0sCisgICAgICBbIlVwIiwg
IjEiXSwKKyAgICAgIFsiVXAiLCAic3RhcnQiXSwKKyAgICAgIFsiRE9ORSIsICJET05FIl0KKyAg
ICBdOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUpOworICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtl
eSIsIDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIC8vIHN0YXJ0aW5nIHRo
ZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCisgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAs
IHRlc3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQor
ICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25s
b2FkID0gcnVuVGVzdDsKKworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJqcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgorCisgIDxib2R5IGlk
PSJzb21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAg
PG1hcCBuYW1lPSJtYXAiIHRpdGxlPSJtYXAiIGlkPSJmaXJzdG1hcCI+CisgICAgPGFyZWEgc2hh
cGU9ImNpcmNsZSIgY29vcmRzPSI0NSw0NSwyNSIgaHJlZj0iIyIgaWQ9IjEiPgorICAgIDxhcmVh
IHNoYXBlPSJyZWN0IiBjb29yZHM9IjQ1LDYwLDk1LDExMCIgaHJlZj0iIyIgaWQ9IjIiPgorICAg
IDxhcmVhIHNoYXBlPSJwb2x5IiBjb29yZHM9IjgwLDIwLDEzMCwyMCwxMzAsMTgwLDMwLDE4MCwz
MCwxMzAsODAsMTMwIiBocmVmPSIjIiBpZD0iMyI+CisgICAgPGFyZWEgc2hhcGU9ImRlZmF1bHQi
IGhyZWY9IiMiIGlkPSI0Ij4KKyAgPC9tYXA+CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9ImEi
PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4Pjwv
YT4KKyAgICA8ZGl2PgorICAgICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRo
PTIwMHB4IGhlaWdodD0yMDBweCB1c2VtYXA9IiNtYXAiPgorICAgIDwvZGl2PgorICAgIDxhIGlk
PSI1IiBocmVmPSJhIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIgd2lkdGg9NTBweCBo
ZWlnaHQ9NTBweD48L2E+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPGRpdj5U
aGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVhcyBvZiBhbiBpbWFnZW1hcCBjYW4gYmUgcmVhY2hlZCB3
aXRoIHNwYXRpYWwgbmF2aWdhdGlvbiBldmVuIGlmIHRoZXkgYXJlIG92ZXJsYXBwZWQuPC9kaXY+
CisgIDwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1pbWFnZW1hcC1zaW1wbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNCBAQAorIAorCisKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVu
dC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNSIKK1BBU1MgZ0ZvY3VzZWRE
b2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZ0Zv
Y3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiNCIKK1BB
U1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
NiIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQi
KSBpcyAiNCIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0
ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0
dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZ0ZvY3VzZWREb2N1bWVudC5hY3RpdmVFbGVtZW50
LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCitUaGlzIHRlc3QgdGVzdHMgdGhhdCBhcmVh
cyBvZiBhbiBpbWFnZW1hcCBjYW4gYmUgcmVhY2hlZCB3aXRoIHNwYXRpYWwgbmF2aWdhdGlvbi4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAt
c2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1pbWFnZW1hcC1zaW1wbGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtaW1hZ2VtYXAtc2ltcGxlLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKzxodG1sPgorICA8aGVhZD4KKworICAgIDxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc3BhdGlhbC1uYXZpZ2F0aW9uLXV0aWxzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisgICAgdmFy
IHJlc3VsdE1hcCA9IFsKKyAgICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMyJd
LAorICAgICAgWyJEb3duIiwgIjUiXSwKKyAgICAgIFsiVXAiLCAiMyJdLAorICAgICAgWyJSaWdo
dCIsICI0Il0sCisgICAgICBbIlJpZ2h0IiwgIjYiXSwKKyAgICAgIFsiTGVmdCIsICI0Il0sCisg
ICAgICBbIlVwIiwgIjIiXSwKKyAgICAgIFsiTGVmdCIsICIxIl0sCisgICAgICBbIlVwIiwgInN0
YXJ0Il0sCisgICAgICBbIkRPTkUiLCAiRE9ORSJdCisgICAgXTsKKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKKyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBh
IGtub3duIHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9j
dXMoKTsKKworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAgICA8
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ianMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgIDxtYXAgbmFtZT0ibWFwIiB0aXRsZT0i
bWFwIiBpZD0iZmlyc3RtYXAiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBjb29yZHM9IjIwLDIw
LDcwLDcwIiBocmVmPSIjIiBpZD0iMSI+CisgICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0i
MTMwLDIwLDE4MCw3MCIgaHJlZj0iIyIgaWQ9IjIiPgorICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBj
b29yZHM9IjIwLDEzMCw3MCwxODAiIGhyZWY9IiMiIGlkPSIzIj4KKyAgICA8YXJlYSBzaGFwZT0i
cmVjdCIgY29vcmRzPSIxMzAsMTMwLDE4MCwxODAiIGhyZWY9IiMiIGlkPSI0Ij4KKyAgPC9tYXA+
CisKKyAgICA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4u
cG5nIiB3aWR0aD01MHB4IGhlaWdodD01MHB4PjwvYT4KKyAgICA8ZGl2PgorICAgICAgPGltZyBz
cmM9InJlc291cmNlcy9ncmVlbi5wbmciIHdpZHRoPTIwMHB4IGhlaWdodD0yMDBweCB1c2VtYXA9
IiNtYXAiPjxhIGlkPSI2IiBocmVmPSJhIj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyIg
d2lkdGg9NTBweCBoZWlnaHQ9NTBweD48L2E+CisgICAgPC9kaXY+CisgICAgPGEgaWQ9IjUiIGhy
ZWY9ImEiPjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiB3aWR0aD01MHB4IGhlaWdodD01
MHB4PjwvYT4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8ZGl2PlRoaXMgdGVz
dCB0ZXN0cyB0aGF0IGFyZWFzIG9mIGFuIGltYWdlbWFwIGNhbiBiZSByZWFjaGVkIHdpdGggc3Bh
dGlhbCBuYXZpZ2F0aW9uLjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="review"
          id="66462"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
          </attachment>
      

    </bug>

</bugzilla>