<?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>23849</bug_id>
          
          <creation_ts>2009-02-09 10:29:05 -0800</creation_ts>
          <short_desc>Keyboard shortcuts needed in Web Inspector</short_desc>
          <delta_ts>2009-07-07 10:57:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>525.x (Safari 3.2)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Gackle">danielgackle</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>igitur</cc>
    
    <cc>kmccullough</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>108986</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Gackle">danielgackle</who>
    <bug_when>2009-02-09 10:29:05 -0800</bug_when>
    <thetext>It would be a big help to developers working in Web Inspector if the debugger allowed for keyboard shortcuts - having to use the mouse to click through every line is a significant drag (though the debugger works great otherwise). The standard shortcuts that I&apos;m familiar with, and which Firebug also uses, are:

F10 - step over
F11 - step into
Shift+F10 - step out
F5 or F8 - continue
F9 - toggle breakpoint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128448</commentid>
    <comment_count>1</comment_count>
      <attachid>31920</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-26 01:55:16 -0700</bug_when>
    <thetext>Created attachment 31920
Patch adding debugger and call stack navigation shortcuts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128449</commentid>
    <comment_count>2</comment_count>
    <who name="Francois Botha">igitur</who>
    <bug_when>2009-06-26 02:01:26 -0700</bug_when>
    <thetext>In Firebug, F8 is used for Continue.  F5 causes the page to reload (On my Windows XP, Fx 3.5 system at least). Therefore, my preference is for F8 instead of F5 for Continue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128451</commentid>
    <comment_count>3</comment_count>
      <attachid>31921</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-26 02:02:53 -0700</bug_when>
    <thetext>Created attachment 31921
Patch adding debugger and call stack navigation shortcuts(with copyright fix).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128452</commentid>
    <comment_count>4</comment_count>
      <attachid>31922</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-26 02:10:31 -0700</bug_when>
    <thetext>Created attachment 31922
Patch adding debugger and call stack navigation shortcuts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128474</commentid>
    <comment_count>5</comment_count>
      <attachid>31922</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-26 05:29:41 -0700</bug_when>
    <thetext>Comment on attachment 31922
Patch adding debugger and call stack navigation shortcuts.

The patch needs to be changed to work properly on all platforms. Marking it as obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128792</commentid>
    <comment_count>6</comment_count>
      <attachid>32002</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-29 02:38:17 -0700</bug_when>
    <thetext>Created attachment 32002
Add Firebug-compatible debugger and stack navigation shortcuts.

On Mac most functional keys are bound as OS shortcuts which means they cannot be used as the debugger shortcuts. To overcome this I&apos;ve added several shortcuts that don&apos;t conflict with OS. Those are the keys used in Firebug so users should feel comfortable with them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128798</commentid>
    <comment_count>7</comment_count>
    <who name="Francois Botha">igitur</who>
    <bug_when>2009-06-29 03:20:41 -0700</bug_when>
    <thetext>Would somebody care to comment on the F5 vs F8 issue? Refer to comment #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128799</commentid>
    <comment_count>8</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-29 03:32:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Would somebody care to comment on the F5 vs F8 issue? Refer to comment #2
&gt; 
If focus is on the sidebar pane pressing F5 should just continue execution(as long as this patch is applied).
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128802</commentid>
    <comment_count>9</comment_count>
    <who name="Francois Botha">igitur</who>
    <bug_when>2009-06-29 04:25:28 -0700</bug_when>
    <thetext>I&apos;m aware that F5 will not refresh the page *in Chrome*.  But my point is that it *does* refresh the page in Firefox + Firebug.  So, if you want to be *consistent*, surely F8 is the right choice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128803</commentid>
    <comment_count>10</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-29 04:49:49 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I&apos;m aware that F5 will not refresh the page *in Chrome*.  But my point is that
&gt; it *does* refresh the page in Firefox + Firebug.  So, if you want to be
&gt; *consistent*, surely F8 is the right choice?
&gt; 
It looks to me as a bug in Firebug and I&apos;d rather avoid repeating it in WebKit.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128826</commentid>
    <comment_count>11</comment_count>
      <attachid>32002</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-06-29 09:58:21 -0700</bug_when>
    <thetext>Comment on attachment 32002
Add Firebug-compatible debugger and stack navigation shortcuts.


&gt; +    this.shortcuts_ = {};

Why does this end with an underscore? THis dosen&apos;t match any of our naming conventions. Just remove the underscore or use a underscore prefix if the property is &quot;private&quot;.

&gt; +    handleKeyEvent: function(event) {

Open curly brace should be on the next line.

&gt; +      var shortcut = WebInspector.KeyboardShortcut.makeKeyFromEvent(event);
&gt; +      var handler = this.shortcuts_[shortcut];
&gt; +      if (handler) {
&gt; +        handler(event);
&gt; +        event.preventDefault();
&gt; +        event.handled = true;
&gt; +      }
&gt; +    },

Use 4 space indents.

