<?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>32605</bug_id>
          
          <creation_ts>2009-12-16 03:01:28 -0800</creation_ts>
          <short_desc>Regression: Selection anchor + focus swap when arrow keys after setBaseAndExtent</short_desc>
          <delta_ts>2010-07-08 15:59:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.danilatos.com/event-test/webkit-sel-bug.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Danilatos">daniel.danilatos</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jparent</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>172246</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Danilatos">daniel.danilatos</who>
    <bug_when>2009-12-16 03:01:28 -0800</bug_when>
    <thetext>The following code (setting the selection base and extent to itself) should be a no-op:

      var selection = window.getSelection();
      selection.setBaseAndExtent(
          selection.anchorNode, selection.anchorOffset,
          selection.focusNode, selection.focusOffset);

However, if there is a ranged selection, and this code is executed, then holding shift and using the left or right arrow keys, after having run that code, causes the focus to switch to the side that would cause the selection always to expand, rather than preserving the current focus.

STEPS TO REPRODUCE:
1. Go to the demo URL
2. Click on the text in the contentEditable area
3. Hold down shift, and press the left and right arrow keys in different combinations.

EXPECTED BEHAVIOUR:
One end of the selection stays fixed. The other end moves under the command of the arrow keys.

OBSERVED BEHAVIOUR:
The selection continually expands in both directions


This regression appears somewhere between webkit nightlies r42162 and r49550 (Those were the two I had lying around, I haven&apos;t done a proper binary search).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176520</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Danilatos">daniel.danilatos</who>
    <bug_when>2010-01-03 20:28:41 -0800</bug_when>
    <thetext>Note, if you set dir=rtl on the block level element, the bug manifests itself differently: it is now impossible to do any kind of range selection. E.g. hold shift and repeatedly press the right arrow key, the selection will expand to the right and simultaneously keep contracting from the left.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178853</commentid>
    <comment_count>2</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2010-01-08 16:00:34 -0800</bug_when>
    <thetext>To narrow regression range slightly, this reproduces in r48037.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178873</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-01-08 16:36:24 -0800</bug_when>
    <thetext>Regression range is 45934:45980</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178900</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-01-08 17:42:23 -0800</bug_when>
    <thetext>For those following along, this bug is essentially about being able to save a selection, mess with the DOM and restore the selection in a way that maintains platform appropriate directionality.

http://trac.webkit.org/changeset/45945 caused the regression. The problem here is that on the Mac the first time you hit shift+left/right decides which end of the selection is the anchor/focus. That state is stored in m_lastChangeWasHorizontalExtension, which is not exposed to JS in any way.

That this happens on all platforms is a bug. I have an unfinished patch that makes this only happen on the Mac. But still, for this to work on the Mac, we&apos;d need to expose something to JS. Something like isDirectionalityFinal. On non-Mac platforms, that would always return true. Then, setBaseAndExtent should take an optional fifth argument that is the value of this boolean and it would set m_lastChangeWasHorizontalExtension accordingly.

Not sure who the arbiters of adding to DOMSelection.idl are. Hyatt, Mitz you have thoughts? It&apos;s a bit weird to me to expose platform-specific features of selections to the web, but I don&apos;t really see an alternative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178909</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-01-08 18:00:58 -0800</bug_when>
    <thetext>Is it possible to just refine the rules for when m_lastChangeWasHorizontalExtension is reset?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178916</commentid>
    <comment_count>6</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-01-08 18:22:13 -0800</bug_when>
    <thetext>setSelection (which is reached via the JS call to setBaseAndExtent) can&apos;t know that you&apos;re trying to restore the previous selection. In the cases that Wave cares about (Daniel is on the Wave team), the DOM might be different (e.g. might have extra spans), but to the user it looks the same.

We could say that setBaseAndExtent should not set m_lastChangeWasHorizontalExtension to false. That would work for Wave&apos;s use-case, but I can think of use cases where this would break. For example, a web app the pops up a modal dialog with a text box in it. When the dialog is closed, it will want to restore the previous selection, but edits in the dialog&apos;s text box might have messed with the m_lastChangeWasHorizontalExtension state.

In short, I&apos;m not sure how setSelection could know what to do with m_lastChangeWasHorizontalExtension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189855</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-02-11 18:09:35 -0800</bug_when>
    <thetext>I have a patch for this. I&apos;m still open to refining the rules for when
m_lastChangeWasHorizontalExtension is reset. It&apos;s obviously preferable to not expose this to the web, but I don&apos;t see how that can be accomplished.

I&apos;ll post the patch for review, but I&apos;m totally open to doing this differently if anyone has better idea.

Another possibility of course would be to not implement this crazy mac selection behavior, but I&apos;ll assume that&apos;s a dead end. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189859</commentid>
    <comment_count>8</comment_count>
      <attachid>48601</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-02-11 18:18:35 -0800</bug_when>
    <thetext>Created attachment 48601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202062</commentid>
    <comment_count>9</comment_count>
      <attachid>51195</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-19 15:38:48 -0700</bug_when>
    <thetext>Created attachment 51195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202064</commentid>
    <comment_count>10</comment_count>
      <attachid>51195</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-19 15:42:31 -0700</bug_when>
    <thetext>Comment on attachment 51195
Patch

Here&apos;s the only way I can think of fixing this without exposing isDirectional to the web. It&apos;s not perfect, but it does avoid exposing more information to JS.

The advantage is it makes this test-case and the common case work. It breaks the following case:
1. Select text via the mouse.
2. Save the selection.
3. Do some stuff in your app that clears the selection.
4. Restore the selection.

After step 1, the selection is non-directional. After step 4, the selection is directional.

While it&apos;s not perfect, that&apos;s much better than the current state of affairs that leads to bugs like the ones in this testcase.

The only way to get full selection fidelity would be the first, now obsoleted, patch. I&apos;m happy with either of these patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240451</commentid>
    <comment_count>11</comment_count>
      <attachid>51195</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-20 08:59:38 -0700</bug_when>
    <thetext>Comment on attachment 51195
Patch

This seems like a failure of the API to me.  However, defaulting the selections to directional makes sense given that the name of the API implies directionality.  Ojan, we need to convince you to write a spec for all this stuff.

LayoutTests/editing/selection/5195166-1.html:6
 +    document.getElementById(&quot;console&quot;).innerHTML += str + &quot;&lt;br&gt;&quot;;
Bad indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247716</commentid>
    <comment_count>12</comment_count>
      <attachid>60770</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-07 13:16:27 -0700</bug_when>
    <thetext>Created attachment 60770
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248058</commentid>
    <comment_count>13</comment_count>
      <attachid>60770</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-08 01:09:09 -0700</bug_when>
    <thetext>Comment on attachment 60770
Patch for landing

Rejecting patch 60770 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
was:
--------------------------
|Index: WebCore/WebCore.base.exp
|index 70f07735caf166fd754d101a32cada4f6a89bad2..4dd27b88ffc8f4ed2d65e1fdbceffb5e5cf36875 100644
|--- WebCore/WebCore.base.exp
|+++ WebCore/WebCore.base.exp
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored
patching file WebCore/editing/SelectionController.cpp
Hunk #1 succeeded at 107 (offset 1 line).
patching file WebCore/editing/SelectionController.h
patching file WebCore/page/EventHandler.cpp

Full output: http://webkit-commit-queue.appspot.com/results/3446011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248214</commentid>
    <comment_count>14</comment_count>
      <attachid>60770</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-08 08:17:18 -0700</bug_when>
    <thetext>Comment on attachment 60770
Patch for landing

&gt; -        m_frame-&gt;selection()-&gt;setSelection(newSelection, m_frame-&gt;selectionGranularity());
&gt; +        m_frame-&gt;selection()-&gt;setSelection(newSelection, m_frame-&gt;selectionGranularity(), false);

This is a classic example of why we don&apos;t use boolean arguments when constants are passed. This patch would be considerably better if the argument used an enum with good names instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248374</commentid>
    <comment_count>15</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-08 11:35:47 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 60770 [details])
&gt; &gt; -        m_frame-&gt;selection()-&gt;setSelection(newSelection, m_frame-&gt;selectionGranularity());
&gt; &gt; +        m_frame-&gt;selection()-&gt;setSelection(newSelection, m_frame-&gt;selectionGranularity(), false);
&gt; 
&gt; This is a classic example of why we don&apos;t use boolean arguments when constants are passed. This patch would be considerably better if the argument used an enum with good names instead.

enum Directionality { DirectionalityNone, DirectionalityAware }; was the best I could come up with. Does that work?

This patch has changed enough since the r+ from Adam, that I think it&apos;s worth getting another review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248377</commentid>
    <comment_count>16</comment_count>
      <attachid>60917</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-08 11:36:17 -0700</bug_when>
    <thetext>Created attachment 60917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248379</commentid>
    <comment_count>17</comment_count>
      <attachid>60917</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-08 11:38:58 -0700</bug_when>
    <thetext>Comment on attachment 60917
Patch

I’d rather see the enum at the global level rather than as a member. I don’t think there’s any real danger of conflict with other similar enums.

I think we could find a better name for the enum by talking about what it is and selecting words from that discussion. For example we could consider using verbs like “MakeNonDirectionalSelection” and “MakeDirectionalSelection”. The word “policy” in the name of the enum allows the enum values to be verbs instead of adjectives or nounds.

Fine as-is, though. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248401</commentid>
    <comment_count>18</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-08 11:59:00 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 60917 [details])
&gt; I’d rather see the enum at the global level rather than as a member. I don’t think there’s any real danger of conflict with other similar enums.
&gt; 
&gt; I think we could find a better name for the enum by talking about what it is and selecting words from that discussion. For example we could consider using verbs like “MakeNonDirectionalSelection” and “MakeDirectionalSelection”. The word “policy” in the name of the enum allows the enum values to be verbs instead of adjectives or nounds.
&gt; 
&gt; Fine as-is, though. r=me

Thanks. Both of those sound good to me. I&apos;ll change the enum to the following and commit:
enum DirectionalityPolicy { MakeNonDirectionalSelection, MakeDirectionalSelection };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248428</commentid>
    <comment_count>19</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-08 12:25:49 -0700</bug_when>
    <thetext>Committed r62816: &lt;http://trac.webkit.org/changeset/62816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248469</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-08 13:03:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62816 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248577</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-07-08 15:09:31 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; http://trac.webkit.org/changeset/62816 might have broken Qt Linux Release

pretty diff: http://build.webkit.org/results/Qt%20Linux%20Release/r62848%20%2814976%29/editing/selection/5195166-1-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248605</commentid>
    <comment_count>22</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-08 15:59:54 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; http://trac.webkit.org/changeset/62816 might have broken Qt Linux Release
&gt; 
&gt; pretty diff: http://build.webkit.org/results/Qt%20Linux%20Release/r62848%20%2814976%29/editing/selection/5195166-1-pretty-diff.html

Antonio was looking into this, but he seems to have disappeared from #webkit. It looks to me like a bug in QTs implementation of double-click + drag to select text. Should I add it to the Skipped list for now?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48601</attachid>
            <date>2010-02-11 18:18:35 -0800</date>
            <delta_ts>2010-03-19 15:38:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32605-20100211181834.patch</filename>
            <type>text/plain</type>
            <size>13793</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMDY4MjEzLi4xNDhkNzBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDIt
MTEgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdyZXNzaW9uOiBTZWxlY3Rpb24gYW5jaG9y
ICsgZm9jdXMgc3dhcCB3aGVuIGFycm93IGtleXMgYWZ0ZXIgc2V0QmFzZUFuZEV4dGVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2MDUKKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RpcmVjdGlvbmFsLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZGlyZWN0aW9uYWwuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRlc3RzL2RpcmVjdGlvbmFsLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGFzc2VydERpcmVjdGlvbik6CisKIDIwMTAtMDItMTEgIFl1cnkgU2Vt
aWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Rp
cmVjdGlvbmFsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Rp
cmVjdGlvbmFsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jMGJlMTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZGlyZWN0aW9uYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
c2VsZWN0aW9uIGRpcmVjdGlvbmFsaXR5IGlzIG1haW50YWluZWQgZnJvbSBzZXRCYXNlQW5kRXh0
ZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTZWxlY3Rpb24uYmFz
ZU5vZGUgaXMgW29iamVjdCBUZXh0XShmb28gYmFyIGJheikgYW5kIGlzRGlyZWN0aW9uYWwgaXMg
ZmFsc2UKK1BBU1MgU2VsZWN0aW9uLmJhc2VOb2RlIGlzIFtvYmplY3QgVGV4dF0oZm9vIGJhciBi
YXopIGFuZCBpc0RpcmVjdGlvbmFsIGlzIHRydWUKK1BBU1MgU2VsZWN0aW9uLmJhc2VOb2RlIGlz
IFtvYmplY3QgVGV4dF0oZm9vIGJhciBiYXopIGFuZCBpc0RpcmVjdGlvbmFsIGlzIGZhbHNlCitQ
QVNTIFNlbGVjdGlvbi5iYXNlTm9kZSBpcyBbb2JqZWN0IFRleHRdKGZvbyBiYXIgYmF6KSBhbmQg
aXNEaXJlY3Rpb25hbCBpcyB0cnVlCitQQVNTIFNlbGVjdGlvbi5iYXNlTm9kZSBpcyBbb2JqZWN0
IFRleHRdKGZvbyBiYXIgYmF6KSBhbmQgaXNEaXJlY3Rpb25hbCBpcyBmYWxzZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitmb28gYmFyIGJhegpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZGlyZWN0aW9uYWwuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RpcmVjdGlvbmFsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE1NmMwYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RpcmVjdGlvbmFsLmh0bWwKQEAgLTAsMCArMSwx
NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGlyZWN0aW9uYWwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9zY3JpcHQtdGVzdHMvZGlyZWN0aW9uYWwuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9zY3JpcHQtdGVzdHMvZGlyZWN0aW9uYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZmZjYWMzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL3NjcmlwdC10ZXN0cy9kaXJlY3Rpb25hbC5qcwpAQCAtMCwwICsxLDQy
IEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzZWxlY3Rpb24gZGlyZWN0aW9uYWxpdHkgaXMg
bWFpbnRhaW5lZCBmcm9tIHNldEJhc2VBbmRFeHRlbnQuIik7CisKK3ZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5jb250ZW50RWRpdGFibGUgPSB0cnVlOworZGl2
LmlubmVySFRNTCA9ICJmb28gYmFyIGJheiI7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRp
dik7CitkaXYuZm9jdXMoKTsKKwordmFyIHRhcmdldCA9IGRpdi5maXJzdENoaWxkOwordmFyIHNl
bGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworZnVuY3Rpb24gYXNzZXJ0RGlyZWN0
aW9uKHRhcmdldCwgc2hvdWxkQmVEaXJlY3Rpb25hbCkgeworICAgIGlmIChzZWxlY3Rpb24uYmFz
ZU5vZGUgPT0gdGFyZ2V0ICYmIHNlbGVjdGlvbi5pc0RpcmVjdGlvbmFsID09IHNob3VsZEJlRGly
ZWN0aW9uYWwpCisgICAgICAgIHRlc3RQYXNzZWQoIlNlbGVjdGlvbi5iYXNlTm9kZSBpcyAiICsg
dGFyZ2V0ICsgIigiICsgdGFyZ2V0LmRhdGEgKyAiKSBhbmQgaXNEaXJlY3Rpb25hbCBpcyAiICsg
c2hvdWxkQmVEaXJlY3Rpb25hbCk7CisgICAgZWxzZSB7CisgICAgICAgIHZhciBwcm9wZXJ0aWVz
ID0gWyJiYXNlTm9kZSIsICJiYXNlT2Zmc2V0IiwgImV4dGVudE5vZGUiLCAiZXh0ZW50T2Zmc2V0
IiwgImlzRGlyZWN0aW9uYWwiXTsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2VsZWN0aW9uIGlzICIg
KyBvYmplY3RBc1N0cmluZyhzZWwsIHByb3BlcnRpZXMpICsgIiBzaG91bGQgYmUgYXQgIiArCisg
ICAgICAgICAgICB0YXJnZXQgKyAiKCIgKyB0YXJnZXQuZGF0YSArICIpIGFuZCBpc0RpcmVjdGlv
bmFsIHNob3VsZCBiZSAiICsgc2hvdWxkQmVEaXJlY3Rpb25hbCk7CisgICAgfQorfQorCitzZWxl
Y3Rpb24uc2V0QmFzZUFuZEV4dGVudCh0YXJnZXQsIDEsIHRhcmdldCwgMik7Cithc3NlcnREaXJl
Y3Rpb24odGFyZ2V0LCBmYWxzZSk7CisKK3NlbGVjdGlvbi5zZXRCYXNlQW5kRXh0ZW50KHRhcmdl
dCwgMSwgdGFyZ2V0LCAyLCB0cnVlKTsKK2Fzc2VydERpcmVjdGlvbih0YXJnZXQsIHRydWUpOwor
CisvLyBUZXN0IGRpcmVjdGlvbmFsaXR5IGFmdGVyIGNsaWNrLgorZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oZGl2Lm9mZnNldExlZnQgKyA1LCBkaXYub2Zmc2V0VG9wICsgNSk7CitldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKK2V2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK2Fzc2VydERpcmVjdGlvbih0
YXJnZXQsIGZhbHNlKTsKKworLy8gTm93IGV4dGVuZCB0aGUgc2VsZWN0aW9uIGFuZCBpdCBzaG91
bGQgYmVjb21lIGRpcmVjdGlvbmFsLgorc2VsZWN0aW9uLm1vZGlmeSgiZXh0ZW5kIiwgImZvcndh
cmQiLCAiY2hhcmFjdGVyIik7Cithc3NlcnREaXJlY3Rpb24odGFyZ2V0LCB0cnVlKTsKKworLy8g
Tm93IG1vdmUgdGhlIHNlbGVjdGlvbiBhbmQgaXQgc2hvdWxkIGJlY29tZSBub24tZGlyZWN0aW9u
YWwuCitzZWxlY3Rpb24ubW9kaWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAiY2hhcmFjdGVyIik7Cith
c3NlcnREaXJlY3Rpb24odGFyZ2V0LCBmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxZGRmOWQ1Li4zNjJjMWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTAyLTExICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVncmVzc2lvbjogU2VsZWN0aW9uIGFuY2hvciArIGZvY3Vz
IHN3YXAgd2hlbiBhcnJvdyBrZXlzIGFmdGVyIHNldEJhc2VBbmRFeHRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjA1CisKKyAgICAgICAgRXhw
b3NlIERPTVNlbGVjdGlvbi5pc0RpcmVjdGlvbmFsLiBUaGlzIGlzIHNvIHNjcmlwdCBjYW4gc2F2
ZSB0aGUgc2VsZWN0aW9uCisgICAgICAgIG1ha2UgY2hhbmdlcyBhbmQgdGhlbiByZXN0b3JlIHRo
ZSBzZWxlY3Rpb24gd2l0aCBmdWxsIGZpZGVsaXR5LgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcv
c2VsZWN0aW9uL2RpcmVjdGlvbmFsLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3Rpb25Db250cm9sbGVyOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvU2Vs
ZWN0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxl
cjo6aXNEaXJlY3Rpb25hbCk6CisgICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjppc0RpcmVjdGlvbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudCk6CisgICAgICAgICogcGFnZS9E
T01TZWxlY3Rpb24uaDoKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5pZGw6CisKIDIwMTAt
MDItMTEgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCBhMGE1MjYyLi5kZmYxOWVl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmJhc2UuZXhwCkBAIC00MDcsNyArNDA3LDcgQEAgX19aTjdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOU18K
IF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIxcGF1c2VUcmFuc2l0aW9uQXRUaW1l
RVBOU18xMlJlbmRlck9iamVjdEVSS05TXzZTdHJpbmdFZAogX19aTjdXZWJDb3JlMTlDU1NTdHls
ZURlY2xhcmF0aW9uMTFzZXRQcm9wZXJ0eUVSS05TXzZTdHJpbmdFUzNfUmkKIF9fWk43V2ViQ29y
ZTE5U2VsZWN0aW9uQ29udHJvbGxlcjEwc2V0Rm9jdXNlZEViCi1fX1pON1dlYkNvcmUxOVNlbGVj
dGlvbkNvbnRyb2xsZXIxMnNldFNlbGVjdGlvbkVSS05TXzE2VmlzaWJsZVNlbGVjdGlvbkViYmIK
K19fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjEyc2V0U2VsZWN0aW9uRVJLTlNfMTZW
aXNpYmxlU2VsZWN0aW9uRWJiYmIKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjE2
c2V0U2VsZWN0ZWRSYW5nZUVQTlNfNVJhbmdlRU5TXzlFQWZmaW5pdHlFYgogX19aTjdXZWJDb3Jl
MTlTZWxlY3Rpb25Db250cm9sbGVyNWNsZWFyRXYKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29u
dHJvbGxlcjZtb2RpZnlFTlMwXzExRUFsdGVyYXRpb25FTlMwXzEwRURpcmVjdGlvbkVOU18xNVRl
eHRHcmFudWxhcml0eUViCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggNWIyZDBkMC4uMjkzYmFkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVy
LmNwcApAQCAtODIsOSArODIsOSBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vdmVUbyhj
b25zdCBWaXNpYmxlUG9zaXRpb24gJnBvcywgYm9vbCB1c2VyVHJpZ2dlcmVkKQogICAgIHNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpLCBwb3MuZGVlcEVx
dWl2YWxlbnQoKSwgcG9zLmFmZmluaXR5KCkpLCB0cnVlLCB0cnVlLCB1c2VyVHJpZ2dlcmVkKTsK
IH0KIAotdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjptb3ZlVG8oY29uc3QgVmlzaWJsZVBvc2l0
aW9uICZiYXNlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24gJmV4dGVudCwgYm9vbCB1c2VyVHJpZ2dl
cmVkKQordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjptb3ZlVG8oY29uc3QgVmlzaWJsZVBvc2l0
aW9uICZiYXNlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24gJmV4dGVudCwgYm9vbCB1c2VyVHJpZ2dl
cmVkLCBib29sIGlzRGlyZWN0aW9uYWwpCiB7Ci0gICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oYmFzZS5kZWVwRXF1aXZhbGVudCgpLCBleHRlbnQuZGVlcEVxdWl2YWxlbnQoKSwgYmFz
ZS5hZmZpbml0eSgpKSwgdHJ1ZSwgdHJ1ZSwgdXNlclRyaWdnZXJlZCk7CisgICAgc2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oYmFzZS5kZWVwRXF1aXZhbGVudCgpLCBleHRlbnQuZGVlcEVx
dWl2YWxlbnQoKSwgYmFzZS5hZmZpbml0eSgpKSwgdHJ1ZSwgdHJ1ZSwgdXNlclRyaWdnZXJlZCwg
aXNEaXJlY3Rpb25hbCk7CiB9CiAKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW92ZVRvKGNv
bnN0IFBvc2l0aW9uICZwb3MsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCB1c2VyVHJpZ2dlcmVk
KQpAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW92ZVRvKGNv
bnN0IFBvc2l0aW9uICZiYXNlLCBjb25zdCBQb3NpdGlvbiAmZXh0ZW50LCBFCiAgICAgc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFzZSwgZXh0ZW50LCBhZmZpbml0eSksIHRydWUsIHRy
dWUsIHVzZXJUcmlnZ2VyZWQpOwogfQogCi12b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzLCBib29sIGNsb3NlVHlwaW5nLCBib29s
IGNsZWFyVHlwaW5nU3R5bGUsIGJvb2wgdXNlclRyaWdnZXJlZCkKK3ZvaWQgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHMsIGJvb2wgY2xv
c2VUeXBpbmcsIGJvb2wgY2xlYXJUeXBpbmdTdHlsZSwgYm9vbCB1c2VyVHJpZ2dlcmVkLCBib29s
IGlzRGlyZWN0aW9uYWwpCiB7Ci0gICAgbV9sYXN0Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lv
biA9IGZhbHNlOworICAgIG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24gPSBpc0Rp
cmVjdGlvbmFsOwogCiAgICAgaWYgKG1faXNEcmFnQ2FyZXRDb250cm9sbGVyKSB7CiAgICAgICAg
IGludmFsaWRhdGVDYXJldFJlY3QoKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzLCBib29s
IGNsb3NlVHlwaQogICAgIC8vIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ2ND46IEluZmluaXRlIHJlY3Vyc2lvbiBhdCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRT
ZWxlY3Rpb24KICAgICAvLyBpZiBkb2N1bWVudC0+ZnJhbWUoKSA9PSBtX2ZyYW1lIHdlIGNhbiBn
ZXQgaW50byBhbiBpbmZpbml0ZSBsb29wCiAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5m
cmFtZSgpICE9IG1fZnJhbWUgJiYgZG9jdW1lbnQgIT0gbV9mcmFtZS0+ZG9jdW1lbnQoKSkgewot
ICAgICAgICBkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihzLCBj
bG9zZVR5cGluZywgY2xlYXJUeXBpbmdTdHlsZSwgdXNlclRyaWdnZXJlZCk7CisgICAgICAgIGRv
Y3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHMsIGNsb3NlVHlwaW5n
LCBjbGVhclR5cGluZ1N0eWxlLCB1c2VyVHJpZ2dlcmVkLCBpc0RpcmVjdGlvbmFsKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxl
Y3Rpb25Db250cm9sbGVyLmggYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5o
CmluZGV4IDdjYWQ0MzUuLmU2MjExNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxl
Y3Rpb25Db250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xs
ZXIuaApAQCAtNTMsMTIgKzUzLDEyIEBAIHB1YmxpYzoKICAgICAgCiAgICAgdm9pZCBtb3ZlVG8o
Y29uc3QgUmFuZ2UqLCBFQWZmaW5pdHksIGJvb2wgdXNlclRyaWdnZXJlZCA9IGZhbHNlKTsKICAg
ICB2b2lkIG1vdmVUbyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHVzZXJUcmlnZ2VyZWQg
PSBmYWxzZSk7Ci0gICAgdm9pZCBtb3ZlVG8oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UpOworICAgIHZvaWQg
bW92ZVRvKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJv
b2wgdXNlclRyaWdnZXJlZCA9IGZhbHNlLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAg
ICAgdm9pZCBtb3ZlVG8oY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHksIGJvb2wgdXNlclRyaWdn
ZXJlZCA9IGZhbHNlKTsKICAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBv
c2l0aW9uJiwgRUFmZmluaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQgPSBmYWxzZSk7CiAKICAgICBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NlbGVj
dGlvbjsgfQotICAgIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBi
b29sIGNsb3NlVHlwaW5nID0gdHJ1ZSwgYm9vbCBjbGVhclR5cGluZ1N0eWxlID0gdHJ1ZSwgYm9v
bCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UpOworICAgIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mLCBib29sIGNsb3NlVHlwaW5nID0gdHJ1ZSwgYm9vbCBjbGVhclR5cGlu
Z1N0eWxlID0gdHJ1ZSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UsIGJvb2wgaXNEaXJlY3Rp
b25hbCA9IGZhbHNlKTsKICAgICBib29sIHNldFNlbGVjdGVkUmFuZ2UoUmFuZ2UqLCBFQWZmaW5p
dHksIGJvb2wgY2xvc2VUeXBpbmcpOwogICAgIHZvaWQgc2VsZWN0QWxsKCk7CiAgICAgdm9pZCBj
bGVhcigpOwpAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2FyZXRPclJh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKTsgfQogICAg
IGJvb2wgaXNJblBhc3N3b3JkRmllbGQoKSBjb25zdDsKICAgICBib29sIGlzQWxsKFN0YXlJbkVk
aXRhYmxlQ29udGVudCBzdGF5SW5FZGl0YWJsZUNvbnRlbnQgPSBNdXN0U3RheUluRWRpdGFibGVD
b250ZW50KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbi5pc0FsbChzdGF5SW5FZGl0YWJsZUNv
bnRlbnQpOyB9CisgICAgYm9vbCBpc0RpcmVjdGlvbmFsKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lvbjsgfQogICAgIAogICAgIFBhc3NSZWZQdHI8UmFu
Z2U+IHRvTm9ybWFsaXplZFJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24udG9Ob3Jt
YWxpemVkUmFuZ2UoKTsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9u
LmNwcCBiL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDBkMjFjNTYuLmFhYjUy
ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC0xNzMsNiArMTczLDEzIEBAIGJvb2wgRE9NU2Vs
ZWN0aW9uOjppc0NvbGxhcHNlZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJl
dHVybiAhbV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKTsKIH0KKyAgICAKK2Jvb2wgRE9N
U2VsZWN0aW9uOjppc0RpcmVjdGlvbmFsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJhbWUgfHwg
c2VsZWN0aW9uU2hhZG93QW5jZXN0b3IobV9mcmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzRGlyZWN0aW9uYWwoKTsKK30KIAog
U3RyaW5nIERPTVNlbGVjdGlvbjo6dHlwZSgpIGNvbnN0CiB7CkBAIC0yMzcsNiArMjQ0LDExIEBA
IHZvaWQgRE9NU2VsZWN0aW9uOjplbXB0eSgpCiAKIHZvaWQgRE9NU2VsZWN0aW9uOjpzZXRCYXNl
QW5kRXh0ZW50KE5vZGUqIGJhc2VOb2RlLCBpbnQgYmFzZU9mZnNldCwgTm9kZSogZXh0ZW50Tm9k
ZSwgaW50IGV4dGVudE9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgc2V0QmFzZUFu
ZEV4dGVudChiYXNlTm9kZSwgYmFzZU9mZnNldCwgZXh0ZW50Tm9kZSwgZXh0ZW50T2Zmc2V0LCBm
YWxzZSwgZWMpOworfQorCit2b2lkIERPTVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudChOb2Rl
KiBiYXNlTm9kZSwgaW50IGJhc2VPZmZzZXQsIE5vZGUqIGV4dGVudE5vZGUsIGludCBleHRlbnRP
ZmZzZXQsIGJvb2wgaXNEaXJlY3Rpb25hbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CiAgICAgaWYg
KCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTI0Nyw3ICsyNTksNyBAQCB2b2lkIERP
TVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudChOb2RlKiBiYXNlTm9kZSwgaW50IGJhc2VPZmZz
ZXQsIE5vZGUqIGV4dGVudAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlQmFzZSA9IFZpc2li
bGVQb3NpdGlvbihiYXNlTm9kZSwgYmFzZU9mZnNldCwgRE9XTlNUUkVBTSk7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIHZpc2libGVFeHRlbnQgPSBWaXNpYmxlUG9zaXRpb24oZXh0ZW50Tm9kZSwgZXh0
ZW50T2Zmc2V0LCBET1dOU1RSRUFNKTsKIAotICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb3Zl
VG8odmlzaWJsZUJhc2UsIHZpc2libGVFeHRlbnQpOworICAgIG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5tb3ZlVG8odmlzaWJsZUJhc2UsIHZpc2libGVFeHRlbnQsIGZhbHNlLCBpc0RpcmVjdGlvbmFs
KTsKIH0KIAogdm9pZCBET01TZWxlY3Rpb246OnNldFBvc2l0aW9uKE5vZGUqIG5vZGUsIGludCBv
ZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5oIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCmluZGV4IGUwZmUxZTMuLmE2
NDVhN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaAorKysgYi9XZWJD
b3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBpbnQgYmFzZU9mZnNldCgpIGNvbnN0OwogICAgICAgICBpbnQgZXh0ZW50
T2Zmc2V0KCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0QmFzZUFuZEV4dGVudChOb2RlKiBiYXNlTm9kZSwgaW50IGJhc2VPZmZzZXQsIE5vZGUq
IGV4dGVudE5vZGUsIGludCBleHRlbnRPZmZzZXQsIGJvb2wgaXNEaXJlY3Rpb25hbCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHNldEJhc2VBbmRFeHRlbnQoTm9kZSogYmFzZU5vZGUs
IGludCBiYXNlT2Zmc2V0LCBOb2RlKiBleHRlbnROb2RlLCBpbnQgZXh0ZW50T2Zmc2V0LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgc2V0UG9zaXRpb24oTm9kZSosIGludCBvZmZzZXQs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBtb2RpZnkoY29uc3QgU3RyaW5nJiBhbHRl
ciwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYgZ3JhbnVsYXJpdHkpOwpA
QCAtNzMsNiArNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5vZGUqIGZvY3Vz
Tm9kZSgpIGNvbnN0OwogICAgICAgICBpbnQgZm9jdXNPZmZzZXQoKSBjb25zdDsKICAgICAgICAg
Ym9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0OworICAgICAgICBib29sIGlzRGlyZWN0aW9uYWwoKSBj
b25zdDsKICAgICAgICAgaW50IHJhbmdlQ291bnQoKSBjb25zdDsKICAgICAgICAgdm9pZCBjb2xs
YXBzZShOb2RlKiwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIGNv
bGxhcHNlVG9FbmQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRs
IGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5pZGwKaW5kZXggNGQwYzk0Mi4uMzI0YzRjYyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5pZGwKKysrIGIvV2ViQ29yZS9w
YWdlL0RPTVNlbGVjdGlvbi5pZGwKQEAgLTY3LDEzICs2NywxNCBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgYmFzZU9mZnNldDsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIE5vZGUgZXh0ZW50Tm9kZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgZXh0ZW50T2Zmc2V0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBpc0RpcmVjdGlvbmFsOwogCiAgICAgICAgIC8vIFdlYktpdCdzICJ0eXBlIiBhY2Nlc3NvciBy
ZXR1cm5zICJOb25lIiwgIlJhbmdlIiBhbmQgIkNhcmV0IgogICAgICAgICAvLyBJRSdzIHR5cGUg
YWNjZXNzb3IgcmV0dXJucyAibm9uZSIsICJ0ZXh0IiBhbmQgImNvbnRyb2wiCiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKIAogICAgICAgICB2b2lkIG1vZGlmeShp
biBET01TdHJpbmcgYWx0ZXIsIGluIERPTVN0cmluZyBkaXJlY3Rpb24sIGluIERPTVN0cmluZyBn
cmFudWxhcml0eSk7Ci0gICAgICAgIHZvaWQgc2V0QmFzZUFuZEV4dGVudChpbiBOb2RlIGJhc2VO
b2RlLCBpbiBsb25nIGJhc2VPZmZzZXQsIGluIE5vZGUgZXh0ZW50Tm9kZSwgaW4gbG9uZyBleHRl
bnRPZmZzZXQpCisgICAgICAgIHZvaWQgc2V0QmFzZUFuZEV4dGVudChpbiBOb2RlIGJhc2VOb2Rl
LCBpbiBsb25nIGJhc2VPZmZzZXQsIGluIE5vZGUgZXh0ZW50Tm9kZSwgaW4gbG9uZyBleHRlbnRP
ZmZzZXQsIGluIFtPcHRpb25hbF0gYm9vbGVhbiBpc0RpcmVjdGlvbmFsKQogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0UG9zaXRpb24oaW4gTm9kZSBu
b2RlLCBpbiBsb25nIG9mZnNldCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51195</attachid>
            <date>2010-03-19 15:38:48 -0700</date>
            <delta_ts>2010-07-07 13:16:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32605-20100319153847.patch</filename>
            <type>text/plain</type>
            <size>35886</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYWEwM2ZmLi5lMGI2MmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMt
MTkgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdyZXNzaW9uOiBTZWxlY3Rpb24gYW5jaG9y
ICsgZm9jdXMgc3dhcCB3aGVuIGFycm93IGtleXMgYWZ0ZXIgc2V0QmFzZUFuZEV4dGVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2MDUKKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sOgorICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUx
NjYtMS1leHBlY3RlZC5jaGVja3N1bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZvcndh
cmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEw
LTAzLTE5ICBEaXJrIFByYW5rZSA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi81MTk1MTY2LTEuaHRtbAppbmRleCBmMGZmMWE1Li45YzBkNGYzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbApAQCAtMSwzMSArMSw0MiBAQAogPHA+
VGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgZXh0ZW5kaW5nIGEgc2VsZWN0aW9uIGNyZWF0ZWQg
d2l0aCB0aGUgbW91c2Ugd291bGQgYmxvdyBpdCBhd2F5IGJlZm9yZSBleHRlbmRpbmcgaXQuPC9w
PgotPGRpdiBpZD0iZGl2IiBjb250ZW50ZWRpdGFibGU9InRydWUiPlRoZXJlIHNob3VsZCBiZSBm
aXZlIGNoYXJhY3RlcnMgc2VsZWN0ZWQgaW4gdGhpcyBzZW50ZW5jZS48L2Rpdj4KKzxkaXYgaWQ9
ImRpdiIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5UaGVyZSA8c3BhbiBpZD0ic2VsZWN0IiBzdHls
ZT0iY29sb3I6Z3JlZW4iPnNob3VsZCBiZTwvc3Bhbj4gc2l4IGNoYXJhY3RlcnMgc2VsZWN0ZWQg
aW4gdGhpcyBzZW50ZW5jZS48L2Rpdj4KIDx1bCBpZD0iY29uc29sZSI+PC91bD4KIDxzY3JpcHQ+
CiBmdW5jdGlvbiBsb2coc3RyKSB7Ci0gICAgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIik7Ci0gICAgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwot
ICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpOwotICAgIGNvbnNvbGUuYXBw
ZW5kQ2hpbGQobGkpOwotICAgIGxpLmFwcGVuZENoaWxkKHRleHQpOworICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBzdHIgKyAiPGJyPiI7CiB9CiBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZGl2IikuZmlyc3RDaGlsZDsKLSAgICB2YXIgc2VsZWN0aW9uID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nl
bGVjdCcpOworICAgIHZhciBzdGFydFggPSB0YXJnZXQub2Zmc2V0TGVmdCArIHRhcmdldC5vZmZz
ZXRXaWR0aDsKKyAgICB2YXIgeSA9IHRhcmdldC5vZmZzZXRUb3AgKyB0YXJnZXQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICB2YXIgZW5kWCA9IHRhcmdldC5vZmZzZXRMZWZ0OwogICAgIAotICAgIC8v
IEZJWE1FOiBtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0ZW5zaW9uIGlzbid0IGNsZWFyZWQg
aW4gc2V2ZXJhbCBwbGFjZXMKLSAgICAvLyB3aGVyZSBpdCBzaG91bGQgYmUsIHdoZW4gb3Blbmlu
ZyBhIG5ldyBkb2N1bWVudCBmb3IgZXhhbXBsZS4KLSAgICBzZWxlY3Rpb24uc2V0UG9zaXRpb24o
dGV4dCwgMCk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeSgibW92ZSIsICJmb3J3YXJkIiwgImNoYXJh
Y3RlciIpOwotICAgIAotICAgIHNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0ZW50KHRleHQsIDMgKyA1
LCB0ZXh0LCAzKTsKKyAgICAvLyBTZWxlY3QgYWxsIHRoZSBncmVlbiB0ZXh0IHVzaW5nIHRoZSBt
b3VzZS4KKyAgICAvLyBVc2UgYSB3b3JkLWdyYW51bGFyaXR5IHNlbGVjdGlvbiB0byBhdm9pZCBl
dmVudFNlbmRlciBidWcuCisgICAgLy8gVXNpbmcganVzdCBhIHNpbmdsZS1jbGljayB3b3VsZCBu
b3QgYWN0IGlzIGlmIHRoZSBpbml0aWFsCisgICAgLy8gbW91c2VEb3duIHdhcyBhdCAoZW5kWCwg
eSksIHJlc3VsdGluZyBpbiBhIGNvbGxhcHNlZCBzZWxlY3Rpb24uCisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRYLCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworCiAgICAgLy8gRXh0ZW5kaW5nIHRoaXMgNSBjaGFyYWN0ZXIgc2VsZWN0aW9uIHdp
bGwgc2VsZWN0IDYgY2hhcmFjdGVycy4KICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29t
bWFuZCgiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKLSAgICAvLyBFeHRlbmRpbmcg
aXQgaW4gdGhpcyB3YXkgZmxpcHMgdGhlIGJhc2UgYW5kIHRoZSBleHRlbnQuCi0gICAgaWYgKHNl
bGVjdGlvbi5leHRlbnRPZmZzZXQgLSBzZWxlY3Rpb24uYmFzZU9mZnNldCAhPSA2KQotICAgICAg
ICBsb2coIkZhaWx1cmU6IFNlbGVjdGlvbiBpc24ndCB0aGUgcmlnaHQgc2l6ZS4iKTsKKyAgICB2
YXIgc2VsZWN0ZWRUZXh0ID0gd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCk7CisgICAg
dmFyIGV4cGVjdGVkVGV4dCA9ICJzaG91bGQgYmUgcyI7CisgICAgaWYgKHNlbGVjdGVkVGV4dCAh
PSBleHBlY3RlZFRleHQpCisgICAgICAgIGxvZygiRmFpbHVyZTogU2VsZWN0ZWQgdGV4dCB3YXMg
XCIiICsgc2VsZWN0ZWRUZXh0ICsgIlwiIGFuZCBzaG91bGQgYmUgXCIiICsgZXhwZWN0ZWRUZXh0
ICsgIlwiIik7CiAgICAgZWxzZQotICAgICAgICBsb2cgKCJTdWNjZXNzIik7Ci19IGVsc2UKLSAg
ICBsb2cgKCJGYWlsdXJlOiBUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biBtYW51YWxseS4iKQorICAg
ICAgICBsb2coIlN1Y2Nlc3MiKTsKK30gZWxzZSB7CisgICAgbG9nKCJGYWlsdXJlOiBUaGlzIHRl
c3QgY2Fubm90IGJlIHJ1biBtYW51YWxseS4gVG8gdGVzdCBtYW51YWxseSwgc2VsZWN0IHRoZSBn
cmVlbiB0ZXh0ICIgKworICAgICAgICAic3RhcnRpbmcgYXQgdGhlIGVuZCB2aWEgZG91YmxlLWNs
aWNrIChpLmUuIHdvcmQgZ3JhbnVsYXJpdHkpLCB0aGVuIHNoaWZ0K3JpZ2h0LWFycm93LiAiICsK
KyAgICAgICAgIllvdSBzaG91bGQgc2VlICdzaG91bGQgYmUgcycgc2VsZWN0ZWQuIFRoZXJlJ3Mg
Y3VycmVudGx5IGEgYnVnIHRoYXQgc2VsZWN0cyB0aGUgc3BhY2UgIiArCisgICAgICAgICJhZnRl
ciAnc2hvdWxkIGJlJyBkdXJpbmcgdGhlIGluaXRpYWwgc2VsZWN0aW9uIChodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNTYpLiAiICsKKyAgICAgICAgIk9uY2UgdGhh
dCdzIGZpeGVkLCBpdCB0aGUgZmluYWwgc2VsZWN0ZWQgdGV4dCBzaG91bGQgYmUgJ3Nob3VsZCBi
ZSAnLiIpCit9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2V4dGVuZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNl
LWFuZC1leHRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGVh
OTZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLWZvcndhcmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVudC5odG1sCkBAIC0wLDAgKzEsMjkg
QEAKKzxwPkEgc2VsZWN0aW9uIGNyZWF0ZWQgd2l0aCBzZXRCYXNlQW5kRXh0ZW50IHNob3VsZCBi
ZSBkaXJlY3Rpb25hbDwvcD4KKzxkaXYgaWQ9ImRpdiIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5U
aGVyZSBzaG91bGQgYmUgZm91ciBjaGFyYWN0ZXJzIHNlbGVjdGVkIGluIHRoaXMgc2VudGVuY2Uu
PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKHN0
cikgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBz
dHIgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2IikuZmlyc3RDaGlsZDsKKyAgICB2YXIg
c2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworCisgICAgc2VsZWN0aW9uLnNldFBv
c2l0aW9uKHRleHQsIDApOworICAgIHNlbGVjdGlvbi5tb2RpZnkoIm1vdmUiLCAiZm9yd2FyZCIs
ICJjaGFyYWN0ZXIiKTsKKyAgICAKKyAgICBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudCh0ZXh0
LCA1ICsgNywgdGV4dCwgNSk7CisgICAgLy8gRXh0ZW5kaW5nIHRoaXMgNSBjaGFyYWN0ZXIgc2Vs
ZWN0aW9uIHdpbGwgc2VsZWN0IDYgY2hhcmFjdGVycy4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5leGVjQ29tbWFuZCgiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICB2YXIg
c2VsZWN0ZWRUZXh0ID0gc2VsZWN0aW9uLnRvU3RyaW5nKCk7CisgICAgdmFyIGV4cGVjdGVkVGV4
dCA9ICJzaG91bGQiOworICAgIGlmIChzZWxlY3RlZFRleHQgIT0gZXhwZWN0ZWRUZXh0KQorICAg
ICAgICBsb2coIkZhaWx1cmU6IFNlbGVjdGVkIHRleHQgd2FzIFwiIiArIHNlbGVjdGVkVGV4dCAr
ICJcIiBhbmQgc2hvdWxkIGJlIFwiIiArIGV4cGVjdGVkVGV4dCArICJcIiIpOworICAgIGVsc2UK
KyAgICAgICAgbG9nKCJTdWNjZXNzIik7Cit9IGVsc2UKKyAgICBsb2coIkZhaWx1cmU6IFRoaXMg
dGVzdCBjYW5ub3QgYmUgcnVuIG1hbnVhbGx5LiIpCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEtZXhwZWN0
ZWQuY2hlY2tzdW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24v
NTE5NTE2Ni0xLWV4cGVjdGVkLmNoZWNrc3VtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3ZGYzZWZiLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3NlbGVjdGlvbi81MTk1MTY2LTEtZXhwZWN0ZWQuY2hlY2tzdW0KKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi1mZGM1MGQzN2Q5MGU5ZTYwNDUwYTU3MTAxODI5MGJkZApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC5wbmcKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiOTYwYzZmMjMxYTY4NjUwMmMxMjQ4YjMwNjAwNGRiYmI5
OTIxOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjMzNDYKemNtZUk0WEgtKkoq
elhaX209UDVWaWJ7ISFme0tFT0coJUFsNU5SUyFZN2BXdGdjeTFZPXJ+RlQwWXkzdkUlYjwjCnpL
IUJqcUw8fFRhTD11VzUwKWBNbTN4UnxyX3UkTXNkZXtBYSpTZEdmcj82TXtJczVHV29UdlEkNTUh
eklHdSpONQp6Jl45MzxwJmRxN3VpT3c0K0koMEBOY2lVT3pYMm5lZnEmaXkyRVpQQWRlQEVnXmJU
TTVnfUhmbi14VSVILXRfcEgKekB4OCg4OyFnemVDO3pQZHYhcmhTdm9EdzlZTER4RGlvSCh1czJm
VSNBSy1wRWB1QEQxYHlvPm08JjEtJT0mUDRUCnoqNmQ+P0xENnhpRDM+d1U/LXorQ1UjNUZtWT1J
WFlqbFFnWXFmO1FxRmdhelRiWnBKSEg/b2laTTk1bXFHU09CNAp6e0hAUXVQMkUpYGYjMnBJKUNV
ViZtdDBiOXhiYkFWUig9bGBRRWEwI2ppUkJpN3Y2bnMpRVVjP1BHN0JzdlV0V3gKekU9K3B2M01Z
NHM2OVE5SiskJFZ3SyMlbyk8OFdOO3dgU1lMPyZlaEZSUC1JITZWSyhxVWslWG0hPFZwXm9IS1ZV
CnorPXxBKFErWklQPUlRJXtkZH0/NSoyYmNIY2tYXyljPHFCVSZDKXV+QGFRe0d7RGZ4XkAhc3hK
PWt1Z1ptMGwwQAp6bEAjaFhpNStNV3QrMG53c302MmI7NkFLQXZ5YT9ZczAlNno5Tz5+TW97aDNC
RTJ5QzlsYGl7ZnpnaihYKjAwV3IKejZIc29JKkAlOz5wa358XkFJVjRFejVQTXFhRWJiNysta1Jg
ZWV8UTthQkk9fnNlWkUlO2RWdEtxT1Ahe2o4RzN+CnpiSWhUYT9qbEYwaGtmbyhjQVZfcGB0N3xZ
KG4kc1VqSHBLRTFYa3U0RCVBUnJAQShZZ05Hbj1YSDF+VGZLYXpoewp6LVN6WFNgQE1ZbyZhaz55
VlBjRWp7Ry0hPHB+S1JpQztPTUIpPzg1YGI1aSFfRzw3RkA0TGomKHVITntOWHdeQjIKem13ZmZR
fDY+cSlpeGpQPFFsbjRiXkp1YHp0I3pTe2c/KXI+ISUzfVVOeD5iRCZLMUxTKD9+QjQ2WTtyUHhw
NzlPCnpYVn4+UTJXS1ZAOHJmOCs9dChjd01LSmNLb01UP19vWVAxWDtBLW1NYCQ7fDd4QG9UKFF8
PGgqez5MWFd6cjR9awp6Y2AoJUVsITwqMjxkZiZTd3VSUEhYTzRZbkkoLVQ9cEFufFI0S3NXQlg3
cFNIQz82aHdLMjchPjJoN1hqOD89Xj0Kel9xUkhpRHhKNXxsQVdgX0E4MXxBZiF9cXJPTmZeb0pW
RVdye0IhbFVhd3c4YEljP34rXkNmZDx5SyhVPE1PUjN2CnpRclAobko7IStTRDIoe3VDWi00T1hi
c29SVnoxViglQl9kezRlIXNDc1o7OUpESn1tUlQ5N0U2UTRzLUdiS0shMgp6czQyZlNAVmIyZFly
PDFTRXc4Xzt0a3B8TEo+eEsmR2NtP2NPOXo0KG1TTSR5NXd6QFVCV0wjNz1MR0B6YEI0SVgKeip+
U2NXJlM4c1NlfXdZN1FvdFYkNGFJK1ZOOFdwZnlLNz4rbilxYn02bSllPlg/QDQwJE5QNEs4LXV8
QExXaE5uCnp1M1dNVC1vekxjWCpnfkRUeGUjOE04bVB9NlBtd29gJX58ez8xZmxpYk59dEtAIXdv
Y0AoUi1UMSg8dzBhUSV8aAp6PHszWEpAdlUzTXdAMFZ6WmByPE9afm02ZWhZSnE+blIweEB4Vylj
NFZVUU12MzFuKz5yJj9EUE0rdFNGZ3NScCsKemJ9MzxCPTtKYihsIXJvX2d0ej5APityPH56PXli
dHc+dEQrWklBb3N3fHxCJiVEeG9wLX5CKHwwTEVfSzUjSUp4CnotdkR+KXppQ14zS1hHeVNyXnte
RnBZY0hXUE9ebz11QWNfQz9MdXRhO0A/UlJfMnBnKSsxKGwzZjkxI0UxS30mNgp6cFlEN3NgSHZH
OV9hQ2c9eThGbEFeOyk2RXdXJSFwYjZhUTQ4IVFhSCVEOG42MlF4NShxe3VyNDVVZ3AtY3lzZWUK
ejl2dmJQcVNENG5pZD81MmgwSGFHZXVUMiZPUSgoRE9WZlNrNXxIcVBUaEcmYHVwazlFbXdgcnRg
MTRWWlNTTUxgCnpKYzNTNm9FQD1zJVRqVF9LeFdndXJ9RyRgR3E5IVV2OUx5ZER3bXR3MTBqS2x5
MmVWZCttayh3aThVaH5qU3l1cwp6P3RjQWBfWFNSJGQ5SnNvQT53WDVBSWBucmBoSVdUWUoyVE1y
ejhAbyF6IWh7ZTY7aEwtXyVEVnZVaVBYPXVsMVcKel5PZG5NPUp9d3g1JnpsaHVIc2E0b3lIak9U
bSNqQilYYmBjblZOQEBAV0E4VGtQbn1LMVR1bEZReld2YVVyN2drCnp7KEpiS2dCNFZKRCYyS31M
cjNNQVU3IWB9KlMoS1BRfFMlTkoyNyE/KkxxREo/PSVDO291ZlRnM1pKK0lPJmJDcAp6QElIVFM4
WDJYI0p8UX5VKHNhSVF5Vn42OFRvYTxMVFhJIUtVN3ZxRmxRYFV+T0FjQHRvOWImfWB8ey0zWX1w
cikKend9YVdOelFAKGdrQ1JvVkZaNzwxbjJ6WXNVXnN7Pzw1fWE2TXxKbEheN1NYYEtifGk1dSR7
fG5qa0ohVz5xZ3JICno4KCUpSEhMZHcqcClab1pNQ2o2NHNkajR+KD9zbkEmJVN6RkowWHVBQGlo
KSQ1cDJhO3YhemszOXdrQH4wcCYqSgp6MilrdWNKMClRaUU7JnIjQW13PCtVcE5rKyg7dUlNNzle
O1pqUzJXe3JEcjNAUT5OO31WKHktZm1yYE51clBmWn4KelJTTDZYZWVUaTsrO3N0dSl4RypFSiNV
PklERl9QNDxCcXJ3UlVTfS1rZXV3RlBPdjs3cGxOc21EcWg3TF42P2V6CnpLM05YWSs4ZkJuKUBQ
PGt5I01ifWI7c1h6QU5BJD16NG5lJXgtZDs1ekNNMXRINk1qJiEjfm04YH49ek83VHpHKAp6JHhh
Jm5uKEgkKnVgY1IyVElfJSYmaDM2THZuaXhRITh2KXpEUUdsI0U3M0F7QG1WZHNzITB1Ull3dUIx
YCktPjsKemU3cUJhTVgrcXlUa35jYXFiYkB2Z3VVTS05YVFNOU1Ma0g5KkloSD40JXwheyV8Pldx
O1B+VSVgRkVuMFFiKWFzCnpiVXdSUDtEMXtzZzMkfFJlKGNUaSFeeTIwVWk1TTUhbF84dm1MYnxn
QiZMRVBkRmVQYGBzS098P0xfZ2EyOHVRZQp6V3I1SHxSflZzKEhGJXs/UV55Kk95e1dYMT9sU3ti
WklvYXN3T3BUO1A3aClVX0ZRaT5MZkh2VkJkSy1RWEVXOWoKejQ5OUd8OUV9QFNsVCRyd0xHfktx
dDliR1FUWVR+NGg4c3paZGAoWnlIZkVDcm9aOVNzbDt9T09lKzQtSC0+OTc/Cno/MU58TG5pMjI8
NGgkVytqTUxTRWo8RWdKMUBHKzk2WkhyNG9XSkMxN3QpWU8/VW0yMj9hIUpaJkxOWX1AcD58Zwp6
UGNOQ3dSPHpQZ1ZiPmhJdE15Nm5FQD9iN2c1QmgxQDdPaiE3dHsqWXAxbXo1KmA5bTwtNTtlb3Ao
JS00aXw/MUMKejRZZ2U2TClxT0hoU0pabUpPJkpEWHtMRXhUZD53PTk+Ql9eRzxXT20pSTNIUUta
X2c8QnR0KG0oKHNlbmllM0tqCnooYUZ2d15ON1YlOFVxIz9tWj1WTjRxZllrPG5vdHYxdlAoXnd6
Z2JWTGVQeHliWjBoWjg3MUpMYTcqYFd3QD5HVwp6YEdtZHxiJCZYd0tCYk5mWU5rcWlKbGRnbGJ2
b1A2T3I/X0JkSzF8dXJtS2JjdktlJFFLNWApcjt4RGY+dWVJMDsKelNneX51aE1VdT9MVUJqVGEz
cGBjc2J6KWhjRUl8azJZPn49YTkrLXJQXkIpa3JuQVFkeW03biZXYkgkM3BBTlMkCnpsOGNUc1dg
K2AqMX5TfXBIS1JUOSFoIVlxa2ZlfHdvRmFLRjk0JGM3cntUNkEjO05ISHkrRH59a3JYPWslKENB
QQp6JTY8Pl8zYD0tQFh5MTUhSENOLSozUjBLblFCd3V+RmFqNzBQbi0mN0h2NCYrQDZONj1rTj8w
TFdrI1R0ISpFe0MKenNYRnxIQno1SEJDa3hDLTByISZTNDlzSFN0cTVxTzBzSG0xbEZAV2QoQVhg
fntjKGB8XyVaVjd7cFhEJDQtd2RnCnptNGFMUDd0QT4+MXFAZz9SVDNYSSZLO1pUY19mPnRrKVBy
QlMqdUQhbDVnQFk0MzxEMEBeRCU1d3ttYkJVPmg3MQp6TClvNkw9fGlHVyt0SEImWjBkYlRSdSF+
NTk/U01aP0AtQlRnXmV+ZkR6eipSaCUteFZUVnx8cihfIUlOOWk/JSkKenQ4Y3xfZ3Y7cGdYeSEw
OEkkfDA7dTk7cW1paX1eZig7I0RZWClEb0JgcyM2eW8oc0JDalgzNkQqbTVfR0E1bntNCnpOPHVK
bHg7YTY5Tm8zdW9yVEVac1Q7WjdsLTwpN2QldF5qWWBeam1SLUEpe1ozaUhrbUpydD5IdW1lJDVG
ZVktRwp6dHpkQSo2fDw1VT55KnA0PWA5cVB5M15ffDNrTUsxYHA8QE12azk4WTJfJSkwPyFJczsz
Kzx7ZTFCZE80Oz9WUXwKent2IXQ4RnE1LVZIZypLb04maXEmQ2l0QDU0SkZ1UiU+czQyNFE2LVNJ
NiRvbDtFeTxDbWJ3SDFhSkNLfHdgKHdlCnpSP1h6Smx3bDM+JWFsJSthZU0+KW1PQkRvTmNLXzFZ
ZEJmNlorb2dnVnM0ZnQ+aGYybz5oNzhJanNXdmxhS1ZWZQp6Vmh7Nns4VkFJcjA7Rl9DX05zTFlS
VlE2SGNMWHBaWWxNPzJ0QSZYYGg0NyVURmI4WXF5bX12IUpNTllSd2I3bmAKekN7fT81MC1sWH45
d00tZ1FCU3QxKX5TfEpaZU59Jmg0clV0MVhNfVM5N1VHSkNBbHBWVGxvUH1LNG1sY3M1MDFyCnpQ
ZnR1akhzWG9hPG9Ud1M2O2dUVk49PUAydj9nb052WWRtLWRtQjYrJFJzPUM/SykyUzZ4MV9zSnJv
MkZ5Wn5TQgp6KXU2X15JVGZeMnBQOSlpSiRWdj8kWDZvUDV1RntOdC1LWG4+KndFQ1E4IXIrTTZf
O3dMZCR4ajZRe2U+Kjl3eF8KeilrNDsocHooTXlIVj9qTmBXaCFrR2NWdm9qQn5vS2dANGxubH5K
Qk9JXmJLfjUxRWwobSNmJDVMSiQ4SWFBX3okCnoycDhxIyVkQ1d0V0lwIWl0Q3lXZ1UxYGFOMmV0
VT5BUGAwUDwrcGdGdjgxLSo8VShAJjBjS2NoPWttbnVscj15NAp6NyFJKkVgTkNFI153WG08P2lk
QDM8Sk1wZ1VAcHdSKjw0PFU5PmM3S20kZUZjPW55R09yKnl7c2MoVDUxI1F4cXwKelcpTkFiUGt2
YVkySV9ZaiNUfD1WRnlmbGVGJTh1UDhqUEdmeW4+ZHwrdThpI2d1V0swb1FKVUAoTiQoQ3tTPzFX
CnpaK1F+KXlOe3RuQFQ/IU1NZU4kRj9XI2l2VFExYChZX2dDQ2R6ZGl5SUEzXkpfSGdRdUNYaGAp
TlBkMFZtTXR8WQp6R3dNclUlcjMkWSp8eS0qV2BAKkghWjVVQXxGPkh1d2t1WDhpVXlLQkBNbWhZ
eDBhMTl6IUkreGZ9aThpSmc9JW8Keng3ZW1iP2RZfH1ZLXBuNmg8Xl9aMCVwfFdHaTQ5NGMxQTRT
a2F+Z2BUZ3JWZ0JhUWJUdlU2ODh5aDktYFV+WE1DCno0O0BJJmwkQnpFSl9vSyQhSmt7KDgxKjZN
ezZ2c2RtQjJhRV41WWFVX28hJnlrUHlPSUx+OSZuPCs3WFEzNmFmcwp6Rz9yQjxTRTBCfjFSMzJT
VDMlVUNkYlpGUEtCYT1RTkohc0xLNVhfVjR0OXwpXzlAdW87U3RoRzB4WX5CQ01ISSgKei1ZM1lP
a3pUYkRZPVhKQ0hwMEltIVNTUnkxWCUmUUFYVSM8TlElXyo8cCNjeD07UWkhRWdSfWBgZjxzNT5k
Z343CnpPZCVuRl5PUkNES1M8SylmMSUoYmU0UXk/NnY7dEdkZSo7eyVrbXlyV35+MEV7c2VRdkpN
clMrUnpucFQmQWo9KQp6PGo/bX1CaWooVkZPO1MtP3FyemA8UWNHZFNYUj1DZS0hcmZIXzg0TmJt
PlFLWCZsaVFIPmE4V2tmLV5vcHVwfUgKemJTR1QkYllhOCpHMGxpT3JxUmc9V3Z6WVhUdG85MU9X
JjtybnBoOEl0ZF85N3o9JjEmJFFwTURwKXNCMjs0fEVlCnpxXk8rS1FFMWJVNWlrWE9sOyU2Pnlm
fUVGPTlBVXQ5IyZFYG9xUElwS2lsPFNzJn4/R3k9RUZ3K0hEfXhnXno2bwp6amptSGBnSGwrYHNs
O2pPTj8jeSRnekotMXxKQW82eHEpTGBKe1ZFZW03RnY7OVpXOHNxbjtvZGpmb15IUDN6RjYKenQ8
ZWIhVEV5SlIkP3R+cXhqKSRNQSFYfVR3d1UkJHJXbjB2ajlxdlZqYjRkJVVpdiV1JV9mbVRjYiVt
UyspbSRZCnpielJTVSh7Y0M9JTVvSkthUGhkLTZJJj18R1MjbFJKO1BKKUl9JHdnbnFgbmY/SSg+
YWZAfENLSyU3cmd3MmQ1Vwp6Tn0yekFYWVdBQzV0MFJ7YHN4ZChLcyFzNV82ckBpUz1iMzYyb2k3
a2g4PVBVeUViXzFVOT4jPig5UF9qUGRvZVQKekg2RDhvP2pudz8xMG1HUTJQfiFCeDwwOXRNVWpv
STJuXzJDY3tjaVlUPj1xOVpoP2pBJiVVeCYpUzI+I2cxYj05Cnp6aWQkVDdaKTQjSSFCVSVIdSpJ
a3R4OEE7RFZSP24ramoyaWZYIWExdFEpZSYxK09jR1Y7MCgkI0ZCIVJJQFZMWQp6WXU+QitZKHlQ
REl0YzBzb2F5SUZwNXRRQkBEWEtMUFFafGRwJj0lSVkzeEplantQQHV5WCk/elZBVGBoP2Rfa1kK
elJtPm5CRFMmXlZhcDlqJiteQjxrO1JDeXhuOFpOTnlzTnJTYVg/cW82MSRSbnpnTnYlLUxfY19x
WCg5T29KK3YjCnpWd1FJNUQpcUJ2cjttfGM+IUM4dlE1bm01QDBJN3FsaSh6OUglQVB1K3Z5cT5n
YnZ9N048TCV6Pld4VHlkUy1qfQp6PjQlN1MhMG0mI0ZDMkhEdEk4PkdsdCtOI3NYRT0kZ2piVXEz
X0JVViY2QSNFSmxPWFczfHE8WG5VWW9AX1p4ejgKekN8VWd0WFk2TzJ5UH57aWdINj9JS3t3UyQ/
KDZ2IzlfIXRnPis9bWJ1am4tbnJNUVFUd0VAfGkwKjkyQk1WQlN6CnpseFlOPS08RmNESG4kNyg3
aEgjOHNJITxud0hmN2JfXldUYkRybilZMVl1bzZQaWoqJVU1NnNZUz18KlVUeUA1IQp6STdAZjJR
I34ycGFePmBOYSNIdm1LZGErZHtnYCltUj07KW1ZbSRoKjxuamJCa2JEZUN6RnVjR2NNaWJ9US1B
QyUKelJUQGpGMkc9NTd2Sz5kKUZueGskcTtBb3dneUIzWFQpQm5ZRVVEWU8xbXV5JmNwZXo2WmEw
VkJGQCFXeUM2YnBiCnpzVjgzQ1V7KGVXUSlgUDc2MXVSZ1NlaG1edSFYYnV1QExudlNocFM7JDRj
KSRKR1lMWT4tNzNranNLaWBqcDtMOQp6UDh3ZH0tSGJBLUg7aHBXOFVAfU4ldT80OUBZWn5QWEYk
Iz9CQDEoYkdLc1hYYVpeJG4qMEc7V0lUN09jVm1+cFcKemIzRX14UmhLbFREaXRmJTI/ek9mOXFU
ekQ5fmlSY3BnRFZoaXJ+UjghS21sRVBlZzNGR3ZkflA5KVJFRXV+M25TCnpTaURiRjw1Y0Y8KkA9
PWhHUUtBTikqNlN7SV9DSjkqeDlMMWZwQUkwT2M7amlUZHloUzZ4ZnM8OUIpfkUpWkRTMQp6d0Ex
NDE2LWdKOGhNd2F4IU1SVztIOEhZZHBZM0A9bGJJIT9OTDxgeChqa0M3SEMoKSljc1dpaWdPaz0t
YTlJUkoKek1CRHBCYUs5RlNjPXV3YjtVJGA4Wkx5WCRvVyRKaWQpQkUmPDEyPn02QmRqcFRgYENy
aHEwNnlGS0F8Z0U1bWRQCnpyVSVNeCpKIzhuMT58KzEtN00xVSlQTVZDbVBLMUtzXjhkYXRNUi0k
Smd5N1h6d0tMfFFgezwqdnZLaUB7aDRDVQp6dDZpeWtuM1g9Z2FNQ35tKCpYc0tDJG5hSFJQZmt5
V1ZTMjBldlZfZDgyO1VockEoU2lmUERsOVNhdnRfblB8cUwKenBzPGhpSUwwRVdEYE89dWtST340
MVVFMlpXRkBoUTQ7PnEhbWhlQDN4anJOSEB1Pj5mTEpvSWFGcVh9Y1A7Ym4qCnpeOV5JaChLJGVE
QT9GJlVEVnhuTSZaQSRgaTNwdUNMNGQyNGxHMGc9Tz95RElhRlVWS3JnV2NaZF5BT2k5Mm1WWQp6
U0V7ZGsjJSFXZyQ9Xz5SYmk+az4/UXFGKSZPMiU/UEBTVnwldEdTenJkeHNaSnhmfV41cEpIIWBv
TUFORDFII0wKenEpSlZeM0dXUlZYPnFtY14tMHRTQFVSK3J3dntNYj9SdDtfQmBSUWZOenojdz9s
c2FCQG1DRlAxNV9EeSEmRmcmCnpPQDdsRClSRFVpNnRhSlo5Qk1yKzRHT2YtZFRjeWYoKCRAamww
O1c+dkNrJlVBUypqT2JkfDNoKil2XmJBVzI+NAp6b3tlIVNrYWg7blVrJmBGQUZIQTVoT3RhMGVP
Xih7clk9V21JNExDbComYzhoeklAbVdBKnE8anNTakhaejhsVXgKekhAWHNnY1piNnlnfWw8P3M8
PEt3Uy10RVJSbG4rWFlOdH08akFmcHVTJnhVR0tsY2l4SEZvdkgybkNaN18mZmN4Cnp2dk5EOEwo
Q1Y7TEA+UU5XZmwzS0pKOFMzVzEoSjRfR282OEN9UGNwYkJ5ZXIhYXFOd29sK0FZTENXPFZsOTEm
Mgp6Q2E0Ykc8RzUhRj88NEFXTkRvc0lnTyZZcDF4Yk5Vb2d1SkVBUHJpbE1tRS0pNDZ1RFdNX0Rz
O1c5c3RyeGVLKkAKekAqJW9gcm1sUCteMUVneGtFRHA9WUlMdDc1Q3ZIXjJwTDN+IWBiIX5zRyM/
WDNBYSVLMXZveUFqO0sze098QjBGCnpiJlk8e2NXU3N9U3NucnBZMSM0bEBneUhVb0Z1OCk9X0g3
am1odDcpTmFsciY+KDRlbzU2YXVGd30/XyMkLTlIdgp6S2tPKVFea1k4UyFgO18tKlBvbWw9ajA2
ZEopPGY/JE1+JHFwOFlgez1URn54aCpefk1EblZeN25Hd1ppZj1QcW0KekxUaUs8dTU3R1k+WjhM
cnpwbH4yWVVFN0cqamdEeVFIOGEmNlViYH50O1pFbldsNnFQdFhgTig8akJMNWJCUSg5CnoyemV3
JmE+WHNRPCF3MTk+RW1HdHlaaTRiOFBaMnY9Sm9TSWRaal9mJH5sK21RKzEpcDtDYjF7RU9lRXVV
IWRQMAp6NX1YaUVTNDh1Tj5LbSFuRXF8MThnek1ncFJ6JEdNQSp3K3x2MCVScnYxM0M+XiZRMG88
UVokJG5nRXduUGU2eXkKejdFNVpPemBAb01QQjx+QyZJPXBHaHNSVjUqcD5qZ19vIWpUMm12MFNz
eG9GVlBHbUtgOCQ/QEglOys5c2U0UFArCno1XlMjNzhZMU9IMDlSUWZZNzFoVTFudHNVRjQzenVx
Z0VnLWszTV8lYUZQVXZ5WnBfTStCJlc3a2I2OGFGV3VyeAp6KV4/TXJZY2E0KGh5fFQ1VClKY0Jq
bGtJTExsal9oLTFqPDN4TEc0STlqenJBTyhGM1RPXkJtJnVUQFVqaiNPNlkKemg+d3BucDV8T3g5
Png0I0lUTHFDcT8wOFF5d0BecyUhWXRPUyhfdGZFVkhuZDVFSmFoYWE1NGQ+b3ZKeXg3MX1NCnpt
aUBram1CalgwQ1Z0YX0lVTZGPkZLfXRBUSFMNWlnQkNWO2xlTlVSMXojMXd3anUqe19hMjNmaGsw
YylKfUR2Kgp6UVVvQVJhXygodGF6LUZka19iZHdRbEwzb3FuOFVgXjswdXgwKF9SZFBDcip1ZCg+
QXhyeGdZQlUrTX13SWFndG0KemNYVC1YMj8xVF9HeHREKFNGQ2Z7dkJULXJqT0ZkajJ3VWE+VFVI
MEg8PTtISjVYaUhePiozanEtQWxfWFRLWDdxCnppWiZMT3h7P1JQMFFfV01vak9VWHQkYGpIdl4q
OzRXQXoweXtpODs+UlNEOV9HdHtYdl5SMXtFYFZlVlE3UX1VUQp6RXcqNGpPNXlHK05LPHd5Rnpp
cT9rNXVUUU1aJUd2SUwxUldfJm9seWY0c0I4aUMzNHVtZyZ3KnRuQ19LP293WV4KemFNLSl4YUNE
KjRWfD5ATlVsMit4MjlgJkM4WS0zSXF2WUgtPkZ4S0chWGZxTj5eSHBZR1ZETU14fC1SJlloMF5D
Cnp5NClxMl4reSE7TlRTeGBPSEo2KCYjUThCKnBRXn53bmo/IVB5O2R8eXkqWlRHTSRMdFdDRGxa
NTFUSWJzYWdxWAp6U3NEbmgoZS1SYkFoTnE/XnxzXlRzcU4tX3p8OX0pJjErRzhhPDxGbTlKTlRD
K0JTTl9tfEpuMU5qKlNsUDc+TWoKemJeYDNAKXRmUStRJUxTYXxMckFPeWM+NkhXQF5eVVNpSzR7
aElVNER3JFRZTSt+cDg9KXRGcnFePnk/TWJKVzYoCnp3NUZrRkhqWWpRNzNoYz51a2h9WDMoMmw+
UD9AYERRfjd1eytaOGpwVG8pdXEqQncwdmdubksqNlFTPG07TSsoKwp6PWd1ZUBXYFNrdThUN0RP
em5wSUY7YzE8Ykd7QzxiJkNkSGlMSEIkNjt0QjtqKE1hak0/KHErU1Y9TTZCUVUybksKeiozPFZ9
P24lPEN2KXtOVlQ+TWJecndLeE07cjV7cDFIYGt0KktVc1ZtKz1FSmpaLWNrdyNkZGd5LXs8UiZB
UFo1Cno7Szk5SENfUmxEJigqTiRhamg5YCRVe28qUXBPIUs5RVYwTEA4YVlIc3xXRmdjNH42JVha
KSQwXm9EWmw1elcoQgp6VUpUNWV2T1dhd2cqJk48ciZaT3ghbGhMKWl0NHVmZXRKfEdVaHtrdm0o
ayQtTzItc0ZUTDNhPCtiaSlaKj1TJGQKeipwcUVmaV44fUcxV3Y+NlQwWmJfZkdEYyN6TFdAUktZ
TXl1eFBDYUwxeVAkUV56ZzNYVlk4ZXtsKUszVzUzKmVVCnpSQkBaT2RtZmxRWX0wbmVgb1o/TjFN
PVRWX2plM14+K2U1SXszWFg4NHtlTTI8Nmk+NCFNN0UraCMmNmhhSH4pRwp6MGwzcSlaYCU0a3JD
UGY3JjtKbmk4e1o9VSFCJGtPZDRCQV9FNTVufGtucHM0Iz47Jl9PJSg7RWBjYExEOXtUfm0KemtM
ejlCXiFrcHNOYVlXKnttT0E7WTg9a3tfPlpOV0pfd05aPEY0UilUWXBUUXliTWZyXm1iRClgVlhB
bj5mVXdKCnpxdjdEdmxyMyF+QiZhQTBtU3dBSkwrZjEmKzdiMmgoPnsxcEUzRDlHcjtLeSpjdzlT
R3JhKHdpRDFKVXdhclVeKwp6d01+MEV4XlU8fFc4IUdJYDt0PVopM3FSTE9TaUxefEdVRWpwQCRh
MmVtMmNidDJaTlkmbj8jLXtOfUQlI3kmbHsKel57VWliRz08NzBqJH5HMENzekQ+Nyl5cWV0UEI2
RzdXaCFTQDIyWnFjNU9lJmtNMj45KUh3UWpBWTFjTSFeWF5vCnpYeUllQU5lNn0/ZSRRKXJYRGwh
T3JWeyRVLVNQSEFJeE9kZlBtXkRTckRhNytzTU15Niljbkk5UTZ+eGRqIVYxcwp6enUoIWxBWWlL
NGJTQ24qfEIpM28/aT8+V2tFRnhRWkhhPWFyblNWazBoNk9eI29+d0laJHJYeGg4eFJ1JT9kK30K
ekJ8dUt9blI4aHdBdnhVPFYzVT94Wmh1IWE3eWZpOyRgOHFOPkVxJnVFZ1pJdzR9TzNLem88QHQy
SyoyflBJbjlJCnppJDJZUVZLdG9xKUBlTSo7cSVoNkBRXkN8VT9fJlNMZEpfbHVDXnU5d0ljY0p7
dEYhdk4hYz1QZkVFRVZHfFRKJAp6dEdvKHhEa3ArTnFvRT5zVVlJIXllRT00KmwkQkFLTENgWEdm
dXN8Km8ldCluNTgtfn53Q31AYmplSStkOzQ0UjsKekhoSmROSkxpOW1XcTtHZmRaN0A/LW4/fFJ2
MCY9KkFXfXpGK1cqcmY0PlFEOHR7VH1wSEo0VDRVZXYtSzFMSmJRCno+ZTZBZSl3SGp2PTAyMX1L
eE9FXy1oZ2lJPHhoM2ZVUGd7LTxWNEs4XlQ0bDc9akYpJkFfI3pRODZKJElORzwtWAp6eVJMQik2
QmB5ZkFxdnIkV0NlYXJjVEZeK3Fnbz5YKElKKWUhaUAoJnlvaj8xcHNARmolP0dySkJQe0B1a3tR
T0AKekRTMlB7XkxWdlZ7Smp+TUZpbTM2ZSpIRklvKGdHeDIjdXx+REw5Q1BKYVpoJktVPSV+cFRv
TjRgX095U1l0QnFMCno1K2RMYlh+cSFGamFaN3kyRXFYRlhUZ0JHRV9abWo1ezZKZk9zVjc8MFZI
IUF6djEoMUpONyU2alEjbW9xZjM/QAp6NT15I0hlTX5HQyhmKVNIKUkhYTNVKktvfXZEMzVZZDlr
Q1glSX1lTGV0QjYjNHpRTkR0S05BZDBJOCpJKUMtfSYKenN6PTBTKztjPFJMSUtNODA9dHlNe0hW
c2R2WlEyJG07akp+NWZiMm5SflFpU3d+Ymc4QlN8KypWazc/YFJEJSpOCno+cWR5Z0txWmxva0FX
ZW40VTtaUyg3dWpMdnd6LUBjJWBSakU7PXY3Kzc8PjdvcjNPa0JERSRAbygjTz41LXJXeAp6WExH
WXohcER7e0NgeXxDU1czMU1wa0Y8KXBvYXJyNlp7ITJyRUN4SD0+SiRTbTFoKkQpSTklQTk2NEFe
e3NLcT0KemsrSCZ5SV8kPGlsTDRHKEV9VGRRTTFreWtueUt5TTA3OW83PjxjI0ZiZWwoPD5weGQ0
RGw9emA/YFpkO2JeYGdFCnohRVVmO0lfKkx0Uz1Tdk9TP3VORGxWZi1XPTE3RTc0TU9Ucz1FUmwy
T3Y4Vi1LMlI3UnNYRUA+KmQtSUAtPz17PQp6di1tKik4S3czMCRmR34xSD9KM354MEd0eWA9WWB8
NipsbXNodUx1S2c5ZiNVX3AoVlFAUj0/YTV0NjV+SnxUdVEKeilTflJCckhKO0xqJSUkJjt4RXcw
PHR2KiVqNFZGfktxakI9aWN+ZEohVWxnI3JVZ214UExLTGhTK3A8ZWtzOHshCnpoPSR3SzIjN0A8
LXN+IVJCd1VaZkopPlIoTFFFVWUtY3k7NGlxeHY2RFd0M0plRFJjMzEhMVZjSG5iPElIQVFYQQp6
Q0NoRWEwZnRwWmE1bHFDe0FgYEhvZFBEQTFFRz5XKn0yQEFIaGZ0KnN6M1Y+PndfKSF3UHhBOz5s
WkRqMFMxPDUKejM9OFJUN30kViMlaGdHVWlsKWBLT0IhOWdJdXJ1QmYkZyhjeWJoJl5XQn07YXk8
TWl8d3lSZzdmYj1ufDtGPlpkCnpkdGx7X2h8YTQmcjA9Ul9QcDlVcy1AJVdDRUtMPT8wRHVWWTk5
N3ZqJE0/ZllUOSs7IyZMSSk4WCNpODNGMmJwZwp6WWk7MFlUJWFiaWNgMzhON0VsMT96dD1DeDxh
QHkoJH0kWHsqO2ozdSFtNUZiTDFaWDs4QUVMRyorbjhzZHs7T0MKenQ0NWxfUzA8R3JINCkxTkFr
eikzZX1PJlhoWnBkZjB5VFpoPkBmLUN2eVI+SWxDV2t0WCUhbk42KTxSVkdIblNFCnoxNVBAQEpO
RDU0Pn5sVFU5aXlZKyokQnUyTyNCWUBrKkFiekg+OT5vMSs/YDJBKWtFfkk/X05eOFkpbDxlOHhJ
UAp6S2hUcTI3fTs1OEd8RkVCYyM9OC1hNyE/YnhpfnJzNmNLRUIxcCNRTT00Xm1JJWtyTXgjPzxT
LURUej5TWmpQM28KekpjUCV6bHs4b3NId0kpPkc1U1QyYmExMCVmM0YydXNXYCNZKWtOaWNebjde
dCMhRyhae2o9KlVlUTJ3MyZMcEh2Cnp6LStRVHBRTm0jUmVfbClCbHpWbVdseX13VEtKRT1hfFpM
dV95elVeOyRmPXxZTChAfFFZVWBMPklDcGJZYVlYawp6bUdZdnd1blpNaEc4MVEzRXwlPmQ1ckM+
QW1lLUhAQVpJPl88PXg9KjIpSyhnayFEUXxCdHxtVk48Sl5oR0dPTk0KelFhTnZESUREXylKRiUp
dEVUX0R3YyU4ZjAyU2UzfHlzM0liJTtqWTNtNyYmc29tSD58b31pUXolRlFXZk9MMktLCno0SnYj
cUM+RlE1dFZAPj5mfiRTcyM4VlZRSWZ1Mm9YRHdKcHp6eXFveTwrOG9XTEt0fSkqPFkkVGI0RDtF
VTskaAp6TE12aXI3KWdwMEBJPElBR2lZN0VmI2ktKCpIQT1ObjJIU2o7RjJ5TiNER2pkNXF0MS1t
amNkfGRhR1J5QE8/cigKeiokMSNYZntpdEFoZDA0cEVuQmAqN3RwdENTXmE1bTNwcSFaWE5yXiU5
XiN6M3J+bEluUTF8dlgkP2VXentjK0EjCnoxbWdWbVBGR0Q5T0FFSkoqaEJWMHdFKmZ4Tzlvbzs2
IW52KHdad1RgRmEqKjckTzJeP08jVGRAO3lDWispfXZjMAp6JVROVSN4eH5qTmMlPlBhIW0+REdu
VTFoNjBWJExpcE9uRU4/TX5ZZXJaUHRtYm9FaFJkWHxWKWZDYl5CcSttbHoKenZMdH19OXhiZEc5
V2F3MXFNT3N2PFJJVmI8M3F9Nm5ublZ0SWJFVzI3XzwldWNJdHhzKX1nST4tXkdBPW5XWGhMCnpK
KSYrZ2l4b0Y5bmN5cSErKiM2fmdORnxsa3luUE40JVA4RWkjdChCXzspdy1zYG1HPHAwVHNMcEJq
fXswaGR1Pwp6RyowS0B5eTFta3JnYTQmT1k1dURCPVpIdmRNUHJPNnBzUUI0XkJGaGFeVyNGREE8
P2VQaUc3bVdJPU9lSU8rMUwKejAmTGlhWUZnQz1lendZN0FfVTQoI2hhP0h0MihXd3NeSHQkcCZ5
PlBieXlfekQ3R0JWO28odlRXWkE+SUpZQTlJCnpgeVdjcmliVmBZJj5sOThqfjNfMUVUJTdXPENz
NDlrYTY4SlBOOG8jWH59dX5oKlgjdlZ3O14pYzQ1STcyZ0xJMgp6eX5idENtc20rU0tDO1hfZExx
JVM3TzckQ2FZZyV2IzRlb3JUKT5lfUNiMTNqU2AmWkpVaVQ8VT8jd3kyNWt7TEQKelUrT3hDX2wx
cSZySU1yUlVYO1goMXNeR2M9I2dFPlVJSUFVXjdQQypseEZBPmZQRzNEQU1ob3xSfUlRVSVqQiVi
CnopZWJwMypEP1dtZUAhZjZ7IXZ5NHthc0M/T29gJmwtKkFUcjV8aikxNGc0YlEwMnJmPT07UFpG
NDtSMU4jSGNxMAp6MCRsKGcySUxOfG15ZGhQUW9CNDFuXzdKNz5kaGshYWk2ekpJRFYzeytnOHch
YWsySnBhQ0N0enpHRV90aHtIPXIKekI5QmoyYmxHKWJjSUF7cj9xdWdSK2BqRG5CQUQ1XjxBaDV6
ZHNRaU50IUorNl5uNWVhMGVzdTRePz51KDM4ST1nCnpBVmdPNm8jIWxSJjxFLWZZSzxKdUp3O2Vr
cVJqV0tfMDgqSipQRGVyMWgrKFAlLS14UTY7YU9pPigje1ImIztAdQp6ZDZeNXJAaX59PWBARTZY
IXJCaWIqNyVrbz1obHE8Zn5HPm4/RylpZlEqPCp9TjJaYDVlSisxN3RnXjxMTURPbDEKelZ9YEk9
aXd3MFZqQTxRRjV3KHBEd3BrVkFWJH5yPkBhUEo9aVJAMiVKWTdeYkxfVnVPKFo3Py1TTyh6dFQ/
emY8CnojZ2RpRFlNRnhjU1pPfGhwU15hMHopN1ElVnNpZXU/V0xaS2BCemNlNihKbThKJkkxZy1O
JDhkcX0zN0UoQGpuNQp6OGcmWT5QYy1WfT1EdGAqcnNpejRBRTxrOT5pZyQ/XkZOMXYoX198cUIw
RjtXRj92Q2JxdTU9anUyS2ghWT1jZVcKelU/JHgySWB+U3oxaHxSdU5rWjJNe0xoWUd4K29xY0I2
YWBiaDgmZkpaPk1ERFBUYU9+XmEmWiZMUjc7cWR9PGclCnpnaXI/U2preFpnZ1Y1Q1pVfnlTRWNt
biUzSUk8blUqdTRDbEF2NGhBaDJ7emlJQVZXV1B3V0QxczBpQlE/YU5+SQp6SkMwMlJzUSMwNHEt
fWl8dyRkIUlOTk52UlVTUG1TKGdHaCZEMllhdGhrR0hrNGNsUSYpYms2WCRGOT0kRipQbmcKelV3
NzJnWUNzYGdldCVLdFVIZVNEUCklPm9DJHBRK01+Pnl0STlgSG1wREw3K29uS2BAPHt3JEc4YT9+
IXZGPmJKCnpeRE9ecHVOQFJmWlBPP2BNcnc0ckYmbjwpc2AjLTU9eld4KHFEOXx3IV9LZE9HVU9W
e0M2REowLUU+VjVDb1omfgp6P092Uip5cVcyQkVfNlIwZH4ofVVqY0lgX1h6aS1zbF8/UUdfbD42
akhjMUVRYSRTTlo9VWFpTDZke0ooWDdFO0EKei0lWk5zZkp8eyopfTBWVWI8dDR1NkBpcDk2Vy18
e2ZWKUp3N1crOUo7SjVXYXlVNnV5WHI1WiZwekhXYm1nJCY5CnomKGMzZCM/NjdQMklJTTxfal9G
QjYlfW1+TF5hN3IlIz5uOTN5X2ooUmRGJFMqKHtkMEw9M3Vae1F8I1BNSXReNAp6YlpDN0VxLTQl
KntsY09sPGt2TXU/fmtnfHhKYz5vVWJSSmQ1MHJgaCMydFgtZn08UGZgWFd0JjJvZUxaa2slJC0K
eiQ2eG9SSFFJcFdGb1ZCPlpZXnElQiR6fXMrYE4kWlRSWVRWVVI1JEVWKndoMGtUJnFVNmRKfnt7
c2BffnF+dWZZCnpjP0NKcW14ZTh+TnpXeElsJS1XZiUwYFFVPnBwa0gwPTJlNDh8czxEaVZLSmE1
dGBRKmQkT3syd2Q9MUY5c052Vwp6RSMwMChTLT98SXFtPTNnRlFrM1RZWGlWfkZrUlFvVGl4eE1t
JTNiVFFZPjlYeD53bj04T2pBTDBAXnpLUmhyPDIKeitQaEkxSlVzNG5EX3s2blVefkA2Wlg9LUp0
ODhhQXk0RjUzYzJPQ25zdGRBRDdOQyZYXi1pPFZxOEhBWUoyayZQCnplWEZgPFh8N3B6Rz8xPjFv
WH1iXjUtRD08ITVvb1okbFJQb3AoTVM0V0czb1JwODUrISN0XnRtUDRVNmF0VGFoewp6MV9XRmtR
aT9zRyZBPzckSnN1XmYhOCZFIzljMmYwTXh3Z05sZTUrQVJ5QVR5ZCk7QmlKUTxSY0h4b0MzUn1f
bk0KelQpSDdIPzRBdWJzQnduTk1BVS1rP0QwRG5CdV85LW9+WlZMUFp6SDs1KU0jJmJnUCU3Izxq
Km4+Nk1KcnFGT0B8Cnp7WDNvR21PQXAqS0R3KFJLWWFjOG4rbEk9Qig0aCZCaDBCcVBzMHk2aExI
KXNDKllrYVUzO25MUTgheHkpOS19egp6Y1dRKzBOckswQStxdmdGcEFqOXcxMH5QckxPTlgoRDhA
alU9P3cpfHROT2JTTEYwd3hOQyMhMHR1YiR+c3xgM0cKejIkLV4qSnIwfksmWjNrZkpVZ2JOKEw4
YkBqcH1uLXh0KD4yV2gkTnR6Tm80TTJ2NFVKci12Q31NNzFVelBLMyt4Cnp7MkJ5VENKeW0xKGtg
TGlYYlV8d2JPQjRGT0MlUkdIQ3Q0Kl4mSHdxYlUmbyZPQ054U1JXWCsqWFVHd2FZTXMqdAp6PnM1
VWwjb2ghIz9jY1o5YDV7TFZgfVJ7JU09MFdONHtNMFYkT3hAT041NztqQEB6JCFYemJmJikpfigl
QFl4UDAKei08aDFiUSopPVJBY0dFcz41c043czcrU0cxYEBQSj48JnRHWlFHJDx2QyZrZWg1e3wt
eHxUUFZTSl9uN0BMUzQ+CnpTb1o0RlBBZlJGKypUJmcjMk8rdygybEJgYDtGa0I4Izs1I29eNXMk
cSZmTTUoNHMjNGBvaWpgQnJCTkNqNEAkdgp6RjhxR0xocGo8MmY7SF5rYSpsWWNYSDZ4I1Rxayha
SmhLVDMjU25OfGZkLUNXU0hHUTx1eU9FZGElQ301OFdyOEcKeihed0hKISQ+T25RUFp1Qis3ez1P
cCpET2N3RzcraDZFT2MpTF9OcVV3bj5PRTkmNWA9XnVTe3xURCZzRkRgaH5SCnpueTdXbEJNNTw1
Wl5oQ2R3QzBIfVN8aUZRJUpeP1BBNm0xRzVhS1R6USRLO24qTHRVWDk5V0Z0XjNYMi1VRlNZewp6
QDB3NE5YQys2dVgkRntBSUozJVp0cG5pd3dKMj1oT0FpUXdgPjdiZzJ4bkY1bD9TelFNO1lJfnoo
KiFLd2cqZ0gKekMkdVVMZGAkdi01bkFVKXpqbWA4aGEkYDFhb3tvbip4ajBeN2h7ZDZIMVB8bjxg
NV5jcmp2blUpaVZ7UHElLSY2CnplM2BXSihndXZLUlo4MCU8UzFEZSFBa08wZF5OKVBYNjklM256
UjN7RFgxIUZPRjhDdTctXjZQZnNCKyluaTdLeQp6SXl6cnB0OG8zQVE1YjA7Kn5DTENDVDN4IWdV
LWhCX1hwe2V3fm5HX3ZiTFFNZzIhIVNOdiY5ZEFKZV5rZSh8V2wKemhVTjVle31UWC1wQlkwVUht
bjlSNCM0PkY2Kl9xaUY0Q35Ob2VTdTcrOXFEdi18NXJvWUdIKGB7YHRfeXN9S2hyCnotZHZed289
Sn5mWHUhNERuekpoZjlqQEkrdXhBbzE8dFlBN1NOPEhzTWArKUJDbWZlKStYVj9ASkA7cmNvcj9r
Twp6akRfSy1VM2BqdDsmVTdPIzxkK3U2WF8kWGN+ekBXS1pmQipPdTYoNWQxNE45SFhoYlZicl41
aFkqWDlYOytDSHYKejg0PHRJRjh6JCskWGF6ZnVqdGRlMTgjTWE7KmpkST8oYTVBUSRmZldgY1Je
QV5GUiM5PWVDeWBzak9BRVgkWEpmCno4K18ySExNJEt7KFNHd3kjMnhXWDV6eUF5QHJvRnpqRz13
OHElV01Sc05+RDtOVkQoQ1NuaV9AZ15kdU9AVmF1OAp6cmIkIVg5anVJY08jfChuPSMzbnM5cyhL
TCg0JE5GQDclMlJ3KjMzQFhncVdAdCRyezFsPWNeQStmeTF2ZzVVKysKel50dlI/VUdwYzc2WnBf
Xik0NmB0IV5ZcXpFOHBHWktXeXElQEsqN3xhbTRYfnBKMUQ8dXd7aEVvaz5sRlZvaWxICnojQXE3
fS1EQDApITNzbj11TmdzR3p4MTdZYzFeb250Rl82XnJZMC1uQ2shYVJPWkNkJjlfMV8wLUtxdmI9
e0Z2SAp6e0ZrcDRzWlJBOHArX30hb3QqbEAkPHBpKi14X2VpXnBDYXV6VSNwTFhvez83T3YlYW9g
c2hPaVYzVSY8a0tXPmAKeitMfXBMWU82YVQrODh1VTdWe29Jejx2SW9iTj80bkI3YGwldWJBJHgo
O3F4QWRpJXJZaz5AdHZmOE1heXU1OTZhCnpwaVBtZGlxP1Y+dT0rbWckXllBfXFWWkx2JjV7LW10
fGF0SjdtcXdxbTswQ25ESSFtZzYydzkxelZkO2JDRlY/TAp6KnVPYUFwSkZhcTc+K1h4XkRxPCNE
Y358ZncrI3R6ZWdFRD4/Z3U3NGVEUE1BdXdfIXokOCNDT0tYITR+O1pPMX0Kemc9bCE/ZyNVSSg9
d1V2OUc0ciFpZShLfT5mOTZYKVItMWdPM0ZeZlBSU28lQGZGXz0tMFZzT1pNJT8oXktQMlRsCnp8
OGJMbEg4QVQySVhBXmAxTSMxWiV8QjchOzZVbj8pdCFnRmJBcz1YWj0qdiVYNjA0WG5TJSp+K2tU
b25hTChkRQp6R2hvezA8clN+NWFwdDNSTjR5OGgkXzZmcE5JJEQ7VWM5ejcrVSY9di0xPWtCTyp5
bC1uQXo3bzEzPFRJM2VZeTMKel8kMlcwS0FXcUNHOWg7YGQ9Q0FePz12VCZpek4rT2JldC1QS2pC
SklWZEU+Q2Q/XypWI1gkZH47Rl41KXtkZSZ1Cno4Xk5fJFJJJVlPUClSdGAlRjMlZWVaNmJANFFO
fUhmLWZ6dDdwOXRCJWtzZl5UJG17LSRYd1dIRUFyVD1HbjdMNgp6PDlfUkRub00mVDAxQjRRV3VX
JjtVN0xFYUAyYTVgeSF8SExCX3ZBOV9pRV5ARDx9KS1Xa1c5bUo5N1VscUByKTUKekRZKkRSWHVH
VVRHNkojZCVPQyRDOylpI3dVLUlgeVJQUmcqfDAtTUY9cj9UeFlfKkcmVCF+Qmd6fjkmfSY3PzQ5
CnpPViUybGV6NlNtPD51anpqVyMje0lvXkltV0RtUk5jP3gpSlAmfjIySUFFQEVUOCM9SSFAZipN
cHZCUXlNYVBvXwp6YlVOQkcwRkZyaj0hXyNrMkF2NFQmV2tDWUpRZmtxbjlSI0tfZWB1TWp5K21P
aDJYcigpfFJHfCFWJFpee2sqUTUKengyazB9I21Jcy1kaElyI3U0VCpTQHhmcjBuVntZOUB7cHEr
WlcmLW5YSWtoXiV4bXl0KUNaZSlVSWhAIT5hJEVaCnohUD9kbz9yOChBczMmPG9UN1YodzRqWVlG
fENEbXdPfCEzIUlVbjcxUXROPlopPEpjfk13UG9YZyk+SXhoSSs7cAp6b2EjPyhTbWt8Rz1gKD4j
UkI0PnJZWTFAKDF8ViR1T3ZMI2BtZlU7NlBiVyRoajtqLURUJjJXV0JFR3RBZ0NuZnwKelpwP040
NWEkfklGKyZCfXhPWFRpViE1RH1WQj01KGJPTiR5ZlQyamJfNn58KTU8YDVgTCQ+U0M/ZlMwS0R7
OVBgCnp3THBPOzUzVE9sUFhpaXJBeGtLb3tGR2lAIUZud34xYEFuMzRvY2Q8bWlvbTB0KWNJfChI
LTAwWEBONGdZdU5xNgp6ZXRTeVo0N0xkTG5eVlpKUilqc2shalkjezZhUStiUStLe180KXlSR3s1
djZ1ZWlwbDJxQC1GUHBCTGBTXjxgMjQKelc2TyUqO1BjRVJAIz41eGwwTnEkeXphMF5nVW0tR0hA
YVhgNj9gX1laIWB4WmZDcyt7NmRoazxaeDdPT1J8SypACnpSRj5fY3IteWAoRFh2NihkTCVQQS08
a1pCV0Irdk8rb2ZpbXhuMjRmOVd9PEoxSUkkOXtRPG5JelJAR1h6PlpgcQp6cyFsJFJqS0FXJnsk
UyM8Z3RKRHZsJVdnZC1uSD5zNFNoTnRBXyRFSVVHJEY5SUlkdE82NllXVWlDQ00mQzh3YEMKenIy
dEtOYXZkaWYzWT1sbj81cUVZQS1DLUktPmxlcl4tWlZoVkt9LShQZll0ZmtjajFaY0ZKIWA1PFVf
a2tnYnlUCnpoemdWITBFRV87ZCZCWnVIb1dzN1BXMXIxI1pYR3FnUEZiJGQ5XzNBSyZOWiViVldf
Qz1pSmplWTlkJC1tNXtsPQp6UmR2dFNQWSo/OEs4czV4dElTMzNCY0AhaipoNmUrZSs2YHg3anMt
Izg9VnpeamVmZHJ7Kng4NzJeK1ZJP0tibW0KemNNV3pKNDlmOGdvT1NKcjFRN04kSUNyISFWeEAt
bTwmbF5mRHdJKEUra3t7TkJ1SihsTzMtTGdzQTJ7S3BtOXxFCnoyc305aUF5UFR6dk0+JE1XeypC
P3cja05TPn1Sb04/XlhHbjAmJTx3eWhjRkpkYmdZMTI0MEFATD92b1lyQjVqKgp6MV9SeEk+Km5A
aGo1Xz5BN29RZnRyKisqcG1oTX59X0o2RVRwPE5vQXchKF9EdGZXeHBmVUJyPkI8PUJPb0pfKz4K
em1wJm1YTTNsVjM/KD5OUy18OUdOKD8tbk9xQSRKXnp9fD1fPyRFaGdzLUVePVYrJDBrTTtibjlK
IXdjZ1psKHxpCnoodTwjTHd8SXNuWDJ0TGdlO21qYGlKTmxVcDU2X1l3QTIye0dVTU80d0VsSntC
ZjBrSVBjaW9uNWNsbmxadSk4RAp6KmBEaFVvfjFtQ2BZQiNqSlA8eCtlQylzTDFHVXUrQWNFYVVT
Xk8jYko+N1R4IUpVe2JLYUVfIWM1JX48WWQyKG0KekVNZCFRVkF8PHFwYFMqczBle25TJkZGKlBr
QmVXbHh3dDlpX0A0aSlge0lMKENwVEBxZGVTSzUkMnNxTXp3Tn11CnoqSD9zcDhhWitOck8/VWFD
Jm03QXE/PzU4Zk41ITBlPn0kfjtVWWxFRUlLeE08ajJKaUU0Jm95LXQpJX4tU09oZgp6WEFndTZw
QX5CVHY/YWViPkRNT3h2WlA8SCtZaCgjJVAwTUUrYHBwUnVOMkB7cDdia0VgVmtkPUM2b1UqR1Zi
bUUKem9gOzJtQnItU3RGVG5wKTUpWGZzRDhLNXNVdj1FQ1YpcXZqXz5YdHwhWTA0aShrfXFfaSZG
a1Z4eFl+RWV8WV5ACnppU21EPU1FTztnezk2P05RY2l2O0MlPUBGVSZfZjNNKXBmTmBLNnJ2UWNp
djtDJT1ARnw0KV5aZEJOdFVjbGp9RQpUQjJ6SSF6PmtyPipfRW94eEJtUUo7OWV3QwoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2
LTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0
aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQKaW5kZXggZDlkNmZmOC4uNTgxNzQ0NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYt
MS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2Vs
ZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQKQEAgLTEsMTggKzEsNSBAQAotbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1s
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3
NgotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4Ci0gICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcwNHgxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDcwNDogIlRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIGV4dGVuZGlu
ZyBhIHNlbGVjdGlvbiBjcmVhdGVkIHdpdGggdGhlIG1vdXNlIHdvdWxkIGJsb3cgaXQgYXdheSBi
ZWZvcmUgZXh0ZW5kaW5nIGl0LiIKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBz
aXplIDc4NHgxOAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNTV4
MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNTU6ICJUaGVyZSBzaG91bGQg
YmUgZml2ZSBjaGFyYWN0ZXJzIHNlbGVjdGVkIGluIHRoaXMgc2VudGVuY2UuIgotICAgICAgUmVu
ZGVyQmxvY2sge1VMfSBhdCAoMCw2OCkgc2l6ZSA3ODR4MTgKLSAgICAgICAgUmVuZGVyTGlzdEl0
ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3NDR4MTgKLSAgICAgICAgICBSZW5kZXJMaXN0TWFya2Vy
IGF0ICgtMTcsMCkgc2l6ZSA3eDE4OiBidWxsZXQKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSA1MHgxOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggNTA6ICJTdWNjZXNzIgotc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAzIG9mIGNoaWxkIDAg
eyN0ZXh0fSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hU
TUx9IG9mIGRvY3VtZW50Ci1zZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDkgb2YgY2hpbGQgMCB7
I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRN
TH0gb2YgZG9jdW1lbnQKK1RoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIGV4dGVuZGluZyBhIHNl
bGVjdGlvbiBjcmVhdGVkIHdpdGggdGhlIG1vdXNlIHdvdWxkIGJsb3cgaXQgYXdheSBiZWZvcmUg
ZXh0ZW5kaW5nIGl0LgorCitUaGVyZSBzaG91bGQgYmUgc2l4IGNoYXJhY3RlcnMgc2VsZWN0ZWQg
aW4gdGhpcyBzZW50ZW5jZS4KK1N1Y2Nlc3MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNl
LWFuZC1leHRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NzFlMDUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLWZvcndhcmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVudC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw1IEBACitBIHNlbGVjdGlvbiBjcmVhdGVkIHdpdGggc2V0QmFzZUFuZEV4dGVu
dCBzaG91bGQgYmUgZGlyZWN0aW9uYWwKKworVGhlcmUgc2hvdWxkIGJlIGZvdXIgY2hhcmFjdGVy
cyBzZWxlY3RlZCBpbiB0aGlzIHNlbnRlbmNlLgorU3VjY2VzcworCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM3MDk3MmIuLmMwNWQwYzQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMTkgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdy
ZXNzaW9uOiBTZWxlY3Rpb24gYW5jaG9yICsgZm9jdXMgc3dhcCB3aGVuIGFycm93IGtleXMgYWZ0
ZXIgc2V0QmFzZUFuZEV4dGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzI2MDUKKworICAgICAgICBPbmx5IGhhdmUgc2VsZWN0aW9ucyBiZSBub24t
ZGlyZWN0aW9uYWwgd2hlbiB0aGV5IGFyZSBzZXQgdmlhIHRoZSBtb3VzZS4KKyAgICAgICAgT3Ro
ZXJ3aXNlLCBhbGwgc2VsZWN0aW9ucyBhcmUgZGlyZWN0aW9uYWwuCisKKyAgICAgICAgVGVzdDog
ZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZvcndhcmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVu
dC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIGVkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250
cm9sbGVyOjpTZWxlY3Rpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlv
bkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25D
b250cm9sbGVyOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25D
b250cm9sbGVyOjptb2RpZnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldExhc3RDaGFuZ2VX
YXNIb3Jpem9udGFsRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbU1v
dXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0
V29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyk6CisK
IDIwMTAtMDMtMTkgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdp
bmRvd3MgY2xlYW4gYnVpbGQgZml4IGFmdGVyIHI1NjE5MgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDM2NWFmZDQu
LmUyZWNjNGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9XZWJD
b3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTQwOCw3ICs0MDgsNyBAQCBfX1pON1dlYkNvcmUxOUFu
aW1hdGlvbkNvbnRyb2xsZXIyMXBhdXNlVHJhbnNpdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmpl
Y3RFUktOUwogX19aTjdXZWJDb3JlMTlDU1NTdHlsZURlY2xhcmF0aW9uMTFzZXRQcm9wZXJ0eUVS
S05TXzZTdHJpbmdFUzNfUmkKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM0aW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nTmFtZUV2CiBfX1pON1dlYkNvcmUxOVNlbGVjdGlv
bkNvbnRyb2xsZXIxMHNldEZvY3VzZWRFYgotX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9s
bGVyMTJzZXRTZWxlY3Rpb25FUktOU18xNlZpc2libGVTZWxlY3Rpb25FYmJiTlNfMTVUZXh0R3Jh
bnVsYXJpdHlFCitfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXIxMnNldFNlbGVjdGlv
bkVSS05TXzE2VmlzaWJsZVNlbGVjdGlvbkViYmJOU18xNVRleHRHcmFudWxhcml0eUViCiBfX1pO
N1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXIxNnNldFNlbGVjdGVkUmFuZ2VFUE5TXzVSYW5n
ZUVOU185RUFmZmluaXR5RWIKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjVjbGVh
ckV2CiBfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXI2bW9kaWZ5RU5TMF8xMUVBbHRl
cmF0aW9uRU5TMF8xMEVEaXJlY3Rpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFYgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDFhZjRhYzMuLjUxMGMyMTggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6U2VsZWN0aW9uQ29udHJvbGxlcihGcmFtZSogZnJhbWUsIGJvb2wg
aXNEcmFnQ2FyZXRDb250cm9sbGUKICAgICAsIG1fY2FyZXRCbGlua1RpbWVyKHRoaXMsICZTZWxl
Y3Rpb25Db250cm9sbGVyOjpjYXJldEJsaW5rVGltZXJGaXJlZCkKICAgICAsIG1fbmVlZHNMYXlv
dXQodHJ1ZSkKICAgICAsIG1fYWJzQ2FyZXRCb3VuZHNEaXJ0eSh0cnVlKQotICAgICwgbV9sYXN0
Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lvbihmYWxzZSkKKyAgICAsIG1faXNEaXJlY3Rpb25h
bChmYWxzZSkKICAgICAsIG1faXNEcmFnQ2FyZXRDb250cm9sbGVyKGlzRHJhZ0NhcmV0Q29udHJv
bGxlcikKICAgICAsIG1faXNDYXJldEJsaW5raW5nU3VzcGVuZGVkKGZhbHNlKQogICAgICwgbV9m
b2N1c2VkKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpID09IGZyYW1lKQpAQCAtMTA1LDExICsxMDUsMTEgQEAg
dm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjptb3ZlVG8oY29uc3QgUG9zaXRpb24gJmJhc2UsIGNv
bnN0IFBvc2l0aW9uICZleHRlbnQsIEUKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihiYXNlLCBleHRlbnQsIGFmZmluaXR5KSwgdHJ1ZSwgdHJ1ZSwgdXNlclRyaWdnZXJlZCk7CiB9
CiAKLXZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHMsIGJvb2wgY2xvc2VUeXBpbmcsIGJvb2wgY2xlYXJUeXBpbmdTdHlsZSwgYm9v
bCB1c2VyVHJpZ2dlcmVkLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit2b2lkIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzLCBi
b29sIGNsb3NlVHlwaW5nLCBib29sIGNsZWFyVHlwaW5nU3R5bGUsIGJvb2wgdXNlclRyaWdnZXJl
ZCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzRGlyZWN0aW9uYWwpCiB7CiAg
ICAgbV9ncmFudWxhcml0eSA9IGdyYW51bGFyaXR5OwogCi0gICAgbV9sYXN0Q2hhbmdlV2FzSG9y
aXpvbnRhbEV4dGVuc2lvbiA9IGZhbHNlOworICAgIG1faXNEaXJlY3Rpb25hbCA9IGlzRGlyZWN0
aW9uYWw7CiAKICAgICBpZiAobV9pc0RyYWdDYXJldENvbnRyb2xsZXIpIHsKICAgICAgICAgaW52
YWxpZGF0ZUNhcmV0UmVjdCgpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6d2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGly
ZWN0aW9uCiB7CiAgICAgaWYgKGFsdGVyICE9IEVYVEVORCkKICAgICAgICAgcmV0dXJuOwotICAg
IGlmIChtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0ZW5zaW9uKQorICAgIGlmIChtX2lzRGly
ZWN0aW9uYWwpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBvc2l0aW9uIHN0YXJ0ID0gbV9zZWxl
Y3Rpb24uc3RhcnQoKTsKQEAgLTU5Nyw3ICs1OTcsNyBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlvbiBkaXIsIFRleHRHcmFudWxh
cgogICAgIGlmICh1c2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIg
dHJpYWxTZWxlY3Rpb25Db250cm9sbGVyOwogICAgICAgICB0cmlhbFNlbGVjdGlvbkNvbnRyb2xs
ZXIuc2V0U2VsZWN0aW9uKG1fc2VsZWN0aW9uKTsKLSAgICAgICAgdHJpYWxTZWxlY3Rpb25Db250
cm9sbGVyLnNldExhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0ZW5zaW9uKG1fbGFzdENoYW5nZVdh
c0hvcml6b250YWxFeHRlbnNpb24pOworICAgICAgICB0cmlhbFNlbGVjdGlvbkNvbnRyb2xsZXIu
c2V0TGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24obV9pc0RpcmVjdGlvbmFsKTsKICAg
ICAgICAgdHJpYWxTZWxlY3Rpb25Db250cm9sbGVyLm1vZGlmeShhbHRlciwgZGlyLCBncmFudWxh
cml0eSwgZmFsc2UpOwogCiAgICAgICAgIGJvb2wgY2hhbmdlID0gbV9mcmFtZS0+c2hvdWxkQ2hh
bmdlU2VsZWN0aW9uKHRyaWFsU2VsZWN0aW9uQ29udHJvbGxlci5zZWxlY3Rpb24oKSk7CkBAIC02
NjIsNyArNjYyLDcgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRp
b24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyLCBUZXh0R3JhbnVsYXIKIAogICAgIHNldE5lZWRzTGF5
b3V0KCk7CiAKLSAgICBtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0ZW5zaW9uID0gYWx0ZXIg
PT0gRVhURU5EOworICAgIG1faXNEaXJlY3Rpb25hbCA9IGFsdGVyID09IEVYVEVORDsKIAogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtNjg1LDcgKzY4NSw3IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJv
bGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9v
bCB1CiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQpIHsKICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxl
ciB0cmlhbFNlbGVjdGlvbkNvbnRyb2xsZXI7CiAgICAgICAgIHRyaWFsU2VsZWN0aW9uQ29udHJv
bGxlci5zZXRTZWxlY3Rpb24obV9zZWxlY3Rpb24pOwotICAgICAgICB0cmlhbFNlbGVjdGlvbkNv
bnRyb2xsZXIuc2V0TGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24obV9sYXN0Q2hhbmdl
V2FzSG9yaXpvbnRhbEV4dGVuc2lvbik7CisgICAgICAgIHRyaWFsU2VsZWN0aW9uQ29udHJvbGxl
ci5zZXRMYXN0Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lvbihtX2lzRGlyZWN0aW9uYWwpOwog
ICAgICAgICB0cmlhbFNlbGVjdGlvbkNvbnRyb2xsZXIubW9kaWZ5KGFsdGVyLCB2ZXJ0aWNhbERp
c3RhbmNlLCBmYWxzZSk7CiAKICAgICAgICAgYm9vbCBjaGFuZ2UgPSBtX2ZyYW1lLT5zaG91bGRD
aGFuZ2VTZWxlY3Rpb24odHJpYWxTZWxlY3Rpb25Db250cm9sbGVyLnNlbGVjdGlvbigpKTsKQEAg
LTc1NSw3ICs3NTUsNyBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJh
dGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFuY2UsIGJvb2wgdQogICAgIGlmICh1c2VyVHJp
Z2dlcmVkKQogICAgICAgICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAK
LSAgICBtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0ZW5zaW9uID0gYWx0ZXIgPT0gRVhURU5E
OworICAgIG1faXNEaXJlY3Rpb25hbCA9IGFsdGVyID09IEVYVEVORDsKIAogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
aCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKaW5kZXggYTQ4ZTM5YS4u
MWYyNTNjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
aAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCkBAIC01OSw4ICs1
OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBv
c2l0aW9uJiwgRUFmZmluaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQgPSBmYWxzZSk7CiAKICAgICBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NlbGVj
dGlvbjsgfQotICAgIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBi
b29sIGNsb3NlVHlwaW5nID0gdHJ1ZSwgYm9vbCBjbGVhclR5cGluZ1N0eWxlID0gdHJ1ZSwgYm9v
bCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UsIFRleHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51
bGFyaXR5KTsKLSAgICB2b2lkIHNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBz
ZWxlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkgeyBzZXRTZWxlY3Rpb24oc2Vs
ZWN0aW9uLCB0cnVlLCB0cnVlLCBmYWxzZSwgZ3JhbnVsYXJpdHkpOyB9CisgICAgdm9pZCBzZXRT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgY2xvc2VUeXBpbmcgPSB0cnVl
LCBib29sIGNsZWFyVHlwaW5nU3R5bGUgPSB0cnVlLCBib29sIHVzZXJUcmlnZ2VyZWQgPSBmYWxz
ZSwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGJvb2wgaXNEaXJlY3Rp
b25hbCA9IHRydWUpOworICAgIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzRGlyZWN0
aW9uYWwgPSB0cnVlKSB7IHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHRydWUsIHRydWUsIGZhbHNl
LCBncmFudWxhcml0eSwgaXNEaXJlY3Rpb25hbCk7IH0KICAgICBib29sIHNldFNlbGVjdGVkUmFu
Z2UoUmFuZ2UqLCBFQWZmaW5pdHksIGJvb2wgY2xvc2VUeXBpbmcpOwogICAgIHZvaWQgc2VsZWN0
QWxsKCk7CiAgICAgdm9pZCBjbGVhcigpOwpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAg
SW50UmVjdCBhYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAgICAgdm9pZCBzZXROZWVkc0xheW91dChi
b29sIGZsYWcgPSB0cnVlKTsKIAotICAgIHZvaWQgc2V0TGFzdENoYW5nZVdhc0hvcml6b250YWxF
eHRlbnNpb24oYm9vbCBiKSB7IG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24gPSBi
OyB9CisgICAgdm9pZCBzZXRMYXN0Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lvbihib29sIGIp
IHsgbV9pc0RpcmVjdGlvbmFsID0gYjsgfQogICAgIHZvaWQgd2lsbEJlTW9kaWZpZWQoRUFsdGVy
YXRpb24sIEVEaXJlY3Rpb24pOwogICAgIAogICAgIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3Rpb24uaXNOb25lKCk7IH0KQEAgLTE4OSw3ICsxODksNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIGJvb2wgbV9uZWVkc0xheW91dDsgLy8gdHJ1ZSBpZiBtX2NhcmV0UmVjdCBhbmQg
bV9hYnNDYXJldEJvdW5kcyBuZWVkIHRvIGJlIGNhbGN1bGF0ZWQKICAgICBib29sIG1fYWJzQ2Fy
ZXRCb3VuZHNEaXJ0eTsKLSAgICBib29sIG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNp
b247CisgICAgYm9vbCBtX2lzRGlyZWN0aW9uYWw7CiAgICAgYm9vbCBtX2lzRHJhZ0NhcmV0Q29u
dHJvbGxlcjsKICAgICBib29sIG1faXNDYXJldEJsaW5raW5nU3VzcGVuZGVkOwogICAgIGJvb2wg
bV9mb2N1c2VkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBiZjIwN2QyLi41YjE2Y2IyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpz
ZWxlY3RDbG9zZXN0V29yZEZyb21Nb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2ZyYW1lLT5zaG91bGRDaGFu
Z2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgICAgICAg
ICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZ3JhbnVs
YXJpdHksIGZhbHNlKTsKICAgICB9CiB9CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRPckxpbmtGcm9tTW91c2VFdmVudChjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdAogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENo
YW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQotICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0
aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAg
ICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBncmFu
dWxhcml0eSwgZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRUcmlwbGVDbGljayhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSCiAgICAgfQogICAgIAogICAgIGlmIChtX2ZyYW1lLT5zaG91bGRDaGFu
Z2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCkt
PnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAgbV9mcmFt
ZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGdyYW51bGFyaXR5LCBm
YWxzZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UgogICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9u
KHZpc2libGVQb3MpOwogICAgIAogICAgIGlmIChtX2ZyYW1lLT5zaG91bGRDaGFuZ2VTZWxlY3Rp
b24obmV3U2VsZWN0aW9uKSkKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVj
dGlvbihuZXdTZWxlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0
aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGdyYW51bGFyaXR5LCBmYWxzZSk7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IElu
dFBvaW50JgogCiAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxl
Y3Rpb24pKSB7CiAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRMYXN0Q2hhbmdlV2Fz
SG9yaXpvbnRhbEV4dGVuc2lvbihmYWxzZSk7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBtX2ZyYW1lLT5zZWxlY3Rpb25HcmFudWxhcml0
eSgpKTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxl
Y3Rpb24sIG1fZnJhbWUtPnNlbGVjdGlvbkdyYW51bGFyaXR5KCksIGZhbHNlKTsKICAgICB9CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60770</attachid>
            <date>2010-07-07 13:16:27 -0700</date>
            <delta_ts>2010-07-08 11:36:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-32605-20100707131625.patch</filename>
            <type>text/plain</type>
            <size>14548</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMzdlNjdkNWFjZjA3YWJiYTk5MWRjY2EyNzY0Njk1ZjkyMjhlZDE2Li44YzM4M2Ji
