<?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>20273</bug_id>
          
          <creation_ts>2008-08-04 08:19:15 -0700</creation_ts>
          <short_desc>Allow incrementing/decrementing numbers in editable style properties with arrow keys</short_desc>
          <delta_ts>2008-08-05 09:49:23 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>aroben</cc>
    
    <cc>rik</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>87758</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-04 08:19:15 -0700</bug_when>
    <thetext>Firebug lets you increment/decrement numbers at the insertion point with the arrow keys. We should support this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87790</commentid>
    <comment_count>1</comment_count>
      <attachid>22637</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-04 13:14:40 -0700</bug_when>
    <thetext>Created attachment 22637
Patch 1 of 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87791</commentid>
    <comment_count>2</comment_count>
      <attachid>22638</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-04 13:15:15 -0700</bug_when>
    <thetext>Created attachment 22638
Patch 2 of 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87821</commentid>
    <comment_count>3</comment_count>
      <attachid>22637</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-08-04 18:53:02 -0700</bug_when>
    <thetext>Comment on attachment 22637
Patch 1 of 2

I wonder if there&apos;s any way to reduce the code duplication in rangeOfWord?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87822</commentid>
    <comment_count>4</comment_count>
      <attachid>22638</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-08-04 19:07:51 -0700</bug_when>
    <thetext>Comment on attachment 22638
Patch 2 of 2

+        var wordRange = selectionRange.startContainer.rangeOfWord(selectionRange.startOffset , &quot; \t\n\&quot;&apos;:;,/()&quot;, this.listItemElement);

I think it would really improve readability to start putting these character sets into named variables, like cssValueDelimeters or something.

+            var changeAmount = (event.shiftKey ? 10 : ((event.altKey || numberNearZero) ? 0.1 : 1));

I think this would be a little clearer as if/elseif/else.

+        if ((shorthandProperty || individualProperty) in foundProperties)

I think you should put &quot;(shorthandProperty || individualProperty) into a local variable since you keep repeating that construct.