&gt; +    _selectNextCallFrameOnStack: function() {

Open curly brace should be on the next line.

&gt; +    _selectPreviousCallFrameOnStack: function() {

Open curly brace should be on the next line.

&gt; +    _selectedPlacardByIndex: function(index) {

Open curly brace should be on the next line.

&gt; +    _selectedCallFrameIndex: function() {

Open curly brace should be on the next line.

&gt; +            if (placard.callFrame === this._selectedCallFrame) {
&gt; +                return i;
&gt; +            }

No need for the curly brances for one line.

&gt; +WebInspector.KeyboardShortcut.Modifiers = {
&gt; +    NONE: 0,
&gt; +    SHIFT: 1,
&gt; +    CTRL: 2,
&gt; +    ALT: 4,
&gt; +    META: 8
&gt; +};

No need for the semicolon. I would also like to see these be CamelCase and spelled out.

&gt; +WebInspector.KeyboardShortcut.KeyCodes = {
&gt; +    ESC: 27,
&gt; +    SPACE: 32,
&gt; +    PAGE_UP: 33,     // also NUM_NORTH_EAST
&gt; +    PAGE_DOWN: 34,   // also NUM_SOUTH_EAST
&gt; +    END: 35,         // also NUM_SOUTH_WEST
&gt; +    HOME: 36,        // also NUM_NORTH_WEST
&gt; +    LEFT: 37,        // also NUM_WEST
&gt; +    UP: 38,          // also NUM_NORTH
&gt; +    RIGHT: 39,       // also NUM_EAST
&gt; +    DOWN: 40,        // also NUM_SOUTH
&gt; +    F1: 112,
&gt; +    F2: 113,
&gt; +    F3: 114,
&gt; +    F4: 115,
&gt; +    F5: 116,
&gt; +    F6: 117,
&gt; +    F7: 118,
&gt; +    F8: 119,
&gt; +    F9: 120,
&gt; +    F10: 121,
&gt; +    F11: 122,
&gt; +    F12: 123,
&gt; +    SEMICOLON: 186,
&gt; +    COMMA: 188,
&gt; +    PERIOD: 190,
&gt; +    SLASH: 191,
&gt; +    APOSTROPHE: 192,
&gt; +    SINGLE_QUOTE: 222,
&gt; +};

Same here. CamelCase and spelled out for the non function keys.

&gt; +WebInspector.KeyboardShortcut.makeKey = function(keyCode, opt_modifiers) {

Open curly brace should be on the next line. The opt_modifiers parameter should be spelled out and camelCase instead of an underscore.

&gt; +    for (var i = 1; i &lt; arguments.length; i++) {
&gt; +        modifiers |= arguments[i];
&gt; +    }

No need for the curly brances for one line.

&gt; +WebInspector.KeyboardShortcut.makeKeyFromCodeAndModifiers_ = function(keyCode, modifiers) {
&gt; +    return (keyCode &amp; 255) | (modifiers &lt;&lt; 8);
&gt; +};

The underscore should be a prefix if this is a &quot;private&quot; function.

&gt; +    this.shortcuts_ = {};

Use an underscore prefix or drop the underscore.

&gt; +    handleKeyEvent: function(event) {

Open curly brace should be on the next line.

&gt; +      var shortcut = WebInspector.KeyboardShortcut.makeKeyFromEvent(event);
&gt; +      var handler = this.shortcuts_[shortcut];
&gt; +      if (handler) {
&gt; +        handler(event);
&gt; +        event.preventDefault();
&gt; +        event.handled = true;
&gt; +      } else {
&gt; +        this.sidebarPanes.callstack.handleKeyEvent(event);
&gt; +      }
&gt; +    },

Use 4 space indent.

r- purely on code style. Functionally correct!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128827</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-06-29 10:01:28 -0700</bug_when>
    <thetext>It would also be better to use keyIdentifier instead of keyCode (e.g. event.keyIdentifier === &quot;Right&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128993</commentid>
    <comment_count>13</comment_count>
      <attachid>32044</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-30 02:23:05 -0700</bug_when>
    <thetext>Created attachment 32044
Previous patch with Timothy&apos;s comments addressed.

I&apos;ve  fixed all of the pointed issues(sorry, it&apos;s hard to switch between two different style guides) except for the semicolons. If you don&apos;t mind I&apos;d rather have each expression ending with semicolon explicitly to avoid possible nasty errors happening when semicolon is accidentally omitted between two expressions like in the following example: 

var x = {
  &apos;i&apos;: 1,
  &apos;j&apos;: 2
} 
// 2.  Trying to do one thing on IE and another on FF.
// I know you&apos;d never write code like this, but throw me a bone.
[normalVersion, ffVersion][isIE]();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128997</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-30 02:31:42 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; It would also be better to use keyIdentifier instead of keyCode (e.g.
&gt; event.keyIdentifier === &quot;Right&quot;).
&gt; 

On Windows pressing F10 gives me keyIdentifier F11, pressing F11 gives U+005A. Also for most of the other keys it&apos;s something like U+00BF which means it would require introducing constants for those keys anyway. Using uniform numerical constants for keyCode values looks more convenient.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129056</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-30 06:30:22 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; On Windows pressing F10 gives me keyIdentifier F11

This sounds like a bug. Could you please file it?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129144</commentid>
    <comment_count>16</comment_count>
      <attachid>32044</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-06-30 13:25:35 -0700</bug_when>
    <thetext>Comment on attachment 32044
Previous patch with Timothy&apos;s comments addressed.

There are tabs in CallStackSidebarPane.js. Otherwise fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129264</commentid>
    <comment_count>17</comment_count>
      <attachid>32116</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-30 23:43:19 -0700</bug_when>
    <thetext>Created attachment 32116
Replaced the tabs with spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129268</commentid>
    <comment_count>18</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-06-30 23:56:44 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; On Windows pressing F10 gives me keyIdentifier F11
&gt; 
&gt; This sounds like a bug. Could you please file it?
&gt; 

Done: https://bugs.webkit.org/show_bug.cgi?id=26878</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129434</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-01 18:03:39 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/inspector/front-end/CallStackSidebarPane.js
Adding         WebCore/inspector/front-end/KeyboardShortcut.js
Sending        WebCore/inspector/front-end/ScriptsPanel.js
Sending        WebCore/inspector/front-end/WebKit.qrc
Sending        WebCore/inspector/front-end/inspector.html
Transmitting file data ......
Committed revision 45460.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129698</commentid>
    <comment_count>20</comment_count>
    <who name="Francois Botha">igitur</who>
    <bug_when>2009-07-03 03:35:57 -0700</bug_when>
    <thetext>&gt; It looks to me as a bug in Firebug and I&apos;d rather avoid repeating it in WebKit.

Possible bug filed at http://code.google.com/p/fbug/issues/detail?id=1960 for clarification.  If it&apos;s not a bug (as I suspect) I hope this patch gets adjusted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129778</commentid>
    <comment_count>21</comment_count>
    <who name="Francois Botha">igitur</who>
    <bug_when>2009-07-04 00:20:37 -0700</bug_when>
    <thetext>Firebug developers confirm that the Continue button is F8, not F5.
http://code.google.com/p/fbug/issues/detail?id=1960 

So, if you want to be consistent, emulate Firebug. 

Emulating Visual Studio makes less sense because web developers use Firebug a lot more than VS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129904</commentid>
    <comment_count>22</comment_count>
      <attachid>32287</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-07-06 00:45:33 -0700</bug_when>
    <thetext>Created attachment 32287
Change &apos;Continue&apos; shortcut from F5 to F8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130243</commentid>
    <comment_count>23</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-07-07 10:57:55 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/inspector/front-end/ScriptsPanel.js
Transmitting file data ..
Committed revision 45591.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31920</attachid>
            <date>2009-06-26 01:55:16 -0700</date>
            <delta_ts>2009-06-26 02:02:53 -0700</delta_ts>
            <desc>Patch adding debugger and call stack navigation shortcuts.</desc>
            <filename>debugger-shortcuts.patch</filename>
            <type>text/plain</type>
            <size>10875</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTI1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDYtMjYgIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIHN1cHBvcnRlZCBrZXlib2FyZCBzaG9ydGN1dHMgaW4gU2NyaXB0cyBEZWJ1Z2dlcjoKKyAg
ICAgICAgRjUgLSBjb250aW51ZQorICAgICAgICBGMTAgLSBzdGVwIG92ZXIKKyAgICAgICAgRjEx
IC0gc3RlcCBpbnRvCisgICAgICAgIFNoaWZ0K0YxMSAtIHN0ZXAgb3V0CisKKyAgICAgICAgLSBh
ZGRlZCBjYWxsIHN0YWNrIG5hdmlnYXRpb24gc2hvcnRjdXRzOgorICAgICAgICBDdHJsKy4gLSBu
ZXh0IGNhbGwgZnJhbWUKKyAgICAgICAgQ3RybCssIC0gcHJldmlvdXNlIGNhbGwgZnJhbWUKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDkKKwor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5oYW5kbGVLZXlFdmVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9z
ZWxlY3ROZXh0Q2FsbEZyYW1lT25TdGFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0
YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RQcmV2aW91c0NhbGxGcmFtZU9uU3RhY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5f
c2VsZWN0ZWRQbGFjYXJkQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNr
U2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RlZENhbGxGcmFtZUluZGV4KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQubWFrZUtleSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18pOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZS5oYW5kbGVLZXlFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbDoKKwogMjAwOS0wNi0yNiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJv
c0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5l
LmpzCShyZXZpc2lvbiA0NTI1MCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxs
U3RhY2tTaWRlYmFyUGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTYgQEAKIFdl
Ykluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJ
bnNwZWN0b3IuU2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNh
bGwgU3RhY2siKSk7CisgICAgCisgICAgdGhpcy5zaG9ydGN1dHNfID0ge307CisKKyAgICB2YXIg
c2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLlBFUklPRCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5DVFJMKTsKKyAgICB0aGlzLnNob3J0Y3V0c19bc2hvcnRj
dXRdID0gdGhpcy5fc2VsZWN0TmV4dENhbGxGcmFtZU9uU3RhY2suYmluZCh0aGlzKTsKKworICAg
IHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuQ09NTUEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuQ1RSTCk7CisgICAgdGhpcy5zaG9ydGN1dHNfW3No
b3J0Y3V0XSA9IHRoaXMuX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjay5iaW5kKHRoaXMp
OwogfQogCiBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewpA
QCAtMTAwLDYgKzExMCw0OSBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJv
dG90CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjYWxsIGZyYW1lIHNl
bGVjdGVkIik7CiAgICAgfSwKIAorICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkg
eworICAgICAgdmFyIHNob3J0Y3V0ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFr
ZUtleUZyb21FdmVudChldmVudCk7CisgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuc2hvcnRjdXRz
X1tzaG9ydGN1dF07CisgICAgICBpZiAoaGFuZGxlcikgeworICAgICAgICBoYW5kbGVyKGV2ZW50
KTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuaGFuZGxl
ZCA9IHRydWU7CisgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfc2VsZWN0TmV4dENhbGxGcmFt
ZU9uU3RhY2s6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9zZWxlY3Rl
ZENhbGxGcmFtZUluZGV4KCk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRQbGFjYXJkQnlJbmRleChpbmRleCArIDEp
OworICAgIH0sCisgICAgCisgICAgX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjazogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5k
ZXgoKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB0aGlzLl9zZWxlY3RlZFBsYWNhcmRCeUluZGV4KGluZGV4IC0gMSk7CisgICAgfSwKKyAg
ICAKKyAgICBfc2VsZWN0ZWRQbGFjYXJkQnlJbmRleDogZnVuY3Rpb24oaW5kZXgpIHsKKyAgICAg
ICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLnBsYWNhcmRzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHBsYWNhcmQgPSB0aGlzLnBsYWNhcmRzW2luZGV4
XTsKKyAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxGcmFtZSA9IHBsYWNhcmQuY2FsbEZyYW1lCisg
ICAgfSwKKworICAgIF9zZWxlY3RlZENhbGxGcmFtZUluZGV4OiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9zZWxlY3RlZENhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAtMTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBsYWNhcmRzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICB2YXIgcGxhY2FyZCA9IHRoaXMucGxhY2FyZHNbaV07CisgICAgICAgICAg
ICBpZiAocGxhY2FyZC5jYWxsRnJhbWUgPT09IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIC0xOworICAgIH0sCisKICAgICBfcGxhY2FyZFNlbGVjdGVkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBwbGFjYXJkRWxlbWVudCA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJwbGFjYXJkIik7CkluZGV4OiBXZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDkxIEBACisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICoNCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkN
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQ0KKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SDQorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsDQorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLA0KKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUg0KKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkNCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UNCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KK1dlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0ID0gZnVuY3Rpb24oKSB7DQorfTsNCisNCitXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5Nb2RpZmllcnMgPSB7DQorICAgIE5PTkU6IDAsDQorICAgIFNISUZUOiAxLA0K
KyAgICBDVFJMOiAyLA0KKyAgICBBTFQ6IDQsDQorICAgIE1FVEE6IDgNCit9Ow0KKw0KK1dlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzID0gew0KKyAgICBFU0M6IDI3LA0KKyAg
ICBTUEFDRTogMzIsDQorICAgIFBBR0VfVVA6IDMzLCAgICAgLy8gYWxzbyBOVU1fTk9SVEhfRUFT
VA0KKyAgICBQQUdFX0RPV046IDM0LCAgIC8vIGFsc28gTlVNX1NPVVRIX0VBU1QNCisgICAgRU5E
OiAzNSwgICAgICAgICAvLyBhbHNvIE5VTV9TT1VUSF9XRVNUDQorICAgIEhPTUU6IDM2LCAgICAg
ICAgLy8gYWxzbyBOVU1fTk9SVEhfV0VTVA0KKyAgICBMRUZUOiAzNywgICAgICAgIC8vIGFsc28g
TlVNX1dFU1QNCisgICAgVVA6IDM4LCAgICAgICAgICAvLyBhbHNvIE5VTV9OT1JUSA0KKyAgICBS
SUdIVDogMzksICAgICAgIC8vIGFsc28gTlVNX0VBU1QNCisgICAgRE9XTjogNDAsICAgICAgICAv
LyBhbHNvIE5VTV9TT1VUSA0KKyAgICBGMTogMTEyLA0KKyAgICBGMjogMTEzLA0KKyAgICBGMzog
MTE0LA0KKyAgICBGNDogMTE1LA0KKyAgICBGNTogMTE2LA0KKyAgICBGNjogMTE3LA0KKyAgICBG
NzogMTE4LA0KKyAgICBGODogMTE5LA0KKyAgICBGOTogMTIwLA0KKyAgICBGMTA6IDEyMSwNCisg
ICAgRjExOiAxMjIsDQorICAgIEYxMjogMTIzLA0KKyAgICBTRU1JQ09MT046IDE4NiwNCisgICAg
Q09NTUE6IDE4OCwNCisgICAgUEVSSU9EOiAxOTAsDQorICAgIFNMQVNIOiAxOTEsDQorICAgIEFQ
T1NUUk9QSEU6IDE5MiwNCisgICAgU0lOR0xFX1FVT1RFOiAyMjIsDQorfTsNCisNCitXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5ID0gZnVuY3Rpb24oa2V5Q29kZSwgb3B0X21v
ZGlmaWVycykgew0KKyAgICB2YXIgbW9kaWZpZXJzID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuTW9kaWZpZXJzLk5PTkU7DQorICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSsrKSB7DQorICAgICAgICBtb2RpZmllcnMgfD0gYXJndW1lbnRzW2ldOw0KKyAg
ICB9DQorICAgIHJldHVybiBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJv
bUNvZGVBbmRNb2RpZmllcnNfKGtleUNvZGUsIG1vZGlmaWVycyk7DQorfTsNCisNCitXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50ID0gZnVuY3Rpb24oa2V5Ym9h
cmRFdmVudCkgew0KKyAgICB2YXIgbW9kaWZpZXJzID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuTW9kaWZpZXJzLk5PTkU7DQorICAgIGlmIChrZXlib2FyZEV2ZW50LnNoaWZ0S2V5KQ0K
KyAgICAgICAgbW9kaWZpZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlm
aWVycy5TSElGVDsNCisgICAgaWYgKGtleWJvYXJkRXZlbnQuY3RybEtleSkNCisgICAgICAgIG1v
ZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuQ1RSTDsN
CisgICAgaWYgKGtleWJvYXJkRXZlbnQuYWx0S2V5KQ0KKyAgICAgICAgbW9kaWZpZXJzIHw9IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5BTFQ7DQorICAgIGlmIChrZXli
b2FyZEV2ZW50Lm1ldGFLZXkpDQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLk1FVEE7DQorICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJvbUNvZGVBbmRNb2RpZmllcnNfKGtleWJvYXJkRXZl
bnQua2V5Q29kZSwgbW9kaWZpZXJzKTsNCit9Ow0KKw0KK1dlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18gPSBmdW5jdGlvbihrZXlDb2RlLCBt
b2RpZmllcnMpIHsNCisgICAgcmV0dXJuIChrZXlDb2RlICYgMjU1KSB8IChtb2RpZmllcnMgPDwg
OCk7DQorfTsNCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMJKHJldmlzaW9uIDQ1MjUwKQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2MywyMSBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fYnJlYWtwb2ludHNVUkxN
YXAgPSB7fTsKIAorICAgIHRoaXMuc2hvcnRjdXRzXyA9IHt9OworCisgICAgdmFyIHNob3J0Y3V0
ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleShXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXlDb2Rlcy5GNSk7CisgICAgdGhpcy5zaG9ydGN1dHNfW3Nob3J0Y3V0
XSA9IHRoaXMucGF1c2VCdXR0b24uY2xpY2suYmluZCh0aGlzLnBhdXNlQnV0dG9uKTsKKyAgICAK
KyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5
KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkYxMCk7CisgICAgdGhpcy5z
aG9ydGN1dHNfW3Nob3J0Y3V0XSA9IHRoaXMuc3RlcE92ZXJCdXR0b24uY2xpY2suYmluZCh0aGlz
LnN0ZXBPdmVyQnV0dG9uKTsKKworICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29k
ZXMuRjExKTsKKyAgICB0aGlzLnNob3J0Y3V0c19bc2hvcnRjdXRdID0gdGhpcy5zdGVwSW50b0J1
dHRvbi5jbGljay5iaW5kKHRoaXMuc3RlcEludG9CdXR0b24pOworCisgICAgdmFyIHNob3J0Y3V0
ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleShXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXlDb2Rlcy5GMTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5Nb2RpZmllcnMuU0hJRlQpOworICAgIHRoaXMuc2hvcnRjdXRzX1tzaG9ydGN1dF0gPSB0aGlz
LnN0ZXBPdXRCdXR0b24uY2xpY2suYmluZCh0aGlzLnN0ZXBPdXRCdXR0b24pOworCiAgICAgdGhp
cy5yZXNldCgpOwogfQogCkBAIC00ODYsNiArNTAxLDE4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZSgo
dmlldy5yZXNvdXJjZSB8fCB2aWV3LnNjcmlwdCkpOwogICAgIH0sCiAKKyAgICBoYW5kbGVLZXlF
dmVudDogZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tRXZlbnQoZXZlbnQpOworICAgICAgdmFyIGhh
bmRsZXIgPSB0aGlzLnNob3J0Y3V0c19bc2hvcnRjdXRdOworICAgICAgaWYgKGhhbmRsZXIpIHsK
KyAgICAgICAgaGFuZGxlcihldmVudCk7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CisgICAgICAgIGV2ZW50LmhhbmRsZWQgPSB0cnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
dGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKKyAgICAg
IH0KKyAgICB9LAorCiAgICAgc2NyaXB0Vmlld0ZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQog
ICAgIHsKICAgICAgICAgaWYgKCFzY3JpcHQpCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sCShyZXZpc2lvbiA0NTI1MCkKKysrIFdlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPCiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idHJlZW91dGxpbmUuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imluc3BlY3Rvci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iT2JqZWN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJLZXli
b2FyZFNob3J0Y3V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJUZXh0UHJvbXB0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJQbGFjYXJkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJWaWV3LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31921</attachid>
            <date>2009-06-26 02:02:53 -0700</date>
            <delta_ts>2009-06-26 02:10:31 -0700</delta_ts>
            <desc>Patch adding debugger and call stack navigation shortcuts(with copyright fix). </desc>
            <filename>debugger-shortcuts-2.patch</filename>
            <type>text/plain</type>
            <size>11180</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTI1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDYtMjYgIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIHN1cHBvcnRlZCBrZXlib2FyZCBzaG9ydGN1dHMgaW4gU2NyaXB0cyBEZWJ1Z2dlcjoKKyAg
ICAgICAgRjUgLSBjb250aW51ZQorICAgICAgICBGMTAgLSBzdGVwIG92ZXIKKyAgICAgICAgRjEx
IC0gc3RlcCBpbnRvCisgICAgICAgIFNoaWZ0K0YxMSAtIHN0ZXAgb3V0CisKKyAgICAgICAgLSBh
ZGRlZCBjYWxsIHN0YWNrIG5hdmlnYXRpb24gc2hvcnRjdXRzOgorICAgICAgICBDdHJsKy4gLSBu
ZXh0IGNhbGwgZnJhbWUKKyAgICAgICAgQ3RybCssIC0gcHJldmlvdXNlIGNhbGwgZnJhbWUKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDkKKwor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5oYW5kbGVLZXlFdmVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9z
ZWxlY3ROZXh0Q2FsbEZyYW1lT25TdGFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0
YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RQcmV2aW91c0NhbGxGcmFtZU9uU3RhY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5f
c2VsZWN0ZWRQbGFjYXJkQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNr
U2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RlZENhbGxGcmFtZUluZGV4KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQubWFrZUtleSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18pOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZS5oYW5kbGVLZXlFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbDoKKwogMjAwOS0wNi0yNiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJv
c0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5l
LmpzCShyZXZpc2lvbiA0NTI1MCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxs
U3RhY2tTaWRlYmFyUGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTYgQEAKIFdl
Ykluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJ
bnNwZWN0b3IuU2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNh
bGwgU3RhY2siKSk7CisgICAgCisgICAgdGhpcy5zaG9ydGN1dHNfID0ge307CisKKyAgICB2YXIg
c2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLlBFUklPRCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5DVFJMKTsKKyAgICB0aGlzLnNob3J0Y3V0c19bc2hvcnRj
dXRdID0gdGhpcy5fc2VsZWN0TmV4dENhbGxGcmFtZU9uU3RhY2suYmluZCh0aGlzKTsKKworICAg
IHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuQ09NTUEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuQ1RSTCk7CisgICAgdGhpcy5zaG9ydGN1dHNfW3No
b3J0Y3V0XSA9IHRoaXMuX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjay5iaW5kKHRoaXMp
OwogfQogCiBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewpA
QCAtMTAwLDYgKzExMCw0OSBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJv
dG90CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjYWxsIGZyYW1lIHNl
bGVjdGVkIik7CiAgICAgfSwKIAorICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkg
eworICAgICAgdmFyIHNob3J0Y3V0ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFr
ZUtleUZyb21FdmVudChldmVudCk7CisgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuc2hvcnRjdXRz
X1tzaG9ydGN1dF07CisgICAgICBpZiAoaGFuZGxlcikgeworICAgICAgICBoYW5kbGVyKGV2ZW50
KTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuaGFuZGxl
ZCA9IHRydWU7CisgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfc2VsZWN0TmV4dENhbGxGcmFt
ZU9uU3RhY2s6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9zZWxlY3Rl
ZENhbGxGcmFtZUluZGV4KCk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRQbGFjYXJkQnlJbmRleChpbmRleCArIDEp
OworICAgIH0sCisgICAgCisgICAgX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjazogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5k
ZXgoKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB0aGlzLl9zZWxlY3RlZFBsYWNhcmRCeUluZGV4KGluZGV4IC0gMSk7CisgICAgfSwKKyAg
ICAKKyAgICBfc2VsZWN0ZWRQbGFjYXJkQnlJbmRleDogZnVuY3Rpb24oaW5kZXgpIHsKKyAgICAg
ICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLnBsYWNhcmRzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHBsYWNhcmQgPSB0aGlzLnBsYWNhcmRzW2luZGV4
XTsKKyAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxGcmFtZSA9IHBsYWNhcmQuY2FsbEZyYW1lCisg
ICAgfSwKKworICAgIF9zZWxlY3RlZENhbGxGcmFtZUluZGV4OiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9zZWxlY3RlZENhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAtMTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBsYWNhcmRzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICB2YXIgcGxhY2FyZCA9IHRoaXMucGxhY2FyZHNbaV07CisgICAgICAgICAg
ICBpZiAocGxhY2FyZC5jYWxsRnJhbWUgPT09IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIC0xOworICAgIH0sCisKICAgICBfcGxhY2FyZFNlbGVjdGVkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBwbGFjYXJkRWxlbWVudCA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJwbGFjYXJkIik7CkluZGV4OiBXZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqDQorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gDQor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
DQorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YNCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIA0K
KyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkNCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEDQorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQ0KKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkNCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUw0KKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsNCisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQNCisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVA0KKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQor
DQorV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQgPSBmdW5jdGlvbigpIHsNCit9Ow0KKw0K
K1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycyA9IHsNCisgICAgTk9ORTog
MCwNCisgICAgU0hJRlQ6IDEsDQorICAgIENUUkw6IDIsDQorICAgIEFMVDogNCwNCisgICAgTUVU
QTogOA0KK307DQorDQorV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMgPSB7
DQorICAgIEVTQzogMjcsDQorICAgIFNQQUNFOiAzMiwNCisgICAgUEFHRV9VUDogMzMsICAgICAv
LyBhbHNvIE5VTV9OT1JUSF9FQVNUDQorICAgIFBBR0VfRE9XTjogMzQsICAgLy8gYWxzbyBOVU1f
U09VVEhfRUFTVA0KKyAgICBFTkQ6IDM1LCAgICAgICAgIC8vIGFsc28gTlVNX1NPVVRIX1dFU1QN
CisgICAgSE9NRTogMzYsICAgICAgICAvLyBhbHNvIE5VTV9OT1JUSF9XRVNUDQorICAgIExFRlQ6
IDM3LCAgICAgICAgLy8gYWxzbyBOVU1fV0VTVA0KKyAgICBVUDogMzgsICAgICAgICAgIC8vIGFs
c28gTlVNX05PUlRIDQorICAgIFJJR0hUOiAzOSwgICAgICAgLy8gYWxzbyBOVU1fRUFTVA0KKyAg
ICBET1dOOiA0MCwgICAgICAgIC8vIGFsc28gTlVNX1NPVVRIDQorICAgIEYxOiAxMTIsDQorICAg
IEYyOiAxMTMsDQorICAgIEYzOiAxMTQsDQorICAgIEY0OiAxMTUsDQorICAgIEY1OiAxMTYsDQor
ICAgIEY2OiAxMTcsDQorICAgIEY3OiAxMTgsDQorICAgIEY4OiAxMTksDQorICAgIEY5OiAxMjAs
DQorICAgIEYxMDogMTIxLA0KKyAgICBGMTE6IDEyMiwNCisgICAgRjEyOiAxMjMsDQorICAgIFNF
TUlDT0xPTjogMTg2LA0KKyAgICBDT01NQTogMTg4LA0KKyAgICBQRVJJT0Q6IDE5MCwNCisgICAg
U0xBU0g6IDE5MSwNCisgICAgQVBPU1RST1BIRTogMTkyLA0KKyAgICBTSU5HTEVfUVVPVEU6IDIy
MiwNCit9Ow0KKw0KK1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkgPSBmdW5j
dGlvbihrZXlDb2RlLCBvcHRfbW9kaWZpZXJzKSB7DQorICAgIHZhciBtb2RpZmllcnMgPSBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTk9ORTsNCisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsNCisgICAgICAgIG1vZGlmaWVycyB8
PSBhcmd1bWVudHNbaV07DQorICAgIH0NCisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18oa2V5Q29kZSwgbW9kaWZpZXJz
KTsNCit9Ow0KKw0KK1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tRXZl
bnQgPSBmdW5jdGlvbihrZXlib2FyZEV2ZW50KSB7DQorICAgIHZhciBtb2RpZmllcnMgPSBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTk9ORTsNCisgICAgaWYgKGtleWJv
YXJkRXZlbnQuc2hpZnRLZXkpDQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLlNISUZUOw0KKyAgICBpZiAoa2V5Ym9hcmRFdmVudC5j
dHJsS2V5KQ0KKyAgICAgICAgbW9kaWZpZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0Lk1vZGlmaWVycy5DVFJMOw0KKyAgICBpZiAoa2V5Ym9hcmRFdmVudC5hbHRLZXkpDQorICAg
ICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJz
LkFMVDsNCisgICAgaWYgKGtleWJvYXJkRXZlbnQubWV0YUtleSkNCisgICAgICAgIG1vZGlmaWVy
cyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTUVUQTsNCisgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1v
ZGlmaWVyc18oa2V5Ym9hcmRFdmVudC5rZXlDb2RlLCBtb2RpZmllcnMpOw0KK307DQorDQorV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleUZyb21Db2RlQW5kTW9kaWZpZXJzXyA9
IGZ1bmN0aW9uKGtleUNvZGUsIG1vZGlmaWVycykgew0KKyAgICByZXR1cm4gKGtleUNvZGUgJiAy
NTUpIHwgKG1vZGlmaWVycyA8PCA4KTsNCit9Ow0KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qcwkocmV2aXNpb24gNDUyNTApCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiAr
MTYzLDIxIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0
aGlzLl9icmVha3BvaW50c1VSTE1hcCA9IHt9OwogCisgICAgdGhpcy5zaG9ydGN1dHNfID0ge307
CisKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtl
S2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkY1KTsKKyAgICB0aGlz
LnNob3J0Y3V0c19bc2hvcnRjdXRdID0gdGhpcy5wYXVzZUJ1dHRvbi5jbGljay5iaW5kKHRoaXMu
cGF1c2VCdXR0b24pOworICAgIAorICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29k
ZXMuRjEwKTsKKyAgICB0aGlzLnNob3J0Y3V0c19bc2hvcnRjdXRdID0gdGhpcy5zdGVwT3ZlckJ1
dHRvbi5jbGljay5iaW5kKHRoaXMuc3RlcE92ZXJCdXR0b24pOworCisgICAgdmFyIHNob3J0Y3V0
ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleShXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXlDb2Rlcy5GMTEpOworICAgIHRoaXMuc2hvcnRjdXRzX1tzaG9ydGN1
dF0gPSB0aGlzLnN0ZXBJbnRvQnV0dG9uLmNsaWNrLmJpbmQodGhpcy5zdGVwSW50b0J1dHRvbik7
CisKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtl
S2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkYxMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5TSElGVCk7CisgICAgdGhpcy5zaG9ydGN1
dHNfW3Nob3J0Y3V0XSA9IHRoaXMuc3RlcE91dEJ1dHRvbi5jbGljay5iaW5kKHRoaXMuc3RlcE91
dEJ1dHRvbik7CisKICAgICB0aGlzLnJlc2V0KCk7CiB9CiAKQEAgLTQ4Niw2ICs1MDEsMTggQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3No
b3dTY3JpcHRPclJlc291cmNlKCh2aWV3LnJlc291cmNlIHx8IHZpZXcuc2NyaXB0KSk7CiAgICAg
fSwKIAorICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkgeworICAgICAgdmFyIHNo
b3J0Y3V0ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleUZyb21FdmVudChl
dmVudCk7CisgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuc2hvcnRjdXRzX1tzaG9ydGN1dF07Cisg
ICAgICBpZiAoaGFuZGxlcikgeworICAgICAgICBoYW5kbGVyKGV2ZW50KTsKKyAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CisgICAg
ICB9IGVsc2UgeworICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxsc3RhY2suaGFuZGxlS2V5
RXZlbnQoZXZlbnQpOworICAgICAgfQorICAgIH0sCisKICAgICBzY3JpcHRWaWV3Rm9yU2NyaXB0
OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewogICAgICAgICBpZiAoIXNjcmlwdCkKSW5kZXg6IFdl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwJKHJldmlzaW9uIDQ1MjUw
KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE8KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0cmVlb3V0
bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iaW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJPYmplY3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IktleWJvYXJkU2hvcnRjdXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRQcm9tcHQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBsYWNhcmQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlZpZXcuanMiPjwv
c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31922</attachid>
            <date>2009-06-26 02:10:31 -0700</date>
            <delta_ts>2009-06-26 05:29:41 -0700</delta_ts>
            <desc>Patch adding debugger and call stack navigation shortcuts.</desc>
            <filename>debugger-shortcuts-3.patch</filename>
            <type>text/plain</type>
            <size>11673</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTI1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDYtMjYgIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIHN1cHBvcnRlZCBrZXlib2FyZCBzaG9ydGN1dHMgaW4gU2NyaXB0cyBEZWJ1Z2dlcjoKKyAg
ICAgICAgRjUgLSBjb250aW51ZQorICAgICAgICBGMTAgLSBzdGVwIG92ZXIKKyAgICAgICAgRjEx
IC0gc3RlcCBpbnRvCisgICAgICAgIFNoaWZ0K0YxMSAtIHN0ZXAgb3V0CisKKyAgICAgICAgLSBh
ZGRlZCBjYWxsIHN0YWNrIG5hdmlnYXRpb24gc2hvcnRjdXRzOgorICAgICAgICBDdHJsKy4gLSBu
ZXh0IGNhbGwgZnJhbWUKKyAgICAgICAgQ3RybCssIC0gcHJldmlvdXNlIGNhbGwgZnJhbWUKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDkKKwor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5oYW5kbGVLZXlFdmVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9z
ZWxlY3ROZXh0Q2FsbEZyYW1lT25TdGFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0
YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RQcmV2aW91c0NhbGxGcmFtZU9uU3RhY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5f
c2VsZWN0ZWRQbGFjYXJkQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNr
U2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RlZENhbGxGcmFtZUluZGV4KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQubWFrZUtleSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18pOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZS5oYW5kbGVLZXlFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbDoKKwogMjAwOS0wNi0yNiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJv
c0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5l
LmpzCShyZXZpc2lvbiA0NTI1MCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxs
U3RhY2tTaWRlYmFyUGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTYgQEAKIFdl
Ykluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJ
bnNwZWN0b3IuU2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNh
bGwgU3RhY2siKSk7CisgICAgCisgICAgdGhpcy5zaG9ydGN1dHNfID0ge307CisKKyAgICB2YXIg
c2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLlBFUklPRCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5DVFJMKTsKKyAgICB0aGlzLnNob3J0Y3V0c19bc2hvcnRj
dXRdID0gdGhpcy5fc2VsZWN0TmV4dENhbGxGcmFtZU9uU3RhY2suYmluZCh0aGlzKTsKKworICAg
IHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuQ09NTUEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuQ1RSTCk7CisgICAgdGhpcy5zaG9ydGN1dHNfW3No
b3J0Y3V0XSA9IHRoaXMuX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjay5iaW5kKHRoaXMp
OwogfQogCiBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewpA
QCAtMTAwLDYgKzExMCw0OSBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJv
dG90CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjYWxsIGZyYW1lIHNl
bGVjdGVkIik7CiAgICAgfSwKIAorICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkg
eworICAgICAgdmFyIHNob3J0Y3V0ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFr
ZUtleUZyb21FdmVudChldmVudCk7CisgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuc2hvcnRjdXRz
X1tzaG9ydGN1dF07CisgICAgICBpZiAoaGFuZGxlcikgeworICAgICAgICBoYW5kbGVyKGV2ZW50
KTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuaGFuZGxl
ZCA9IHRydWU7CisgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfc2VsZWN0TmV4dENhbGxGcmFt
ZU9uU3RhY2s6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9zZWxlY3Rl
ZENhbGxGcmFtZUluZGV4KCk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRQbGFjYXJkQnlJbmRleChpbmRleCArIDEp
OworICAgIH0sCisgICAgCisgICAgX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjazogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5k
ZXgoKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB0aGlzLl9zZWxlY3RlZFBsYWNhcmRCeUluZGV4KGluZGV4IC0gMSk7CisgICAgfSwKKyAg
ICAKKyAgICBfc2VsZWN0ZWRQbGFjYXJkQnlJbmRleDogZnVuY3Rpb24oaW5kZXgpIHsKKyAgICAg
ICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLnBsYWNhcmRzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHBsYWNhcmQgPSB0aGlzLnBsYWNhcmRzW2luZGV4
XTsKKyAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxGcmFtZSA9IHBsYWNhcmQuY2FsbEZyYW1lCisg
ICAgfSwKKworICAgIF9zZWxlY3RlZENhbGxGcmFtZUluZGV4OiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9zZWxlY3RlZENhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAtMTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBsYWNhcmRzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICB2YXIgcGxhY2FyZCA9IHRoaXMucGxhY2FyZHNbaV07CisgICAgICAgICAg
ICBpZiAocGxhY2FyZC5jYWxsRnJhbWUgPT09IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIC0xOworICAgIH0sCisKICAgICBfcGxhY2FyZFNlbGVjdGVkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBwbGFjYXJkRWxlbWVudCA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJwbGFjYXJkIik7CkluZGV4OiBXZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqDQorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gDQor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
DQorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YNCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIA0K
KyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkNCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEDQorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQ0KKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkNCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUw0KKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsNCisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQNCisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVA0KKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICovDQorDQor
DQorV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQgPSBmdW5jdGlvbigpIHsNCit9Ow0KKw0K
K1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycyA9IHsNCisgICAgTk9ORTog
MCwNCisgICAgU0hJRlQ6IDEsDQorICAgIENUUkw6IDIsDQorICAgIEFMVDogNCwNCisgICAgTUVU
QTogOA0KK307DQorDQorV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMgPSB7
DQorICAgIEVTQzogMjcsDQorICAgIFNQQUNFOiAzMiwNCisgICAgUEFHRV9VUDogMzMsICAgICAv
LyBhbHNvIE5VTV9OT1JUSF9FQVNUDQorICAgIFBBR0VfRE9XTjogMzQsICAgLy8gYWxzbyBOVU1f
U09VVEhfRUFTVA0KKyAgICBFTkQ6IDM1LCAgICAgICAgIC8vIGFsc28gTlVNX1NPVVRIX1dFU1QN
CisgICAgSE9NRTogMzYsICAgICAgICAvLyBhbHNvIE5VTV9OT1JUSF9XRVNUDQorICAgIExFRlQ6
IDM3LCAgICAgICAgLy8gYWxzbyBOVU1fV0VTVA0KKyAgICBVUDogMzgsICAgICAgICAgIC8vIGFs
c28gTlVNX05PUlRIDQorICAgIFJJR0hUOiAzOSwgICAgICAgLy8gYWxzbyBOVU1fRUFTVA0KKyAg
ICBET1dOOiA0MCwgICAgICAgIC8vIGFsc28gTlVNX1NPVVRIDQorICAgIEYxOiAxMTIsDQorICAg
IEYyOiAxMTMsDQorICAgIEYzOiAxMTQsDQorICAgIEY0OiAxMTUsDQorICAgIEY1OiAxMTYsDQor
ICAgIEY2OiAxMTcsDQorICAgIEY3OiAxMTgsDQorICAgIEY4OiAxMTksDQorICAgIEY5OiAxMjAs
DQorICAgIEYxMDogMTIxLA0KKyAgICBGMTE6IDEyMiwNCisgICAgRjEyOiAxMjMsDQorICAgIFNF
TUlDT0xPTjogMTg2LA0KKyAgICBDT01NQTogMTg4LA0KKyAgICBQRVJJT0Q6IDE5MCwNCisgICAg
U0xBU0g6IDE5MSwNCisgICAgQVBPU1RST1BIRTogMTkyLA0KKyAgICBTSU5HTEVfUVVPVEU6IDIy
MiwNCit9Ow0KKw0KK1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkgPSBmdW5j
dGlvbihrZXlDb2RlLCBvcHRfbW9kaWZpZXJzKSB7DQorICAgIHZhciBtb2RpZmllcnMgPSBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTk9ORTsNCisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsNCisgICAgICAgIG1vZGlmaWVycyB8
PSBhcmd1bWVudHNbaV07DQorICAgIH0NCisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18oa2V5Q29kZSwgbW9kaWZpZXJz
KTsNCit9Ow0KKw0KK1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tRXZl
bnQgPSBmdW5jdGlvbihrZXlib2FyZEV2ZW50KSB7DQorICAgIHZhciBtb2RpZmllcnMgPSBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTk9ORTsNCisgICAgaWYgKGtleWJv
YXJkRXZlbnQuc2hpZnRLZXkpDQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLlNISUZUOw0KKyAgICBpZiAoa2V5Ym9hcmRFdmVudC5j
dHJsS2V5KQ0KKyAgICAgICAgbW9kaWZpZXJzIHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0Lk1vZGlmaWVycy5DVFJMOw0KKyAgICBpZiAoa2V5Ym9hcmRFdmVudC5hbHRLZXkpDQorICAg
ICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJz
LkFMVDsNCisgICAgaWYgKGtleWJvYXJkRXZlbnQubWV0YUtleSkNCisgICAgICAgIG1vZGlmaWVy
cyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTUVUQTsNCisgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1v
ZGlmaWVyc18oa2V5Ym9hcmRFdmVudC5rZXlDb2RlLCBtb2RpZmllcnMpOw0KK307DQorDQorV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleUZyb21Db2RlQW5kTW9kaWZpZXJzXyA9
IGZ1bmN0aW9uKGtleUNvZGUsIG1vZGlmaWVycykgew0KKyAgICByZXR1cm4gKGtleUNvZGUgJiAy
NTUpIHwgKG1vZGlmaWVycyA8PCA4KTsNCit9Ow0KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qcwkocmV2aXNpb24gNDUyNTApCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiAr
MTYzLDIxIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0
aGlzLl9icmVha3BvaW50c1VSTE1hcCA9IHt9OwogCisgICAgdGhpcy5zaG9ydGN1dHNfID0ge307
CisKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtl
S2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkY1KTsKKyAgICB0aGlz
LnNob3J0Y3V0c19bc2hvcnRjdXRdID0gdGhpcy5wYXVzZUJ1dHRvbi5jbGljay5iaW5kKHRoaXMu
cGF1c2VCdXR0b24pOworICAgIAorICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29k
ZXMuRjEwKTsKKyAgICB0aGlzLnNob3J0Y3V0c19bc2hvcnRjdXRdID0gdGhpcy5zdGVwT3ZlckJ1
dHRvbi5jbGljay5iaW5kKHRoaXMuc3RlcE92ZXJCdXR0b24pOworCisgICAgdmFyIHNob3J0Y3V0
ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleShXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXlDb2Rlcy5GMTEpOworICAgIHRoaXMuc2hvcnRjdXRzX1tzaG9ydGN1
dF0gPSB0aGlzLnN0ZXBJbnRvQnV0dG9uLmNsaWNrLmJpbmQodGhpcy5zdGVwSW50b0J1dHRvbik7
CisKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtl
S2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkYxMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5TSElGVCk7CisgICAgdGhpcy5zaG9ydGN1
dHNfW3Nob3J0Y3V0XSA9IHRoaXMuc3RlcE91dEJ1dHRvbi5jbGljay5iaW5kKHRoaXMuc3RlcE91
dEJ1dHRvbik7CisKICAgICB0aGlzLnJlc2V0KCk7CiB9CiAKQEAgLTQ4Niw2ICs1MDEsMTggQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3No
b3dTY3JpcHRPclJlc291cmNlKCh2aWV3LnJlc291cmNlIHx8IHZpZXcuc2NyaXB0KSk7CiAgICAg
fSwKIAorICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkgeworICAgICAgdmFyIHNo
b3J0Y3V0ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleUZyb21FdmVudChl
dmVudCk7CisgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuc2hvcnRjdXRzX1tzaG9ydGN1dF07Cisg
ICAgICBpZiAoaGFuZGxlcikgeworICAgICAgICBoYW5kbGVyKGV2ZW50KTsKKyAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CisgICAg
ICB9IGVsc2UgeworICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxsc3RhY2suaGFuZGxlS2V5
RXZlbnQoZXZlbnQpOworICAgICAgfQorICAgIH0sCisKICAgICBzY3JpcHRWaWV3Rm9yU2NyaXB0
OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewogICAgICAgICBpZiAoIXNjcmlwdCkKSW5kZXg6IFdl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCShyZXZpc2lvbiA0NTI1MCkKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCSh3b3JraW5nIGNvcHkpCkBAIC0x
OSw2ICsxOSw3IEBACiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+SW1h
Z2VWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPmluc3BlY3Rvci5qczwvZmlsZT4KKyAgICA8Zmls
ZT5LZXlib2FyZFNob3J0Y3V0LmpzPC9maWxlPgogICAgIDxmaWxlPk1ldHJpY3NTaWRlYmFyUGFu
ZS5qczwvZmlsZT4KICAgICA8ZmlsZT5PYmplY3QuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2JqZWN0
UHJvcGVydGllc1NlY3Rpb24uanM8L2ZpbGU+CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sCShyZXZpc2lvbiA0NTI1MCkKKysrIFdlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPCiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idHJlZW91dGxpbmUuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imluc3BlY3Rvci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iT2JqZWN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJLZXli
b2FyZFNob3J0Y3V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJUZXh0UHJvbXB0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJQbGFjYXJkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJWaWV3LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32002</attachid>
            <date>2009-06-29 02:38:17 -0700</date>
            <delta_ts>2009-06-30 02:23:05 -0700</delta_ts>
            <desc>Add Firebug-compatible debugger and stack navigation shortcuts.</desc>
            <filename>scripts-shortcuts.patch</filename>
            <type>text/plain</type>
            <size>12772</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTMzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDYtMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBzdXBwb3J0ZWQga2V5Ym9hcmQgc2hvcnRjdXRzIGNvbXBhdGlibGUgd2l0aCBGaXJlYnVn
IGluIFNjcmlwdHMgRGVidWdnZXI6CisgICAgICAgIEY1LCBDdHJsKy8gKHdpbixsaW4pLCBDb21t
YW5kKy8gKG1hYykgLSBjb250aW51ZQorICAgICAgICBGMTAsIEN0cmwrJyAod2luLCBsaW4pLCBD
b21tYW5kKycgKG1hYykgLSBzdGVwIG92ZXIKKyAgICAgICAgRjExLCBDdHJsKzsgKHdpbiwgbGlu
KSwgQ29tbWFuZCs7IChtYWMpIC0gc3RlcCBpbnRvCisgICAgICAgIFNoaWZ0K0YxMSwgQ3RybCtT
aGlmdCs7ICh3aW4sIGxpbiksIENvbW1hbmQrU2hpZnQrOyAobWFjKSAtIHN0ZXAgb3V0CisKKyAg
ICAgICAgLSBhZGRlZCBjYWxsIHN0YWNrIG5hdmlnYXRpb24gc2hvcnRjdXRzOgorICAgICAgICBD
dHJsKy4gLSBuZXh0IGNhbGwgZnJhbWUKKyAgICAgICAgQ3RybCssIC0gcHJldmlvdXNlIGNhbGwg
ZnJhbWUKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4NDkKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBh
bmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5oYW5kbGVL
ZXlFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJv
dG90eXBlLl9zZWxlY3ROZXh0Q2FsbEZyYW1lT25TdGFjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RQcmV2aW91c0NhbGxGcmFt
ZU9uU3RhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnBy
b3RvdHlwZS5fc2VsZWN0ZWRQbGFjYXJkQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RlZENhbGxGcmFtZUluZGV4KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanM6IEFkZGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18pOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZS5oYW5kbGVLZXlFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWw6CisKIDIwMDktMDYtMjYgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkZWQgU3BlZWNoIHN1Ym1lbnUgdG8gY29udGV4dCBtZW51IG9uIE1hYyB3
aGVuIHRoZXJlJ3MgYSBub24tZWRpdGFibGUgc2VsZWN0aW9uCkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCShyZXZpc2lv
biA0NTMzNSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFy
UGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTYgQEAKIFdlYkluc3BlY3Rvci5D
YWxsU3RhY2tTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuU2lk
ZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGwgU3RhY2siKSk7
CisgICAgCisgICAgdGhpcy5zaG9ydGN1dHNfID0ge307CisKKyAgICB2YXIgc2hvcnRjdXQgPSBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0LktleUNvZGVzLlBFUklPRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVycy5DVFJMKTsKKyAgICB0aGlzLnNob3J0Y3V0c19bc2hvcnRjdXRdID0gdGhpcy5f
c2VsZWN0TmV4dENhbGxGcmFtZU9uU3RhY2suYmluZCh0aGlzKTsKKworICAgIHZhciBzaG9ydGN1
dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuQ09NTUEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9y
dGN1dC5Nb2RpZmllcnMuQ1RSTCk7CisgICAgdGhpcy5zaG9ydGN1dHNfW3Nob3J0Y3V0XSA9IHRo
aXMuX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjay5iaW5kKHRoaXMpOwogfQogCiBXZWJJ
bnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewpAQCAtMTAwLDYgKzEx
MCw0OSBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjYWxsIGZyYW1lIHNlbGVjdGVkIik7CiAg
ICAgfSwKIAorICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkgeworICAgICAgdmFy
IHNob3J0Y3V0ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleUZyb21FdmVu
dChldmVudCk7CisgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuc2hvcnRjdXRzX1tzaG9ydGN1dF07
CisgICAgICBpZiAoaGFuZGxlcikgeworICAgICAgICBoYW5kbGVyKGV2ZW50KTsKKyAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7Cisg
ICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfc2VsZWN0TmV4dENhbGxGcmFtZU9uU3RhY2s6IGZ1
bmN0aW9uKCkgeworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9zZWxlY3RlZENhbGxGcmFtZUlu
ZGV4KCk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRQbGFjYXJkQnlJbmRleChpbmRleCArIDEpOworICAgIH0sCisg
ICAgCisgICAgX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjazogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5kZXgoKTsKKyAgICAg
ICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9z
ZWxlY3RlZFBsYWNhcmRCeUluZGV4KGluZGV4IC0gMSk7CisgICAgfSwKKyAgICAKKyAgICBfc2Vs
ZWN0ZWRQbGFjYXJkQnlJbmRleDogZnVuY3Rpb24oaW5kZXgpIHsKKyAgICAgICAgaWYgKGluZGV4
IDwgMCB8fCBpbmRleCA+PSB0aGlzLnBsYWNhcmRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdmFyIHBsYWNhcmQgPSB0aGlzLnBsYWNhcmRzW2luZGV4XTsKKyAgICAgICAg
dGhpcy5zZWxlY3RlZENhbGxGcmFtZSA9IHBsYWNhcmQuY2FsbEZyYW1lCisgICAgfSwKKworICAg
IF9zZWxlY3RlZENhbGxGcmFtZUluZGV4OiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9zZWxlY3RlZENhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBsYWNhcmRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICB2YXIgcGxhY2FyZCA9IHRoaXMucGxhY2FyZHNbaV07CisgICAgICAgICAgICBpZiAocGxhY2Fy
ZC5jYWxsRnJhbWUgPT09IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0x
OworICAgIH0sCisKICAgICBfcGxhY2FyZFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBwbGFjYXJkRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2Rl
T3JTZWxmV2l0aENsYXNzKCJwbGFjYXJkIik7CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKworV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQgPSBmdW5jdGlv
bigpIHsKK307CisKK1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycyA9IHsK
KyAgICBOT05FOiAwLAorICAgIFNISUZUOiAxLAorICAgIENUUkw6IDIsCisgICAgQUxUOiA0LAor
ICAgIE1FVEE6IDgKK307CisKK1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVz
ID0geworICAgIEVTQzogMjcsCisgICAgU1BBQ0U6IDMyLAorICAgIFBBR0VfVVA6IDMzLCAgICAg
Ly8gYWxzbyBOVU1fTk9SVEhfRUFTVAorICAgIFBBR0VfRE9XTjogMzQsICAgLy8gYWxzbyBOVU1f
U09VVEhfRUFTVAorICAgIEVORDogMzUsICAgICAgICAgLy8gYWxzbyBOVU1fU09VVEhfV0VTVAor
ICAgIEhPTUU6IDM2LCAgICAgICAgLy8gYWxzbyBOVU1fTk9SVEhfV0VTVAorICAgIExFRlQ6IDM3
LCAgICAgICAgLy8gYWxzbyBOVU1fV0VTVAorICAgIFVQOiAzOCwgICAgICAgICAgLy8gYWxzbyBO
VU1fTk9SVEgKKyAgICBSSUdIVDogMzksICAgICAgIC8vIGFsc28gTlVNX0VBU1QKKyAgICBET1dO
OiA0MCwgICAgICAgIC8vIGFsc28gTlVNX1NPVVRICisgICAgRjE6IDExMiwKKyAgICBGMjogMTEz
LAorICAgIEYzOiAxMTQsCisgICAgRjQ6IDExNSwKKyAgICBGNTogMTE2LAorICAgIEY2OiAxMTcs
CisgICAgRjc6IDExOCwKKyAgICBGODogMTE5LAorICAgIEY5OiAxMjAsCisgICAgRjEwOiAxMjEs
CisgICAgRjExOiAxMjIsCisgICAgRjEyOiAxMjMsCisgICAgU0VNSUNPTE9OOiAxODYsCisgICAg
Q09NTUE6IDE4OCwKKyAgICBQRVJJT0Q6IDE5MCwKKyAgICBTTEFTSDogMTkxLAorICAgIEFQT1NU
Uk9QSEU6IDE5MiwKKyAgICBTSU5HTEVfUVVPVEU6IDIyMiwKK307CisKK1dlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkgPSBmdW5jdGlvbihrZXlDb2RlLCBvcHRfbW9kaWZpZXJz
KSB7CisgICAgdmFyIG1vZGlmaWVycyA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVycy5OT05FOworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIG1vZGlmaWVycyB8PSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJvbUNvZGVBbmRNb2Rp
ZmllcnNfKGtleUNvZGUsIG1vZGlmaWVycyk7Cit9OworCitXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50ID0gZnVuY3Rpb24oa2V5Ym9hcmRFdmVudCkgeworICAg
IHZhciBtb2RpZmllcnMgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMu
Tk9ORTsKKyAgICBpZiAoa2V5Ym9hcmRFdmVudC5zaGlmdEtleSkKKyAgICAgICAgbW9kaWZpZXJz
IHw9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5TSElGVDsKKyAgICBp
ZiAoa2V5Ym9hcmRFdmVudC5jdHJsS2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLkNUUkw7CisgICAgaWYgKGtleWJvYXJkRXZl
bnQuYWx0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuTW9kaWZpZXJzLkFMVDsKKyAgICBpZiAoa2V5Ym9hcmRFdmVudC5tZXRhS2V5KQorICAg
ICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJz
Lk1FVEE7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlG
cm9tQ29kZUFuZE1vZGlmaWVyc18oa2V5Ym9hcmRFdmVudC5rZXlDb2RlLCBtb2RpZmllcnMpOwor
fTsKKworV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleUZyb21Db2RlQW5kTW9k
aWZpZXJzXyA9IGZ1bmN0aW9uKGtleUNvZGUsIG1vZGlmaWVycykgeworICAgIHJldHVybiAoa2V5
Q29kZSAmIDI1NSkgfCAobW9kaWZpZXJzIDw8IDgpOworfTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwkocmV2aXNpb24gNDUzMzUpCisrKyBXZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjMsNiArMTYzLDM5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigp
CiAKICAgICB0aGlzLl9icmVha3BvaW50c1VSTE1hcCA9IHt9OwogCisgICAgdGhpcy5zaG9ydGN1
dHNfID0ge307CisKKyAgICB2YXIgaXNNYWMgPSBJbnNwZWN0b3JDb250cm9sbGVyLnBsYXRmb3Jt
KCkuaW5kZXhPZigibWFjLSIpID09PSAwOw0KKyAgICB2YXIgcGxhdGZvcm1TcGVjaWZpY01vZGlm
aWVyID0gaXNNYWMgPyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTUVU
QSA6IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5DVFJMOw0KKworICAg
IC8vIENvbnRpbnVlLgorICAgIHZhciBoYW5kbGVyID0gdGhpcy5wYXVzZUJ1dHRvbi5jbGljay5i
aW5kKHRoaXMucGF1c2VCdXR0b24pOworICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5
Q29kZXMuRjUpOworICAgIHRoaXMuc2hvcnRjdXRzX1tzaG9ydGN1dF0gPSBoYW5kbGVyOworICAg
IHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuU0xBU0gsIHBsYXRmb3JtU3BlY2lm
aWNNb2RpZmllcik7CisgICAgdGhpcy5zaG9ydGN1dHNfW3Nob3J0Y3V0XSA9IGhhbmRsZXI7CisK
KyAgICAvLyBTdGVwIG92ZXIuCisgICAgdmFyIGhhbmRsZXIgPSB0aGlzLnN0ZXBPdmVyQnV0dG9u
LmNsaWNrLmJpbmQodGhpcy5zdGVwT3ZlckJ1dHRvbik7CisgICAgdmFyIHNob3J0Y3V0ID0gV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleShXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5LZXlDb2Rlcy5GMTApOworICAgIHRoaXMuc2hvcnRjdXRzX1tzaG9ydGN1dF0gPSBo
YW5kbGVyOworICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuU0lOR0xFX1FV
T1RFLCBwbGF0Zm9ybVNwZWNpZmljTW9kaWZpZXIpOworICAgIHRoaXMuc2hvcnRjdXRzX1tzaG9y
dGN1dF0gPSBoYW5kbGVyOworCisgICAgLy8gU3RlcCBpbnRvLgorICAgIHZhciBoYW5kbGVyID0g
dGhpcy5zdGVwSW50b0J1dHRvbi5jbGljay5iaW5kKHRoaXMuc3RlcEludG9CdXR0b24pOworICAg
IHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuRjExKTsKKyAgICB0aGlzLnNob3J0
Y3V0c19bc2hvcnRjdXRdID0gaGFuZGxlcjsKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
LktleUNvZGVzLlNFTUlDT0xPTiwgcGxhdGZvcm1TcGVjaWZpY01vZGlmaWVyKTsKKyAgICB0aGlz
LnNob3J0Y3V0c19bc2hvcnRjdXRdID0gaGFuZGxlcjsKKworICAgIC8vIFN0ZXAgb3V0LgorICAg
IHZhciBoYW5kbGVyID0gdGhpcy5zdGVwT3V0QnV0dG9uLmNsaWNrLmJpbmQodGhpcy5zdGVwT3V0
QnV0dG9uKTsKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkYxMSwgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLlNISUZUKTsKKyAgICB0aGlzLnNo
b3J0Y3V0c19bc2hvcnRjdXRdID0gaGFuZGxlcjsKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0LktleUNvZGVzLlNFTUlDT0xPTiwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXJzLlNISUZULCBwbGF0Zm9ybVNwZWNpZmljTW9kaWZpZXIpOworICAgIHRoaXMuc2hvcnRj
dXRzX1tzaG9ydGN1dF0gPSBoYW5kbGVyOworCiAgICAgdGhpcy5yZXNldCgpOwogfQogCkBAIC00
ODYsNiArNTE5LDE4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZSgodmlldy5yZXNvdXJjZSB8fCB2aWV3
LnNjcmlwdCkpOwogICAgIH0sCiAKKyAgICBoYW5kbGVLZXlFdmVudDogZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1h
a2VLZXlGcm9tRXZlbnQoZXZlbnQpOworICAgICAgdmFyIGhhbmRsZXIgPSB0aGlzLnNob3J0Y3V0
c19bc2hvcnRjdXRdOworICAgICAgaWYgKGhhbmRsZXIpIHsKKyAgICAgICAgaGFuZGxlcihldmVu
dCk7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGV2ZW50LmhhbmRs
ZWQgPSB0cnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2Fs
bHN0YWNrLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKKyAgICAgIH0KKyAgICB9LAorCiAgICAgc2Ny
aXB0Vmlld0ZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKICAgICAgICAgaWYgKCFz
Y3JpcHQpCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwkocmV2aXNp
b24gNDUzMzUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwkod29y
a2luZyBjb3B5KQpAQCAtMTksNiArMTksNyBAQAogICAgIDxmaWxlPkZvbnRWaWV3LmpzPC9maWxl
PgogICAgIDxmaWxlPkltYWdlVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5pbnNwZWN0b3IuanM8
L2ZpbGU+CisgICAgPGZpbGU+S2V5Ym9hcmRTaG9ydGN1dC5qczwvZmlsZT4KICAgICA8ZmlsZT5N
ZXRyaWNzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2JqZWN0LmpzPC9maWxlPgog
ICAgIDxmaWxlPk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzPC9maWxlPgpJbmRleDogV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAkocmV2aXNpb24gNDUzMzUpCisr
KyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQTwogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRyZWVvdXRsaW5l
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJp
bnNwZWN0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ik9iamVjdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iS2V5Ym9hcmRTaG9ydGN1dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGV4dFByb21wdC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGxhY2FyZC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVmlldy5qcyI+PC9zY3Jp
cHQ+Cg==
</data>
<flag name="review"
          id="16536"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32044</attachid>
            <date>2009-06-30 02:23:05 -0700</date>
            <delta_ts>2009-06-30 23:43:19 -0700</delta_ts>
            <desc>Previous patch with Timothy&apos;s comments addressed.</desc>
            <filename>scripts-shortcuts-2.patch</filename>
            <type>text/plain</type>
            <size>13343</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTMzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDYtMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBzdXBwb3J0ZWQga2V5Ym9hcmQgc2hvcnRjdXRzIGNvbXBhdGlibGUgd2l0aCBGaXJlYnVn
IGluIFNjcmlwdHMgRGVidWdnZXI6CisgICAgICAgIEY1LCBDdHJsKy8gKHdpbixsaW4pLCBDb21t
YW5kKy8gKG1hYykgLSBjb250aW51ZQorICAgICAgICBGMTAsIEN0cmwrJyAod2luLCBsaW4pLCBD
b21tYW5kKycgKG1hYykgLSBzdGVwIG92ZXIKKyAgICAgICAgRjExLCBDdHJsKzsgKHdpbiwgbGlu
KSwgQ29tbWFuZCs7IChtYWMpIC0gc3RlcCBpbnRvCisgICAgICAgIFNoaWZ0K0YxMSwgQ3RybCtT
aGlmdCs7ICh3aW4sIGxpbiksIENvbW1hbmQrU2hpZnQrOyAobWFjKSAtIHN0ZXAgb3V0CisKKyAg
ICAgICAgLSBhZGRlZCBjYWxsIHN0YWNrIG5hdmlnYXRpb24gc2hvcnRjdXRzOgorICAgICAgICBD
dHJsKy4gLSBuZXh0IGNhbGwgZnJhbWUKKyAgICAgICAgQ3RybCssIC0gcHJldmlvdXNlIGNhbGwg
ZnJhbWUKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4NDkKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBh
bmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5oYW5kbGVL
ZXlFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJv
dG90eXBlLl9zZWxlY3ROZXh0Q2FsbEZyYW1lT25TdGFjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RQcmV2aW91c0NhbGxGcmFt
ZU9uU3RhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnBy
b3RvdHlwZS5fc2VsZWN0ZWRQbGFjYXJkQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RlZENhbGxGcmFtZUluZGV4KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanM6IEFkZGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18pOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZS5oYW5kbGVLZXlFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWw6CisKIDIwMDktMDYtMjYgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkZWQgU3BlZWNoIHN1Ym1lbnUgdG8gY29udGV4dCBtZW51IG9uIE1hYyB3
aGVuIHRoZXJlJ3MgYSBub24tZWRpdGFibGUgc2VsZWN0aW9uCkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCShyZXZpc2lv
biA0NTM2NykKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFy
UGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTYgQEAKIFdlYkluc3BlY3Rvci5D
YWxsU3RhY2tTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuU2lk
ZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGwgU3RhY2siKSk7
CisgICAgCisgICAgdGhpcy5fc2hvcnRjdXRzID0ge307CisKKyAgICB2YXIgc2hvcnRjdXQgPSBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0LktleUNvZGVzLlBlcmlvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVycy5DdHJsKTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdID0gdGhpcy5f
c2VsZWN0TmV4dENhbGxGcmFtZU9uU3RhY2suYmluZCh0aGlzKTsKKworICAgIHZhciBzaG9ydGN1
dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuQ29tbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9y
dGN1dC5Nb2RpZmllcnMuQ3RybCk7CisgICAgdGhpcy5fc2hvcnRjdXRzW3Nob3J0Y3V0XSA9IHRo
aXMuX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjay5iaW5kKHRoaXMpOwogfQogCiBXZWJJ
bnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewpAQCAtMTAwLDYgKzEx
MCw1MyBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjYWxsIGZyYW1lIHNlbGVjdGVkIik7CiAg
ICAgfSwKIAorICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkKKwl7CisgICAgICAg
IHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9t
RXZlbnQoZXZlbnQpOworICAgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuX3Nob3J0Y3V0c1tzaG9y
dGN1dF07CisgICAgICAgIGlmIChoYW5kbGVyKSB7CisgICAgICAgICAgICBoYW5kbGVyKGV2ZW50
KTsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICBldmVu
dC5oYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfc2VsZWN0TmV4dENh
bGxGcmFtZU9uU3RhY2s6IGZ1bmN0aW9uKCkKKwl7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMu
X3NlbGVjdGVkQ2FsbEZyYW1lSW5kZXgoKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9zZWxlY3RlZFBsYWNhcmRCeUluZGV4KGlu
ZGV4ICsgMSk7CisgICAgfSwKKworICAgIF9zZWxlY3RQcmV2aW91c0NhbGxGcmFtZU9uU3RhY2s6
IGZ1bmN0aW9uKCkKKwl7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlbGVjdGVkQ2FsbEZy
YW1lSW5kZXgoKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB0aGlzLl9zZWxlY3RlZFBsYWNhcmRCeUluZGV4KGluZGV4IC0gMSk7CisgICAg
fSwKKworICAgIF9zZWxlY3RlZFBsYWNhcmRCeUluZGV4OiBmdW5jdGlvbihpbmRleCkKKwl7Cisg
ICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5wbGFjYXJkcy5sZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBwbGFjYXJkID0gdGhpcy5wbGFjYXJkc1tp
bmRleF07CisgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsRnJhbWUgPSBwbGFjYXJkLmNhbGxGcmFt
ZQorICAgIH0sCisKKyAgICBfc2VsZWN0ZWRDYWxsRnJhbWVJbmRleDogZnVuY3Rpb24oKQorCXsK
KyAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZENhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVy
biAtMTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBsYWNhcmRzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICB2YXIgcGxhY2FyZCA9IHRoaXMucGxhY2FyZHNbaV07CisgICAg
ICAgICAgICBpZiAocGxhY2FyZC5jYWxsRnJhbWUgPT09IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1l
KQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAt
MTsKKyAgICB9LAorCiAgICAgX3BsYWNhcmRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewogICAgICAgICB2YXIgcGxhY2FyZEVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9k
ZU9yU2VsZldpdGhDbGFzcygicGxhY2FyZCIpOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQgPSBmdW5jdGlv
bigpCit7Cit9OworCisvKioKKyAqIENvbnN0YW50cyBmb3IgZW5jb2RpbmcgbW9kaWZpZXIga2V5
IHNldCBhcyBhIGJpdCBtYXNrLgorICogQHNlZSAjX21ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVy
cworICovCitXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMgPSB7CisgICAg
Tm9uZTogMCwgICAvLyBDb25zdGFudCBmb3IgZW1wdHkgbW9kaWZpZXJzIHNldC4KKyAgICBTaGlm
dDogMSwKKyAgICBDdHJsOiAyLAorICAgIEFsdDogNCwKKyAgICBNZXRhOiA4ICAgIC8vIENvbW1h
bmQga2V5IG9uIE1hYywgV2luIGtleSBvbiBvdGhlciBwbGF0Zm9ybXMuCit9OworCitXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlDb2RlcyA9IHsKKyAgICBFc2M6IDI3LAorICAgIFNw
YWNlOiAzMiwKKyAgICBQYWdlVXA6IDMzLCAgICAgIC8vIGFsc28gTlVNX05PUlRIX0VBU1QKKyAg
ICBQYWdlRG93bjogMzQsICAgIC8vIGFsc28gTlVNX1NPVVRIX0VBU1QKKyAgICBFbmQ6IDM1LCAg
ICAgICAgIC8vIGFsc28gTlVNX1NPVVRIX1dFU1QKKyAgICBIb21lOiAzNiwgICAgICAgIC8vIGFs
c28gTlVNX05PUlRIX1dFU1QKKyAgICBMZWZ0OiAzNywgICAgICAgIC8vIGFsc28gTlVNX1dFU1QK
KyAgICBVcDogMzgsICAgICAgICAgIC8vIGFsc28gTlVNX05PUlRICisgICAgUmlnaHQ6IDM5LCAg
ICAgICAvLyBhbHNvIE5VTV9FQVNUCisgICAgRG93bjogNDAsICAgICAgICAvLyBhbHNvIE5VTV9T
T1VUSAorICAgIEYxOiAxMTIsCisgICAgRjI6IDExMywKKyAgICBGMzogMTE0LAorICAgIEY0OiAx
MTUsCisgICAgRjU6IDExNiwKKyAgICBGNjogMTE3LAorICAgIEY3OiAxMTgsCisgICAgRjg6IDEx
OSwKKyAgICBGOTogMTIwLAorICAgIEYxMDogMTIxLAorICAgIEYxMTogMTIyLAorICAgIEYxMjog
MTIzLAorICAgIFNlbWljb2xvbjogMTg2LCAgICAvLyA7CisgICAgQ29tbWE6IDE4OCwgICAgICAg
IC8vICwKKyAgICBQZXJpb2Q6IDE5MCwgICAgICAgLy8gLgorICAgIFNsYXNoOiAxOTEsICAgICAg
ICAvLyAvCisgICAgQXBvc3Ryb3BoZTogMTkyLCAgIC8vIGAKKyAgICBTaW5nbGVRdW90ZTogMjIy
LCAgLy8gJworfTsKKworLyoqCisgKiBDcmVhdGVzIGEgbnVtYmVyIGVuY29kaW5nIGtleUNvZGUg
aW4gdGhlIGxvd2VyIDggYml0cyBhbmQgbW9kaWZpZXJzIG1hc2sgaW4gdGhlIGhpZ2hlciA4IGJp
dHMuCisgKiBJdCBpcyB1c2VmdWxsIGZvciBtYXRjaGluZyBwcmVzc2VkIGtleXMuCisgKiBAcGFy
YW0ge251bWJlcn0ga2V5Q29kZSBDb2RlIG9mIHRoZSBrZXkuCisgKiBAcGFyYW0ge251bWJlcn0g
b3B0TW9kaWZpZXJzIE9wdGlvbmFsIGxpc3Qgb2YgbW9kaWZpZXJzIHBhc3NlZCBhcyBhZGRpdGlv
bmFsIHBhcmFtZXJ0ZXJzLgorICovCitXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtl
S2V5ID0gZnVuY3Rpb24oa2V5Q29kZSwgb3B0TW9kaWZpZXJzKQoreworICAgIHZhciBtb2RpZmll
cnMgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTm9uZTsKKyAgICBm
b3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAgbW9kaWZp
ZXJzIHw9IGFyZ3VtZW50c1tpXTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuX21ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVycyhrZXlDb2RlLCBtb2RpZmllcnMpOwor
fTsKKworV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleUZyb21FdmVudCA9IGZ1
bmN0aW9uKGtleWJvYXJkRXZlbnQpCit7CisgICAgdmFyIG1vZGlmaWVycyA9IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5Ob25lOworICAgIGlmIChrZXlib2FyZEV2ZW50
LnNoaWZ0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuTW9kaWZpZXJzLlNoaWZ0OworICAgIGlmIChrZXlib2FyZEV2ZW50LmN0cmxLZXkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
cnMuQ3RybDsKKyAgICBpZiAoa2V5Ym9hcmRFdmVudC5hbHRLZXkpCisgICAgICAgIG1vZGlmaWVy
cyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuQWx0OworICAgIGlm
IChrZXlib2FyZEV2ZW50Lm1ldGFLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTWV0YTsKKyAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuX21ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVycyhrZXlib2Fy
ZEV2ZW50LmtleUNvZGUsIG1vZGlmaWVycyk7Cit9OworCitXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5fbWFrZUtleUZyb21Db2RlQW5kTW9kaWZpZXJzID0gZnVuY3Rpb24oa2V5Q29kZSwg
bW9kaWZpZXJzKQoreworICAgIHJldHVybiAoa2V5Q29kZSAmIDI1NSkgfCAobW9kaWZpZXJzIDw8
IDgpOworfTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcwkocmV2aXNpb24gNDUzNjcpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDM5IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLl9icmVha3BvaW50c1VS
TE1hcCA9IHt9OwogCisgICAgdGhpcy5fc2hvcnRjdXRzID0ge307CisKKyAgICB2YXIgaXNNYWMg
PSBJbnNwZWN0b3JDb250cm9sbGVyLnBsYXRmb3JtKCkuaW5kZXhPZigibWFjLSIpID09PSAwOwor
ICAgIHZhciBwbGF0Zm9ybVNwZWNpZmljTW9kaWZpZXIgPSBpc01hYyA/IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5NZXRhIDogV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuTW9kaWZpZXJzLkN0cmw7CisKKyAgICAvLyBDb250aW51ZS4KKyAgICB2YXIgaGFuZGxl
ciA9IHRoaXMucGF1c2VCdXR0b24uY2xpY2suYmluZCh0aGlzLnBhdXNlQnV0dG9uKTsKKyAgICB2
YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkY1KTsKKyAgICB0aGlzLl9zaG9ydGN1
dHNbc2hvcnRjdXRdID0gaGFuZGxlcjsKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lktl
eUNvZGVzLlNsYXNoLCBwbGF0Zm9ybVNwZWNpZmljTW9kaWZpZXIpOworICAgIHRoaXMuX3Nob3J0
Y3V0c1tzaG9ydGN1dF0gPSBoYW5kbGVyOworCisgICAgLy8gU3RlcCBvdmVyLgorICAgIHZhciBo
YW5kbGVyID0gdGhpcy5zdGVwT3ZlckJ1dHRvbi5jbGljay5iaW5kKHRoaXMuc3RlcE92ZXJCdXR0
b24pOworICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1h
a2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuRjEwKTsKKyAgICB0
aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdID0gaGFuZGxlcjsKKyAgICB2YXIgc2hvcnRjdXQgPSBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0LktleUNvZGVzLlNpbmdsZVF1b3RlLCBwbGF0Zm9ybVNwZWNpZmljTW9kaWZpZXIp
OworICAgIHRoaXMuX3Nob3J0Y3V0c1tzaG9ydGN1dF0gPSBoYW5kbGVyOworCisgICAgLy8gU3Rl
cCBpbnRvLgorICAgIHZhciBoYW5kbGVyID0gdGhpcy5zdGVwSW50b0J1dHRvbi5jbGljay5iaW5k
KHRoaXMuc3RlcEludG9CdXR0b24pOworICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5
Q29kZXMuRjExKTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdID0gaGFuZGxlcjsKKyAg
ICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLlNlbWljb2xvbiwgcGxhdGZvcm1T
cGVjaWZpY01vZGlmaWVyKTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdID0gaGFuZGxl
cjsKKworICAgIC8vIFN0ZXAgb3V0LgorICAgIHZhciBoYW5kbGVyID0gdGhpcy5zdGVwT3V0QnV0
dG9uLmNsaWNrLmJpbmQodGhpcy5zdGVwT3V0QnV0dG9uKTsKKyAgICB2YXIgc2hvcnRjdXQgPSBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0LktleUNvZGVzLkYxMSwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXJzLlNoaWZ0KTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdID0gaGFuZGxlcjsK
KyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5
KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLlNlbWljb2xvbiwgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLlNoaWZ0LCBwbGF0Zm9ybVNwZWNpZmlj
TW9kaWZpZXIpOworICAgIHRoaXMuX3Nob3J0Y3V0c1tzaG9ydGN1dF0gPSBoYW5kbGVyOworCiAg
ICAgdGhpcy5yZXNldCgpOwogfQogCkBAIC00ODYsNiArNTE5LDE5IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNv
dXJjZSgodmlldy5yZXNvdXJjZSB8fCB2aWV3LnNjcmlwdCkpOwogICAgIH0sCiAKKyAgICBoYW5k
bGVLZXlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgc2hvcnRjdXQg
PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KGV2ZW50KTsK
KyAgICAgICAgdmFyIGhhbmRsZXIgPSB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdOworICAgICAg
ICBpZiAoaGFuZGxlcikgeworICAgICAgICAgICAgaGFuZGxlcihldmVudCk7CisgICAgICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRy
dWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxs
c3RhY2suaGFuZGxlS2V5RXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgfSwKKwogICAgIHNj
cmlwdFZpZXdGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7CiAgICAgICAgIGlmICgh
c2NyaXB0KQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMJKHJldmlz
aW9uIDQ1MzY3KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMJKHdv
cmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDcgQEAKICAgICA8ZmlsZT5Gb250Vmlldy5qczwvZmls
ZT4KICAgICA8ZmlsZT5JbWFnZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+aW5zcGVjdG9yLmpz
PC9maWxlPgorICAgIDxmaWxlPktleWJvYXJkU2hvcnRjdXQuanM8L2ZpbGU+CiAgICAgPGZpbGU+
TWV0cmljc1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPk9iamVjdC5qczwvZmlsZT4K
ICAgICA8ZmlsZT5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qczwvZmlsZT4KSW5kZXg6IFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwJKHJldmlzaW9uIDQ1MzY3KQor
KysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE8KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0cmVlb3V0bGlu
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
aW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJPYmplY3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IktleWJvYXJkU2hvcnRjdXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRQcm9tcHQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBsYWNhcmQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlZpZXcuanMiPjwvc2Ny
aXB0Pgo=
</data>
<flag name="review"
          id="16570"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32116</attachid>
            <date>2009-06-30 23:43:19 -0700</date>
            <delta_ts>2009-06-30 23:44:04 -0700</delta_ts>
            <desc>Replaced the tabs with spaces.</desc>
            <filename>scripts-shortcuts-3.patch</filename>
            <type>text/plain</type>
            <size>13358</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTMzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDYtMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBzdXBwb3J0ZWQga2V5Ym9hcmQgc2hvcnRjdXRzIGNvbXBhdGlibGUgd2l0aCBGaXJlYnVn
IGluIFNjcmlwdHMgRGVidWdnZXI6CisgICAgICAgIEY1LCBDdHJsKy8gKHdpbixsaW4pLCBDb21t
YW5kKy8gKG1hYykgLSBjb250aW51ZQorICAgICAgICBGMTAsIEN0cmwrJyAod2luLCBsaW4pLCBD
b21tYW5kKycgKG1hYykgLSBzdGVwIG92ZXIKKyAgICAgICAgRjExLCBDdHJsKzsgKHdpbiwgbGlu
KSwgQ29tbWFuZCs7IChtYWMpIC0gc3RlcCBpbnRvCisgICAgICAgIFNoaWZ0K0YxMSwgQ3RybCtT
aGlmdCs7ICh3aW4sIGxpbiksIENvbW1hbmQrU2hpZnQrOyAobWFjKSAtIHN0ZXAgb3V0CisKKyAg
ICAgICAgLSBhZGRlZCBjYWxsIHN0YWNrIG5hdmlnYXRpb24gc2hvcnRjdXRzOgorICAgICAgICBD
dHJsKy4gLSBuZXh0IGNhbGwgZnJhbWUKKyAgICAgICAgQ3RybCssIC0gcHJldmlvdXNlIGNhbGwg
ZnJhbWUKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4NDkKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBh
bmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5oYW5kbGVL
ZXlFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJv
dG90eXBlLl9zZWxlY3ROZXh0Q2FsbEZyYW1lT25TdGFjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RQcmV2aW91c0NhbGxGcmFt
ZU9uU3RhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnBy
b3RvdHlwZS5fc2VsZWN0ZWRQbGFjYXJkQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLl9zZWxlY3RlZENhbGxGcmFtZUluZGV4KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanM6IEFkZGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVyc18pOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZS5oYW5kbGVLZXlFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWw6CisKIDIwMDktMDYtMjYgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkZWQgU3BlZWNoIHN1Ym1lbnUgdG8gY29udGV4dCBtZW51IG9uIE1hYyB3
aGVuIHRoZXJlJ3MgYSBub24tZWRpdGFibGUgc2VsZWN0aW9uCkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCShyZXZpc2lv
biA0NTM2NykKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFy
UGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTYgQEAKIFdlYkluc3BlY3Rvci5D
YWxsU3RhY2tTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuU2lk
ZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGwgU3RhY2siKSk7
CisgICAgCisgICAgdGhpcy5fc2hvcnRjdXRzID0ge307CisKKyAgICB2YXIgc2hvcnRjdXQgPSBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0LktleUNvZGVzLlBlcmlvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVycy5DdHJsKTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdID0gdGhpcy5f
c2VsZWN0TmV4dENhbGxGcmFtZU9uU3RhY2suYmluZCh0aGlzKTsKKworICAgIHZhciBzaG9ydGN1
dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuQ29tbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9y
dGN1dC5Nb2RpZmllcnMuQ3RybCk7CisgICAgdGhpcy5fc2hvcnRjdXRzW3Nob3J0Y3V0XSA9IHRo
aXMuX3NlbGVjdFByZXZpb3VzQ2FsbEZyYW1lT25TdGFjay5iaW5kKHRoaXMpOwogfQogCiBXZWJJ
bnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewpAQCAtMTAwLDYgKzEx
MCw1MyBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjYWxsIGZyYW1lIHNlbGVjdGVkIik7CiAg
ICAgfSwKIAorICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlG
cm9tRXZlbnQoZXZlbnQpOworICAgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuX3Nob3J0Y3V0c1tz
aG9ydGN1dF07CisgICAgICAgIGlmIChoYW5kbGVyKSB7CisgICAgICAgICAgICBoYW5kbGVyKGV2
ZW50KTsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICBl
dmVudC5oYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfc2VsZWN0TmV4
dENhbGxGcmFtZU9uU3RhY2s6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBpbmRleCA9
IHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5kZXgoKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0x
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9zZWxlY3RlZFBsYWNhcmRCeUlu
ZGV4KGluZGV4ICsgMSk7CisgICAgfSwKKworICAgIF9zZWxlY3RQcmV2aW91c0NhbGxGcmFtZU9u
U3RhY2s6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlbGVj
dGVkQ2FsbEZyYW1lSW5kZXgoKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB0aGlzLl9zZWxlY3RlZFBsYWNhcmRCeUluZGV4KGluZGV4IC0g
MSk7CisgICAgfSwKKworICAgIF9zZWxlY3RlZFBsYWNhcmRCeUluZGV4OiBmdW5jdGlvbihpbmRl
eCkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5wbGFjYXJk
cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBwbGFjYXJkID0gdGhp
cy5wbGFjYXJkc1tpbmRleF07CisgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsRnJhbWUgPSBwbGFj
YXJkLmNhbGxGcmFtZQorICAgIH0sCisKKyAgICBfc2VsZWN0ZWRDYWxsRnJhbWVJbmRleDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZENhbGxGcmFtZSkKKyAg
ICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBs
YWNhcmRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcGxhY2FyZCA9IHRoaXMucGxh
Y2FyZHNbaV07CisgICAgICAgICAgICBpZiAocGxhY2FyZC5jYWxsRnJhbWUgPT09IHRoaXMuX3Nl
bGVjdGVkQ2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAtMTsKKyAgICB9LAorCiAgICAgX3BsYWNhcmRTZWxlY3RlZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcGxhY2FyZEVsZW1lbnQgPSBldmVudC50YXJn
ZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygicGxhY2FyZCIpOwpJbmRleDogV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQgPSBmdW5jdGlvbigpCit7Cit9OworCisvKioKKyAqIENvbnN0YW50cyBmb3IgZW5jb2Rp
bmcgbW9kaWZpZXIga2V5IHNldCBhcyBhIGJpdCBtYXNrLgorICogQHNlZSAjX21ha2VLZXlGcm9t
Q29kZUFuZE1vZGlmaWVycworICovCitXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2Rp
ZmllcnMgPSB7CisgICAgTm9uZTogMCwgICAvLyBDb25zdGFudCBmb3IgZW1wdHkgbW9kaWZpZXJz
IHNldC4KKyAgICBTaGlmdDogMSwKKyAgICBDdHJsOiAyLAorICAgIEFsdDogNCwKKyAgICBNZXRh
OiA4ICAgIC8vIENvbW1hbmQga2V5IG9uIE1hYywgV2luIGtleSBvbiBvdGhlciBwbGF0Zm9ybXMu
Cit9OworCitXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlDb2RlcyA9IHsKKyAgICBF
c2M6IDI3LAorICAgIFNwYWNlOiAzMiwKKyAgICBQYWdlVXA6IDMzLCAgICAgIC8vIGFsc28gTlVN
X05PUlRIX0VBU1QKKyAgICBQYWdlRG93bjogMzQsICAgIC8vIGFsc28gTlVNX1NPVVRIX0VBU1QK
KyAgICBFbmQ6IDM1LCAgICAgICAgIC8vIGFsc28gTlVNX1NPVVRIX1dFU1QKKyAgICBIb21lOiAz
NiwgICAgICAgIC8vIGFsc28gTlVNX05PUlRIX1dFU1QKKyAgICBMZWZ0OiAzNywgICAgICAgIC8v
IGFsc28gTlVNX1dFU1QKKyAgICBVcDogMzgsICAgICAgICAgIC8vIGFsc28gTlVNX05PUlRICisg
ICAgUmlnaHQ6IDM5LCAgICAgICAvLyBhbHNvIE5VTV9FQVNUCisgICAgRG93bjogNDAsICAgICAg
ICAvLyBhbHNvIE5VTV9TT1VUSAorICAgIEYxOiAxMTIsCisgICAgRjI6IDExMywKKyAgICBGMzog
MTE0LAorICAgIEY0OiAxMTUsCisgICAgRjU6IDExNiwKKyAgICBGNjogMTE3LAorICAgIEY3OiAx
MTgsCisgICAgRjg6IDExOSwKKyAgICBGOTogMTIwLAorICAgIEYxMDogMTIxLAorICAgIEYxMTog
MTIyLAorICAgIEYxMjogMTIzLAorICAgIFNlbWljb2xvbjogMTg2LCAgICAvLyA7CisgICAgQ29t
bWE6IDE4OCwgICAgICAgIC8vICwKKyAgICBQZXJpb2Q6IDE5MCwgICAgICAgLy8gLgorICAgIFNs
YXNoOiAxOTEsICAgICAgICAvLyAvCisgICAgQXBvc3Ryb3BoZTogMTkyLCAgIC8vIGAKKyAgICBT
aW5nbGVRdW90ZTogMjIyLCAgLy8gJworfTsKKworLyoqCisgKiBDcmVhdGVzIGEgbnVtYmVyIGVu
Y29kaW5nIGtleUNvZGUgaW4gdGhlIGxvd2VyIDggYml0cyBhbmQgbW9kaWZpZXJzIG1hc2sgaW4g
dGhlIGhpZ2hlciA4IGJpdHMuCisgKiBJdCBpcyB1c2VmdWxsIGZvciBtYXRjaGluZyBwcmVzc2Vk
IGtleXMuCisgKiBAcGFyYW0ge251bWJlcn0ga2V5Q29kZSBDb2RlIG9mIHRoZSBrZXkuCisgKiBA
cGFyYW0ge251bWJlcn0gb3B0TW9kaWZpZXJzIE9wdGlvbmFsIGxpc3Qgb2YgbW9kaWZpZXJzIHBh
c3NlZCBhcyBhZGRpdGlvbmFsIHBhcmFtZXJ0ZXJzLgorICovCitXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5tYWtlS2V5ID0gZnVuY3Rpb24oa2V5Q29kZSwgb3B0TW9kaWZpZXJzKQorewor
ICAgIHZhciBtb2RpZmllcnMgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
cnMuTm9uZTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykK
KyAgICAgICAgbW9kaWZpZXJzIHw9IGFyZ3VtZW50c1tpXTsKKyAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuX21ha2VLZXlGcm9tQ29kZUFuZE1vZGlmaWVycyhrZXlDb2Rl
LCBtb2RpZmllcnMpOworfTsKKworV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtl
eUZyb21FdmVudCA9IGZ1bmN0aW9uKGtleWJvYXJkRXZlbnQpCit7CisgICAgdmFyIG1vZGlmaWVy
cyA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5Ob25lOworICAgIGlm
IChrZXlib2FyZEV2ZW50LnNoaWZ0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLlNoaWZ0OworICAgIGlmIChrZXlib2FyZEV2
ZW50LmN0cmxLZXkpCisgICAgICAgIG1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5Nb2RpZmllcnMuQ3RybDsKKyAgICBpZiAoa2V5Ym9hcmRFdmVudC5hbHRLZXkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
cnMuQWx0OworICAgIGlmIChrZXlib2FyZEV2ZW50Lm1ldGFLZXkpCisgICAgICAgIG1vZGlmaWVy
cyB8PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTWV0YTsKKyAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuX21ha2VLZXlGcm9tQ29kZUFuZE1v
ZGlmaWVycyhrZXlib2FyZEV2ZW50LmtleUNvZGUsIG1vZGlmaWVycyk7Cit9OworCitXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5fbWFrZUtleUZyb21Db2RlQW5kTW9kaWZpZXJzID0gZnVu
Y3Rpb24oa2V5Q29kZSwgbW9kaWZpZXJzKQoreworICAgIHJldHVybiAoa2V5Q29kZSAmIDI1NSkg
fCAobW9kaWZpZXJzIDw8IDgpOworfTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qcwkocmV2aXNpb24gNDUzNjcpCisrKyBXZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYz
LDM5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlz
Ll9icmVha3BvaW50c1VSTE1hcCA9IHt9OwogCisgICAgdGhpcy5fc2hvcnRjdXRzID0ge307CisK
KyAgICB2YXIgaXNNYWMgPSBJbnNwZWN0b3JDb250cm9sbGVyLnBsYXRmb3JtKCkuaW5kZXhPZigi
bWFjLSIpID09PSAwOworICAgIHZhciBwbGF0Zm9ybVNwZWNpZmljTW9kaWZpZXIgPSBpc01hYyA/
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVycy5NZXRhIDogV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLkN0cmw7CisKKyAgICAvLyBDb250aW51ZS4K
KyAgICB2YXIgaGFuZGxlciA9IHRoaXMucGF1c2VCdXR0b24uY2xpY2suYmluZCh0aGlzLnBhdXNl
QnV0dG9uKTsKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkY1KTsKKyAg
ICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdID0gaGFuZGxlcjsKKyAgICB2YXIgc2hvcnRjdXQg
PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0LktleUNvZGVzLlNsYXNoLCBwbGF0Zm9ybVNwZWNpZmljTW9kaWZpZXIpOwor
ICAgIHRoaXMuX3Nob3J0Y3V0c1tzaG9ydGN1dF0gPSBoYW5kbGVyOworCisgICAgLy8gU3RlcCBv
dmVyLgorICAgIHZhciBoYW5kbGVyID0gdGhpcy5zdGVwT3ZlckJ1dHRvbi5jbGljay5iaW5kKHRo
aXMuc3RlcE92ZXJCdXR0b24pOworICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29k
ZXMuRjEwKTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdID0gaGFuZGxlcjsKKyAgICB2
YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLlNpbmdsZVF1b3RlLCBwbGF0Zm9ybVNw
ZWNpZmljTW9kaWZpZXIpOworICAgIHRoaXMuX3Nob3J0Y3V0c1tzaG9ydGN1dF0gPSBoYW5kbGVy
OworCisgICAgLy8gU3RlcCBpbnRvLgorICAgIHZhciBoYW5kbGVyID0gdGhpcy5zdGVwSW50b0J1
dHRvbi5jbGljay5iaW5kKHRoaXMuc3RlcEludG9CdXR0b24pOworICAgIHZhciBzaG9ydGN1dCA9
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuS2V5Q29kZXMuRjExKTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRd
ID0gaGFuZGxlcjsKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9y
dGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLlNlbWlj
b2xvbiwgcGxhdGZvcm1TcGVjaWZpY01vZGlmaWVyKTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hv
cnRjdXRdID0gaGFuZGxlcjsKKworICAgIC8vIFN0ZXAgb3V0LgorICAgIHZhciBoYW5kbGVyID0g
dGhpcy5zdGVwT3V0QnV0dG9uLmNsaWNrLmJpbmQodGhpcy5zdGVwT3V0QnV0dG9uKTsKKyAgICB2
YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLkYxMSwgV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuTW9kaWZpZXJzLlNoaWZ0KTsKKyAgICB0aGlzLl9zaG9ydGN1dHNbc2hvcnRj
dXRdID0gaGFuZGxlcjsKKyAgICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5tYWtlS2V5KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleUNvZGVzLlNl
bWljb2xvbiwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLlNoaWZ0LCBw
bGF0Zm9ybVNwZWNpZmljTW9kaWZpZXIpOworICAgIHRoaXMuX3Nob3J0Y3V0c1tzaG9ydGN1dF0g
PSBoYW5kbGVyOworCiAgICAgdGhpcy5yZXNldCgpOwogfQogCkBAIC00ODYsNiArNTE5LDE5IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9z
aG93U2NyaXB0T3JSZXNvdXJjZSgodmlldy5yZXNvdXJjZSB8fCB2aWV3LnNjcmlwdCkpOwogICAg
IH0sCiAKKyAgICBoYW5kbGVLZXlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB2YXIgc2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJv
bUV2ZW50KGV2ZW50KTsKKyAgICAgICAgdmFyIGhhbmRsZXIgPSB0aGlzLl9zaG9ydGN1dHNbc2hv
cnRjdXRdOworICAgICAgICBpZiAoaGFuZGxlcikgeworICAgICAgICAgICAgaGFuZGxlcihldmVu
dCk7CisgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgZXZl
bnQuaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnNp
ZGViYXJQYW5lcy5jYWxsc3RhY2suaGFuZGxlS2V5RXZlbnQoZXZlbnQpOworICAgICAgICB9Cisg
ICAgfSwKKwogICAgIHNjcmlwdFZpZXdGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7
CiAgICAgICAgIGlmICghc2NyaXB0KQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dl
YktpdC5xcmMJKHJldmlzaW9uIDQ1MzY3KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMJKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDcgQEAKICAgICA8ZmlsZT5G
b250Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZp
bGU+aW5zcGVjdG9yLmpzPC9maWxlPgorICAgIDxmaWxlPktleWJvYXJkU2hvcnRjdXQuanM8L2Zp
bGU+CiAgICAgPGZpbGU+TWV0cmljc1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPk9i
amVjdC5qczwvZmlsZT4KICAgICA8ZmlsZT5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qczwvZmls
ZT4KSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwJKHJl
dmlzaW9uIDQ1MzY3KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE8KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJ0cmVlb3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iaW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJPYmplY3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IktleWJvYXJkU2hvcnRjdXQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRQcm9tcHQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBsYWNh
cmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlZpZXcuanMiPjwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="16627"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32287</attachid>
            <date>2009-07-06 00:45:33 -0700</date>
            <delta_ts>2009-07-06 04:28:31 -0700</delta_ts>
            <desc>Change &apos;Continue&apos; shortcut from F5 to F8</desc>
            <filename>scripts-shortcuts-4.patch</filename>
            <type>text/plain</type>
            <size>1417</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTU1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMDYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2hhbmdlICdDb250aW51ZSBkZWJ1Zycgc2hvcnRjdXQgZnJvbSBGNSB0byBGOCBmb3IgY29u
c2lzdGVuY3kgd2l0aCBGaXJlYnVnLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzg0OQorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
Y3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsKToKKwog
MjAwOS0wNy0wNSAgQW50b25pbyBHb21lcyAgPGFudG9uaW8uZ29tZXNAb3BlbmJvc3NhLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwkocmV2aXNpb24gNDU1NTcpCisrKyBXZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzAsNyArMTcwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkK
IAogICAgIC8vIENvbnRpbnVlLgogICAgIHZhciBoYW5kbGVyID0gdGhpcy5wYXVzZUJ1dHRvbi5j
bGljay5iaW5kKHRoaXMucGF1c2VCdXR0b24pOwotICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQuS2V5Q29kZXMuRjUpOworICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMu
RjgpOwogICAgIHRoaXMuX3Nob3J0Y3V0c1tzaG9ydGN1dF0gPSBoYW5kbGVyOwogICAgIHZhciBz
aG9ydGN1dCA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuU2xhc2gsIHBsYXRmb3JtU3BlY2lmaWNNb2Rp
Zmllcik7CiAgICAgdGhpcy5fc2hvcnRjdXRzW3Nob3J0Y3V0XSA9IGhhbmRsZXI7Cg==
</data>
<flag name="review"
          id="16755"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>