OWJiNDcyMzFiMzdkM2Y2MWQ2MGZiODYxMTQ1MGYyZjMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDctMDcgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFJlZ3Jlc3Npb246IFNlbGVjdGlvbiBh
bmNob3IgKyBmb2N1cyBzd2FwIHdoZW4gYXJyb3cga2V5cyBhZnRlciBzZXRCYXNlQW5kRXh0ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjYwNQor
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWw6CisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZvcndhcmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVu
ZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQ6
CisKIDIwMTAtMDctMDIgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFuZGVycyBDYXJsc3Nvbi4gCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCmluZGV4IDYxOWFhMjA3ZWU4NGI5
NTg2MjkzNTUzNmQ5YWJiNWE3N2I4ZGIxZmMuLjIzNDMxNGIwOTZmY2E2Nzk3NWExOTIxODA4OGZh
ZmYyZWY5ZTQ0M2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzUx
OTUxNjYtMS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYt
MS5odG1sCkBAIC0xLDM3ICsxLDU2IEBACiA8cD5UaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBl
eHRlbmRpbmcgYSBzZWxlY3Rpb24gY3JlYXRlZCB3aXRoIHRoZSBtb3VzZSB3b3VsZCBibG93IGl0
IGF3YXkgYmVmb3JlIGV4dGVuZGluZyBpdC48L3A+Ci08ZGl2IGlkPSJkaXYiIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSI+VGhlcmUgc2hvdWxkIGJlIHNpeCBjaGFyYWN0ZXJzIHNlbGVjdGVkIGluIHRo
aXMgc2VudGVuY2Ugb24gTWFjIGFuZCBmb3VyIGNoYXJhY3RlcnMgc2VsZWN0ZWQgb24gV2luL0xp
bnV4LjwvZGl2PgorPGRpdiBpZD0iZGl2IiBjb250ZW50ZWRpdGFibGU9InRydWUiPlRoZXJlIDxz
cGFuIGlkPSJzZWxlY3QiIHN0eWxlPSJjb2xvcjpncmVlbiI+c2hvdWxkIGJlPC9zcGFuPiBzaXgg
Y2hhcmFjdGVycyBzZWxlY3RlZCBpbiB0aGlzIHNlbnRlbmNlIG9uIE1hYyBhbmQgZm91ciBjaGFy
YWN0ZXJzIHNlbGVjdGVkIG9uIFdpbi9MaW51eC48L2Rpdj4KIDx1bCBpZD0iY29uc29sZSI+PC91
bD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2coc3RyKSB7CitmdW5jdGlvbiBsb2coc3RyKQorewog
ICAgIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOwogICAgIGxp
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKICAgICB0ZXh0ID0gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoc3RyKTsKICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKICAgICBsaS5h
cHBlbmRDaGlsZCh0ZXh0KTsKIH0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKIAotICAgIHZhciB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpLmZpcnN0Q2hpbGQ7Ci0gICAgdmFyIHNlbGVj
dGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKLSAgICAKLSAgICAvLyBGSVhNRTogbV9sYXN0
Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lvbiBpc24ndCBjbGVhcmVkIGluIHNldmVyYWwgcGxh
Y2VzCi0gICAgLy8gd2hlcmUgaXQgc2hvdWxkIGJlLCB3aGVuIG9wZW5pbmcgYSBuZXcgZG9jdW1l
bnQgZm9yIGV4YW1wbGUuCi0gICAgc2VsZWN0aW9uLnNldFBvc2l0aW9uKHRleHQsIDApOwotICAg
IHNlbGVjdGlvbi5tb2RpZnkoIm1vdmUiLCAiZm9yd2FyZCIsICJjaGFyYWN0ZXIiKTsKK2Z1bmN0
aW9uIHJ1blRlc3QocGxhdGZvcm0sIGV4cGVjdGVkVGV4dCkKK3sKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRFZGl0aW5nQmVoYXZpb3IocGxhdGZvcm0pOwogICAgIAotICAgIHNlbGVjdGlv
bi5zZXRCYXNlQW5kRXh0ZW50KHRleHQsIDMgKyA1LCB0ZXh0LCAzKTsKKyAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbGVjdCcpOworICAgIHZhciBzdGFydFggPSB0
YXJnZXQub2Zmc2V0TGVmdCArIHRhcmdldC5vZmZzZXRXaWR0aDsKKyAgICB2YXIgeSA9IHRhcmdl
dC5vZmZzZXRUb3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICB2YXIgZW5kWCA9IHRh
cmdldC5vZmZzZXRMZWZ0OworCisgICAgLy8gU2VsZWN0IGFsbCB0aGUgZ3JlZW4gdGV4dCB1c2lu
ZyB0aGUgbW91c2UuCisgICAgLy8gVXNlIGEgd29yZC1ncmFudWxhcml0eSBzZWxlY3Rpb24gdG8g
YXZvaWQgZXZlbnRTZW5kZXIgYnVnLgorICAgIC8vIFVzaW5nIGp1c3QgYSBzaW5nbGUtY2xpY2sg
d291bGQgbm90IGFjdCBpcyBpZiB0aGUgaW5pdGlhbAorICAgIC8vIG1vdXNlRG93biB3YXMgYXQg
KGVuZFgsIHkpLCByZXN1bHRpbmcgaW4gYSBjb2xsYXBzZWQgc2VsZWN0aW9uLgorICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIHkpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKICAgICAvLyBFeHRlbmRpbmcgdGhpcyA1IGNoYXJhY3RlciBzZWxlY3Rp
b24gd2lsbCBzZWxlY3QgNiBjaGFyYWN0ZXJzIG9uIG1hYywKICAgICAvLyBidXQgc2hyaW5rIHRo
ZSBzZWxlY3Rpb24gb24gd2luL2xpbnV4LgogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV4ZWND
b21tYW5kKCJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpOwogICAgIC8vIEV4dGVuZGlu
ZyBpdCBpbiB0aGlzIHdheSBmbGlwcyB0aGUgYW5jaG9yIGFuZCB0aGUgZm9jdXMgb24gTWFjLgot
ICAgIHZhciBvbk1hY1BsYXRmb3JtID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5zZWFyY2goL1xiTWFj
IE9TIFhcYi8pICE9IC0xOwotICAgIGlmIChvbk1hY1BsYXRmb3JtICYmIHNlbGVjdGlvbi5mb2N1
c09mZnNldCAtIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQgPT0gNiB8fAotICAgICAgICAhb25NYWNQ
bGF0Zm9ybSAmJiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0IC0gc2VsZWN0aW9uLmZvY3VzT2Zmc2V0
ID09IDQpCi0gICAgICAgIGxvZygiU3VjY2VzcyIpOworICAgIHZhciBzZWxlY3RlZFRleHQgPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTsKKyAgICBpZiAoc2VsZWN0ZWRUZXh0ICE9
IGV4cGVjdGVkVGV4dCkKKyAgICAgICAgbG9nKCJGYWlsdXJlOiBTZWxlY3RlZCB0ZXh0IHdhcyBc
IiIgKyBzZWxlY3RlZFRleHQgKyAiXCIgYW5kIHNob3VsZCBiZSBcIiIgKyBleHBlY3RlZFRleHQg
KyAiXCIiKTsKICAgICBlbHNlCi0gICAgICAgIGxvZygiRmFpbHVyZTogU2VsZWN0aW9uIGlzbid0
IHRoZSByaWdodCBzaXplLiBhbmNob3JPZmZzZXQ9IiArIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQg
KwotICAgICAgICAgICAgIiBmb2N1c09mZnNldD0iICsgc2VsZWN0aW9uLmZvY3VzT2Zmc2V0ICsg
IiBvbk1hY1BsYXRmb3JtOiAiICsgb25NYWNQbGF0Zm9ybSk7Ci19IGVsc2UKLSAgICBsb2cgKCJG
YWlsdXJlOiBUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biBtYW51YWxseS4iKQorICAgICAgICBsb2co
IlN1Y2Nlc3MiKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIHJ1blRlc3QoJ21hYycsICdz
aG91bGQgYmUgcycpOworICAgIHJ1blRlc3QoJ3dpbicsICdob3VsZCBiZSAnKTsKK30gZWxzZSB7
CisgICAgbG9nKCJGYWlsdXJlOiBUbyB0ZXN0IG1hbnVhbGx5LCBzZWxlY3QgdGhlIGdyZWVuIHRl
eHQgIiArCisgICAgICAgICJzdGFydGluZyBhdCB0aGUgZW5kIHZpYSBkb3VibGUtY2xpY2sgKGku
ZS4gd29yZCBncmFudWxhcml0eSksIHRoZW4gc2hpZnQrcmlnaHQtYXJyb3cuICIgKworICAgICAg
ICAiT24gV2luL0xpbnV4IHlvdSBzaG91bGQgc2VlICdob3VsZCBiZSAnIHNlbGVjdGVkLiBPbiBN
YWMsIHlvdSBzaG91bGQgc2VlICdzaG91bGQgYmUgcycgc2VsZWN0ZWQuIiArCisgICAgICAgICJU
aGVyZSdzIGN1cnJlbnRseSBhIGJ1ZyB0aGF0IHNlbGVjdHMgdGhlIHNwYWNlICIgKworICAgICAg
ICAiYWZ0ZXIgJ3Nob3VsZCBiZScgZHVyaW5nIHRoZSBpbml0aWFsIHNlbGVjdGlvbiAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MjU2KS4gIiArCisgICAgICAgICJP
bmNlIHRoYXQncyBmaXhlZCwgaXQgdGhlIGZpbmFsIHNlbGVjdGVkIHRleHQgc2hvdWxkIGJlICdz
aG91bGQgYmUgJyBvbiBNYWMgYW5kICdob3VsZCBiZScgb24gV2luL0xpbnV4LiIpCit9CiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1m
b3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZvcndhcmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4
dGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU3MWUwNWEwYWM5OTJlZjNlOWY4NTE2MDAw
ZDY1ZTA2MjE0MzkwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2V4dGVuZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorQSBzZWxlY3Rpb24gY3JlYXRlZCB3aXRoIHNldEJhc2VBbmRF
eHRlbnQgc2hvdWxkIGJlIGRpcmVjdGlvbmFsCisKK1RoZXJlIHNob3VsZCBiZSBmb3VyIGNoYXJh
Y3RlcnMgc2VsZWN0ZWQgaW4gdGhpcyBzZW50ZW5jZS4KK1N1Y2Nlc3MKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZvcndhcmQtYWZ0ZXItc2V0LWJh
c2UtYW5kLWV4dGVudC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5k
LWZvcndhcmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlZDk5
ZGQ0MDg5OGI0ZDdhNTNmYjhhMjA0Njk4ZWExOTY3NGIzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtZm9yd2FyZC1hZnRlci1zZXQtYmFz
ZS1hbmQtZXh0ZW50Lmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPHA+QSBzZWxlY3Rpb24gY3JlYXRl
ZCB3aXRoIHNldEJhc2VBbmRFeHRlbnQgc2hvdWxkIGJlIGRpcmVjdGlvbmFsPC9wPgorPGRpdiBp
ZD0iZGl2IiBjb250ZW50ZWRpdGFibGU9InRydWUiPlRoZXJlIHNob3VsZCBiZSBmb3VyIGNoYXJh
Y3RlcnMgc2VsZWN0ZWQgaW4gdGhpcyBzZW50ZW5jZS48L2Rpdj4KKzx1bCBpZD0iY29uc29sZSI+
PC91bD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2coc3RyKSB7CisgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IHN0ciArICI8YnI+IjsKK30KKworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkaXYiKS5maXJzdENoaWxkOworICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CisKKyAgICBzZWxlY3Rpb24uc2V0UG9zaXRpb24odGV4dCwgMCk7CisgICAgc2Vs
ZWN0aW9uLm1vZGlmeSgibW92ZSIsICJmb3J3YXJkIiwgImNoYXJhY3RlciIpOworICAgIAorICAg
IHNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0ZW50KHRleHQsIDUgKyA3LCB0ZXh0LCA1KTsKKyAgICAv
LyBFeHRlbmRpbmcgdGhpcyA1IGNoYXJhY3RlciBzZWxlY3Rpb24gd2lsbCBzZWxlY3QgNiBjaGFy
YWN0ZXJzLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV4ZWNDb21tYW5kKCJNb3ZlRm9yd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgIHZhciBzZWxlY3RlZFRleHQgPSBzZWxlY3Rpb24u
dG9TdHJpbmcoKTsKKyAgICB2YXIgZXhwZWN0ZWRUZXh0ID0gInNob3VsZCI7CisgICAgaWYgKHNl
bGVjdGVkVGV4dCAhPSBleHBlY3RlZFRleHQpCisgICAgICAgIGxvZygiRmFpbHVyZTogU2VsZWN0
ZWQgdGV4dCB3YXMgXCIiICsgc2VsZWN0ZWRUZXh0ICsgIlwiIGFuZCBzaG91bGQgYmUgXCIiICsg
ZXhwZWN0ZWRUZXh0ICsgIlwiIik7CisgICAgZWxzZQorICAgICAgICBsb2coIlN1Y2Nlc3MiKTsK
K30gZWxzZQorICAgIGxvZygiRmFpbHVyZTogVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gbWFudWFs
bHkuIikKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzUx
OTUxNjYtMS1leHBlY3RlZC50eHQKaW5kZXggMWJjODI3NTQ3YzFjYTZkYjdkODE0M2Q1YzgxZDRh
ZGU5MWI3NzY3OC4uYmJkMGYyYTA5MjA5OGQ3YmNjODk3MmJiMjE1NzY0NzVkNjYzYzNkZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUx
NjYtMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c2VsZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQKQEAgLTIsMyArMiw0IEBAIFRoaXMgdGVz
dHMgZm9yIGEgYnVnIHdoZXJlIGV4dGVuZGluZyBhIHNlbGVjdGlvbiBjcmVhdGVkIHdpdGggdGhl
IG1vdXNlIHdvdWxkIGJsCiAKIFRoZXJlIHNob3VsZCBiZSBzaXggY2hhcmFjdGVycyBzZWxlY3Rl
ZCBpbiB0aGlzIHNlbnRlbmNlIG9uIE1hYyBhbmQgZm91ciBjaGFyYWN0ZXJzIHNlbGVjdGVkIG9u
IFdpbi9MaW51eC4KIFN1Y2Nlc3MKK1N1Y2Nlc3MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdhOTA3YjA4NzVhZTc0NDdkMjViZmY5YmRm
YzQyYWJhZjQzOTBiNC4uYTFlMzdiMmNiNzBkMDQwOWE5ZTI1ZWIzZDlkMzQwNDU5YzdiZjVkZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAxMC0wNy0wNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgUmVncmVzc2lv
bjogU2VsZWN0aW9uIGFuY2hvciArIGZvY3VzIHN3YXAgd2hlbiBhcnJvdyBrZXlzIGFmdGVyIHNl
dEJhc2VBbmRFeHRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyNjA1CisKKyAgICAgICAgT25seSBoYXZlIHNlbGVjdGlvbnMgYmUgbm9uLWRpcmVj
dGlvbmFsIHdoZW4gdGhleSBhcmUgc2V0IHZpYSB0aGUgbW91c2UuCisgICAgICAgIE90aGVyd2lz
ZSwgYWxsIHNlbGVjdGlvbnMgYXJlIGRpcmVjdGlvbmFsLgorCisgICAgICAgIFRlc3Q6IGVkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxl
cjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbik6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRPckxpbmtGcm9tTW91c2VFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dFRyaXBsZUNsaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
Ojp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcpOgorCiAyMDEwLTA3LTAyICBBYmhpc2hlayBB
cnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
RmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9X
ZWJDb3JlLmJhc2UuZXhwCmluZGV4IDcwZjA3NzM1Y2FmMTY2ZmQ3NTRkMTAxYTMyY2FkYTRmNmE4
OWJhZDIuLjRkZDI3Yjg4ZmZjOGY0ZWQyZDY1ZTFmZGJjZWZmYjVlNWNmMzY4NzUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAKQEAgLTQyNSw3ICs0MjUsNyBAQCBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIy
MXBhdXNlVHJhbnNpdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOUwogX19aTjdXZWJD
b3JlMTlDU1NTdHlsZURlY2xhcmF0aW9uMTFzZXRQcm9wZXJ0eUVSS05TXzZTdHJpbmdFUzNfUmkK
IF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM0aW5zcGVjdG9yU3RhcnRzQXR0YWNo
ZWRTZXR0aW5nTmFtZUV2CiBfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXIxMHNldEZv
Y3VzZWRFYgotX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9sbGVyMTJzZXRTZWxlY3Rpb25F
UktOU18xNlZpc2libGVTZWxlY3Rpb25FYmJiTlMwXzE5Q3Vyc29yQWxpZ25PblNjcm9sbEVOU18x
NVRleHRHcmFudWxhcml0eUUKK19fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjEyc2V0
U2VsZWN0aW9uRVJLTlNfMTZWaXNpYmxlU2VsZWN0aW9uRWJiYk5TMF8xOUN1cnNvckFsaWduT25T
Y3JvbGxFTlNfMTVUZXh0R3JhbnVsYXJpdHlFYgogX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250
cm9sbGVyMTZzZXRTZWxlY3RlZFJhbmdlRVBOU181UmFuZ2VFTlNfOUVBZmZpbml0eUViCiBfX1pO
N1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXI1Y2xlYXJFdgogX19aTjdXZWJDb3JlMTlTZWxl
Y3Rpb25Db250cm9sbGVyNm1vZGlmeUVOUzBfMTFFQWx0ZXJhdGlvbkVOUzBfMTBFRGlyZWN0aW9u
RU5TXzE1VGV4dEdyYW51bGFyaXR5RWIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxl
Y3Rpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVy
LmNwcAppbmRleCBiMTdhYjEwMTE3NjE2ZTg3MTlmMWU4NmQ1NjJjZWViMjVmNGViNDliLi45YWVh
OGJhZjI3NmQ4Y2QwMGJhODFkZWFhMWYwOThhYzkwZDlkZWQ3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCB2b2lkIFNlbGVjdGlv
bkNvbnRyb2xsZXI6Om1vdmVUbyhjb25zdCBQb3NpdGlvbiAmYmFzZSwgY29uc3QgUG9zaXRpb24g
JmV4dGVudCwgRQogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGJhc2UsIGV4dGVu
dCwgYWZmaW5pdHkpLCB0cnVlLCB0cnVlLCB1c2VyVHJpZ2dlcmVkKTsKIH0KIAotdm9pZCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgcywg
Ym9vbCBjbG9zZVR5cGluZywgYm9vbCBjbGVhclR5cGluZ1N0eWxlLCBib29sIHVzZXJUcmlnZ2Vy
ZWQsIEN1cnNvckFsaWduT25TY3JvbGwgYWxpZ24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSkKK3ZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHMsIGJvb2wgY2xvc2VUeXBpbmcsIGJvb2wgY2xlYXJUeXBpbmdTdHlsZSwgYm9v
bCB1c2VyVHJpZ2dlcmVkLCBDdXJzb3JBbGlnbk9uU2Nyb2xsIGFsaWduLCBUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKIHsKICAgICBtX2dyYW51bGFyaXR5
ID0gZ3JhbnVsYXJpdHk7CiAKLSAgICBzZXRJc0RpcmVjdGlvbmFsKGZhbHNlKTsKKyAgICBzZXRJ
c0RpcmVjdGlvbmFsKGlzRGlyZWN0aW9uYWwpOwogCiAgICAgaWYgKG1faXNEcmFnQ2FyZXRDb250
cm9sbGVyKSB7CiAgICAgICAgIGludmFsaWRhdGVDYXJldFJlY3QoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmggYi9XZWJDb3JlL2VkaXRpbmcvU2Vs
ZWN0aW9uQ29udHJvbGxlci5oCmluZGV4IGU0YzI5NjRjNzk2MmY0ZjZjNzYzNzRmYzE0MjkzMWY0
Y2VjNzc4ZjguLjZlYzk2ODViNzZjZjY2NGUzMWRjNmM2ZWY4YjEzNjU4NzljNjY4N2EgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKKysrIGIvV2ViQ29y
ZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBtb3ZlVG8oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIEVBZmZp
bml0eSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UpOwogCiAgICAgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KLSAgICB2
b2lkIHNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjbG9zZVR5cGlu
ZyA9IHRydWUsIGJvb2wgY2xlYXJUeXBpbmdTdHlsZSA9IHRydWUsIGJvb2wgdXNlclRyaWdnZXJl
ZCA9IGZhbHNlLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9sbElmTmVl
ZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Ci0gICAgdm9pZCBz
ZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpIHsgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgdHJ1ZSwgdHJ1ZSwg
ZmFsc2UsIEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgZ3JhbnVsYXJpdHkpOyB9CisgICAg
dm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgY2xvc2VUeXBp
bmcgPSB0cnVlLCBib29sIGNsZWFyVHlwaW5nU3R5bGUgPSB0cnVlLCBib29sIHVzZXJUcmlnZ2Vy
ZWQgPSBmYWxzZSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5l
ZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGJvb2wgaXNEaXJl
Y3Rpb25hbCA9IHRydWUpOworICAgIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzRGly
ZWN0aW9uYWwgPSB0cnVlKSB7IHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHRydWUsIHRydWUsIGZh
bHNlLCBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIGdyYW51bGFyaXR5LCBpc0RpcmVjdGlv
bmFsKTsgfQogICAgIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShSYW5nZSosIEVBZmZpbml0eSwgYm9v
bCBjbG9zZVR5cGluZyk7CiAgICAgdm9pZCBzZWxlY3RBbGwoKTsKICAgICB2b2lkIGNsZWFyKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDc3YWNhNzE4MTNjNjVhZjM2MzdjMDRjOWMxOWZkMTdi
ZDk3ZGMwOWMuLmQyODM5ZjEzZThjNDJmY2U2ZTU2ZWRmNWU4ZWUyN2JiYzA4Y2FjOTcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNl
bGVjdENsb3Nlc3RXb3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmUKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENoYW5n
ZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQotICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9u
KCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAg
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBncmFudWxh
cml0eSwgZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9mcmFtZS0+c2hvdWxkQ2hh
bmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpCi0gICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgICAgICAg
ICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGdyYW51
bGFyaXR5LCBmYWxzZSk7CiAgICAgfQogfQogCkBAIC0zMjksNyArMzI5LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFIKICAgICB9CiAgICAgCiAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENoYW5n
ZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgICAgICBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZ3JhbnVsYXJpdHksIGZh
bHNlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSCiAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24o
dmlzaWJsZVBvcyk7CiAgICAgCiAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENoYW5nZVNlbGVjdGlv
bihuZXdTZWxlY3Rpb24pKQotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0
aW9uKG5ld1NlbGVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZ3JhbnVsYXJpdHksIGZhbHNlKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVy
Ojp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgSW50
UG9pbnQmCiAKICAgICBpZiAobV9mcmFtZS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVj
dGlvbikpIHsKICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldElzRGlyZWN0aW9uYWwo
ZmFsc2UpOwotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbiwgbV9mcmFtZS0+c2VsZWN0aW9uR3JhbnVsYXJpdHkoKSk7CisgICAgICAgIG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBtX2ZyYW1lLT5zZWxl
Y3Rpb25HcmFudWxhcml0eSgpLCBmYWxzZSk7CiAgICAgfQogfQogI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60917</attachid>
            <date>2010-07-08 11:36:17 -0700</date>
            <delta_ts>2010-07-08 11:38:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32605-20100708113616.patch</filename>
            <type>text/plain</type>
            <size>15130</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZjQxN2QyMWEwNDQ1MzM0ZDMyY2VjNWFlOGZjNTAwODVmMzhhYmE2Li4yZTkyZGQ4