Do you have any test cases to land with this?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87845</commentid>
    <comment_count>5</comment_count>
    <who name="Anthony Ricaud">rik</who>
    <bug_when>2008-08-05 02:09:27 -0700</bug_when>
    <thetext>Firebug uses Page up and down to increase/decrease by ten (see http://getfirebug.com/keyboard.html). I&apos;m not a huge fan of that shortcut but I&apos;m mentioning this for compatibility between tools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87872</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-05 09:49:23 -0700</bug_when>
    <thetext>Landed in r35560 and r35561.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22637</attachid>
            <date>2008-08-04 13:14:40 -0700</date>
            <delta_ts>2008-08-04 18:53:02 -0700</delta_ts>
            <desc>Patch 1 of 2</desc>
            <filename>0002-Factors-out-the-TextPrompt.scanBackwards-fun.patch</filename>
            <type>text/plain</type>
            <size>9179</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSBhZThkMGQ3NDc3YzY3MTEyNDFhOTI2ZmEzZGMyZmFhNDM5NjU3YjgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBNb24sIDQgQXVnIDIwMDggMDg6MTA6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSAgICAg
ICAgIEZhY3RvcnMgb3V0IHRoZSBUZXh0UHJvbXB0LnNjYW5CYWNrd2FyZHMgZnVuY3Rpb24gaW50
byBhIGdlbmVyaWMKICAgICAgICAgaGVscGVyIGZ1bmN0aW9uIG9uIHRoZSBOb2RlIHByb3RvdHlw
ZSwgbmFtZWQgcmFuZ2VPZldvcmQuCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanM6CiAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db25zb2xlLnByb3RvdHlwZS5jb21wbGV0aW9ucyk6IFVzZSByYW5nZU9mV29yZC4KICAg
ICAgICAqIHBhZ2UvaW5zcGVjdG9yL1RleHRQcm9tcHQuanM6CiAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0UHJvbXB0LnByb3RvdHlwZS5jb21wbGV0ZSk6IERpdHRvLgogICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuc2NhbkJhY2t3YXJkcyk6IFJlbW92ZWQuCiAgICAg
ICAgKiBwYWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanM6CiAgICAgICAgKE5vZGUucHJvdG90eXBl
LnJhbmdlT2ZXb3JkKTogQWRkZWQuIENvcGllZCBmcm9tIFRleHRQcm9tcHQuc2NhbkJhY2t3YXJk
cywKICAgICAgICBhbmQgYWRkZWQgYSBkaXJlY3Rpb24gYXJndW1lbnQgYWxsb3dpbmcgc2Nhbm5p
bmcgZm9yd2FyZCwgYmFja3dhcmQgb3IKICAgICAgICBib3RoIGRpcmVjdGlvbnMgZnJvbSB0aGUg
b2Zmc2V0LgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAgMTcg
KysrKysrKwogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzICAgIHwgICAgNyArKy0K
IFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvVGV4dFByb21wdC5qcyB8ICAgNDUgKy0tLS0tLS0tLS0t
LS0tLS0KIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzICB8ICAgODcgKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrLQogNCBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0
aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNmUzM2RmLi5jZTlmNTcwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBA
CiAyMDA4LTA4LTA0ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAorICAg
ICAgICBGYWN0b3JzIG91dCB0aGUgVGV4dFByb21wdC5zY2FuQmFja3dhcmRzIGZ1bmN0aW9uIGlu
dG8gYSBnZW5lcmljCisgICAgICAgIGhlbHBlciBmdW5jdGlvbiBvbiB0aGUgTm9kZSBwcm90b3R5
cGUsIG5hbWVkIHJhbmdlT2ZXb3JkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvQ29uc29sZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlLnByb3RvdHlwZS5jb21wbGV0aW9ucyk6IFVzZSByYW5nZU9mV29y
ZC4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9UZXh0UHJvbXB0LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmNvbXBsZXRlKTogRGl0dG8uCisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuc2NhbkJhY2t3YXJkcyk6IFJlbW92
ZWQuCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzOgorICAgICAgICAoTm9k
ZS5wcm90b3R5cGUucmFuZ2VPZldvcmQpOiBBZGRlZC4gQ29waWVkIGZyb20gVGV4dFByb21wdC5z
Y2FuQmFja3dhcmRzLAorICAgICAgICBhbmQgYWRkZWQgYSBkaXJlY3Rpb24gYXJndW1lbnQgYWxs
b3dpbmcgc2Nhbm5pbmcgZm9yd2FyZCwgYmFja3dhcmQgb3IKKyAgICAgICAgYm90aCBkaXJlY3Rp
b25zIGZyb20gdGhlIG9mZnNldC4KKworMjAwOC0wOC0wNCAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CisKICAgICAgICAgRml4ZXMgYSBidWcgd2hlcmUgdGhlIHByb3BlcnR5
IHRvZ2dsZSBidXR0b24gd291bGQgbm90IGJlIGhpZGRlbgogICAgICAgICBkdXJpbmcgZWRpdGlu
Zy4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzIGIvV2Vi
Q29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzCmluZGV4IDc5YWVmMWYuLjQ0MWRiY2QgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZS5qcworKysgYi9XZWJDb3Jl
L3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanMKQEAgLTE3MCw4ICsxNzAsMTEgQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGUucHJvdG90eXBlID0gewogCiAgICAgY29tcGxldGlvbnM6IGZ1bmN0aW9uKHdv
cmRSYW5nZSwgYmVzdE1hdGNoT25seSkKICAgICB7Ci0gICAgICAgIC8vIFBhc3MgbGVzcyBjaGFy
YWN0ZXJzIHRvIHNjYW5CYWNrd2FyZHMgc28gdGhlIHJhbmdlIHdpbGwgYmUgYSBtb3JlIGNvbXBs
ZXRlIGV4cHJlc3Npb24uCi0gICAgICAgIHZhciBleHByZXNzaW9uID0gdGhpcy5wcm9tcHQuc2Nh
bkJhY2t3YXJkcygiID06ezsiLCB3b3JkUmFuZ2Uuc3RhcnRDb250YWluZXIsIHdvcmRSYW5nZS5z
dGFydE9mZnNldCk7CisgICAgICAgIC8vIFBhc3MgbGVzcyBjaGFyYWN0ZXJzIHRvIHJhbmdlT2ZX
b3JkIHNvIHRoZSByYW5nZSB3aWxsIGJlIGEgbW9yZSBjb21wbGV0ZSBleHByZXNzaW9uLgorICAg
ICAgICB2YXIgZXhwcmVzc2lvbiA9IHdvcmRSYW5nZS5zdGFydENvbnRhaW5lci5yYW5nZU9mV29y
ZCh3b3JkUmFuZ2Uuc3RhcnRPZmZzZXQsICIgPTp7OyIsIHRoaXMucHJvbXB0RWxlbWVudCwgImJh
Y2t3YXJkIik7CisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHJldHVybjsK
KwogICAgICAgICB2YXIgZXhwcmVzc2lvblN0cmluZyA9IGV4cHJlc3Npb24udG9TdHJpbmcoKTsK
ICAgICAgICAgdmFyIGxhc3RJbmRleCA9IGV4cHJlc3Npb25TdHJpbmcubGVuZ3RoIC0gMTsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9UZXh0UHJvbXB0LmpzIGIvV2ViQ29y
ZS9wYWdlL2luc3BlY3Rvci9UZXh0UHJvbXB0LmpzCmluZGV4IDI2NGNiNGMuLmY3M2ExNzUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvVGV4dFByb21wdC5qcworKysgYi9XZWJD
b3JlL3BhZ2UvaW5zcGVjdG9yL1RleHRQcm9tcHQuanMKQEAgLTE1MSw3ICsxNTEsOSBAQCBXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChhdXRvICYmICF0
aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgdmFyIHdvcmRQcmVmaXhSYW5nZSA9IHRoaXMuc2NhbkJhY2t3YXJkcyh0aGlzLmNvbXBsZXRp
b25TdG9wQ2hhcmFjdGVycywgc2VsZWN0aW9uUmFuZ2Uuc3RhcnRDb250YWluZXIsIHNlbGVjdGlv
blJhbmdlLnN0YXJ0T2Zmc2V0LCB0aGlzLmVsZW1lbnQpOworICAgICAgICB2YXIgd29yZFByZWZp
eFJhbmdlID0gc2VsZWN0aW9uUmFuZ2Uuc3RhcnRDb250YWluZXIucmFuZ2VPZldvcmQoc2VsZWN0
aW9uUmFuZ2Uuc3RhcnRPZmZzZXQsIHRoaXMuY29tcGxldGlvblN0b3BDaGFyYWN0ZXJzLCB0aGlz
LmVsZW1lbnQsICJiYWNrd2FyZCIpOworICAgICAgICBpZiAoIXdvcmRQcmVmaXhSYW5nZSkKKyAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgY29tcGxldGlvbnMgPSB0aGlzLmNvbXBs
ZXRpb25zKHdvcmRQcmVmaXhSYW5nZSwgYXV0byk7CiAKQEAgLTIxOSw0NyArMjIxLDYgQEAgV2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICBzZWxlY3Rpb24uYWRk
UmFuZ2UoZmluYWxTZWxlY3Rpb25SYW5nZSk7CiAgICAgfSwKIAotICAgIHNjYW5CYWNrd2FyZHM6
IGZ1bmN0aW9uKHN0b3BDaGFyYWN0ZXJzLCBlbmROb2RlLCBlbmRPZmZzZXQsIHN0YXlXaXRoaW5F
bGVtZW50KQotICAgIHsKLSAgICAgICAgdmFyIHN0YXJ0Tm9kZTsKLSAgICAgICAgdmFyIHN0YXJ0
T2Zmc2V0ID0gMDsKLSAgICAgICAgdmFyIG5vZGUgPSBlbmROb2RlOwotCi0gICAgICAgIGlmICgh
c3RheVdpdGhpbkVsZW1lbnQpCi0gICAgICAgICAgICBzdGF5V2l0aGluRWxlbWVudCA9IHRoaXMu
ZWxlbWVudDsKLQotICAgICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICAgICAgaWYgKG5vZGUg
PT09IHN0YXlXaXRoaW5FbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdGFydE5vZGUp
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXlXaXRoaW5FbGVtZW50OwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9k
ZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3Rh
cnQgPSAobm9kZSA9PT0gZW5kTm9kZSA/IGVuZE9mZnNldCA6IG5vZGUubm9kZVZhbHVlLmxlbmd0
aCk7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IChzdGFydCAtIDEpOyBpID49IDA7IC0t
aSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgY2hhcmFjdGVyID0gbm9kZS5ub2RlVmFsdWVb
aV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdG9wQ2hhcmFjdGVycy5pbmRleE9mKGNoYXJh
Y3RlcikgIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBub2Rl
OwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBpICsgMTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoc3RhcnROb2RlKQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBub2RlID0gbm9kZS50cmF2ZXJzZVBy
ZXZpb3VzTm9kZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7Ci0gICAgICAgIHJlc3VsdC5zZXRTdGFydChzdGFydE5vZGUsIHN0YXJ0
T2Zmc2V0KTsKLSAgICAgICAgcmVzdWx0LnNldEVuZChlbmROb2RlLCBlbmRPZmZzZXQpOwotCi0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQogICAgIGlzQ2FyZXRJbnNpZGVQcm9tcHQ6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuaXNJbnNlcnRp
b25DYXJldEluc2lkZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci91dGls
aXRpZXMuanMgYi9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcwppbmRleCAwMDFl
MjZmLi41ZGE3ZGMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGll
cy5qcworKysgYi9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcwpAQCAtMTA3LDYg
KzEwNyw4NyBAQCBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKHRoaXNPYmplY3Qp
CiAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeyByZXR1cm4gZnVuYy5hcHBseSh0aGlzT2JqZWN0LCBh
cmdzLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKSkgfTsK
IH0KIAorTm9kZS5wcm90b3R5cGUucmFuZ2VPZldvcmQgPSBmdW5jdGlvbihvZmZzZXQsIHN0b3BD
aGFyYWN0ZXJzLCBzdGF5V2l0aGluTm9kZSwgZGlyZWN0aW9uKQoreworICAgIHZhciBzdGFydE5v
ZGU7CisgICAgdmFyIHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICB2YXIgZW5kTm9kZTsKKyAgICB2YXIg
ZW5kT2Zmc2V0ID0gMDsKKworICAgIGlmICghc3RheVdpdGhpbk5vZGUpCisgICAgICAgIHN0YXlX
aXRoaW5Ob2RlID0gdGhpczsKKworICAgIGlmICghZGlyZWN0aW9uIHx8IGRpcmVjdGlvbiA9PT0g
ImJhY2t3YXJkIiB8fCBkaXJlY3Rpb24gPT09ICJib3RoIikgeworICAgICAgICB2YXIgbm9kZSA9
IHRoaXM7CisgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgICAgICBpZiAobm9kZSA9PT0g
c3RheVdpdGhpbk5vZGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkKKyAgICAg
ICAgICAgICAgICAgICAgc3RhcnROb2RlID0gc3RheVdpdGhpbk5vZGU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBl
ID09PSBOb2RlLlRFWFRfTk9ERSkgeworICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IChub2Rl
ID09PSB0aGlzID8gKG9mZnNldCAtIDEpIDogKG5vZGUubm9kZVZhbHVlLmxlbmd0aCAtIDEpKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPj0gMDsgLS1pKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzdG9wQ2hhcmFjdGVycy5pbmRleE9mKG5vZGUubm9kZVZhbHVl
W2ldKSAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IG5vZGU7
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldCA9IGkgKyAxOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzdGFydE5vZGUpCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLnRyYXZlcnNlUHJl
dmlvdXNOb2RlKGZhbHNlLCBzdGF5V2l0aGluTm9kZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoIWRpcmVjdGlvbiB8fCBkaXJlY3Rpb24gPT09ICJmb3J3YXJkIiB8fCBkaXJlY3Rpb24g
PT09ICJib3RoIikgeworICAgICAgICBub2RlID0gdGhpczsKKyAgICAgICAgd2hpbGUgKG5vZGUp
IHsKKyAgICAgICAgICAgIGlmIChub2RlID09PSBzdGF5V2l0aGluTm9kZSkgeworICAgICAgICAg
ICAgICAgIGlmICghZW5kTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZW5kTm9kZSA9IHN0YXlX
aXRoaW5Ob2RlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgc3RhcnQgPSAobm9kZSA9PT0gdGhpcyA/IG9mZnNldCA6IDApOworICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IG5vZGUubm9kZVZhbHVlLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdG9wQ2hhcmFjdGVycy5pbmRleE9mKG5v
ZGUubm9kZVZhbHVlW2ldKSAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZE5v
ZGUgPSBub2RlOworICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0ID0gaTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZW5kTm9kZSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgbm9kZSA9IG5vZGUudHJhdmVyc2VO
ZXh0Tm9kZShmYWxzZSwgc3RheVdpdGhpbk5vZGUpOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKCFzdGFydE5vZGUpIHsKKyAgICAgICAgc3RhcnROb2RlID0gc3RheVdpdGhpbk5vZGU7Cisg
ICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICB9CisKKyAgICBpZiAoIWVuZE5vZGUpIHsKKyAg
ICAgICAgZW5kTm9kZSA9IHN0YXlXaXRoaW5Ob2RlOworICAgICAgICBlbmRPZmZzZXQgPSBzdGF5
V2l0aGluTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyBzdGF5V2l0aGluTm9kZS5u
b2RlVmFsdWUubGVuZ3RoIDogc3RheVdpdGhpbk5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7CisgICAg
fQorCisgICAgdmFyIHJlc3VsdCA9IHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJlc3VsdC5zZXRTdGFydChzdGFydE5vZGUsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXN1bHQu
c2V0RW5kKGVuZE5vZGUsIGVuZE9mZnNldCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBF
bGVtZW50LnByb3RvdHlwZS5yZW1vdmVTdHlsZUNsYXNzID0gZnVuY3Rpb24oY2xhc3NOYW1lKSAK
IHsKICAgICAvLyBUZXN0IGZvciB0aGUgc2ltcGxlIGNhc2UgYmVmb3JlIHVzaW5nIGEgUmVnRXhw
LgpAQCAtNjI0LDE1ICs3MDUsMTkgQEAgZnVuY3Rpb24gdHJhdmVyc2VOZXh0Tm9kZShza2lwV2hp
dGVzcGFjZSwgc3RheVdpdGhpbikKICAgICByZXR1cm4gc2tpcFdoaXRlc3BhY2UgPyBuZXh0U2li
bGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpIDogbm9kZS5uZXh0U2libGluZzsKIH0K
IAotZnVuY3Rpb24gdHJhdmVyc2VQcmV2aW91c05vZGUoc2tpcFdoaXRlc3BhY2UpCitmdW5jdGlv
biB0cmF2ZXJzZVByZXZpb3VzTm9kZShza2lwV2hpdGVzcGFjZSwgc3RheVdpdGhpbikKIHsKICAg
ICBpZiAoIXRoaXMpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoc3RheVdpdGhpbiAmJiBvYmpl
Y3RzQXJlU2FtZSh0aGlzLCBzdGF5V2l0aGluKSkKKyAgICAgICAgcmV0dXJuIG51bGw7CiAgICAg
dmFyIG5vZGUgPSBza2lwV2hpdGVzcGFjZSA/IHByZXZpb3VzU2libGluZ1NraXBwaW5nV2hpdGVz
cGFjZS5jYWxsKHRoaXMpIDogdGhpcy5wcmV2aW91c1NpYmxpbmc7CiAgICAgd2hpbGUgKG5vZGUg
JiYgKHNraXBXaGl0ZXNwYWNlID8gbGFzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwobm9k
ZSkgOiBub2RlLmxhc3RDaGlsZCkgKQogICAgICAgICBub2RlID0gc2tpcFdoaXRlc3BhY2UgPyBs
YXN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UuY2FsbChub2RlKSA6IG5vZGUubGFzdENoaWxkOwog
ICAgIGlmIChub2RlKQogICAgICAgICByZXR1cm4gbm9kZTsKKyAgICBpZiAoc3RheVdpdGhpbiAm
JiBvYmplY3RzQXJlU2FtZSh0aGlzLnBhcmVudE5vZGUsIHN0YXlXaXRoaW4pKQorICAgICAgICBy
ZXR1cm4gbnVsbDsKICAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlOwogfQogCi0tIAoxLjUuNC40
Cgo=
</data>
<flag name="review"
          id="10014"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22638</attachid>
            <date>2008-08-04 13:15:15 -0700</date>
            <delta_ts>2008-08-04 19:07:51 -0700</delta_ts>
            <desc>Patch 2 of 2</desc>
            <filename>0003-Adds-the-ability-to-increment-decrement-numb.patch</filename>
            <type>text/plain</type>
            <size>18230</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSA0ZjI2NThiMzcwYTMyN2UwMGI4ZmExZTI3MTZmNDY4ZWQwNGQ1OWVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBNb24sIDQgQXVnIDIwMDggMTM6MTI6MTkgLTA3MDAKU3ViamVjdDogW1BBVENIXSAgICAg
ICAgIEFkZHMgdGhlIGFiaWxpdHkgdG8gaW5jcmVtZW50L2RlY3JlbWVudCBudW1iZXJzIGluIGVk
aXRhYmxlIHN0eWxlCiAgICAgICAgIHByb3BlcnRpZXMgd2l0aCB0aGUgYXJyb3cga2V5cy4KCiAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI3MwoKICAgICAgICAqIHBhZ2UvaW5zcGVjdG9y
L1N0eWxlc1NpZGViYXJQYW5lLmpzOgogICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVBbGwpOgogICAgICAgIFVwZGF0ZXMgYWxsIHBy
b3BlcnRpZXMgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbiwgb3IgYWxsIHNlY3Rpb25zCiAgICAgICAg
ZGVwZW5kaW5nIGluIHRoZSBhcmd1bWVudCBwYXNzZWQuCiAgICAgICAgKFdlYkluc3BlY3Rvci5T
dHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLnRvZ2dsZUVuYWJsZWQpOgogICAgICAg
IENhbGwgdXBkYXRlQWxsIGluc3RlYWQgb2YgaGF2aW5nIGR1cGxpY2F0ZSBjb2RlLgogICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5zdGFydEVk
aXRpbmcpOgogICAgICAgIEFzc2lnbiB0aGUgbGlzdCBlbGVtZW50J3MgaGFuZGxlS2V5RXZlbnQg
dG8gZWRpdGluZ0tleURvd24uCiAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlLmVkaXRpbmdLZXlEb3duKToKICAgICAgICBIYW5kbGVzIHRoZSBV
cCBhbmQgRG93biBhcnJvd3Mga2V5cy4gRmluZHMgdGhlIHdvcmQgYmFzZWQgb24gdGhlCiAgICAg
ICAgc2VsZWN0aW9uIGFuZCBleHRyYWN0cyB0aGUgbnVtYmVyLCBwcmVmaXggYW5kIHN1ZmZpeC4g
SW5jcmVtZW50cwogICAgICAgIG9yIGRlY3JlbWVudHMgdGhlIG51bWJlciBiYXNlZCBvbiB0aGUg
a2V5IGFuZCBtb2RpZmllcnMuIFJlcGxhY2VzCiAgICAgICAgdGhlIG9yaWdpbmFsIHdvcmQgd2l0
aCB0aGUgbmV3IHZhbHVlIGFuZCBzZWxlY3RzIGl0LiBBbHNvIGFwcGxpZXMKICAgICAgICB0aGUg
c3R5bGUgc28gdGhlIHBhZ2UgcmVmbGVjdHMgdGhlIGNoYW5nZXMgbGl2ZS4KICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuZWRpdGluZ0VuZGVk
KToKICAgICAgICBEZWxldGUgdGhlIGhhbmRsZUtleUV2ZW50IGFuZCBvcmlnaW5hbENTU1RleHQg
cHJvcGVydGllcy4KICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUuZWRpdGluZ0NhbmNlbGxlZCk6CiAgICAgICAgSWYgb3JpZ2luYWxDU1NUZXh0
IGV4aXN0cywgc2V0IHRoZSBjc3NUZXh0IHRvIHRoYXQgdmFsdWUgYW5kIGNhbGwKICAgICAgICB1
cGRhdGVBbGwuIE90aGVyd2lzZSBqdXN0IGNhbGwgdXBkYXRlVGl0bGUgbGlrZSBiZWZvcmUuCiAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLmVk
aXRpbmdDb21taXR0ZWQpOgogICAgICAgIEZhY3RvcmVkIG91dCB0aGUgc3R5bGUgYXBwbHlpbmcg
Y29kZSB0byBhcHBseVN0eWxlVGV4dC4KICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUuYXBwbHlTdHlsZVRleHQpOgogICAgICAgIEZhY3RvcmVk
IG91dCBmcm9tIGVkaXRpbmdDb21taXR0ZWQuIFRha2VzIGFuIGFyZ3VtZW50IHRoYXQgc3BlY2lm
aWVzCiAgICAgICAgaWYgdGhlIGludGVyZmFjZSBzaG91bGQgYmUgdXBkYXRlZCB3aGVuIHRoZSBz
dHlsZSBpcyBhcHBsaWVkLgogICAgICAgICogcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmpzOgog
ICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKTogQ2FsbCB0aGUgb3JpZ2luYWwga2V5
IGhhbmRsZXIsIGlmIG9uZQogICAgICAgIGV4aXN0ZWQgYmVmb3JlIGludGVycnVwdGluZyBrZXkg
ZXZlbnRzLgogICAgICAgICogcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzOgogICAgICAgIChn
ZXRTdHlsZVRleHRXaXRoU2hvcnRoYW5kcyk6IEhlbHBlciB0byByZXR1cm4gQ1NTIHRleHQgdGhh
dCBwcmVzZXJ2ZXMKICAgICAgICBzaG9ydGhhbmQgdmFsdWVzLCBzaW5jZSB0aGUgY3NzVGV4dCBw
cm9wZXJ0eSBvbmx5IG91dHB1dHMgbG9uZ2hhbmRzLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQwICsrKysrKysKIFdlYkNvcmUvcGFnZS9pbnNw
ZWN0b3IvU3R5bGVzU2lkZWJhclBhbmUuanMgfCAgMTUyICsrKysrKysrKysrKysrKysrKysrKyst
LS0tLQogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMgICAgICAgICB8ICAgIDkg
KystCiBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcyAgICAgICAgIHwgICAyOSAr
KysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyMDAgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjZTlmNTcwLi44Y2M4ODRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDA4LTA4LTA0ICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAorICAgICAgICBBZGRzIHRoZSBhYmlsaXR5IHRv
IGluY3JlbWVudC9kZWNyZW1lbnQgbnVtYmVycyBpbiBlZGl0YWJsZSBzdHlsZQorICAgICAgICBw
cm9wZXJ0aWVzIHdpdGggdGhlIGFycm93IGtleXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMjczCisKKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9TdHlsZXNTaWRlYmFyUGFu
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJv
dG90eXBlLnVwZGF0ZUFsbCk6CisgICAgICAgIFVwZGF0ZXMgYWxsIHByb3BlcnRpZXMgaW4gdGhl
IGN1cnJlbnQgc2VjdGlvbiwgb3IgYWxsIHNlY3Rpb25zCisgICAgICAgIGRlcGVuZGluZyBpbiB0
aGUgYXJndW1lbnQgcGFzc2VkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlU
cmVlRWxlbWVudC5wcm90b3R5cGUudG9nZ2xlRW5hYmxlZCk6CisgICAgICAgIENhbGwgdXBkYXRl
QWxsIGluc3RlYWQgb2YgaGF2aW5nIGR1cGxpY2F0ZSBjb2RlLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuc3RhcnRFZGl0aW5nKToKKyAg
ICAgICAgQXNzaWduIHRoZSBsaXN0IGVsZW1lbnQncyBoYW5kbGVLZXlFdmVudCB0byBlZGl0aW5n
S2V5RG93bi4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQu
cHJvdG90eXBlLmVkaXRpbmdLZXlEb3duKToKKyAgICAgICAgSGFuZGxlcyB0aGUgVXAgYW5kIERv
d24gYXJyb3dzIGtleXMuIEZpbmRzIHRoZSB3b3JkIGJhc2VkIG9uIHRoZQorICAgICAgICBzZWxl
Y3Rpb24gYW5kIGV4dHJhY3RzIHRoZSBudW1iZXIsIHByZWZpeCBhbmQgc3VmZml4LiBJbmNyZW1l
bnRzCisgICAgICAgIG9yIGRlY3JlbWVudHMgdGhlIG51bWJlciBiYXNlZCBvbiB0aGUga2V5IGFu
ZCBtb2RpZmllcnMuIFJlcGxhY2VzCisgICAgICAgIHRoZSBvcmlnaW5hbCB3b3JkIHdpdGggdGhl
IG5ldyB2YWx1ZSBhbmQgc2VsZWN0cyBpdC4gQWxzbyBhcHBsaWVzCisgICAgICAgIHRoZSBzdHls
ZSBzbyB0aGUgcGFnZSByZWZsZWN0cyB0aGUgY2hhbmdlcyBsaXZlLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuZWRpdGluZ0VuZGVkKToK
KyAgICAgICAgRGVsZXRlIHRoZSBoYW5kbGVLZXlFdmVudCBhbmQgb3JpZ2luYWxDU1NUZXh0IHBy
b3BlcnRpZXMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZS5lZGl0aW5nQ2FuY2VsbGVkKToKKyAgICAgICAgSWYgb3JpZ2luYWxDU1NUZXh0
IGV4aXN0cywgc2V0IHRoZSBjc3NUZXh0IHRvIHRoYXQgdmFsdWUgYW5kIGNhbGwKKyAgICAgICAg
dXBkYXRlQWxsLiBPdGhlcndpc2UganVzdCBjYWxsIHVwZGF0ZVRpdGxlIGxpa2UgYmVmb3JlLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUu
ZWRpdGluZ0NvbW1pdHRlZCk6CisgICAgICAgIEZhY3RvcmVkIG91dCB0aGUgc3R5bGUgYXBwbHlp
bmcgY29kZSB0byBhcHBseVN0eWxlVGV4dC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLmFwcGx5U3R5bGVUZXh0KToKKyAgICAgICAgRmFj
dG9yZWQgb3V0IGZyb20gZWRpdGluZ0NvbW1pdHRlZC4gVGFrZXMgYW4gYXJndW1lbnQgdGhhdCBz
cGVjaWZpZXMKKyAgICAgICAgaWYgdGhlIGludGVyZmFjZSBzaG91bGQgYmUgdXBkYXRlZCB3aGVu
IHRoZSBzdHlsZSBpcyBhcHBsaWVkLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rv
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcpOiBDYWxsIHRoZSBvcmln
aW5hbCBrZXkgaGFuZGxlciwgaWYgb25lCisgICAgICAgIGV4aXN0ZWQgYmVmb3JlIGludGVycnVw
dGluZyBrZXkgZXZlbnRzLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qczoK
KyAgICAgICAgKGdldFN0eWxlVGV4dFdpdGhTaG9ydGhhbmRzKTogSGVscGVyIHRvIHJldHVybiBD
U1MgdGV4dCB0aGF0IHByZXNlcnZlcworICAgICAgICBzaG9ydGhhbmQgdmFsdWVzLCBzaW5jZSB0
aGUgY3NzVGV4dCBwcm9wZXJ0eSBvbmx5IG91dHB1dHMgbG9uZ2hhbmRzLgorCisyMDA4LTA4LTA0
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKwogICAgICAgICBGYWN0b3Jz
IG91dCB0aGUgVGV4dFByb21wdC5zY2FuQmFja3dhcmRzIGZ1bmN0aW9uIGludG8gYSBnZW5lcmlj
CiAgICAgICAgIGhlbHBlciBmdW5jdGlvbiBvbiB0aGUgTm9kZSBwcm90b3R5cGUsIG5hbWVkIHJh
bmdlT2ZXb3JkLgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1N0eWxlc1Np
ZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9TdHlsZXNTaWRlYmFyUGFuZS5q
cwppbmRleCA1MDlmMjBjLi5kYWYxYzhmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVj
dG9yL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvU3R5
bGVzU2lkZWJhclBhbmUuanMKQEAgLTU3MCw2ICs1NzAsMTYgQEAgV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudG9vbHRpcCA9
IHRoaXMubmFtZSArICI6ICIgKyAodmFsdWVOaWNrbmFtZXNbdmFsdWVdIHx8IHZhbHVlKSArIChw
cmlvcml0eSA/ICIgIiArIHByaW9yaXR5IDogIiIpOwogICAgIH0sCiAKKyAgICB1cGRhdGVBbGw6
IGZ1bmN0aW9uKHVwZGF0ZUFsbFJ1bGVzKQorICAgIHsKKyAgICAgICAgaWYgKHVwZGF0ZUFsbFJ1
bGVzICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbiAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rp
b24ucGFuZSkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lLnVwZGF0
ZShudWxsLCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pOworICAgICAgICBlbHNlIGlmICh0aGlz
LnRyZWVPdXRsaW5lLnNlY3Rpb24pCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rp
b24udXBkYXRlKHRydWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLnVwZGF0ZVRp
dGxlKCk7IC8vIEZJWE1FOiB0aGlzIHdpbGwgbm90IHNob3cgbmV3IHByb3BlcnRpZXMuIEJ1dCB3
ZSBkb24ndCBoaXQgaGlzIGNhc2UgeWV0LgorICAgIH0sCisKICAgICB0b2dnbGVFbmFibGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBkaXNhYmxlZCA9ICFldmVudC50YXJn
ZXQuY2hlY2tlZDsKQEAgLTYwNiwxMCArNjE2LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIHVudGlsIGFmdGVyIHRoZSB2
YWx1ZSBhbmQgcHJpb3JpdHkgYXJlIHJldHJpZXZlZC4KICAgICAgICAgdGhpcy5kaXNhYmxlZCA9
IGRpc2FibGVkOwogCi0gICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24gJiYgdGhp
cy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUpCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnNlY3Rpb24ucGFuZS51cGRhdGUobnVsbCwgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKTsKLSAg
ICAgICAgZWxzZSBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0aW9uKQotICAgICAgICAgICAgdGhp
cy50cmVlT3V0bGluZS5zZWN0aW9uLnVwZGF0ZSh0cnVlKTsKKyAgICAgICAgdGhpcy51cGRhdGVB
bGwodHJ1ZSk7CiAgICAgfSwKIAogICAgIHVwZGF0ZVN0YXRlOiBmdW5jdGlvbigpCkBAIC02ODIs
MjAgKzY4OSwxMDUgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRl
bnQoc2VsZWN0RWxlbWVudCwgMCwgc2VsZWN0RWxlbWVudCwgMSk7CiAKKyAgICAgICAgdGhpcy5s
aXN0SXRlbUVsZW1lbnQuaGFuZGxlS2V5RXZlbnQgPSB0aGlzLmVkaXRpbmdLZXlEb3duLmJpbmQo
dGhpcyk7CisKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0aGlzLmxpc3RJdGVt
RWxlbWVudCwgdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuZWRpdGluZ0Nh
bmNlbGxlZC5iaW5kKHRoaXMpLCBjb250ZXh0KTsKICAgICB9LAogCisgICAgZWRpdGluZ0tleURv
d246IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmtleUlkZW50aWZp
ZXIgIT09ICJVcCIgJiYgZXZlbnQua2V5SWRlbnRpZmllciAhPT0gIkRvd24iKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7CisgICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQo
MCk7CisgICAgICAgIGlmIChzZWxlY3Rpb25SYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lciAh
PT0gdGhpcy5saXN0SXRlbUVsZW1lbnQgJiYgIXNlbGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9y
Q29udGFpbmVyLmlzRGVzY2VuZGFudCh0aGlzLmxpc3RJdGVtRWxlbWVudCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdmFyIHdvcmRSYW5nZSA9IHNlbGVjdGlvblJhbmdlLnN0YXJ0
Q29udGFpbmVyLnJhbmdlT2ZXb3JkKHNlbGVjdGlvblJhbmdlLnN0YXJ0T2Zmc2V0ICwgIiBcdFxu
XCInOjssLygpIiwgdGhpcy5saXN0SXRlbUVsZW1lbnQpOworICAgICAgICBpZiAoIXdvcmRSYW5n
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgd29yZFN0cmluZyA9IHdvcmRS
YW5nZS50b1N0cmluZygpOworICAgICAgICB2YXIgcmVwbGFjZW1lbnRTdHJpbmcgPSB3b3JkU3Ry
aW5nOworCisgICAgICAgIHZhciBtYXRjaGVzID0gLyguKj8pKC0/XGQrKD86XC5cZCspPykoLiop
Ly5leGVjKHdvcmRTdHJpbmcpOworICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0
aCkgeworICAgICAgICAgICAgdmFyIHByZWZpeCA9IG1hdGNoZXNbMV07CisgICAgICAgICAgICB2
YXIgbnVtYmVyID0gcGFyc2VGbG9hdChtYXRjaGVzWzJdKTsKKyAgICAgICAgICAgIHZhciBzdWZm
aXggPSBtYXRjaGVzWzNdOworCisgICAgICAgICAgICAvLyBJZiB0aGUgbnVtYmVyIGlzIG5lYXIg
emVybyBvciB0aGUgbnVtYmVyIGlzIG9uZSBhbmQgdGhlIGRpcmVjdGlvbiB3aWxsIHRha2UgaXQg
bmVhciB6ZXJvLgorICAgICAgICAgICAgdmFyIG51bWJlck5lYXJaZXJvID0gKG51bWJlciA8IDEg
JiYgbnVtYmVyID4gLTEpOworICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSAmJiBldmVudC5r
ZXlJZGVudGlmaWVyID09PSAiRG93biIpCisgICAgICAgICAgICAgICAgbnVtYmVyTmVhclplcm8g
PSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAobnVtYmVyID09PSAtMSAmJiBldmVudC5rZXlJ
ZGVudGlmaWVyID09PSAiVXAiKQorICAgICAgICAgICAgICAgIG51bWJlck5lYXJaZXJvID0gdHJ1
ZTsKKworICAgICAgICAgICAgLy8gSnVtcCBieSAxMCB3aGVuIHNoaWZ0IGlzIGRvd24gb3IganVt
cCBieSAwLjEgd2hlbiBuZWFyIHplcm8gb3IgQWx0L09wdGlvbiBpcyBkb3duLgorICAgICAgICAg
ICAgdmFyIGNoYW5nZUFtb3VudCA9IChldmVudC5zaGlmdEtleSA/IDEwIDogKChldmVudC5hbHRL
ZXkgfHwgbnVtYmVyTmVhclplcm8pID8gMC4xIDogMSkpOworICAgICAgICAgICAgaWYgKGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJEb3duIikKKyAgICAgICAgICAgICAgICBjaGFuZ2VBbW91bnQg
Kj0gLTE7CisKKyAgICAgICAgICAgIC8vIE1ha2UgdGhlIG5ldyBudW1iZXIgYW5kIGNvbnN0cmFp
biBpdCB0byBhIHByZWNpc2lvbiBvZiA2LCB0aGlzIG1hdGNoZXMgbnVtYmVycyB0aGUgZW5naW5l
IHJldHVybnMuCisgICAgICAgICAgICAvLyBVc2UgdGhlIE51bWJlciBjb25zdHJ1Y3RvciB0byBm
b3JnZXQgdGhlIGZpeGVkIHByZWNpc2lvbiwgc28gMS4xMDAwMDAgd2lsbCBwcmludCBhcyAxLjEu
CisgICAgICAgICAgICBudW1iZXIgPSBOdW1iZXIoKG51bWJlciArIGNoYW5nZUFtb3VudCkudG9G
aXhlZCg2KSk7CisKKyAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcHJlZml4ICsgbnVt
YmVyICsgc3VmZml4OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IHRo
aXMgc2hvdWxkIGN5Y2xlIHRocm91Z2gga25vd24ga2V5d29yZHMgZm9yIHRoZSBjdXJyZW50IHBy
b3BlcnR5IG5hbWUuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2
YXIgcmVwbGFjZW1lbnRUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlcGxhY2Vt
ZW50U3RyaW5nKTsKKworICAgICAgICB3b3JkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKKyAgICAg
ICAgd29yZFJhbmdlLmluc2VydE5vZGUocmVwbGFjZW1lbnRUZXh0Tm9kZSk7CisKKyAgICAgICAg
dmFyIGZpbmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAg
ICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KHJlcGxhY2VtZW50VGV4dE5vZGUsIDApOwor
ICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldEVuZChyZXBsYWNlbWVudFRleHROb2RlLCBy
ZXBsYWNlbWVudFN0cmluZy5sZW5ndGgpOworCisgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxS
YW5nZXMoKTsKKyAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2Up
OworCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGV2ZW50LmhhbmRs
ZWQgPSB0cnVlOworCisgICAgICAgIGlmICghdGhpcy5vcmlnaW5hbENTU1RleHQpIHsKKyAgICAg
ICAgICAgIC8vIFJlbWVtYmVyIHRoZSBydWxlJ3Mgb3JpZ2luYWwgQ1NTIHRleHQsIHNvIGl0IGNh
biBiZSByZXN0b3JlZAorICAgICAgICAgICAgLy8gaWYgdGhlIGVkaXRpbmcgaXMgY2FuY2VsZWQg
YW5kIGJlZm9yZSBlYWNoIGFwcGx5LgorICAgICAgICAgICAgdGhpcy5vcmlnaW5hbENTU1RleHQg
PSBnZXRTdHlsZVRleHRXaXRoU2hvcnRoYW5kcyh0aGlzLnN0eWxlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIENTUyB0ZXh0IGJlZm9yZSBh
cHBseWluZyB1c2VyIGNoYW5nZXMuIFRoaXMgaXMgbmVlZGVkIHRvIHByZXZlbnQKKyAgICAgICAg
ICAgIC8vIG5ldyBwcm9wZXJ0aWVzIGZyb20gc3RpY2tpbmcgYXJvdW5kIGlmIHRoZSB1c2VyIGFk
ZHMgb25lLCB0aGVuIHJlbW92ZXMgaXQuCisgICAgICAgICAgICB0aGlzLnN0eWxlLmNzc1RleHQg
PSB0aGlzLm9yaWdpbmFsQ1NTVGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuYXBwbHlT
dHlsZVRleHQodGhpcy5saXN0SXRlbUVsZW1lbnQudGV4dENvbnRlbnQpOworICAgIH0sCisKICAg
ICBlZGl0aW5nRW5kZWQ6IGZ1bmN0aW9uKGNvbnRleHQpCiAgICAgewogICAgICAgICB0aGlzLmhh
c0NoaWxkcmVuID0gY29udGV4dC5oYXNDaGlsZHJlbjsKICAgICAgICAgaWYgKGNvbnRleHQuZXhw
YW5kZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOworICAgICAgICBkZWxldGUgdGhpcy5s
aXN0SXRlbUVsZW1lbnQuaGFuZGxlS2V5RXZlbnQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdp
bmFsQ1NTVGV4dDsKICAgICB9LAogCiAgICAgZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24oZWxl
bWVudCwgY29udGV4dCkKICAgICB7CisgICAgICAgIGlmICh0aGlzLm9yaWdpbmFsQ1NTVGV4dCkg
eworICAgICAgICAgICAgdGhpcy5zdHlsZS5jc3NUZXh0ID0gdGhpcy5vcmlnaW5hbENTU1RleHQ7
CisgICAgICAgICAgICB0aGlzLnVwZGF0ZUFsbCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKKwogICAgICAgICB0aGlzLmVkaXRpbmdFbmRlZChjb250
ZXh0KTsKLSAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgIH0sCiAKICAgICBlZGl0aW5n
Q29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwg
Y29udGV4dCkKQEAgLTcwNSwxNCArNzk3LDE5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodXNlcklucHV0ID09PSBwcmV2
aW91c0NvbnRlbnQpCiAgICAgICAgICAgICByZXR1cm47IC8vIG5vdGhpbmcgY2hhbmdlZCwgc28g
ZG8gbm90aGluZyBlbHNlCiAKLSAgICAgICAgdmFyIHVzZXJJbnB1dExlbmd0aCA9IHVzZXJJbnB1
dC50cmltV2hpdGVzcGFjZSgpLmxlbmd0aDsKKyAgICAgICAgdGhpcy5hcHBseVN0eWxlVGV4dCh1
c2VySW5wdXQsIHRydWUpOworICAgIH0sCisKKyAgICBhcHBseVN0eWxlVGV4dDogZnVuY3Rpb24o
c3R5bGVUZXh0LCB1cGRhdGVJbnRlcmZhY2UpCisgICAgeworICAgICAgICB2YXIgc3R5bGVUZXh0
TGVuZ3RoID0gc3R5bGVUZXh0LnRyaW1XaGl0ZXNwYWNlKCkubGVuZ3RoOwogCiAgICAgICAgIC8v
IENyZWF0ZSBhIG5ldyBlbGVtZW50IHRvIHBhcnNlIHRoZSB1c2VyIGlucHV0IENTUy4KICAgICAg
ICAgdmFyIHBhcnNlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAg
ICAgICAgcGFyc2VFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCB1c2VySW5wdXQpOworICAg
ICAgICBwYXJzZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdHlsZSIsIHN0eWxlVGV4dCk7CiAKLSAg
ICAgICAgdmFyIHVzZXJJbnB1dFN0eWxlID0gcGFyc2VFbGVtZW50LnN0eWxlOwotICAgICAgICBp
ZiAodXNlcklucHV0U3R5bGUubGVuZ3RoIHx8ICF1c2VySW5wdXRMZW5ndGgpIHsKKyAgICAgICAg
dmFyIHRlbXBTdHlsZSA9IHBhcnNlRWxlbWVudC5zdHlsZTsKKyAgICAgICAgaWYgKHRlbXBTdHls
ZS5sZW5ndGggfHwgIXN0eWxlVGV4dExlbmd0aCkgewogICAgICAgICAgICAgLy8gVGhlIGlucHV0
IHdhcyBwYXJzYWJsZSBvciB0aGUgdXNlciBkZWxldGVkIGV2ZXJ5dGhpbmcsIHNvIHJlbW92ZSB0
aGUKICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHByb3BlcnR5IGZyb20gdGhlIHJlYWwgc3R5bGUg
ZGVjbGFyYXRpb24uIElmIHRoaXMgcmVwcmVzZW50cwogICAgICAgICAgICAgLy8gYSBzaG9ydGhh
bmQgcmVtb3ZlIGFsbCB0aGUgbG9uZ2hhbmQgcHJvcGVydGllcy4KQEAgLTcyNCw1MSArODIxLDUw
IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodGhpcy5uYW1lKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICghdXNlcklucHV0TGVuZ3RoKSB7Ci0gICAgICAgICAgICAv
LyBUaGUgdXNlciBkZWxldGVkIHRoZSBldmVyeXRoaW5nLCBzbyByZW1vdmUgdGhlIHRyZWUgZWxl
bWVudCBhbmQgdXBkYXRlLgotICAgICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUuc2VjdGlv
biAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZSkKLSAgICAgICAgICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZS51cGRhdGUoKTsKLSAgICAgICAgICAgIHRoaXMucGFy
ZW50LnJlbW92ZUNoaWxkKHRoaXMpOworICAgICAgICBpZiAoIXN0eWxlVGV4dExlbmd0aCkgewor
ICAgICAgICAgICAgaWYgKHVwZGF0ZUludGVyZmFjZSkgeworICAgICAgICAgICAgICAgIC8vIFRo
ZSB1c2VyIGRlbGV0ZWQgdGhlIGV2ZXJ5dGhpbmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBlbGVtZW50
IGFuZCB1cGRhdGUuCisgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUuc2VjdGlv
biAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucGFuZSkKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUudXBkYXRlKCk7CisgICAgICAgICAgICAgICAg
dGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXVzZXJJbnB1dFN0eWxlLmxlbmd0
aCkgeworICAgICAgICBpZiAoIXRlbXBTdHlsZS5sZW5ndGgpIHsKICAgICAgICAgICAgIC8vIFRo
ZSB1c2VyIHR5cGVkIHNvbWV0aGluZywgYnV0IGl0IGRpZG4ndCBwYXJzZS4gSnVzdCBhYm9ydCBh
bmQgcmVzdG9yZQogICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHRpdGxlIGZvciB0aGlzIHBy
b3BlcnR5LgotICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOworICAgICAgICAgICAgaWYg
KHVwZGF0ZUludGVyZmFjZSkKKyAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJdGVyYXRlIG9mIHRo
ZSBwcm9wZXJ0aWVzIG9uIHRoZSB0ZXN0IGVsZW1lbnQncyBzdHlsZSBkZWNsYXJhdGlvbiBhbmQK
ICAgICAgICAgLy8gYWRkIHRoZW0gdG8gdGhlIHJlYWwgc3R5bGUgZGVjbGFyYXRpb24uIFdlIHRh
a2UgY2FyZSB0byBtb3ZlIHNob3J0aGFuZHMuCiAgICAgICAgIHZhciBmb3VuZFNob3J0aGFuZHMg
PSB7fTsKLSAgICAgICAgdmFyIHVuaXF1ZVByb3BlcnRpZXMgPSBnZXRVbmlxdWVTdHlsZVByb3Bl
cnRpZXModXNlcklucHV0U3R5bGUpOworICAgICAgICB2YXIgdW5pcXVlUHJvcGVydGllcyA9IGdl
dFVuaXF1ZVN0eWxlUHJvcGVydGllcyh0ZW1wU3R5bGUpOwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHVuaXF1ZVByb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBu
YW1lID0gdW5pcXVlUHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgIHZhciBzaG9ydGhhbmQgPSB1
c2VySW5wdXRTdHlsZS5nZXRQcm9wZXJ0eVNob3J0aGFuZChuYW1lKTsKKyAgICAgICAgICAgIHZh
ciBzaG9ydGhhbmQgPSB0ZW1wU3R5bGUuZ2V0UHJvcGVydHlTaG9ydGhhbmQobmFtZSk7CiAKICAg
ICAgICAgICAgIGlmIChzaG9ydGhhbmQgJiYgc2hvcnRoYW5kIGluIGZvdW5kU2hvcnRoYW5kcykK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKHNob3J0aGFuZCkg
ewotICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldFNob3J0aGFuZFZhbHVlKHVzZXJJbnB1
dFN0eWxlLCBzaG9ydGhhbmQpOwotICAgICAgICAgICAgICAgIHZhciBwcmlvcml0eSA9IGdldFNo
b3J0aGFuZFByaW9yaXR5KHVzZXJJbnB1dFN0eWxlLCBzaG9ydGhhbmQpOworICAgICAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IGdldFNob3J0aGFuZFZhbHVlKHRlbXBTdHlsZSwgc2hvcnRoYW5kKTsK
KyAgICAgICAgICAgICAgICB2YXIgcHJpb3JpdHkgPSBnZXRTaG9ydGhhbmRQcmlvcml0eSh0ZW1w
U3R5bGUsIHNob3J0aGFuZCk7CiAgICAgICAgICAgICAgICAgZm91bmRTaG9ydGhhbmRzW3Nob3J0
aGFuZF0gPSB0cnVlOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIg
dmFsdWUgPSB1c2VySW5wdXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpOwotICAgICAgICAg
ICAgICAgIHZhciBwcmlvcml0eSA9IHVzZXJJbnB1dFN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHko
bmFtZSk7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGVtcFN0eWxlLmdldFByb3BlcnR5
VmFsdWUobmFtZSk7CisgICAgICAgICAgICAgICAgdmFyIHByaW9yaXR5ID0gdGVtcFN0eWxlLmdl
dFByb3BlcnR5UHJpb3JpdHkobmFtZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IFNldCB0aGUgcHJvcGVydHkgb24gdGhlIHJlYWwgc3R5bGUgZGVjbGFyYXRpb24uCiAgICAgICAg
ICAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KChzaG9ydGhhbmQgfHwgbmFtZSksIHZhbHVlLCBw
cmlvcml0eSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0
aW9uICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lKQotICAgICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5zZWN0aW9uLnBhbmUudXBkYXRlKG51bGwsIHRoaXMudHJlZU91dGxpbmUuc2Vj
dGlvbik7Ci0gICAgICAgIGVsc2UgaWYgKHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbikKLSAgICAg
ICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi51cGRhdGUodHJ1ZSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsgLy8gRklYTUU6IHRoaXMgd2lsbCBu
b3Qgc2hvdyBuZXcgcHJvcGVydGllcy4gQnV0IHdlIGRvbid0IGhpdCBoaXMgY2FzZSB5ZXQuCisg
ICAgICAgIGlmICh1cGRhdGVJbnRlcmZhY2UpCisgICAgICAgICAgICB0aGlzLnVwZGF0ZUFsbCh0
cnVlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5z
cGVjdG9yLmpzIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMKaW5kZXggN2Nl
YTE3Yy4uMDkwN2ViMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0
b3IuanMKKysrIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMKQEAgLTExMzMs
NyArMTEzMyw3IEBAIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcgPSBmdW5jdGlvbihlbGVtZW50
LCBjb21taXR0ZWRDYWxsYmFjaywgY2FuY2VsbGVkQ2FsbGJhCiAgICAgZWxlbWVudC5fX2VkaXRp
bmcgPSB0cnVlOwogCiAgICAgdmFyIG9sZFRleHQgPSBlbGVtZW50LnRleHRDb250ZW50OwotICAg
IHZhciBoYW5kbGVLZXlFdmVudCA9IGVsZW1lbnQuaGFuZGxlS2V5RXZlbnQ7CisgICAgdmFyIG9s
ZEhhbmRsZUtleUV2ZW50ID0gZWxlbWVudC5oYW5kbGVLZXlFdmVudDsKIAogICAgIGVsZW1lbnQu
YWRkU3R5bGVDbGFzcygiZWRpdGluZyIpOwogCkBAIC0xMTUzLDcgKzExNTMsNyBAQCBXZWJJbnNw
ZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJhY2ss
IGNhbmNlbGxlZENhbGxiYQogICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IDA7CiAgICAgICAgIHRo
aXMuc2Nyb2xsTGVmdCA9IDA7CiAKLSAgICAgICAgdGhpcy5oYW5kbGVLZXlFdmVudCA9IGhhbmRs
ZUtleUV2ZW50OworICAgICAgICB0aGlzLmhhbmRsZUtleUV2ZW50ID0gb2xkSGFuZGxlS2V5RXZl
bnQ7CiAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIGJsdXJFdmVu
dExpc3RlbmVyLCBmYWxzZSk7CiAKICAgICAgICAgaWYgKGVsZW1lbnQgPT09IFdlYkluc3BlY3Rv
ci5jdXJyZW50Rm9jdXNFbGVtZW50IHx8IGVsZW1lbnQuaXNBbmNlc3RvcihXZWJJbnNwZWN0b3Iu
Y3VycmVudEZvY3VzRWxlbWVudCkpCkBAIC0xMTc1LDYgKzExNzUsMTEgQEAgV2ViSW5zcGVjdG9y
LnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbW1pdHRlZENhbGxiYWNrLCBjYW5j
ZWxsZWRDYWxsYmEKICAgICB9CiAKICAgICBlbGVtZW50LmhhbmRsZUtleUV2ZW50ID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgaWYgKG9sZEhhbmRsZUtleUV2ZW50KQorICAgICAgICAgICAg
b2xkSGFuZGxlS2V5RXZlbnQoZXZlbnQpOworICAgICAgICBpZiAoZXZlbnQuaGFuZGxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IkVudGVyIikgewogICAgICAgICAgICAgZWRpdGluZ0NvbW1pdHRlZC5jYWxsKGVsZW1lbnQpOwog
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci91dGls
aXRpZXMuanMKaW5kZXggNWRhN2RjMi4uYTg2OTc0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L2luc3BlY3Rvci91dGlsaXRpZXMuanMKKysrIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci91dGls
aXRpZXMuanMKQEAgLTM3Miw2ICszNzIsMzUgQEAgU3RyaW5nLnByb3RvdHlwZS50cmltVVJMID0g
ZnVuY3Rpb24oYmFzZVVSTERvbWFpbikKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitmdW5jdGlv
biBnZXRTdHlsZVRleHRXaXRoU2hvcnRoYW5kcyhzdHlsZSkKK3sKKyAgICB2YXIgY3NzVGV4dCA9
ICIiOworICAgIHZhciBmb3VuZFByb3BlcnRpZXMgPSB7fTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHN0eWxlLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBpbmRpdmlkdWFsUHJvcGVydHkg
PSBzdHlsZVtpXTsKKyAgICAgICAgdmFyIHNob3J0aGFuZFByb3BlcnR5ID0gc3R5bGUuZ2V0UHJv
cGVydHlTaG9ydGhhbmQoaW5kaXZpZHVhbFByb3BlcnR5KTsKKyAgICAgICAgaWYgKChzaG9ydGhh
bmRQcm9wZXJ0eSB8fCBpbmRpdmlkdWFsUHJvcGVydHkpIGluIGZvdW5kUHJvcGVydGllcykKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eSkgewor
ICAgICAgICAgICAgdmFyIHZhbHVlID0gZ2V0U2hvcnRoYW5kVmFsdWUoc3R5bGUsIHNob3J0aGFu
ZFByb3BlcnR5KTsKKyAgICAgICAgICAgIHZhciBwcmlvcml0eSA9IGdldFNob3J0aGFuZFByaW9y
aXR5KHN0eWxlLCBzaG9ydGhhbmRQcm9wZXJ0eSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB2YXIgdmFsdWUgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGluZGl2aWR1YWxQcm9wZXJ0
eSk7CisgICAgICAgICAgICB2YXIgcHJpb3JpdHkgPSBzdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5
KGluZGl2aWR1YWxQcm9wZXJ0eSk7CisgICAgICAgIH0KKworICAgICAgICBmb3VuZFByb3BlcnRp
ZXNbKHNob3J0aGFuZFByb3BlcnR5IHx8IGluZGl2aWR1YWxQcm9wZXJ0eSldID0gdHJ1ZTsKKwor
ICAgICAgICBjc3NUZXh0ICs9IChzaG9ydGhhbmRQcm9wZXJ0eSB8fCBpbmRpdmlkdWFsUHJvcGVy
dHkpICsgIjogIiArIHZhbHVlOworICAgICAgICBpZiAocHJpb3JpdHkpCisgICAgICAgICAgICBj
c3NUZXh0ICs9ICIgISIgKyBwcmlvcml0eTsKKyAgICAgICAgY3NzVGV4dCArPSAiOyAiOworICAg
IH0KKworICAgIHJldHVybiBjc3NUZXh0OworfQorCiBmdW5jdGlvbiBnZXRTaG9ydGhhbmRWYWx1
ZShzdHlsZSwgc2hvcnRoYW5kUHJvcGVydHkpCiB7CiAgICAgdmFyIHZhbHVlID0gc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZShzaG9ydGhhbmRQcm9wZXJ0eSk7Ci0tIAoxLjUuNC40Cgo=
</data>
<flag name="review"
          id="10015"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>