YWE0MmRlODAyZjliZDM2YWFhMDA0MTc4YjM4MDQ2ZjU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDctMDcgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFJlZ3Jlc3Npb246IFNlbGVjdGlvbiBh
bmNob3IgKyBmb2N1cyBzd2FwIHdoZW4gYXJyb3cga2V5cyBhZnRlciBzZXRCYXNlQW5kRXh0ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjYwNQor
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWw6CisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZvcndhcmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVu
ZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQ6
CisKIDIwMTAtMDctMDggIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkIGZpeC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
NTE5NTE2Ni0xLmh0bWwKaW5kZXggNjE5YWEyMDdlZTg0Yjk1ODYyOTM1NTM2ZDlhYmI1YTc3Yjhk
YjFmYy4uMjM0MzE0YjA5NmZjYTY3OTc1YTE5MjE4MDg4ZmFmZjJlZjllNDQzYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWwKQEAgLTEsMzcgKzEsNTYg
QEAKIDxwPlRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIGV4dGVuZGluZyBhIHNlbGVjdGlvbiBj
cmVhdGVkIHdpdGggdGhlIG1vdXNlIHdvdWxkIGJsb3cgaXQgYXdheSBiZWZvcmUgZXh0ZW5kaW5n
IGl0LjwvcD4KLTxkaXYgaWQ9ImRpdiIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5UaGVyZSBzaG91
bGQgYmUgc2l4IGNoYXJhY3RlcnMgc2VsZWN0ZWQgaW4gdGhpcyBzZW50ZW5jZSBvbiBNYWMgYW5k
IGZvdXIgY2hhcmFjdGVycyBzZWxlY3RlZCBvbiBXaW4vTGludXguPC9kaXY+Cis8ZGl2IGlkPSJk
aXYiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+VGhlcmUgPHNwYW4gaWQ9InNlbGVjdCIgc3R5bGU9
ImNvbG9yOmdyZWVuIj5zaG91bGQgYmU8L3NwYW4+IHNpeCBjaGFyYWN0ZXJzIHNlbGVjdGVkIGlu
IHRoaXMgc2VudGVuY2Ugb24gTWFjIGFuZCBmb3VyIGNoYXJhY3RlcnMgc2VsZWN0ZWQgb24gV2lu
L0xpbnV4LjwvZGl2PgogPHVsIGlkPSJjb25zb2xlIj48L3VsPgogPHNjcmlwdD4KLWZ1bmN0aW9u
IGxvZyhzdHIpIHsKK2Z1bmN0aW9uIGxvZyhzdHIpCit7CiAgICAgY29uc29sZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CiAgICAgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOwogICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpOwogICAg
IGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOwogICAgIGxpLmFwcGVuZENoaWxkKHRleHQpOwogfQot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKQogCi0gICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZGl2IikuZmlyc3RDaGlsZDsKLSAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVj
dGlvbigpOwotICAgIAotICAgIC8vIEZJWE1FOiBtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0
ZW5zaW9uIGlzbid0IGNsZWFyZWQgaW4gc2V2ZXJhbCBwbGFjZXMKLSAgICAvLyB3aGVyZSBpdCBz
aG91bGQgYmUsIHdoZW4gb3BlbmluZyBhIG5ldyBkb2N1bWVudCBmb3IgZXhhbXBsZS4KLSAgICBz
ZWxlY3Rpb24uc2V0UG9zaXRpb24odGV4dCwgMCk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeSgibW92
ZSIsICJmb3J3YXJkIiwgImNoYXJhY3RlciIpOworZnVuY3Rpb24gcnVuVGVzdChwbGF0Zm9ybSwg
ZXhwZWN0ZWRUZXh0KQoreworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEVkaXRpbmdCZWhh
dmlvcihwbGF0Zm9ybSk7CiAgICAgCi0gICAgc2VsZWN0aW9uLnNldEJhc2VBbmRFeHRlbnQodGV4
dCwgMyArIDUsIHRleHQsIDMpOworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2VsZWN0Jyk7CisgICAgdmFyIHN0YXJ0WCA9IHRhcmdldC5vZmZzZXRMZWZ0ICsgdGFy
Z2V0Lm9mZnNldFdpZHRoOworICAgIHZhciB5ID0gdGFyZ2V0Lm9mZnNldFRvcCArIHRhcmdldC5v
ZmZzZXRIZWlnaHQgLyAyOworICAgIHZhciBlbmRYID0gdGFyZ2V0Lm9mZnNldExlZnQ7CisKKyAg
ICAvLyBTZWxlY3QgYWxsIHRoZSBncmVlbiB0ZXh0IHVzaW5nIHRoZSBtb3VzZS4KKyAgICAvLyBV
c2UgYSB3b3JkLWdyYW51bGFyaXR5IHNlbGVjdGlvbiB0byBhdm9pZCBldmVudFNlbmRlciBidWcu
CisgICAgLy8gVXNpbmcganVzdCBhIHNpbmdsZS1jbGljayB3b3VsZCBub3QgYWN0IGlzIGlmIHRo
ZSBpbml0aWFsCisgICAgLy8gbW91c2VEb3duIHdhcyBhdCAoZW5kWCwgeSksIHJlc3VsdGluZyBp
biBhIGNvbGxhcHNlZCBzZWxlY3Rpb24uCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRYLCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oZW5kWCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogICAgIC8v
IEV4dGVuZGluZyB0aGlzIDUgY2hhcmFjdGVyIHNlbGVjdGlvbiB3aWxsIHNlbGVjdCA2IGNoYXJh
Y3RlcnMgb24gbWFjLAogICAgIC8vIGJ1dCBzaHJpbmsgdGhlIHNlbGVjdGlvbiBvbiB3aW4vbGlu
dXguCiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIk1vdmVGb3J3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uIik7CiAgICAgLy8gRXh0ZW5kaW5nIGl0IGluIHRoaXMgd2F5IGZsaXBz
IHRoZSBhbmNob3IgYW5kIHRoZSBmb2N1cyBvbiBNYWMuCi0gICAgdmFyIG9uTWFjUGxhdGZvcm0g
PSBuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgvXGJNYWMgT1MgWFxiLykgIT0gLTE7Ci0gICAg
aWYgKG9uTWFjUGxhdGZvcm0gJiYgc2VsZWN0aW9uLmZvY3VzT2Zmc2V0IC0gc2VsZWN0aW9uLmFu
Y2hvck9mZnNldCA9PSA2IHx8Ci0gICAgICAgICFvbk1hY1BsYXRmb3JtICYmIHNlbGVjdGlvbi5h
bmNob3JPZmZzZXQgLSBzZWxlY3Rpb24uZm9jdXNPZmZzZXQgPT0gNCkKLSAgICAgICAgbG9nKCJT
dWNjZXNzIik7CisgICAgdmFyIHNlbGVjdGVkVGV4dCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpOworICAgIGlmIChzZWxlY3RlZFRleHQgIT0gZXhwZWN0ZWRUZXh0KQorICAgICAg
ICBsb2coIkZhaWx1cmU6IFNlbGVjdGVkIHRleHQgd2FzIFwiIiArIHNlbGVjdGVkVGV4dCArICJc
IiBhbmQgc2hvdWxkIGJlIFwiIiArIGV4cGVjdGVkVGV4dCArICJcIiIpOwogICAgIGVsc2UKLSAg
ICAgICAgbG9nKCJGYWlsdXJlOiBTZWxlY3Rpb24gaXNuJ3QgdGhlIHJpZ2h0IHNpemUuIGFuY2hv
ck9mZnNldD0iICsgc2VsZWN0aW9uLmFuY2hvck9mZnNldCArCi0gICAgICAgICAgICAiIGZvY3Vz
T2Zmc2V0PSIgKyBzZWxlY3Rpb24uZm9jdXNPZmZzZXQgKyAiIG9uTWFjUGxhdGZvcm06ICIgKyBv
bk1hY1BsYXRmb3JtKTsKLX0gZWxzZQotICAgIGxvZyAoIkZhaWx1cmU6IFRoaXMgdGVzdCBjYW5u
b3QgYmUgcnVuIG1hbnVhbGx5LiIpCisgICAgICAgIGxvZygiU3VjY2VzcyIpOworfQorCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpCisgICAgcnVuVGVzdCgnbWFjJywgJ3Nob3VsZCBiZSBzJyk7CisgICAgcnVu
VGVzdCgnd2luJywgJ2hvdWxkIGJlICcpOworfSBlbHNlIHsKKyAgICBsb2coIkZhaWx1cmU6IFRv
IHRlc3QgbWFudWFsbHksIHNlbGVjdCB0aGUgZ3JlZW4gdGV4dCAiICsKKyAgICAgICAgInN0YXJ0
aW5nIGF0IHRoZSBlbmQgdmlhIGRvdWJsZS1jbGljayAoaS5lLiB3b3JkIGdyYW51bGFyaXR5KSwg
dGhlbiBzaGlmdCtyaWdodC1hcnJvdy4gIiArCisgICAgICAgICJPbiBXaW4vTGludXggeW91IHNo
b3VsZCBzZWUgJ2hvdWxkIGJlICcgc2VsZWN0ZWQuIE9uIE1hYywgeW91IHNob3VsZCBzZWUgJ3No
b3VsZCBiZSBzJyBzZWxlY3RlZC4iICsKKyAgICAgICAgIlRoZXJlJ3MgY3VycmVudGx5IGEgYnVn
IHRoYXQgc2VsZWN0cyB0aGUgc3BhY2UgIiArCisgICAgICAgICJhZnRlciAnc2hvdWxkIGJlJyBk
dXJpbmcgdGhlIGluaXRpYWwgc2VsZWN0aW9uIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzYyNTYpLiAiICsKKyAgICAgICAgIk9uY2UgdGhhdCdzIGZpeGVkLCBpdCB0
aGUgZmluYWwgc2VsZWN0ZWQgdGV4dCBzaG91bGQgYmUgJ3Nob3VsZCBiZSAnIG9uIE1hYyBhbmQg
J2hvdWxkIGJlJyBvbiBXaW4vTGludXguIikKK30KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZvcndhcmQtYWZ0ZXItc2V0LWJhc2Ut
YW5kLWV4dGVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9l
eHRlbmQtZm9yd2FyZC1hZnRlci1zZXQtYmFzZS1hbmQtZXh0ZW50LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NTcxZTA1YTBhYzk5MmVmM2U5Zjg1MTYwMDBkNjVlMDYyMTQzOTA2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZvcndhcmQt
YWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitB
IHNlbGVjdGlvbiBjcmVhdGVkIHdpdGggc2V0QmFzZUFuZEV4dGVudCBzaG91bGQgYmUgZGlyZWN0
aW9uYWwKKworVGhlcmUgc2hvdWxkIGJlIGZvdXIgY2hhcmFjdGVycyBzZWxlY3RlZCBpbiB0aGlz
IHNlbnRlbmNlLgorU3VjY2VzcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9leHRlbmQtZm9yd2FyZC1hZnRlci1zZXQtYmFzZS1hbmQtZXh0ZW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtZm9yd2FyZC1hZnRlci1zZXQtYmFz
ZS1hbmQtZXh0ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVkOTlkZDQwODk4YjRkN2E1M2ZiOGEyMDQ2
OThlYTE5Njc0YjM2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2V4dGVuZC1mb3J3YXJkLWFmdGVyLXNldC1iYXNlLWFuZC1leHRlbnQuaHRtbApAQCAt
MCwwICsxLDI5IEBACis8cD5BIHNlbGVjdGlvbiBjcmVhdGVkIHdpdGggc2V0QmFzZUFuZEV4dGVu
dCBzaG91bGQgYmUgZGlyZWN0aW9uYWw8L3A+Cis8ZGl2IGlkPSJkaXYiIGNvbnRlbnRlZGl0YWJs
ZT0idHJ1ZSI+VGhlcmUgc2hvdWxkIGJlIGZvdXIgY2hhcmFjdGVycyBzZWxlY3RlZCBpbiB0aGlz
IHNlbnRlbmNlLjwvZGl2PgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvZyhzdHIpIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5l
ckhUTUwgKz0gc3RyICsgIjxicj4iOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpLmZpcnN0Q2hpbGQ7
CisgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgIHNlbGVj
dGlvbi5zZXRQb3NpdGlvbih0ZXh0LCAwKTsKKyAgICBzZWxlY3Rpb24ubW9kaWZ5KCJtb3ZlIiwg
ImZvcndhcmQiLCAiY2hhcmFjdGVyIik7CisgICAgCisgICAgc2VsZWN0aW9uLnNldEJhc2VBbmRF
eHRlbnQodGV4dCwgNSArIDcsIHRleHQsIDUpOworICAgIC8vIEV4dGVuZGluZyB0aGlzIDUgY2hh
cmFjdGVyIHNlbGVjdGlvbiB3aWxsIHNlbGVjdCA2IGNoYXJhY3RlcnMuCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIik7
CisgICAgdmFyIHNlbGVjdGVkVGV4dCA9IHNlbGVjdGlvbi50b1N0cmluZygpOworICAgIHZhciBl
eHBlY3RlZFRleHQgPSAic2hvdWxkIjsKKyAgICBpZiAoc2VsZWN0ZWRUZXh0ICE9IGV4cGVjdGVk
VGV4dCkKKyAgICAgICAgbG9nKCJGYWlsdXJlOiBTZWxlY3RlZCB0ZXh0IHdhcyBcIiIgKyBzZWxl
Y3RlZFRleHQgKyAiXCIgYW5kIHNob3VsZCBiZSBcIiIgKyBleHBlY3RlZFRleHQgKyAiXCIiKTsK
KyAgICBlbHNlCisgICAgICAgIGxvZygiU3VjY2VzcyIpOworfSBlbHNlCisgICAgbG9nKCJGYWls
dXJlOiBUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biBtYW51YWxseS4iKQorPC9zY3JpcHQ+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLWV4cGVjdGVkLnR4dApp
bmRleCAxYmM4Mjc1NDdjMWNhNmRiN2Q4MTQzZDVjODFkNGFkZTkxYjc3Njc4Li5iYmQwZjJhMDky
MDk4ZDdiY2M4OTcyYmIyMTU3NjQ3NWQ2NjNjM2RlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLWV4
cGVjdGVkLnR4dApAQCAtMiwzICsyLDQgQEAgVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgZXh0
ZW5kaW5nIGEgc2VsZWN0aW9uIGNyZWF0ZWQgd2l0aCB0aGUgbW91c2Ugd291bGQgYmwKIAogVGhl
cmUgc2hvdWxkIGJlIHNpeCBjaGFyYWN0ZXJzIHNlbGVjdGVkIGluIHRoaXMgc2VudGVuY2Ugb24g
TWFjIGFuZCBmb3VyIGNoYXJhY3RlcnMgc2VsZWN0ZWQgb24gV2luL0xpbnV4LgogU3VjY2Vzcwor
U3VjY2VzcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBiYTYxNzRkZDE1NWZkNzQ4NjkxNDAwNjVkNTA4YmQyZGFjNjhhODcxLi40ZDJjNDVh
YmJjNGI3ZTliMjRmZjMyNzNhM2I4Yjk2NDVjZTQyZjUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTA3
LTA3ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBSZWdyZXNzaW9uOiBTZWxlY3Rpb24gYW5jaG9yICsg
Zm9jdXMgc3dhcCB3aGVuIGFycm93IGtleXMgYWZ0ZXIgc2V0QmFzZUFuZEV4dGVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2MDUKKworICAgICAg
ICBPbmx5IGhhdmUgc2VsZWN0aW9ucyBiZSBub24tZGlyZWN0aW9uYWwgd2hlbiB0aGV5IGFyZSBz
ZXQgdmlhIHRoZSBtb3VzZS4KKyAgICAgICAgT3RoZXJ3aXNlLCBhbGwgc2VsZWN0aW9ucyBhcmUg
ZGlyZWN0aW9uYWwuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWZv
cndhcmQtYWZ0ZXItc2V0LWJhc2UtYW5kLWV4dGVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3Jl
LmJhc2UuZXhwOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRTZWxlY3Rpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL0V2ZW50
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nl
c3RXb3JkRnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpz
ZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGlj
ayk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1v
dXNlRHJhZyk6CisKIDIwMTAtMDctMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiYWI3YTFiNWVl
OTI2ZDI1NTYwYTA2Y2Y3OGFhZTE1YTY2MWUxOGJiLi40ZWZmY2FiNTUyNWYzOThkMTE0NmFlZWRj
NzJmOWJhZDgzZWE4ZGIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTQwMyw3ICs0MDMsNyBAQCBfX1pON1dlYkNvcmUx
OUJhY2tGb3J3YXJkTGlzdEltcGxDMUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUxOUNTU1N0eWxl
RGVjbGFyYXRpb24xMXNldFByb3BlcnR5RVJLTlNfNlN0cmluZ0VTM19SaQogX19aTjdXZWJDb3Jl
MTlJbnNwZWN0b3JDb250cm9sbGVyMzRpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmdOYW1l
RXYKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjEwc2V0Rm9jdXNlZEViCi1fX1pO
N1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXIxMnNldFNlbGVjdGlvbkVSS05TXzE2VmlzaWJs
ZVNlbGVjdGlvbkViYmJOUzBfMTlDdXJzb3JBbGlnbk9uU2Nyb2xsRU5TXzE1VGV4dEdyYW51bGFy
aXR5RQorX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9sbGVyMTJzZXRTZWxlY3Rpb25FUktO
U18xNlZpc2libGVTZWxlY3Rpb25FYmJiTlMwXzE5Q3Vyc29yQWxpZ25PblNjcm9sbEVOU18xNVRl
eHRHcmFudWxhcml0eUVOUzBfMTREaXJlY3Rpb25hbGl0eUUKIF9fWk43V2ViQ29yZTE5U2VsZWN0
aW9uQ29udHJvbGxlcjE2c2V0U2VsZWN0ZWRSYW5nZUVQTlNfNVJhbmdlRU5TXzlFQWZmaW5pdHlF
YgogX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9sbGVyNWNsZWFyRXYKIF9fWk43V2ViQ29y
ZTE5U2VsZWN0aW9uQ29udHJvbGxlcjZtb2RpZnlFTlMwXzExRUFsdGVyYXRpb25FTlMwXzEwRURp
cmVjdGlvbkVOU18xNVRleHRHcmFudWxhcml0eUViCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5jcHAKaW5kZXggNzNkZmZkODA0ZTk4NTMyZGRkNTA2NDk1MTUyZDU4NmE3M2M3ZTUy
Yi4uMThmNDA2ZDIyYTkxNmM5NDE2NTRhYmQ0MjhjNzAyZDVlOTQwNWJiNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtMTA3LDExICsxMDcsMTEgQEAgdm9pZCBT
ZWxlY3Rpb25Db250cm9sbGVyOjptb3ZlVG8oY29uc3QgUG9zaXRpb24gJmJhc2UsIGNvbnN0IFBv
c2l0aW9uICZleHRlbnQsIEUKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYXNl
LCBleHRlbnQsIGFmZmluaXR5KSwgdHJ1ZSwgdHJ1ZSwgdXNlclRyaWdnZXJlZCk7CiB9CiAKLXZv
aWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHMsIGJvb2wgY2xvc2VUeXBpbmcsIGJvb2wgY2xlYXJUeXBpbmdTdHlsZSwgYm9vbCB1c2Vy
VHJpZ2dlcmVkLCBDdXJzb3JBbGlnbk9uU2Nyb2xsIGFsaWduLCBUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzLCBib29sIGNsb3NlVHlwaW5nLCBib29sIGNsZWFyVHlwaW5nU3R5
bGUsIGJvb2wgdXNlclRyaWdnZXJlZCwgQ3Vyc29yQWxpZ25PblNjcm9sbCBhbGlnbiwgVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBEaXJlY3Rpb25hbGl0eSBkaXJlY3Rpb25hbGl0eSkKIHsK
ICAgICBtX2dyYW51bGFyaXR5ID0gZ3JhbnVsYXJpdHk7CiAKLSAgICBzZXRJc0RpcmVjdGlvbmFs
KGZhbHNlKTsKKyAgICBzZXRJc0RpcmVjdGlvbmFsKGRpcmVjdGlvbmFsaXR5ID09IERpcmVjdGlv
bmFsaXR5QXdhcmUpOwogCiAgICAgaWYgKG1faXNEcmFnQ2FyZXRDb250cm9sbGVyKSB7CiAgICAg
ICAgIGludmFsaWRhdGVDYXJldFJlY3QoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmggYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5oCmluZGV4IGU0YzI5NjRjNzk2MmY0ZjZjNzYzNzRmYzE0MjkzMWY0Y2VjNzc4ZjguLjNjODMw
OWM3N2FlNDc2OWVmZmYwYjlkZTQ3ODZjMjYwZTM5MTliYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBFRGly
ZWN0aW9uIHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVjdGlvblJp
Z2h0LCBEaXJlY3Rpb25MZWZ0IH07CiAgICAgZW51bSBDdXJzb3JBbGlnbk9uU2Nyb2xsIHsgQWxp
Z25DdXJzb3JPblNjcm9sbElmTmVlZGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMgfTsKKyAgICBlbnVtIERpcmVjdGlvbmFsaXR5IHsg
RGlyZWN0aW9uYWxpdHlOb25lLCBEaXJlY3Rpb25hbGl0eUF3YXJlIH07CiAKICAgICBTZWxlY3Rp
b25Db250cm9sbGVyKEZyYW1lKiA9IDAsIGJvb2wgaXNEcmFnQ2FyZXRDb250cm9sbGVyID0gZmFs
c2UpOwogCkBAIC02Miw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVUbyhjb25zdCBQ
b3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQg
PSBmYWxzZSk7CiAKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3NlbGVjdGlvbjsgfQotICAgIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mLCBib29sIGNsb3NlVHlwaW5nID0gdHJ1ZSwgYm9vbCBjbGVhclR5cGlu
Z1N0eWxlID0gdHJ1ZSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UsIEN1cnNvckFsaWduT25T
Y3JvbGwgPSBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIFRleHRHcmFudWxhcml0eSA9IENo
YXJhY3RlckdyYW51bGFyaXR5KTsKLSAgICB2b2lkIHNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkgeyBzZXRT
ZWxlY3Rpb24oc2VsZWN0aW9uLCB0cnVlLCB0cnVlLCBmYWxzZSwgQWxpZ25DdXJzb3JPblNjcm9s
bElmTmVlZGVkLCBncmFudWxhcml0eSk7IH0KKyAgICB2b2lkIHNldFNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjbG9zZVR5cGluZyA9IHRydWUsIGJvb2wgY2xlYXJUeXBp
bmdTdHlsZSA9IHRydWUsIGJvb2wgdXNlclRyaWdnZXJlZCA9IGZhbHNlLCBDdXJzb3JBbGlnbk9u
U2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgRGlyZWN0aW9uYWxpdHkgPSBEaXJlY3Rpb25hbGl0eUF3YXJl
KTsKKyAgICB2b2lkIHNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgRGlyZWN0aW9uYWxpdHkgZGlyZWN0aW9u
YWxpdHkgPSBEaXJlY3Rpb25hbGl0eUF3YXJlKSB7IHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHRy
dWUsIHRydWUsIGZhbHNlLCBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIGdyYW51bGFyaXR5
LCBkaXJlY3Rpb25hbGl0eSk7IH0KICAgICBib29sIHNldFNlbGVjdGVkUmFuZ2UoUmFuZ2UqLCBF
QWZmaW5pdHksIGJvb2wgY2xvc2VUeXBpbmcpOwogICAgIHZvaWQgc2VsZWN0QWxsKCk7CiAgICAg
dm9pZCBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5ZDhiMWZiMmI0YzgwMDhlZjA2
YTFkYWQ5YWU5ZGQ2MGQ2NTc1YWVhLi4wMzg4NGYzMzVhYTkxZjBjZDcxYzIzZGE1Mjk4Mjk1ZjI1
NTA5NWI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb21Nb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2ZyYW1l
LT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKLSAgICAgICAgICAgIG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBncmFudWxhcml0eSk7
CisgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVj
dGlvbiwgZ3JhbnVsYXJpdHksIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbmFsaXR5Tm9u
ZSk7CiAgICAgfQogfQogCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNl
bGVjdENsb3Nlc3RXb3JkT3JMaW5rRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhI
aXQKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2ZyYW1lLT5zaG91bGRDaGFuZ2VTZWxlY3Rp
b24obmV3U2VsZWN0aW9uKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRT
ZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgICAgICAgICBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZ3JhbnVsYXJpdHksIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbmFsaXR5Tm9uZSk7CiAgICAgfQogfQogCkBAIC0z
MjksNyArMzI5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFRy
aXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICB9CiAgICAgCiAgICAg
aWYgKG1fZnJhbWUtPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQotICAgICAg
ICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZ3JhbnVs
YXJpdHkpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbiwgZ3JhbnVsYXJpdHksIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbmFsaXR5
Tm9uZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM5Niw3ICszOTYsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UgogICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9u
KHZpc2libGVQb3MpOwogICAgIAogICAgIGlmIChtX2ZyYW1lLT5zaG91bGRDaGFuZ2VTZWxlY3Rp
b24obmV3U2VsZWN0aW9uKSkKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVj
dGlvbihuZXdTZWxlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0
aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGdyYW51bGFyaXR5LCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25hbGl0eU5vbmUpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC02MzMsNyArNjMzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1v
dXNlRHJhZyhOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBJbnRQb2ludCYKIAogICAgIGlmIChtX2Zy
YW1lLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewogICAgICAgICBtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+c2V0SXNEaXJlY3Rpb25hbChmYWxzZSk7Ci0gICAgICAgIG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBtX2ZyYW1lLT5zZWxl
Y3Rpb25HcmFudWxhcml0eSgpKTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNl
bGVjdGlvbihuZXdTZWxlY3Rpb24sIG1fZnJhbWUtPnNlbGVjdGlvbkdyYW51bGFyaXR5KCksIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbmFsaXR5Tm9uZSk7CiAgICAgfQogfQogI2VuZGlm
IC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCg==
</data>
<flag name="review"
          id="48752"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>