<?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>109200</bug_id>
          
          <creation_ts>2013-02-07 08:56:57 -0800</creation_ts>
          <short_desc>Web Inspector: implement smart braces functionality</short_desc>
          <delta_ts>2013-02-15 04:32:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Lushnikov">lushnikov</reporter>
          <assigned_to name="Andrey Lushnikov">lushnikov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jochen</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>827582</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-07 08:56:57 -0800</bug_when>
    <thetext>By &quot;smart braces&quot; I mean:
- When I type &quot;(&quot;, a closing brace should be added immediately and the cursor should be located inside &quot;()&quot; pair.
- When then I hit &quot;Backspace&quot;, both braces should be deleted
- If, instead, I type &quot;)&quot; - cursor should go over closing brace without adding a new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827592</commentid>
    <comment_count>1</comment_count>
      <attachid>187125</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-07 09:02:51 -0800</bug_when>
    <thetext>Created attachment 187125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827672</commentid>
    <comment_count>2</comment_count>
      <attachid>187133</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-07 10:27:22 -0800</bug_when>
    <thetext>Created attachment 187133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830706</commentid>
    <comment_count>3</comment_count>
      <attachid>187809</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-12 01:47:57 -0800</bug_when>
    <thetext>Created attachment 187809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830708</commentid>
    <comment_count>4</comment_count>
      <attachid>187809</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-12 01:48:50 -0800</bug_when>
    <thetext>Comment on attachment 187809
Patch

test expectations not updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830711</commentid>
    <comment_count>5</comment_count>
      <attachid>187811</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-12 01:55:56 -0800</bug_when>
    <thetext>Created attachment 187811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830739</commentid>
    <comment_count>6</comment_count>
      <attachid>187819</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-12 02:52:34 -0800</bug_when>
    <thetext>Created attachment 187819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830898</commentid>
    <comment_count>7</comment_count>
      <attachid>187819</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-12 06:45:05 -0800</bug_when>
    <thetext>Comment on attachment 187819
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:1398
&gt; +            this._textInputInterceptors[&quot;(&quot;] = this._handleBracePairInsertion.bind(this, &quot;()&quot;);

registerInterceptor(&quot;(&quot;, &quot;()&quot;, this._handleBracePairInsertion); would look more user-friendly

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2829
&gt; +        var interceptor = this._textInputInterceptors[event.data];

textInput will trigger for pasting text as well and you don&apos;t want interceptors to work there. Instad of text input interceptors, you want keyDown handlers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832997</commentid>
    <comment_count>8</comment_count>
      <attachid>188329</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-14 05:37:15 -0800</bug_when>
    <thetext>Created attachment 188329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833016</commentid>
    <comment_count>9</comment_count>
      <attachid>187819</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-02-14 06:21:46 -0800</bug_when>
    <thetext>Comment on attachment 187819
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:1398
&gt;&gt; +            this._textInputInterceptors[&quot;(&quot;] = this._handleBracePairInsertion.bind(this, &quot;()&quot;);
&gt; 
&gt; registerInterceptor(&quot;(&quot;, &quot;()&quot;, this._handleBracePairInsertion); would look more user-friendly

not sure I got your idea.. Do you mean we should create a public &quot;registerInterceptor&quot; method?

&gt;&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2829
&gt;&gt; +        var interceptor = this._textInputInterceptors[event.data];
&gt; 
&gt; textInput will trigger for pasting text as well and you don&apos;t want interceptors to work there. Instad of text input interceptors, you want keyDown handlers.

fixed to handling in keyPress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833872</commentid>
    <comment_count>10</comment_count>
      <attachid>188329</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-15 04:02:54 -0800</bug_when>
    <thetext>Comment on attachment 188329
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:3549
&gt; +        } else

return false

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:3595
&gt; +        } else

return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833887</commentid>
    <comment_count>11</comment_count>
      <attachid>188329</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 04:32:07 -0800</bug_when>
    <thetext>Comment on attachment 188329
Patch

Clearing flags on attachment: 188329

Committed r142983: &lt;http://trac.webkit.org/changeset/142983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833888</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 04:32:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187125</attachid>
            <date>2013-02-07 09:02:51 -0800</date>
            <delta_ts>2013-02-07 10:27:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109200-20130207205926.patch</filename>
            <type>text/plain</type>
            <size>13286</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNhZTkzYTM2ODAxMTQw
YzhmOGU0YzVmMzcxMGI1OWMwYzc0MDYyOS4uZGFkYjc5Yzk1OTZjNTVlMTgxNTE3MGU2OTZjNDZm
MWEwZTRiY2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAyLTA3ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0OiBpbnNwZWN0b3Iv
ZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCisKKyAgICAgICAgSW1wbGVtZW50
IHRleHRJbnB1dEludGVyY2VwdG9ycyB3aGljaCB3aWxsIGludGVyY2VwdCB1c2VyIGlucHV0Cisg
ICAgICAgIGFuZCBvdmVycmlkZSBpdCB3aXRoIGFwcHJvcHJpYXRlIGFjdGlvbnMuIEFkZCBhIHNo
b3J0Y3V0IGZvciBCYWNrc3BhY2UKKyAgICAgICAga2V5IHRvIGRlbGV0ZSBicmFjZSBwYWlycyBp
biBjZXJ0YWluIGNhc2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0
VGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5f
cmVnaXN0ZXJUZXh0SW5wdXRJbnRlcmNlcHRvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9oYW5kbGVCcmFjZVBhaXJJbnNlcnRpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9oYW5k
bGVDbG9zaW5nQnJhY2VPdmVycmlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUuX3JlZ2lzdGVyU2hvcnRjdXRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlQmFja3NwYWNlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFu
ZGxlVGV4dElucHV0KToKKwogMjAxMy0wMi0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDbG9zdXJlIGNvbXBpbGF0aW9u
IGZpeGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
ZmF1bHRUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qcwppbmRleCAwNWI4ZTFiMWZkZjU4YWU4Mzg5MzQyNWM1NWE5YWY2
NWE1YWViZmUyLi5jNzRkMTYzMTk5ODc1M2Y0YzJlMDZlYTNiZGIxNWQ0NGRlMjY1ZWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRp
dG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRl
eHRFZGl0b3IuanMKQEAgLTEzNzUsOSArMTM3NSw1NyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbCA9IGZ1bmN0aW9uKGRlbGVnYXRlLCB0ZXh0TW9kZWwsIHVybCwgc3luY1Njcm9s
bAogICAgIHRoaXMuX2ZyZWVDYWNoZWRFbGVtZW50cygpOwogICAgIHRoaXMuYnVpbGRDaHVua3Mo
KTsKICAgICB0aGlzLl9yZWdpc3RlclNob3J0Y3V0cygpOworICAgIHRoaXMuX3JlZ2lzdGVyVGV4
dElucHV0SW50ZXJjZXB0b3JzKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBh
bmVsLnByb3RvdHlwZSA9IHsKKworICAgIF9yZWdpc3RlclRleHRJbnB1dEludGVyY2VwdG9yczog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGV4dElucHV0SW50ZXJjZXB0b3JzID0g
e307CisKKyAgICAgICAgdGhpcy5fdGV4dElucHV0SW50ZXJjZXB0b3JzWyIoIl0gPSB0aGlzLl9o
YW5kbGVCcmFjZVBhaXJJbnNlcnRpb24uYmluZCh0aGlzLCAiKCkiKTsKKyAgICAgICAgdGhpcy5f
dGV4dElucHV0SW50ZXJjZXB0b3JzWyJ7Il0gPSB0aGlzLl9oYW5kbGVCcmFjZVBhaXJJbnNlcnRp
b24uYmluZCh0aGlzLCAie30iKTsKKyAgICAgICAgdGhpcy5fdGV4dElucHV0SW50ZXJjZXB0b3Jz
WyIpIl0gPSB0aGlzLl9oYW5kbGVDbG9zaW5nQnJhY2VPdmVycmlkZS5iaW5kKHRoaXMsICIpIik7
CisgICAgICAgIHRoaXMuX3RleHRJbnB1dEludGVyY2VwdG9yc1sifSJdID0gdGhpcy5faGFuZGxl
Q2xvc2luZ0JyYWNlT3ZlcnJpZGUuYmluZCh0aGlzLCAifSIpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYnJhY2VQYWlyCisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICBfaGFuZGxlQnJhY2VQYWlySW5zZXJ0aW9uOiBmdW5jdGlvbihicmFj
ZVBhaXIpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fbGFzdFNlbGVjdGlv
bi5ub3JtYWxpemUoKTsKKyAgICAgICAgdGhpcy5fdGV4dE1vZGVsLmVkaXRSYW5nZShzZWxlY3Rp
b24sIGJyYWNlUGFpcik7CisgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oV2ViSW5zcGVj
dG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24oc2VsZWN0aW9uLnN0YXJ0TGluZSwgc2Vs
ZWN0aW9uLnN0YXJ0Q29sdW1uICsgMSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGJyYWNlCisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBfaGFuZGxlQ2xvc2luZ0JyYWNlT3ZlcnJpZGU6IGZ1bmN0
aW9uKGJyYWNlKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2xhc3RTZWxl
Y3Rpb24ubm9ybWFsaXplKCk7CisgICAgICAgIGlmICghc2VsZWN0aW9uIHx8ICFzZWxlY3Rpb24u
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBsaW5l
TnVtYmVyID0gc2VsZWN0aW9uLnN0YXJ0TGluZTsKKyAgICAgICAgdmFyIGNvbHVtbiA9IHNlbGVj
dGlvbi5zdGFydENvbHVtbjsKKyAgICAgICAgdmFyIGxpbmUgPSB0aGlzLl90ZXh0TW9kZWwubGlu
ZShsaW5lTnVtYmVyKTsKKyAgICAgICAgaWYgKGxpbmUuY2hhckF0KGNvbHVtbikgIT09IGJyYWNl
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBicmFjZXMgPSB0aGlz
Ll9icmFjZU1hdGNoZXIuZW5jbG9zaW5nQnJhY2VzKGxpbmVOdW1iZXIsIGNvbHVtbik7CisgICAg
ICAgIGlmIChicmFjZXMgJiYgYnJhY2VzLnJpZ2h0QnJhY2UubGluZU51bWJlciA9PT0gbGluZU51
bWJlciAmJiBicmFjZXMucmlnaHRCcmFjZS5jb2x1bW4gPT09IGNvbHVtbikgeworICAgICAgICAg
ICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZy
b21Mb2NhdGlvbihsaW5lTnVtYmVyLCBjb2x1bW4gKyAxKSk7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwK
KwogICAgIF9yZWdpc3RlclNob3J0Y3V0czogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFy
IGtleXMgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzOwpAQCAtMTM5Nyw2ICsx
NDQ1LDMxIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIGhhbmRsZVNoaWZ0VGFiS2V5ID0gdGhpcy5faGFuZGxlVGFiS2V5UHJlc3Mu
YmluZCh0aGlzLCB0cnVlKTsKICAgICAgICAgdGhpcy5fc2hvcnRjdXRzW1dlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoa2V5cy5UYWIuY29kZSldID0gaGFuZGxlVGFiS2V5Owog
ICAgICAgICB0aGlzLl9zaG9ydGN1dHNbV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFr
ZUtleShrZXlzLlRhYi5jb2RlLCBtb2RpZmllcnMuU2hpZnQpXSA9IGhhbmRsZVNoaWZ0VGFiS2V5
OworICAgICAgICB0aGlzLl9zaG9ydGN1dHNbV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
bWFrZUtleShrZXlzLkJhY2tzcGFjZS5jb2RlLCBtb2RpZmllcnMuTm9uZSldID0gdGhpcy5faGFu
ZGxlQmFja3NwYWNlLmJpbmQodGhpcyk7CisgICAgfSwKKworICAgIF9oYW5kbGVCYWNrc3BhY2U6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLl9sYXN0U2Vs
ZWN0aW9uOworICAgICAgICBpZiAoIXNlbGVjdGlvbiB8fCAhc2VsZWN0aW9uLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgY29sdW1uID0gc2VsZWN0
aW9uLnN0YXJ0Q29sdW1uOworICAgICAgICBpZiAoY29sdW1uID09IDApCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzZWxlY3Rpb24uc3RhcnRM
aW5lOworICAgICAgICB2YXIgbGluZSA9IHRoaXMuX3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIp
OworICAgICAgICBpZiAoY29sdW1uID09PSBsaW5lLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICB2YXIgcGFpciA9IGxpbmUuc3Vic3RyKGNvbHVtbiAtIDEsIDIp
OworICAgICAgICBpZiAocGFpciA9PT0gIigpIiB8fCBwYWlyID09PSAie30iKSB7CisgICAgICAg
ICAgICB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdl
KGxpbmVOdW1iZXIsIGNvbHVtbiAtIDEsIGxpbmVOdW1iZXIsIGNvbHVtbiArIDEpLCAiIik7Cisg
ICAgICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0aW9uKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uu
Y3JlYXRlRnJvbUxvY2F0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbiAtIDEpKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9LAogCiAgICAgLyoqCkBAIC0yNjc2LDYgKzI3NDksMTEgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9oYW5kbGVUZXh0
SW5wdXQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKKyAgICAgICAgdmFyIGludGVyY2VwdG9yID0g
dGhpcy5fdGV4dElucHV0SW50ZXJjZXB0b3JzW2V2ZW50LmRhdGFdOworICAgICAgICBpZiAoaW50
ZXJjZXB0b3IgJiYgaW50ZXJjZXB0b3IoKSkgeworICAgICAgICAgICAgZXZlbnQuY29uc3VtZSh0
cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICB0aGlzLl90ZXh0
SW5wdXREYXRhID0gZXZlbnQuZGF0YTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2ZlNzA2NjAwODUzNDU4
NWQwODY1MzRkNmQ2YTcxMzA2NTkwOGIwMS4uZGIyY2M2ZmE4YjE0Njc1OTc0YThhZmU4NWIwYTc2
NmY5ZThhZmViNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAyLTA3ICBBbmRyZXkgTHVz
aG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRoYXQgdmVy
aWZpZXMgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkgYW5kCisgICAgICAgIHNraXAgdGhpcyB0
ZXN0IG9uIHRob3NlIHBvcnRzIHdoaWNoIGRvIG5vdCBoYXZlIGtleSBlbWl0dGVycyBhbmQKKyAg
ICAgICAgdGV4dElucHV0IGV2ZW50IGVtdWxhdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9l
ZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6IAorICAgICAgICAq
IHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDItMDcgIFpvbHRhbiBBcnZhaSAgPHphcnZhaUBpbmYu
dS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBVbnJldml3ZWQgZ2FyZGVuaW5nLiBSZWJhc2Vs
aW5pbmcgYW5kIHNraXBwaW5nIG5ldyBmYWlsdXJlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmI2MzliODA3MWMwNzdiZWEzMTc3ZmU0MzE1NDQ2ZDUw
MjdkYWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90
ZXh0LWVkaXRvci1zbWFydC1icmFjZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Ro
aXMgdGVzdCBjaGVja3MgdGV4dCBlZGl0b3Igc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkuCisK
K2Vycm9yOiBFeGNlcHRpb24gZHVyaW5nIHRlc3QgZXhlY3V0aW9uOiBUeXBlRXJyb3I6IE9iamVj
dCBbb2JqZWN0IE9iamVjdF0gaGFzIG5vIG1ldGhvZCAnc2VuZEtleScsVHlwZUVycm9yOiBPYmpl
Y3QgW29iamVjdCBPYmplY3RdIGhhcyBubyBtZXRob2QgJ3NlbmRLZXknCisgICAgYXQgdGVzdCAo
ZXZhbHVhdGVJbldlYkluc3BlY3RvcjEuanM6MjU6MTcpCisgICAgYXQgcnVuVGVzdEluRnJvbnRl
bmQgKGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IxLmpzOjEwOjEzKQorICAgIGF0IGV2YWwgKGV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IxLmpzOjE1OjcpCisgICAgYXQgZXZhbCAobmF0aXZlKQorICAgIGF0
IE9iamVjdC5pbnZva2VNZXRob2QgKGZpbGU6Ly8vdXNyL2xvY2FsL2dvb2dsZS9jb2RlL2NhbmFy
aS9zcmMvb3V0L1JlbGVhc2UvcmVzb3VyY2VzL2luc3BlY3Rvci9UZXN0Q29udHJvbGxlci5qczo0
MTozMykKKyAgICBhdCBPYmplY3QuSW5zcGVjdG9yQmFja2VuZENsYXNzLnJ1bkFmdGVyUGVuZGlu
Z0Rpc3BhdGNoZXMgKGZpbGU6Ly8vdXNyL2xvY2FsL2dvb2dsZS9jb2RlL2NhbmFyaS9zcmMvb3V0
L1JlbGVhc2UvcmVzb3VyY2VzL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmpzOjI1NTozMCkK
KyAgICBhdCBPYmplY3QuSW5zcGVjdG9yQmFja2VuZENsYXNzLmRpc3BhdGNoIChmaWxlOi8vL3Vz
ci9sb2NhbC9nb29nbGUvY29kZS9jYW5hcmkvc3JjL291dC9SZWxlYXNlL3Jlc291cmNlcy9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5qczoxOTU6MjIpCisgICAgYXQgT2JqZWN0Lkluc3BlY3Rv
ckZyb250ZW5kQVBJLmRpc3BhdGNoTWVzc2FnZSAoZmlsZTovLy91c3IvbG9jYWwvZ29vZ2xlL2Nv
ZGUvY2FuYXJpL3NyYy9vdXQvUmVsZWFzZS9yZXNvdXJjZXMvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzOjE5ODoyNikKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzFj
MmQ4MDA2YjRhNDFkOWI0M2RlOWRlZjAyM2NkZjUwYzk5NzZlMAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0
bWwKQEAgLTAsMCArMSwxMTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9ImVkaXRvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVUZXN0RWRp
dG9yKCk7CisgICAgdGV4dEVkaXRvci5vdmVycmlkZVZpZXdwb3J0Rm9yVGVzdCgwLCB1bmRlZmlu
ZWQsIDMpOworICAgIHRleHRFZGl0b3IubWltZVR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsKKyAg
ICB0ZXh0RWRpdG9yLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAgICB0ZXh0RWRpdG9yLmVsZW1lbnQu
Zm9jdXMoKTsKKworICAgIHRleHRFZGl0b3Iuc2V0VGV4dCgiIik7CisgICAgdGV4dEVkaXRvci5z
ZXRTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24oMCwg
MCkpOworCisgICAgZnVuY3Rpb24gd2FpdEFuZER1bXAobmV4dCkKKyAgICB7CisgICAgICAgIHNl
dFRpbWVvdXQoc3RlcCk7CisgICAgICAgIGZ1bmN0aW9uIHN0ZXAoKQorICAgICAgICB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXh0RWRpdG9yLnRleHQoKSk7CisgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiB0eXBlSW4o
dGV4dCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2Vy
dFRleHQodGV4dCk7CisgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2spOworICAgIH0KKworICAg
IEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJvdW5k
QnJhY2VJbnNlcnRpb24obmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdHlwZUluKCJmdW5j
dGlvbiB0ZXN0Iiwgc3RlcCk7CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoIigi
KTsKKyAgICAgICAgICAgICAgICB3YWl0QW5kRHVtcChuZXh0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Um91bmRCcmFjZU92ZXJyaWRlKG5leHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVJbigiYSwgYiIsIHN0ZXApOworICAgICAgICAg
ICAgZnVuY3Rpb24gc3RlcCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4dElu
cHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KCIpIik7CisgICAgICAgICAgICAgICAgd2FpdEFuZER1
bXAobmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24g
dGVzdEN1cmx5QnJhY2VJbnNlcnRpb24obmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4
dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KCJ7Iik7CisgICAgICAgICAgICB3YWl0QW5kRHVt
cChuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0TmV3TGluZUNoYXJh
Y3RlcihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJc
biIsIFtdKTsKKyAgICAgICAgICAgIHdhaXRBbmREdW1wKG5leHQpOworICAgICAgICB9LAorCisg
ICAgICAgIGZ1bmN0aW9uIHRlc3ROZXN0ZWRCcmFjZUluc2VydGlvbihuZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICB0eXBlSW4oImlmICIsIHN0ZXAxKTsKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0eXBlSW4oIigiLCBzdGVw
Mik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB0eXBlSW4oInsiLCBzdGVwMyk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB0eXBlSW4oIigiLCB3YWl0QW5kRHVtcC5iaW5kKHRoaXMsIG5leHQpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Um91bmRCcmFj
ZVJlbW92YWwobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bigiXGIiLCBbXSk7CisgICAgICAgICAgICB3YWl0QW5kRHVtcChuZXh0KTsKKyAgICAgICAgfSwK
KworICAgICAgICBmdW5jdGlvbiB0ZXN0Q3VybHlCcmFjZVJlbW92YWwobmV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiXGIiLCBbXSk7CisgICAgICAgICAg
ICB3YWl0QW5kRHVtcChuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0
Q3VybHlCcmFjZU92ZXJyaWRlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHRFZGl0
b3Iuc2V0U2VsZWN0aW9uKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9u
KDIsIDApKTsKKyAgICAgICAgICAgIHR5cGVJbigic29tZVRleHQiLCBzdGVwKTsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0ZXAoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHR5cGVJ
bigifSIsIHdhaXRBbmREdW1wLmJpbmQodGhpcywgbmV4dCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKTsiPgorPHA+CitUaGlzIHRlc3QgY2hlY2tzIHRleHQgZWRpdG9yIHNtYXJ0IGJy
YWNlcyBmdW5jdGlvbmFsaXR5LgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGM3Y2JmNjljMjQ2YjhlN2Y5ZTVl
OTg2MDJlNWMxY2QzMDdkNzliM2UuLjk2MzIxYTYxMTA1OTE5NjAzOTY0ZDU3ZTg5NDM1NDRhMzEy
NTk3MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
ODE5LDYgKzE4MTksNyBAQCB3ZWJraXQub3JnL2IvMTA2NzQzIG1lZGlhL3ZpZGVvLWNvbnRyb2xz
LWNhcHRpb25zLmh0bWwgWyBGYWlsdXJlIF0KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNjg4MwogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1mb3JtYXR0
ZXIuaHRtbAogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci13b3JkLWp1bXBzLmh0bWwKK2lu
c3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKIAogIyBSZW1vdmUg
ZnJvbSBsaXN0IGFmdGVyIGVuYWJsaW5nIENBTlZBU19QQVRICiB3ZWJraXQub3JnL2IvMTA4NTA4
IGZhc3QvY2FudmFzL2NhbnZhcy1wYXRoLWNvbnN0cnVjdG9ycy5odG1sIFsgRmFpbHVyZSBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJmNjdmMjNlODU0
OGJjN2Q3MzhlNTY3MTI1NGMzNWRlNTAyNjQyODkuLmZkZTI4NGMwNmIyYjgzMWZkYWJjNDcwODI1
MGY1Y2MyZWYyNWI3NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zCkBAIC0yNTQsNiArMjU0LDcgQEAgYW5pbWF0aW9ucy9wbGF5LXN0YXRlLmh0bWwKICMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc5MwogaW5zcGVjdG9yL2Vk
aXRvci90ZXh0LWVkaXRvci1mb3JtYXR0ZXIuaHRtbCBbIFNraXAgXQogaW5zcGVjdG9yL2VkaXRv
ci90ZXh0LWVkaXRvci13b3JkLWp1bXBzLmh0bWwgWyBTa2lwIF0KK2luc3BlY3Rvci9lZGl0b3Iv
dGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwgWyBTa2lwIF0KIAogIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjAKIGluc3BlY3Rvci9kZWJ1Z2dlci9zZWxl
Y3RlZC1jYWxsLWZyYW1lLWFmdGVyLWZvcm1hdHRpbmctc291cmNlLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVhNjc5MWVlY2VlMGFkMTEwMmUyMDUz
ODEwZDNkMzVjNWI2MGFiY2QuLjFhZDkyZmFmZTc5YWE2YzgzOGU2OWY1NWNkNzk2MWMzMTQwZDMw
ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjYwMCw2
ICsyNjAwLDcgQEAgd2Via2l0Lm9yZy9iLzM5NzI1IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3At
YXV0b3Njcm9sbC5odG1sIFsgU2tpcCBdCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDY4ODMKIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItZm9ybWF0dGVy
Lmh0bWwKIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itd29yZC1qdW1wcy5odG1sCitpbnNw
ZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCiAKICMgTmVlZHMgcmVi
YXNlbGluZSBhZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2
NjQKIHdlYmtpdC5vcmcvYi8xMDc0NzYgZmFzdC9ibG9jay9mbG9hdC8wMjQuaHRtbCBbIEZhaWx1
cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187133</attachid>
            <date>2013-02-07 10:27:22 -0800</date>
            <delta_ts>2013-02-12 01:47:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109200-20130207222357.patch</filename>
            <type>text/plain</type>
            <size>13804</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRiMzdkYjJlNzNiZGM0
MzA3MDZmZjJjOTRlNWIwM2M5YjA4NDJlOC4uZDAwMWZkNDM3NWJiMjRmZTJmZmY4NzgxM2M2MDNh
YmQwYTIwNzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAyLTA3ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0OiBpbnNwZWN0b3Iv
ZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCisKKyAgICAgICAgSW1wbGVtZW50
IHRleHRJbnB1dEludGVyY2VwdG9ycyB3aGljaCB3aWxsIGludGVyY2VwdCB1c2VyIGlucHV0Cisg
ICAgICAgIGFuZCBvdmVycmlkZSBpdCB3aXRoIGFwcHJvcHJpYXRlIGFjdGlvbnMuIEFkZCBhIHNo
b3J0Y3V0IGZvciBCYWNrc3BhY2UKKyAgICAgICAga2V5IHRvIGRlbGV0ZSBicmFjZSBwYWlycyBp
biBjZXJ0YWluIGNhc2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0
VGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5f
cmVnaXN0ZXJUZXh0SW5wdXRJbnRlcmNlcHRvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9oYW5kbGVCcmFjZVBhaXJJbnNlcnRpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9oYW5k
bGVDbG9zaW5nQnJhY2VPdmVycmlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUuX3JlZ2lzdGVyU2hvcnRjdXRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlQmFja3NwYWNlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFu
ZGxlVGV4dElucHV0KToKKwogMjAxMy0wMi0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBsaW5raWZ5UmVzb3VyY2VBc05v
ZGUgcHJvZHVjZWQgYW5jaG9yIHNob3VsZCBub3QgcHJlZmVyIHJlc291cmNlcyB0byBzY3JpcHRz
IHBhbmVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggNjAxZTU4YWI5NmJjOTE2NmZhNGQ4ODM0ZDRmNjRi
ZjdmZjJiMDU5Yi4uYTQ2Y2Y1YWI3MjJkYmFmMTYwOWQzYmVjZTU1MGE5YjQ0MTU1OTA0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVk
aXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRU
ZXh0RWRpdG9yLmpzCkBAIC0xMzc1LDkgKzEzNzUsNTcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4dE1vZGVsLCB1cmwsIHN5bmNTY3Jv
bGwKICAgICB0aGlzLl9mcmVlQ2FjaGVkRWxlbWVudHMoKTsKICAgICB0aGlzLmJ1aWxkQ2h1bmtz
KCk7CiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsKKyAgICB0aGlzLl9yZWdpc3RlclRl
eHRJbnB1dEludGVyY2VwdG9ycygpOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUgPSB7CisKKyAgICBfcmVnaXN0ZXJUZXh0SW5wdXRJbnRlcmNlcHRvcnM6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RleHRJbnB1dEludGVyY2VwdG9ycyA9
IHt9OworCisgICAgICAgIHRoaXMuX3RleHRJbnB1dEludGVyY2VwdG9yc1siKCJdID0gdGhpcy5f
aGFuZGxlQnJhY2VQYWlySW5zZXJ0aW9uLmJpbmQodGhpcywgIigpIik7CisgICAgICAgIHRoaXMu
X3RleHRJbnB1dEludGVyY2VwdG9yc1sieyJdID0gdGhpcy5faGFuZGxlQnJhY2VQYWlySW5zZXJ0
aW9uLmJpbmQodGhpcywgInt9Iik7CisgICAgICAgIHRoaXMuX3RleHRJbnB1dEludGVyY2VwdG9y
c1siKSJdID0gdGhpcy5faGFuZGxlQ2xvc2luZ0JyYWNlT3ZlcnJpZGUuYmluZCh0aGlzLCAiKSIp
OworICAgICAgICB0aGlzLl90ZXh0SW5wdXRJbnRlcmNlcHRvcnNbIn0iXSA9IHRoaXMuX2hhbmRs
ZUNsb3NpbmdCcmFjZU92ZXJyaWRlLmJpbmQodGhpcywgIn0iKTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGJyYWNlUGFpcgorICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CisgICAgICovCisgICAgX2hhbmRsZUJyYWNlUGFpckluc2VydGlvbjogZnVuY3Rpb24oYnJh
Y2VQYWlyKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2xhc3RTZWxlY3Rp
b24ubm9ybWFsaXplKCk7CisgICAgICAgIHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2Uoc2VsZWN0
aW9uLCBicmFjZVBhaXIpOworICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0aW9uKFdlYkluc3Bl
Y3Rvci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9uKHNlbGVjdGlvbi5zdGFydExpbmUsIHNl
bGVjdGlvbi5zdGFydENvbHVtbiArIDEpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBicmFjZQorICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59CisgICAgICovCisgICAgX2hhbmRsZUNsb3NpbmdCcmFjZU92ZXJyaWRlOiBmdW5j
dGlvbihicmFjZSkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLl9sYXN0U2Vs
ZWN0aW9uLm5vcm1hbGl6ZSgpOworICAgICAgICBpZiAoIXNlbGVjdGlvbiB8fCAhc2VsZWN0aW9u
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgbGlu
ZU51bWJlciA9IHNlbGVjdGlvbi5zdGFydExpbmU7CisgICAgICAgIHZhciBjb2x1bW4gPSBzZWxl
Y3Rpb24uc3RhcnRDb2x1bW47CisgICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxp
bmUobGluZU51bWJlcik7CisgICAgICAgIGlmIChsaW5lLmNoYXJBdChjb2x1bW4pICE9PSBicmFj
ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgYnJhY2VzID0gdGhp
cy5fYnJhY2VNYXRjaGVyLmVuY2xvc2luZ0JyYWNlcyhsaW5lTnVtYmVyLCBjb2x1bW4pOworICAg
ICAgICBpZiAoYnJhY2VzICYmIGJyYWNlcy5yaWdodEJyYWNlLmxpbmVOdW1iZXIgPT09IGxpbmVO
dW1iZXIgJiYgYnJhY2VzLnJpZ2h0QnJhY2UuY29sdW1uID09PSBjb2x1bW4pIHsKKyAgICAgICAg
ICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVG
cm9tTG9jYXRpb24obGluZU51bWJlciwgY29sdW1uICsgMSkpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0s
CisKICAgICBfcmVnaXN0ZXJTaG9ydGN1dHM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZh
ciBrZXlzID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5czsKQEAgLTE0MDAsNiAr
MTQ0OCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICB0aGlzLl9zaG9ydGN1dHNbV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
bWFrZUtleShrZXlzLkhvbWUuY29kZSwgbW9kaWZpZXJzLk5vbmUpXSA9IHRoaXMuX2hhbmRsZUhv
bWVLZXkuYmluZCh0aGlzLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGtleXMuSG9tZS5jb2RlLCBtb2RpZmllcnMu
U2hpZnQpXSA9IHRoaXMuX2hhbmRsZUhvbWVLZXkuYmluZCh0aGlzLCB0cnVlKTsKKyAgICAgICAg
dGhpcy5fc2hvcnRjdXRzW1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoa2V5
cy5CYWNrc3BhY2UuY29kZSwgbW9kaWZpZXJzLk5vbmUpXSA9IHRoaXMuX2hhbmRsZUJhY2tzcGFj
ZS5iaW5kKHRoaXMpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE0MjgsNiArMTQ3NywzMCBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0sCiAKKyAgICBfaGFuZGxlQmFja3NwYWNlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fbGFzdFNlbGVjdGlvbjsKKyAgICAg
ICAgaWYgKCFzZWxlY3Rpb24gfHwgIXNlbGVjdGlvbi5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIGNvbHVtbiA9IHNlbGVjdGlvbi5zdGFydENvbHVt
bjsKKyAgICAgICAgaWYgKGNvbHVtbiA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIHZhciBsaW5lTnVtYmVyID0gc2VsZWN0aW9uLnN0YXJ0TGluZTsKKyAgICAgICAg
dmFyIGxpbmUgPSB0aGlzLl90ZXh0TW9kZWwubGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgaWYg
KGNvbHVtbiA9PT0gbGluZS5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgdmFyIHBhaXIgPSBsaW5lLnN1YnN0cihjb2x1bW4gLSAxLCAyKTsKKyAgICAgICAgaWYg
KHBhaXIgPT09ICIoKSIgfHwgcGFpciA9PT0gInt9IikgeworICAgICAgICAgICAgdGhpcy5fdGV4
dE1vZGVsLmVkaXRSYW5nZShuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShsaW5lTnVtYmVyLCBj
b2x1bW4gLSAxLCBsaW5lTnVtYmVyLCBjb2x1bW4gKyAxKSwgIiIpOworICAgICAgICAgICAgdGhp
cy5fcmVzdG9yZVNlbGVjdGlvbihXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2Nh
dGlvbihsaW5lTnVtYmVyLCBjb2x1bW4gLSAxKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKwogICAg
IC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWdleAogICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBjc3NDbGFzcwpAQCAtMjcwOCw2ICsyNzgxLDExIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfaGFuZGxlVGV4dElucHV0OiBm
dW5jdGlvbihldmVudCkKICAgICB7CisgICAgICAgIHZhciBpbnRlcmNlcHRvciA9IHRoaXMuX3Rl
eHRJbnB1dEludGVyY2VwdG9yc1tldmVudC5kYXRhXTsKKyAgICAgICAgaWYgKGludGVyY2VwdG9y
ICYmIGludGVyY2VwdG9yKCkpIHsKKyAgICAgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpcy5fdGV4dElucHV0RGF0
YSA9IGV2ZW50LmRhdGE7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJhZDI3MmE3MTYwYmRjOWQ5OGRhMjc1
ZDAxNTgyNDRmNzg4MjY2M2QuLjg0ZGE5YmNhNzM2NDEwZTJmMzM4NjFjNjI2NDUwN2RhZGRhNGQ4
NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxMy0wMi0wNyAgQW5kcmV5IEx1c2huaWtvdiAg
PGx1c2huaWtvdkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVt
ZW50IHNtYXJ0IGJyYWNlcyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0aGF0IHZlcmlmaWVzIHNt
YXJ0IGJyYWNlcyBmdW5jdGlvbmFsaXR5IGFuZAorICAgICAgICBza2lwIHRoaXMgdGVzdCBvbiB0
aG9zZSBwb3J0cyB3aGljaCBkbyBub3QgaGF2ZSBrZXkgZW1pdHRlcnMgYW5kCisgICAgICAgIHRl
eHRJbnB1dCBldmVudCBlbXVsYXRpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3Rl
eHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOiAKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0
YXRpb25zOgorCisyMDEzLTAyLTA3ICBBbmRyZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9t
aXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBob21lIGJ1dHRvbiBiZWhhdmlvdXIg
aXMgd3JvbmcgaW4gRFRFCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDkxNTQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRv
ci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ3MzNmNzdmYjg3M2YxNDBiODYyMjRhYTM4MWY4MGVkM2Y2NmM5NDkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0
LWJyYWNlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0
ZXh0IGVkaXRvciBzbWFydCBicmFjZXMgZnVuY3Rpb25hbGl0eS4KKworCitSdW5uaW5nOiB0ZXN0
Um91bmRCcmFjZUluc2VydGlvbgorZnVuY3Rpb24gdGVzdCh8KQorCitSdW5uaW5nOiB0ZXN0Um91
bmRCcmFjZU92ZXJyaWRlCitmdW5jdGlvbiB0ZXN0KGEsIGIpfAorCitSdW5uaW5nOiB0ZXN0Q3Vy
bHlCcmFjZUluc2VydGlvbgorZnVuY3Rpb24gdGVzdChhLCBiKXt8fQorCitSdW5uaW5nOiB0ZXN0
TmV3TGluZUNoYXJhY3RlcgorZnVuY3Rpb24gdGVzdChhLCBiKXsKKyAgICB8Cit9CisKK1J1bm5p
bmc6IHRlc3ROZXN0ZWRCcmFjZUluc2VydGlvbgorZnVuY3Rpb24gdGVzdChhLCBiKXsKKyAgICBp
ZiAoeyh8KX0pCit9CisKK1J1bm5pbmc6IHRlc3RSb3VuZEJyYWNlUmVtb3ZhbAorZnVuY3Rpb24g
dGVzdChhLCBiKXsKKyAgICBpZiAoe3x9KQorfQorCitSdW5uaW5nOiB0ZXN0Q3VybHlCcmFjZVJl
bW92YWwKK2Z1bmN0aW9uIHRlc3QoYSwgYil7CisgICAgaWYgKHwpCit9CisKK1J1bm5pbmc6IHJl
bG9jYXRlQmVmb3JlQ3VybHlCcmFjZQorZnVuY3Rpb24gdGVzdChhLCBiKXsKKyAgICBpZiAoKQor
fH0KKworUnVubmluZzogdGVzdEN1cmx5QnJhY2VPdmVycmlkZQorZnVuY3Rpb24gdGVzdChhLCBi
KXsKKyAgICBpZiAoKQorfXwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vk
aXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM4NDEw
OTkyYzEyZmNlMDRlM2M1Yjc3YWI1MDUxYjc2MWM2YjAxOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwK
QEAgLTAsMCArMSwxMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9ImVkaXRvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVUZXN0RWRpdG9y
KCk7CisgICAgdGV4dEVkaXRvci5vdmVycmlkZVZpZXdwb3J0Rm9yVGVzdCgwLCB1bmRlZmluZWQs
IDMpOworICAgIHRleHRFZGl0b3IubWltZVR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsKKyAgICB0
ZXh0RWRpdG9yLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAgICB0ZXh0RWRpdG9yLmVsZW1lbnQuZm9j
dXMoKTsKKworICAgIHRleHRFZGl0b3Iuc2V0VGV4dCgiIik7CisgICAgdGV4dEVkaXRvci5zZXRT
ZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24oMCwgMCkp
OworCisgICAgZnVuY3Rpb24gZWRpdG9yVGV4dFdpdGhDdXJzb3IoKQorICAgIHsKKyAgICAgICAg
dmFyIHNlbGVjdGlvbiA9IHRleHRFZGl0b3Iuc2VsZWN0aW9uKCk7CisgICAgICAgIGlmICghc2Vs
ZWN0aW9uIHx8ICFzZWxlY3Rpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRleHRF
ZGl0b3IudGV4dCgpOworICAgICAgICB2YXIgbGluZU51bWJlciA9IHNlbGVjdGlvbi5zdGFydExp
bmU7CisgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rpb24uc3RhcnRDb2x1bW47CisKKyAgICAg
ICAgdmFyIGxpbmVzID0gdGV4dEVkaXRvci50ZXh0KCkuc3BsaXQoIlxuIik7CisgICAgICAgIHZh
ciBsaW5lID0gbGluZXNbbGluZU51bWJlcl07CisgICAgICAgIGxpbmUgPSBsaW5lLnN1YnN0cmlu
ZygwLCBjb2x1bW4pICsgInwiICsgbGluZS5zdWJzdHJpbmcoY29sdW1uKTsKKyAgICAgICAgbGlu
ZXNbbGluZU51bWJlcl0gPSBsaW5lOworICAgICAgICByZXR1cm4gbGluZXMuam9pbigiXG4iKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB3YWl0QW5kRHVtcChuZXh0KQorICAgIHsKKyAgICAgICAg
c2V0VGltZW91dChzdGVwKTsKKyAgICAgICAgZnVuY3Rpb24gc3RlcCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGVkaXRvclRleHRXaXRoQ3Vyc29yKCkp
OworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24g
dHlwZUluKHRleHQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGV4dElucHV0Q29udHJvbGxl
ci5pbnNlcnRUZXh0KHRleHQpOworICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrKTsKKyAgICB9
CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RSb3VuZEJyYWNlSW5zZXJ0aW9uKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVJ
bigiZnVuY3Rpb24gdGVzdCIsIHN0ZXApOworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcCgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRU
ZXh0KCIoIik7CisgICAgICAgICAgICAgICAgd2FpdEFuZER1bXAobmV4dCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJvdW5kQnJhY2VPdmVycmlk
ZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0eXBlSW4oImEsIGIiLCBzdGVwKTsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgiKSIpOworICAgICAgICAgICAgICAgIHdh
aXRBbmREdW1wKG5leHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1
bmN0aW9uIHRlc3RDdXJseUJyYWNlSW5zZXJ0aW9uKG5leHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgieyIpOworICAgICAgICAgICAgd2Fp
dEFuZER1bXAobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE5ld0xp
bmVDaGFyYWN0ZXIobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigiXG4iLCBbXSk7CisgICAgICAgICAgICB3YWl0QW5kRHVtcChuZXh0KTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0TmVzdGVkQnJhY2VJbnNlcnRpb24obmV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdHlwZUluKCJpZiAiLCBzdGVwMSk7CisgICAgICAgICAgICBm
dW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdHlwZUluKCIo
Iiwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdHlwZUluKCJ7Iiwgc3RlcDMpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdHlwZUluKCIoIiwgd2FpdEFuZER1bXAuYmluZCh0aGlzLCBuZXh0
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJv
dW5kQnJhY2VSZW1vdmFsKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oIlxiIiwgW10pOworICAgICAgICAgICAgd2FpdEFuZER1bXAobmV4dCk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEN1cmx5QnJhY2VSZW1vdmFsKG5leHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIlxiIiwgW10pOworICAg
ICAgICAgICAgd2FpdEFuZER1bXAobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rp
b24gcmVsb2NhdGVCZWZvcmVDdXJseUJyYWNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHRleHRFZGl0b3Iuc2V0U2VsZWN0aW9uKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UuY3JlYXRlRnJv
bUxvY2F0aW9uKDIsIDApKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGVk
aXRvclRleHRXaXRoQ3Vyc29yKCkpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uIHRlc3RDdXJseUJyYWNlT3ZlcnJpZGUobmV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgdHlwZUluKCJ9Iiwgd2FpdEFuZER1bXAuYmluZCh0aGlzLCBuZXh0KSk7
CisgICAgICAgIH0KKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpOyI+Cis8cD4KK1RoaXMgdGVzdCBjaGVja3MgdGV4dCBlZGl0b3Igc21h
cnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkuCis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNWY5YzMwMTUwMGE2YmNh
Mjk5ZGNlNjkyNjJlZjgzNThmOGQxMDJmOS4uMzhjMmUxN2RlY2UwYWE4ZWU3NjRlZjdlNWI5ZmVk
ZjhhMzgwZjVkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTE4MjAsNiArMTgyMCw3IEBAIHdlYmtpdC5vcmcvYi8xMDY3NDMgbWVkaWEvdmlkZW8tY29u
dHJvbHMtY2FwdGlvbnMuaHRtbCBbIEZhaWx1cmUgXQogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVk
aXRvci1mb3JtYXR0ZXIuaHRtbAogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci13b3JkLWp1
bXBzLmh0bWwKIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaG9tZS1idXR0b24uaHRtbAor
aW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbAogCiAjIFJlbW92
ZSBmcm9tIGxpc3QgYWZ0ZXIgZW5hYmxpbmcgQ0FOVkFTX1BBVEgKIHdlYmtpdC5vcmcvYi8xMDg1
MDggZmFzdC9jYW52YXMvY2FudmFzLXBhdGgtY29uc3RydWN0b3JzLmh0bWwgWyBGYWlsdXJlIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTU3NjEyODVi
ODBlNWQ4ZjRkNzUwODQ4NjA0YTJmMDU4MDEzZGVhNy4uMGMxZjcwZTM0ODFkMzM4YzI2NmE3YWQ1
MWJlMjgxNzA3N2M4ZTE0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTI1NSw2ICsyNTUsNyBAQCBhbmltYXRpb25zL3BsYXktc3RhdGUuaHRtbAogaW5z
cGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1mb3JtYXR0ZXIuaHRtbCBbIFNraXAgXQogaW5zcGVj
dG9yL2VkaXRvci90ZXh0LWVkaXRvci13b3JkLWp1bXBzLmh0bWwgWyBTa2lwIF0KIGluc3BlY3Rv
ci9lZGl0b3IvdGV4dC1lZGl0b3ItaG9tZS1idXR0b24uaHRtbCBbIFNraXAgXQoraW5zcGVjdG9y
L2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbCBbIFNraXAgXQogCiAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyMAogaW5zcGVjdG9yL2RlYnVn
Z2VyL3NlbGVjdGVkLWNhbGwtZnJhbWUtYWZ0ZXItZm9ybWF0dGluZy1zb3VyY2UuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTdmMjUxZjVmOTAyMmY2
YmMwMzliMDQ3NmRkNzNhYjBiMWExMmQyMS4uMjY4NWE0NTBlYTlmZTA5NDlhOWU2ZjllOGM3OTBi
N2NhZDYwMDQ1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCkBA
IC0yNjAyLDYgKzI2MDIsNyBAQCB3ZWJraXQub3JnL2IvMzk3MjUgZmFzdC9ldmVudHMvZHJhZy1h
bmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwgWyBTa2lwIF0KIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1l
ZGl0b3ItZm9ybWF0dGVyLmh0bWwKIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itd29yZC1q
dW1wcy5odG1sCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhvbWUtYnV0dG9uLmh0bWwK
K2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKIAogIyBOZWVk
cyByZWJhc2VsaW5lIGFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDY2NAogd2Via2l0Lm9yZy9iLzEwNzQ3NiBmYXN0L2Jsb2NrL2Zsb2F0LzAyNC5odG1sIFsg
RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187809</attachid>
            <date>2013-02-12 01:47:57 -0800</date>
            <delta_ts>2013-02-12 01:55:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109200-20130212134426.patch</filename>
            <type>text/plain</type>
            <size>15914</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3MTMwZDVjZDgzYTMz
MmZhYzM4YThjYzI0ZDcxZmVmMDUwZjQyMy4uYzc1MzhiYTU5YjI0MTg0ODBkZjFkNzU2MWJhZmFk
NGUxNGFmMTBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTEyICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0OiBpbnNwZWN0b3Iv
ZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCisKKyAgICAgICAgSW1wbGVtZW50
IHRleHRJbnB1dEludGVyY2VwdG9ycyB3aGljaCB3aWxsIGludGVyY2VwdCB1c2VyIGlucHV0Cisg
ICAgICAgIGFuZCBvdmVycmlkZSBpdCB3aXRoIGFwcHJvcHJpYXRlIGFjdGlvbnMuIEFkZCBhIHNo
b3J0Y3V0IGZvciBCYWNrc3BhY2UKKyAgICAgICAga2V5IHRvIGRlbGV0ZSBicmFjZSBwYWlycyBp
biBjZXJ0YWluIGNhc2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0
VGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVs
LnByb3RvdHlwZS5fcmVnaXN0ZXJUZXh0SW5wdXRJbnRlcmNlcHRvcnMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9oYW5kbGVCcmFjZVBhaXJJ
bnNlcnRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlLl9oYW5kbGVDbG9zaW5nQnJhY2VPdmVycmlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3JlZ2lzdGVyU2hvcnRjdXRzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxl
QmFja3NwYWNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZS5faGFuZGxlVGV4dElucHV0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGluZ3Mp
OgorCiAyMDEzLTAyLTExICBWaWF0Y2hlc2xhdiBPc3RhcGVua28gIDxzbC5vc3RhcGVua29Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW1F0XVtFRkxdW1dlYkdMXSBNaW5vciByZWZhY3RvcmluZyBv
ZiBHcmFwaGljc1N1cmZhY2UvR3JhcGhpY3NTdXJmYWNlR0xYCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwppbmRleCBj
MmI5OWM0NDY0OGMyODYwOTExNDVkNGU2YWY0YjY2OWE3Y2MwZTVmLi45Yzc2ZmExMTA0OTAyYzFi
ZmEwZjI2YWUzZDM0NzRhODUwZjEwN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTEzNzgsNiArMTM3
OCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdh
dGUsIHRleHRNb2RlbCwgdXJsLCBzeW5jU2Nyb2xsCiAgICAgdGhpcy5fZnJlZUNhY2hlZEVsZW1l
bnRzKCk7CiAgICAgdGhpcy5idWlsZENodW5rcygpOwogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRj
dXRzKCk7CisgICAgdGhpcy5fcmVnaXN0ZXJUZXh0SW5wdXRJbnRlcmNlcHRvcnMoKTsKIH0KIAog
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuX0NvbnNlY3V0aXZlV2hpdGVzcGFjZUNo
YXJzID0gewpAQCAtMTM4OSw2ICsxMzkwLDY1IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLl9Db25zZWN1dGl2ZVdoaXRlc3BhY2VDaGFycyA9IHsKIH07CiAKIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKKworICAgIF9yZWdpc3RlclRleHRJ
bnB1dEludGVyY2VwdG9yczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGV4dElu
cHV0SW50ZXJjZXB0b3JzID0ge307CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmlt
ZW50c1NldHRpbmdzLnRleHRFZGl0b3JTbWFydEJyYWNlcy5pc0VuYWJsZWQoKSkgeworICAgICAg
ICAgICAgdGhpcy5fdGV4dElucHV0SW50ZXJjZXB0b3JzWyIoIl0gPSB0aGlzLl9oYW5kbGVCcmFj
ZVBhaXJJbnNlcnRpb24uYmluZCh0aGlzLCAiKCkiKTsKKyAgICAgICAgICAgIHRoaXMuX3RleHRJ
bnB1dEludGVyY2VwdG9yc1sieyJdID0gdGhpcy5faGFuZGxlQnJhY2VQYWlySW5zZXJ0aW9uLmJp
bmQodGhpcywgInt9Iik7CisgICAgICAgICAgICB0aGlzLl90ZXh0SW5wdXRJbnRlcmNlcHRvcnNb
IikiXSA9IHRoaXMuX2hhbmRsZUNsb3NpbmdCcmFjZU92ZXJyaWRlLmJpbmQodGhpcywgIikiKTsK
KyAgICAgICAgICAgIHRoaXMuX3RleHRJbnB1dEludGVyY2VwdG9yc1sifSJdID0gdGhpcy5faGFu
ZGxlQ2xvc2luZ0JyYWNlT3ZlcnJpZGUuYmluZCh0aGlzLCAifSIpOworICAgICAgICB9CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBicmFjZVBhaXIKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIF9oYW5kbGVCcmFjZVBhaXJJbnNlcnRpb246
IGZ1bmN0aW9uKGJyYWNlUGFpcikKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlz
Ll9sYXN0U2VsZWN0aW9uLm5vcm1hbGl6ZSgpOworICAgICAgICBpZiAoc2VsZWN0aW9uLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzZWxlY3Rpb24uc3RhcnRMaW5l
OworICAgICAgICAgICAgdmFyIGNvbHVtbiA9IHNlbGVjdGlvbi5zdGFydENvbHVtbjsKKyAgICAg
ICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisgICAg
ICAgICAgICBpZiAoY29sdW1uIDwgbGluZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB2YXIg
Y2hhciA9IGxpbmUuY2hhckF0KGNvbHVtbik7CisgICAgICAgICAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5UZXh0VXRpbHMuaXNXb3JkQ2hhcihjaGFyKSB8fCAoIVdlYkluc3BlY3Rvci5UZXh0VXRp
bHMuaXNCcmFjZUNoYXIoY2hhcikgJiYgV2ViSW5zcGVjdG9yLlRleHRVdGlscy5pc1N0b3BDaGFy
KGNoYXIpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2Uoc2VsZWN0aW9u
LCBicmFjZVBhaXIpOworICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0aW9uKFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9uKHNlbGVjdGlvbi5zdGFydExpbmUsIHNlbGVj
dGlvbi5zdGFydENvbHVtbiArIDEpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBicmFjZQorICAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgICovCisgICAgX2hhbmRsZUNsb3NpbmdCcmFjZU92ZXJyaWRlOiBmdW5jdGlv
bihicmFjZSkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLl9sYXN0U2VsZWN0
aW9uLm5vcm1hbGl6ZSgpOworICAgICAgICBpZiAoIXNlbGVjdGlvbiB8fCAhc2VsZWN0aW9uLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgbGluZU51
bWJlciA9IHNlbGVjdGlvbi5zdGFydExpbmU7CisgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rp
b24uc3RhcnRDb2x1bW47CisgICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUo
bGluZU51bWJlcik7CisgICAgICAgIGlmIChsaW5lLmNoYXJBdChjb2x1bW4pICE9PSBicmFjZSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgYnJhY2VzID0gdGhpcy5f
YnJhY2VNYXRjaGVyLmVuY2xvc2luZ0JyYWNlcyhsaW5lTnVtYmVyLCBjb2x1bW4pOworICAgICAg
ICBpZiAoYnJhY2VzICYmIGJyYWNlcy5yaWdodEJyYWNlLmxpbmVOdW1iZXIgPT09IGxpbmVOdW1i
ZXIgJiYgYnJhY2VzLnJpZ2h0QnJhY2UuY29sdW1uID09PSBjb2x1bW4pIHsKKyAgICAgICAgICAg
IHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVGcm9t
TG9jYXRpb24obGluZU51bWJlciwgY29sdW1uICsgMSkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisK
ICAgICBfcmVnaXN0ZXJTaG9ydGN1dHM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBr
ZXlzID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5czsKQEAgLTE0MTIsNyArMTQ3
Miw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIGhvbWVLZXkgPSBXZWJJbnNwZWN0b3IuaXNNYWMoKSA/IGtleXMuUmlnaHQgOiBr
ZXlzLkhvbWU7CiAgICAgICAgIHZhciBob21lTW9kaWZpZXIgPSBXZWJJbnNwZWN0b3IuaXNNYWMo
KSA/IG1vZGlmaWVycy5NZXRhIDogbW9kaWZpZXJzLk5vbmU7CiAgICAgICAgIHRoaXMuX3Nob3J0
Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGhvbWVLZXkuY29kZSwg
aG9tZU1vZGlmaWVyKV0gPSB0aGlzLl9oYW5kbGVIb21lS2V5LmJpbmQodGhpcywgZmFsc2UpOwot
ICAgICAgICB0aGlzLl9zaG9ydGN1dHNbV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFr
ZUtleShob21lS2V5LmNvZGUsIGhvbWVNb2RpZmllciB8IG1vZGlmaWVycy5TaGlmdCldID0gdGhp
cy5faGFuZGxlSG9tZUtleS5iaW5kKHRoaXMsIHRydWUpOworICAgICAgICB0aGlzLl9zaG9ydGN1
dHNbV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleShrZXlzLkJhY2tzcGFjZS5j
b2RlLCBtb2RpZmllcnMuTm9uZSldID0gdGhpcy5faGFuZGxlQmFja3NwYWNlLmJpbmQodGhpcyk7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTQ1Niw2ICsxNTE2LDMzIEBAIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcGFpbnRMaW5l
cyhzdGFydExpbmUsIGVuZExpbmUgKyAxKTsKICAgICB9LAogCisgICAgX2hhbmRsZUJhY2tzcGFj
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZXhwZXJpbWVu
dHNTZXR0aW5ncy50ZXh0RWRpdG9yU21hcnRCcmFjZXMuaXNFbmFibGVkKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2xhc3RTZWxl
Y3Rpb247CisgICAgICAgIGlmICghc2VsZWN0aW9uIHx8ICFzZWxlY3Rpb24uaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rp
b24uc3RhcnRDb2x1bW47CisgICAgICAgIGlmIChjb2x1bW4gPT0gMCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICB2YXIgbGluZU51bWJlciA9IHNlbGVjdGlvbi5zdGFydExp
bmU7CisgICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7
CisgICAgICAgIGlmIChjb2x1bW4gPT09IGxpbmUubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHZhciBwYWlyID0gbGluZS5zdWJzdHIoY29sdW1uIC0gMSwgMik7
CisgICAgICAgIGlmIChwYWlyID09PSAiKCkiIHx8IHBhaXIgPT09ICJ7fSIpIHsKKyAgICAgICAg
ICAgIHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uo
bGluZU51bWJlciwgY29sdW1uIC0gMSwgbGluZU51bWJlciwgY29sdW1uICsgMSksICIiKTsKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5j
cmVhdGVGcm9tTG9jYXRpb24obGluZU51bWJlciwgY29sdW1uIC0gMSkpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0sCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnZXgKICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gY3NzQ2xhc3MKQEAgLTI3NTgsNiArMjg0NSwxMSBAQCBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2hhbmRs
ZVRleHRJbnB1dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICB2YXIgaW50ZXJjZXB0
b3IgPSB0aGlzLl90ZXh0SW5wdXRJbnRlcmNlcHRvcnNbZXZlbnQuZGF0YV07CisgICAgICAgIGlm
IChpbnRlcmNlcHRvciAmJiBpbnRlcmNlcHRvcigpKSB7CisgICAgICAgICAgICBldmVudC5jb25z
dW1lKHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHRoaXMu
X3RleHRJbnB1dERhdGEgPSBldmVudC5kYXRhOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDkzNTIyMDRhMWVjY2NkN2I5
Y2QyNjRhZWI1M2JhYWUwMzA3YjIwMjcuLmMxZmQwMmM4YjQzYmNiYzk3YmM4ZTg0MTU2OTg4ZTU2
ZWQ4OWQwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5ncy5qcwpAQCAtMjE4LDYgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1NldHRp
bmdzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2hvd092ZXJyaWRlc0luRHJhd2VyID0gdGhpcy5f
Y3JlYXRlRXhwZXJpbWVudCgic2hvd092ZXJyaWRlc0luRHJhd2VyIiwgIlNob3cgT3ZlcnJpZGVz
IGluIGRyYXdlciIpOwogICAgIHRoaXMuZmlsZVN5c3RlbVByb2plY3QgPSB0aGlzLl9jcmVhdGVF
eHBlcmltZW50KCJmaWxlU3lzdGVtUHJvamVjdCIsICJGaWxlIHN5c3RlbSBmb2xkZXJzIGluIFNv
dXJjZXMgUGFuZWwiKTsKICAgICB0aGlzLmhvcml6b250YWxQYW5lbFNwbGl0ID0gdGhpcy5fY3Jl
YXRlRXhwZXJpbWVudCgiaG9yaXpvbnRhbFBhbmVsU3BsaXQiLCAiQWxsb3cgaG9yaXpvbnRhbCBz
cGxpdCBpbiBFbGVtZW50cyBhbmQgU291cmNlcyBwYW5lbHMiKTsKKyAgICB0aGlzLnRleHRFZGl0
b3JTbWFydEJyYWNlcyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInRleHRFZGl0b3JTbWFydEJy
YWNlcyIsICJFbmFibGUgc21hcnQgYnJhY2VzIGluIHRleHQgZWRpdG9yIik7CiAKICAgICB0aGlz
Ll9jbGVhblVwU2V0dGluZygpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlYTcyODJiMTY5MTJjNzNhMGIxYjg4Zjc4
MDBhNTkzNGVhNWQ5YmMuLjM0N2YzMzMzOGNkZmQ2M2E4NGQyNWI1MTBkNzY5ZDY5MzMzZTVjMzQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMi0xMiAgQW5kcmV5IEx1c2huaWtvdiAgPGx1
c2huaWtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50
IHNtYXJ0IGJyYWNlcyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0aGF0IHZlcmlmaWVzIHNtYXJ0
IGJyYWNlcyBmdW5jdGlvbmFsaXR5IGFuZAorICAgICAgICBza2lwIHRoaXMgdGVzdCBvbiB0aG9z
ZSBwb3J0cyB3aGljaCBkbyBub3QgaGF2ZSBrZXkgZW1pdHRlcnMgYW5kCisgICAgICAgIHRleHRJ
bnB1dCBldmVudCBlbXVsYXRpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3RleHQt
ZWRpdG9yLXNtYXJ0LWJyYWNlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOiAKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRp
b25zOgorCiAyMDEzLTAyLTExICBLd2FuZ1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSB3ZWJpbnRlbnRzIGZyb20gVGVzdEV4cGVjdGF0aW9u
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1z
bWFydC1icmFjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90
ZXh0LWVkaXRvci1zbWFydC1icmFjZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MzNmNzdm
Yjg3M2YxNDBiODYyMjRhYTM4MWY4MGVkM2Y2NmM5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0MiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0ZXh0IGVkaXRvciBzbWFy
dCBicmFjZXMgZnVuY3Rpb25hbGl0eS4KKworCitSdW5uaW5nOiB0ZXN0Um91bmRCcmFjZUluc2Vy
dGlvbgorZnVuY3Rpb24gdGVzdCh8KQorCitSdW5uaW5nOiB0ZXN0Um91bmRCcmFjZU92ZXJyaWRl
CitmdW5jdGlvbiB0ZXN0KGEsIGIpfAorCitSdW5uaW5nOiB0ZXN0Q3VybHlCcmFjZUluc2VydGlv
bgorZnVuY3Rpb24gdGVzdChhLCBiKXt8fQorCitSdW5uaW5nOiB0ZXN0TmV3TGluZUNoYXJhY3Rl
cgorZnVuY3Rpb24gdGVzdChhLCBiKXsKKyAgICB8Cit9CisKK1J1bm5pbmc6IHRlc3ROZXN0ZWRC
cmFjZUluc2VydGlvbgorZnVuY3Rpb24gdGVzdChhLCBiKXsKKyAgICBpZiAoeyh8KX0pCit9CisK
K1J1bm5pbmc6IHRlc3RSb3VuZEJyYWNlUmVtb3ZhbAorZnVuY3Rpb24gdGVzdChhLCBiKXsKKyAg
ICBpZiAoe3x9KQorfQorCitSdW5uaW5nOiB0ZXN0Q3VybHlCcmFjZVJlbW92YWwKK2Z1bmN0aW9u
IHRlc3QoYSwgYil7CisgICAgaWYgKHwpCit9CisKK1J1bm5pbmc6IHJlbG9jYXRlQmVmb3JlQ3Vy
bHlCcmFjZQorZnVuY3Rpb24gdGVzdChhLCBiKXsKKyAgICBpZiAoKQorfH0KKworUnVubmluZzog
dGVzdEN1cmx5QnJhY2VPdmVycmlkZQorZnVuY3Rpb24gdGVzdChhLCBiKXsKKyAgICBpZiAoKQor
fXwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRv
ci1zbWFydC1icmFjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1l
ZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc1YjZjOTMyZmE5Mzk4MzVlMDdl
N2RkZmU0OWQ4NmU0MGY5MTJhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKQEAgLTAsMCArMSwxNDYg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImVkaXRvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYklu
c3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnRleHRFZGl0b3JTbWFydEJyYWNlcy5lbmFibGVG
b3JUZXN0KCk7CisKKyAgICB2YXIgdGV4dEVkaXRvciA9IEluc3BlY3RvclRlc3QuY3JlYXRlVGVz
dEVkaXRvcigpOworICAgIHRleHRFZGl0b3Iub3ZlcnJpZGVWaWV3cG9ydEZvclRlc3QoMCwgdW5k
ZWZpbmVkLCAzKTsKKyAgICB0ZXh0RWRpdG9yLm1pbWVUeXBlID0gInRleHQvamF2YXNjcmlwdCI7
CisgICAgdGV4dEVkaXRvci5zZXRSZWFkT25seShmYWxzZSk7CisgICAgdGV4dEVkaXRvci5lbGVt
ZW50LmZvY3VzKCk7CisKKyAgICB0ZXh0RWRpdG9yLnNldFRleHQoIiIpOworICAgIHRleHRFZGl0
b3Iuc2V0U2VsZWN0aW9uKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9u
KDAsIDApKTsKKworICAgIGZ1bmN0aW9uIGR1bXBUZXh0V2l0aFNlbGVjdGlvbigpCisgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChJbnNwZWN0b3JUZXN0LnRleHRXaXRoU2Vs
ZWN0aW9uKHRleHRFZGl0b3IudGV4dCgpLCB0ZXh0RWRpdG9yLnNlbGVjdGlvbigpKSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gd2FpdEFuZER1bXAobmV4dCkKKyAgICB7CisgICAgICAgIHNldFRp
bWVvdXQoc3RlcCk7CisgICAgICAgIGZ1bmN0aW9uIHN0ZXAoKQorICAgICAgICB7CisgICAgICAg
ICAgICBkdW1wVGV4dFdpdGhTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHR5cGVJbih0ZXh0LCBjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCh0ZXh0KTsKKyAgICAgICAg
c2V0VGltZW91dChjYWxsYmFjayk7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0
U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0Um91bmRCcmFjZUluc2VydGlvbihuZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICB0eXBlSW4oImZ1bmN0aW9uIHRlc3QiLCBzdGVwKTsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgiKCIpOworICAgICAgICAgICAgICAgIHdh
aXRBbmREdW1wKG5leHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1
bmN0aW9uIHRlc3RSb3VuZEJyYWNlT3ZlcnJpZGUobmV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdHlwZUluKCJhLCBiIiwgc3RlcCk7CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRl
eHQoIikiKTsKKyAgICAgICAgICAgICAgICB3YWl0QW5kRHVtcChuZXh0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Q3VybHlCcmFjZUluc2VydGlv
bihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2Vy
dFRleHQoInsiKTsKKyAgICAgICAgICAgIHdhaXRBbmREdW1wKG5leHQpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uIHRlc3ROZXdMaW5lQ2hhcmFjdGVyKG5leHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIlxuIiwgW10pOworICAgICAgICAgICAg
d2FpdEFuZER1bXAobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE5l
c3RlZEJyYWNlSW5zZXJ0aW9uKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVJbigi
aWYgIiwgc3RlcDEpOworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHR5cGVJbigiKCIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHR5cGVJbigieyIsIHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVu
Y3Rpb24gc3RlcDMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHR5cGVJbigiKCIs
IHdhaXRBbmREdW1wLmJpbmQodGhpcywgbmV4dCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RSb3VuZEJyYWNlUmVtb3ZhbChuZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcYiIsIFtdKTsKKyAgICAgICAg
ICAgIHdhaXRBbmREdW1wKG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RDdXJseUJyYWNlUmVtb3ZhbChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBldmVudFNl
bmRlci5rZXlEb3duKCJcYiIsIFtdKTsKKyAgICAgICAgICAgIHdhaXRBbmREdW1wKG5leHQpOwor
ICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHJlbG9jYXRlQmVmb3JlQ3VybHlCcmFjZShu
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLnNldFNlbGVjdGlvbihXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlvbigyLCAwKSk7CisgICAgICAgICAg
ICBkdW1wVGV4dFdpdGhTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Q3VybHlCcmFjZU92ZXJyaWRlKG5leHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHR5cGVJbigifSIsIHdhaXRBbmREdW1wLmJpbmQodGhpcywgbmV4
dCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTaW5nbGVCcmFjZUluc2Vy
dGlvbkJlZm9yZVRleHQobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dEVkaXRvci5z
ZXRTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24oMCwg
MCkpOworICAgICAgICAgICAgZHVtcFRleHRXaXRoU2VsZWN0aW9uKCk7CisgICAgICAgICAgICB0
eXBlSW4oIigiLCBzdGVwMSk7CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZHVtcFRleHRXaXRoU2VsZWN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgdHlwZUluKCJ7Iiwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZHVtcFRl
eHRXaXRoU2VsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKTsiPgorPHA+CitUaGlzIHRlc3QgY2hlY2tzIHRleHQgZWRpdG9yIHNt
YXJ0IGJyYWNlcyBmdW5jdGlvbmFsaXR5LgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDc5MmUxYjBlZjJmMGM4
NThlNTRhMjQ4OWRjZmIxNGM0ZDU3MjM1MTQuLmZkMTU1MDY2MWQ0YjAzZTY3ZDE3MWVjMGU1YmU4
YmYzODM4YzU0YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xODI4LDYgKzE4MjgsNyBAQCB3ZWJraXQub3JnL2IvMTA2NzQzIG1lZGlhL3ZpZGVvLWNv
bnRyb2xzLWNhcHRpb25zLmh0bWwgWyBGYWlsdXJlIF0KIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1l
ZGl0b3ItZm9ybWF0dGVyLmh0bWwKIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itd29yZC1q
dW1wcy5odG1sCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhvbWUtYnV0dG9uLmh0bWwK
K2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKIAogIyBSZW1v
dmUgZnJvbSBsaXN0IGFmdGVyIGVuYWJsaW5nIENBTlZBU19QQVRICiB3ZWJraXQub3JnL2IvMTA4
NTA4IGZhc3QvY2FudmFzL2NhbnZhcy1wYXRoLWNvbnN0cnVjdG9ycy5odG1sIFsgRmFpbHVyZSBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDc0OGZlMDkz
YmFhMWQwM2JiMDg0MTE2YzlkNDRjZTk0OTUwZjkxMTYuLmVmNTcwYmVhMDgxN2E5NzhiNzhlZGQ0
MWRmOGNjM2FmNTA1MmQ1MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0yNTUsNiArMjU1LDcgQEAgYW5pbWF0aW9ucy9wbGF5LXN0YXRlLmh0bWwKIGlu
c3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItZm9ybWF0dGVyLmh0bWwgWyBTa2lwIF0KIGluc3Bl
Y3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itd29yZC1qdW1wcy5odG1sIFsgU2tpcCBdCiBpbnNwZWN0
b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhvbWUtYnV0dG9uLmh0bWwgWyBTa2lwIF0KK2luc3BlY3Rv
ci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwgWyBTa2lwIF0KIAogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjAKIGluc3BlY3Rvci9kZWJ1
Z2dlci9zZWxlY3RlZC1jYWxsLWZyYW1lLWFmdGVyLWZvcm1hdHRpbmctc291cmNlLmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDIxNzhlNTljZWNlYmJm
YzlhN2Q1YTRiYjI2MjBkMmJjNjEyYjJmZWEuLjUyNmNkZWQ1NjNjNTRkY2M5ZmJiNDEwNWQwNzE3
ZTk0YjFhZTM1YzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMjYwNSw2ICsyNjA1LDcgQEAgd2Via2l0Lm9yZy9iLzM5NzI1IGZhc3QvZXZlbnRzL2RyYWct
YW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sIFsgU2tpcCBdCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQt
ZWRpdG9yLWZvcm1hdHRlci5odG1sCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXdvcmQt
anVtcHMuaHRtbAogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1ob21lLWJ1dHRvbi5odG1s
CitpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCiAKICMgW1F0
XSBSRUdSRVNTSU9OKHIxNDE2MzQpIHRlc3QgZmFpbGluZwogd2Via2l0Lm9yZy9iLzEwODgxMyBj
b21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktaW1hZ2UtbGF5ZXJzLWR5bmFtaWMuaHRt
bCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187811</attachid>
            <date>2013-02-12 01:55:56 -0800</date>
            <delta_ts>2013-02-12 02:52:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109200-20130212135225.patch</filename>
            <type>text/plain</type>
            <size>16068</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3MTMwZDVjZDgzYTMz
MmZhYzM4YThjYzI0ZDcxZmVmMDUwZjQyMy4uMWVjYzA5NzY2MjFkODdmYmZjZTIxYTQxMTRlOWRl
ZDQ3YTFkMjljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAyLTEyICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0OiBpbnNwZWN0b3Iv
ZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCisKKyAgICAgICAgLSBJbXBsZW1l
bnQgdGV4dElucHV0SW50ZXJjZXB0b3JzIHdoaWNoIHdpbGwgaW50ZXJjZXB0IHVzZXIgaW5wdXQK
KyAgICAgICAgYW5kIG92ZXJyaWRlIGl0IHdpdGggYXBwcm9wcmlhdGUgYWN0aW9ucy4KKyAgICAg
ICAgLSBBZGQgYSBzaG9ydGN1dCBmb3IgQmFja3NwYWNlIGtleSB0byBkZWxldGUgYnJhY2UgcGFp
cnMgaW4gY2VydGFpbiBjYXNlcy4KKyAgICAgICAgLSBDcmVhdGUgYW4gZXhwZXJpbWVudCB0byBn
dWFyZCB0aGUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUuX3JlZ2lzdGVyVGV4dElucHV0SW50ZXJjZXB0b3JzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlQnJh
Y2VQYWlySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBh
bmVsLnByb3RvdHlwZS5faGFuZGxlQ2xvc2luZ0JyYWNlT3ZlcnJpZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9yZWdpc3RlclNob3J0Y3V0
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUu
X2hhbmRsZUJhY2tzcGFjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUuX2hhbmRsZVRleHRJbnB1dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1Nl
dHRpbmdzKToKKwogMjAxMy0wMi0xMSAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8c2wub3N0YXBl
bmtvQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtRdF1bRUZMXVtXZWJHTF0gTWlub3IgcmVmYWN0
b3Jpbmcgb2YgR3JhcGhpY3NTdXJmYWNlL0dyYXBoaWNzU3VyZmFjZUdMWApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMK
aW5kZXggYzJiOTljNDQ2NDhjMjg2MDkxMTQ1ZDRlNmFmNGI2NjlhN2NjMGU1Zi4uNzM2ZDZhZmZj
NTE1MGM5NDBiNWM5MDEzZWZiZTA0MjdmNjUxNjVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC0xMzc4
LDYgKzEzNzgsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbCA9IGZ1bmN0aW9u
KGRlbGVnYXRlLCB0ZXh0TW9kZWwsIHVybCwgc3luY1Njcm9sbAogICAgIHRoaXMuX2ZyZWVDYWNo
ZWRFbGVtZW50cygpOwogICAgIHRoaXMuYnVpbGRDaHVua3MoKTsKICAgICB0aGlzLl9yZWdpc3Rl
clNob3J0Y3V0cygpOworICAgIHRoaXMuX3JlZ2lzdGVyVGV4dElucHV0SW50ZXJjZXB0b3JzKCk7
CiB9CiAKIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLl9Db25zZWN1dGl2ZVdoaXRl
c3BhY2VDaGFycyA9IHsKQEAgLTEzODksNiArMTM5MCw2NSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbC5fQ29uc2VjdXRpdmVXaGl0ZXNwYWNlQ2hhcnMgPSB7CiB9OwogCiBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CisKKyAgICBfcmVnaXN0
ZXJUZXh0SW5wdXRJbnRlcmNlcHRvcnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3RleHRJbnB1dEludGVyY2VwdG9ycyA9IHt9OworCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iu
ZXhwZXJpbWVudHNTZXR0aW5ncy50ZXh0RWRpdG9yU21hcnRCcmFjZXMuaXNFbmFibGVkKCkpIHsK
KyAgICAgICAgICAgIHRoaXMuX3RleHRJbnB1dEludGVyY2VwdG9yc1siKCJdID0gdGhpcy5faGFu
ZGxlQnJhY2VQYWlySW5zZXJ0aW9uLmJpbmQodGhpcywgIigpIik7CisgICAgICAgICAgICB0aGlz
Ll90ZXh0SW5wdXRJbnRlcmNlcHRvcnNbInsiXSA9IHRoaXMuX2hhbmRsZUJyYWNlUGFpckluc2Vy
dGlvbi5iaW5kKHRoaXMsICJ7fSIpOworICAgICAgICAgICAgdGhpcy5fdGV4dElucHV0SW50ZXJj
ZXB0b3JzWyIpIl0gPSB0aGlzLl9oYW5kbGVDbG9zaW5nQnJhY2VPdmVycmlkZS5iaW5kKHRoaXMs
ICIpIik7CisgICAgICAgICAgICB0aGlzLl90ZXh0SW5wdXRJbnRlcmNlcHRvcnNbIn0iXSA9IHRo
aXMuX2hhbmRsZUNsb3NpbmdCcmFjZU92ZXJyaWRlLmJpbmQodGhpcywgIn0iKTsKKyAgICAgICAg
fQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYnJhY2VQYWlyCisg
ICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBfaGFuZGxlQnJhY2VQYWlySW5z
ZXJ0aW9uOiBmdW5jdGlvbihicmFjZVBhaXIpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0aW9u
ID0gdGhpcy5fbGFzdFNlbGVjdGlvbi5ub3JtYWxpemUoKTsKKyAgICAgICAgaWYgKHNlbGVjdGlv
bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gc2VsZWN0aW9uLnN0
YXJ0TGluZTsKKyAgICAgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rpb24uc3RhcnRDb2x1bW47
CisgICAgICAgICAgICB2YXIgbGluZSA9IHRoaXMuX3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIp
OworICAgICAgICAgICAgaWYgKGNvbHVtbiA8IGxpbmUubGVuZ3RoKSB7CisgICAgICAgICAgICAg
ICAgdmFyIGNoYXIgPSBsaW5lLmNoYXJBdChjb2x1bW4pOworICAgICAgICAgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuVGV4dFV0aWxzLmlzV29yZENoYXIoY2hhcikgfHwgKCFXZWJJbnNwZWN0b3Iu
VGV4dFV0aWxzLmlzQnJhY2VDaGFyKGNoYXIpICYmIFdlYkluc3BlY3Rvci5UZXh0VXRpbHMuaXNT
dG9wQ2hhcihjaGFyKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKHNl
bGVjdGlvbiwgYnJhY2VQYWlyKTsKKyAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlvbihzZWxlY3Rpb24uc3RhcnRMaW5l
LCBzZWxlY3Rpb24uc3RhcnRDb2x1bW4gKyAxKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYnJhY2UKKyAgICAgKiBAcmV0
dXJuIHtib29sZWFufQorICAgICAqLworICAgIF9oYW5kbGVDbG9zaW5nQnJhY2VPdmVycmlkZTog
ZnVuY3Rpb24oYnJhY2UpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fbGFz
dFNlbGVjdGlvbi5ub3JtYWxpemUoKTsKKyAgICAgICAgaWYgKCFzZWxlY3Rpb24gfHwgIXNlbGVj
dGlvbi5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFy
IGxpbmVOdW1iZXIgPSBzZWxlY3Rpb24uc3RhcnRMaW5lOworICAgICAgICB2YXIgY29sdW1uID0g
c2VsZWN0aW9uLnN0YXJ0Q29sdW1uOworICAgICAgICB2YXIgbGluZSA9IHRoaXMuX3RleHRNb2Rl
bC5saW5lKGxpbmVOdW1iZXIpOworICAgICAgICBpZiAobGluZS5jaGFyQXQoY29sdW1uKSAhPT0g
YnJhY2UpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIGJyYWNlcyA9
IHRoaXMuX2JyYWNlTWF0Y2hlci5lbmNsb3NpbmdCcmFjZXMobGluZU51bWJlciwgY29sdW1uKTsK
KyAgICAgICAgaWYgKGJyYWNlcyAmJiBicmFjZXMucmlnaHRCcmFjZS5saW5lTnVtYmVyID09PSBs
aW5lTnVtYmVyICYmIGJyYWNlcy5yaWdodEJyYWNlLmNvbHVtbiA9PT0gY29sdW1uKSB7CisgICAg
ICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0aW9uKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UuY3Jl
YXRlRnJvbUxvY2F0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbiArIDEpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9LAorCiAgICAgX3JlZ2lzdGVyU2hvcnRjdXRzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICB2YXIga2V5cyA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXM7CkBAIC0xNDEz
LDYgKzE0NzMsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBob21lTW9kaWZpZXIgPSBXZWJJbnNwZWN0b3IuaXNNYWMoKSA/IG1v
ZGlmaWVycy5NZXRhIDogbW9kaWZpZXJzLk5vbmU7CiAgICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGhvbWVLZXkuY29kZSwgaG9tZU1v
ZGlmaWVyKV0gPSB0aGlzLl9oYW5kbGVIb21lS2V5LmJpbmQodGhpcywgZmFsc2UpOwogICAgICAg
ICB0aGlzLl9zaG9ydGN1dHNbV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleSho
b21lS2V5LmNvZGUsIGhvbWVNb2RpZmllciB8IG1vZGlmaWVycy5TaGlmdCldID0gdGhpcy5faGFu
ZGxlSG9tZUtleS5iaW5kKHRoaXMsIHRydWUpOworICAgICAgICB0aGlzLl9zaG9ydGN1dHNbV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleShrZXlzLkJhY2tzcGFjZS5jb2RlLCBt
b2RpZmllcnMuTm9uZSldID0gdGhpcy5faGFuZGxlQmFja3NwYWNlLmJpbmQodGhpcyk7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtMTQ1Niw2ICsxNTE3LDMzIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcGFpbnRMaW5lcyhzdGFy
dExpbmUsIGVuZExpbmUgKyAxKTsKICAgICB9LAogCisgICAgX2hhbmRsZUJhY2tzcGFjZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0
aW5ncy50ZXh0RWRpdG9yU21hcnRCcmFjZXMuaXNFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2xhc3RTZWxlY3Rpb247
CisgICAgICAgIGlmICghc2VsZWN0aW9uIHx8ICFzZWxlY3Rpb24uaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rpb24uc3Rh
cnRDb2x1bW47CisgICAgICAgIGlmIChjb2x1bW4gPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICB2YXIgbGluZU51bWJlciA9IHNlbGVjdGlvbi5zdGFydExpbmU7Cisg
ICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisgICAg
ICAgIGlmIChjb2x1bW4gPT09IGxpbmUubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHZhciBwYWlyID0gbGluZS5zdWJzdHIoY29sdW1uIC0gMSwgMik7CisgICAg
ICAgIGlmIChwYWlyID09PSAiKCkiIHx8IHBhaXIgPT09ICJ7fSIpIHsKKyAgICAgICAgICAgIHRo
aXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UobGluZU51
bWJlciwgY29sdW1uIC0gMSwgbGluZU51bWJlciwgY29sdW1uICsgMSksICIiKTsKKyAgICAgICAg
ICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVG
cm9tTG9jYXRpb24obGluZU51bWJlciwgY29sdW1uIC0gMSkpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0s
CisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnZXgKICAgICAgKiBAcGFyYW0g
e3N0cmluZ30gY3NzQ2xhc3MKQEAgLTI3NTgsNiArMjg0NiwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2hhbmRsZVRleHRJ
bnB1dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSB0
aGlzLl90ZXh0SW5wdXRJbnRlcmNlcHRvcnNbZXZlbnQuZGF0YV07CisgICAgICAgIGlmIChpbnRl
cmNlcHRvciAmJiBpbnRlcmNlcHRvcigpKSB7CisgICAgICAgICAgICBldmVudC5jb25zdW1lKHRy
dWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHRoaXMuX3RleHRJ
bnB1dERhdGEgPSBldmVudC5kYXRhOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDkzNTIyMDRhMWVjY2NkN2I5Y2QyNjRh
ZWI1M2JhYWUwMzA3YjIwMjcuLmMxZmQwMmM4YjQzYmNiYzk3YmM4ZTg0MTU2OTg4ZTU2ZWQ4OWQw
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
cwpAQCAtMjE4LDYgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1NldHRpbmdzID0g
ZnVuY3Rpb24oKQogICAgIHRoaXMuc2hvd092ZXJyaWRlc0luRHJhd2VyID0gdGhpcy5fY3JlYXRl
RXhwZXJpbWVudCgic2hvd092ZXJyaWRlc0luRHJhd2VyIiwgIlNob3cgT3ZlcnJpZGVzIGluIGRy
YXdlciIpOwogICAgIHRoaXMuZmlsZVN5c3RlbVByb2plY3QgPSB0aGlzLl9jcmVhdGVFeHBlcmlt
ZW50KCJmaWxlU3lzdGVtUHJvamVjdCIsICJGaWxlIHN5c3RlbSBmb2xkZXJzIGluIFNvdXJjZXMg
UGFuZWwiKTsKICAgICB0aGlzLmhvcml6b250YWxQYW5lbFNwbGl0ID0gdGhpcy5fY3JlYXRlRXhw
ZXJpbWVudCgiaG9yaXpvbnRhbFBhbmVsU3BsaXQiLCAiQWxsb3cgaG9yaXpvbnRhbCBzcGxpdCBp
biBFbGVtZW50cyBhbmQgU291cmNlcyBwYW5lbHMiKTsKKyAgICB0aGlzLnRleHRFZGl0b3JTbWFy
dEJyYWNlcyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInRleHRFZGl0b3JTbWFydEJyYWNlcyIs
ICJFbmFibGUgc21hcnQgYnJhY2VzIGluIHRleHQgZWRpdG9yIik7CiAKICAgICB0aGlzLl9jbGVh
blVwU2V0dGluZygpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlYTcyODJiMTY5MTJjNzNhMGIxYjg4Zjc4MDBhNTkz
NGVhNWQ5YmMuLjZhNjJjYjExZjc3M2JkMjZkNWZlYzk5ZGRlZjg0NzQ4MTM1NTk2MjQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMi0xMiAgQW5kcmV5IEx1c2huaWtvdiAgPGx1c2huaWtv
dkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50IHNtYXJ0
IGJyYWNlcyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDkyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0aGF0IHZlcmlmaWVzIHNtYXJ0IGJyYWNl
cyBmdW5jdGlvbmFsaXR5IGFuZAorICAgICAgICBza2lwIHRoaXMgdGVzdCBvbiB0aG9zZSBwb3J0
cyB3aGljaCBkbyBub3QgaGF2ZSBrZXkgZW1pdHRlcnMgYW5kCisgICAgICAgIHRleHRJbnB1dCBl
dmVudCBlbXVsYXRpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9y
LXNtYXJ0LWJyYWNlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9l
ZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMTMtMDItMTEgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gUmVtb3ZlIHdlYmludGVudHMgZnJvbSBUZXN0RXhwZWN0YXRpb25zCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJy
YWNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRp
dG9yLXNtYXJ0LWJyYWNlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBjZGFjMzQ3MmFhYmY4
ZDA4ODlkNTU4MGYxMWY1ZjBjZDc4NzQzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDUzIEBACitUaGlzIHRlc3QgY2hlY2tzIHRleHQgZWRpdG9yIHNtYXJ0IGJyYWNl
cyBmdW5jdGlvbmFsaXR5LgorCisKK1J1bm5pbmc6IHRlc3RSb3VuZEJyYWNlSW5zZXJ0aW9uCitm
dW5jdGlvbiB0ZXN0KHwpCisKK1J1bm5pbmc6IHRlc3RSb3VuZEJyYWNlT3ZlcnJpZGUKK2Z1bmN0
aW9uIHRlc3QoYSwgYil8CisKK1J1bm5pbmc6IHRlc3RDdXJseUJyYWNlSW5zZXJ0aW9uCitmdW5j
dGlvbiB0ZXN0KGEsIGIpe3x9CisKK1J1bm5pbmc6IHRlc3ROZXdMaW5lQ2hhcmFjdGVyCitmdW5j
dGlvbiB0ZXN0KGEsIGIpeworICAgIHwKK30KKworUnVubmluZzogdGVzdE5lc3RlZEJyYWNlSW5z
ZXJ0aW9uCitmdW5jdGlvbiB0ZXN0KGEsIGIpeworICAgIGlmICh7KHwpfSkKK30KKworUnVubmlu
ZzogdGVzdFJvdW5kQnJhY2VSZW1vdmFsCitmdW5jdGlvbiB0ZXN0KGEsIGIpeworICAgIGlmICh7
fH0pCit9CisKK1J1bm5pbmc6IHRlc3RDdXJseUJyYWNlUmVtb3ZhbAorZnVuY3Rpb24gdGVzdChh
LCBiKXsKKyAgICBpZiAofCkKK30KKworUnVubmluZzogcmVsb2NhdGVCZWZvcmVDdXJseUJyYWNl
CitmdW5jdGlvbiB0ZXN0KGEsIGIpeworICAgIGlmICgpCit8fQorCitSdW5uaW5nOiB0ZXN0Q3Vy
bHlCcmFjZU92ZXJyaWRlCitmdW5jdGlvbiB0ZXN0KGEsIGIpeworICAgIGlmICgpCit9fAorCitS
dW5uaW5nOiB0ZXN0U2luZ2xlQnJhY2VJbnNlcnRpb25CZWZvcmVUZXh0Cit8ZnVuY3Rpb24gdGVz
dChhLCBiKXsKKyAgICBpZiAoKQorfQorKHxmdW5jdGlvbiB0ZXN0KGEsIGIpeworICAgIGlmICgp
Cit9Cisoe3xmdW5jdGlvbiB0ZXN0KGEsIGIpeworICAgIGlmICgpCit9CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNl
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg3NWI2YzkzMmZhOTM5ODM1ZTA3ZTdkZGZlNDlkODZlNDBmOTEy
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQt
ZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCkBAIC0wLDAgKzEsMTQ2IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJlZGl0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuZXhwZXJpbWVu
dHNTZXR0aW5ncy50ZXh0RWRpdG9yU21hcnRCcmFjZXMuZW5hYmxlRm9yVGVzdCgpOworCisgICAg
dmFyIHRleHRFZGl0b3IgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRlc3RFZGl0b3IoKTsKKyAgICB0
ZXh0RWRpdG9yLm92ZXJyaWRlVmlld3BvcnRGb3JUZXN0KDAsIHVuZGVmaW5lZCwgMyk7CisgICAg
dGV4dEVkaXRvci5taW1lVHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgIHRleHRFZGl0b3Iu
c2V0UmVhZE9ubHkoZmFsc2UpOworICAgIHRleHRFZGl0b3IuZWxlbWVudC5mb2N1cygpOworCisg
ICAgdGV4dEVkaXRvci5zZXRUZXh0KCIiKTsKKyAgICB0ZXh0RWRpdG9yLnNldFNlbGVjdGlvbihX
ZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlvbigwLCAwKSk7CisKKyAgICBm
dW5jdGlvbiBkdW1wVGV4dFdpdGhTZWxlY3Rpb24oKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoSW5zcGVjdG9yVGVzdC50ZXh0V2l0aFNlbGVjdGlvbih0ZXh0RWRpdG9y
LnRleHQoKSwgdGV4dEVkaXRvci5zZWxlY3Rpb24oKSkpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHdhaXRBbmREdW1wKG5leHQpCisgICAgeworICAgICAgICBzZXRUaW1lb3V0KHN0ZXApOworICAg
ICAgICBmdW5jdGlvbiBzdGVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgZHVtcFRleHRXaXRo
U2VsZWN0aW9uKCk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0eXBlSW4odGV4dCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0ZXh0SW5w
dXRDb250cm9sbGVyLmluc2VydFRleHQodGV4dCk7CisgICAgICAgIHNldFRpbWVvdXQoY2FsbGJh
Y2spOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdFJvdW5kQnJhY2VJbnNlcnRpb24obmV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdHlwZUluKCJmdW5jdGlvbiB0ZXN0Iiwgc3RlcCk7CisgICAgICAgICAgICBmdW5jdGlv
biBzdGVwKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9s
bGVyLmluc2VydFRleHQoIigiKTsKKyAgICAgICAgICAgICAgICB3YWl0QW5kRHVtcChuZXh0KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Um91bmRC
cmFjZU92ZXJyaWRlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVJbigiYSwgYiIs
IHN0ZXApOworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KCIpIik7CisgICAgICAg
ICAgICAgICAgd2FpdEFuZER1bXAobmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdEN1cmx5QnJhY2VJbnNlcnRpb24obmV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KCJ7Iik7CisgICAg
ICAgICAgICB3YWl0QW5kRHVtcChuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlv
biB0ZXN0TmV3TGluZUNoYXJhY3RlcihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCJcbiIsIFtdKTsKKyAgICAgICAgICAgIHdhaXRBbmREdW1wKG5leHQp
OworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3ROZXN0ZWRCcmFjZUluc2VydGlv
bihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0eXBlSW4oImlmICIsIHN0ZXAxKTsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB0eXBlSW4oIigiLCBzdGVwMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0eXBlSW4oInsiLCBz
dGVwMyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0eXBlSW4oIigiLCB3YWl0QW5kRHVtcC5iaW5k
KHRoaXMsIG5leHQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5j
dGlvbiB0ZXN0Um91bmRCcmFjZVJlbW92YWwobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiXGIiLCBbXSk7CisgICAgICAgICAgICB3YWl0QW5kRHVtcChu
ZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Q3VybHlCcmFjZVJlbW92
YWwobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiXGIi
LCBbXSk7CisgICAgICAgICAgICB3YWl0QW5kRHVtcChuZXh0KTsKKyAgICAgICAgfSwKKworICAg
ICAgICBmdW5jdGlvbiByZWxvY2F0ZUJlZm9yZUN1cmx5QnJhY2UobmV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdGV4dEVkaXRvci5zZXRTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZS5jcmVhdGVGcm9tTG9jYXRpb24oMiwgMCkpOworICAgICAgICAgICAgZHVtcFRleHRXaXRoU2Vs
ZWN0aW9uKCk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdEN1cmx5QnJhY2VPdmVycmlkZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICB0eXBlSW4oIn0iLCB3YWl0QW5kRHVtcC5iaW5kKHRoaXMsIG5leHQpKTsKKyAgICAgICAgfSwK
KworICAgICAgICBmdW5jdGlvbiB0ZXN0U2luZ2xlQnJhY2VJbnNlcnRpb25CZWZvcmVUZXh0KG5l
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHRFZGl0b3Iuc2V0U2VsZWN0aW9uKFdlYklu
c3BlY3Rvci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9uKDAsIDApKTsKKyAgICAgICAgICAg
IGR1bXBUZXh0V2l0aFNlbGVjdGlvbigpOworICAgICAgICAgICAgdHlwZUluKCIoIiwgc3RlcDEp
OworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGR1bXBUZXh0V2l0aFNlbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHR5cGVJbigi
eyIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGR1bXBUZXh0V2l0aFNlbGVjdGlvbigp
OworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7
Ij4KKzxwPgorVGhpcyB0ZXN0IGNoZWNrcyB0ZXh0IGVkaXRvciBzbWFydCBicmFjZXMgZnVuY3Rp
b25hbGl0eS4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3OTJlMWIwZWYyZjBjODU4ZTU0YTI0ODlkY2ZiMTRj
NGQ1NzIzNTE0Li5mZDE1NTA2NjFkNGIwM2U2N2QxNzFlYzBlNWJlOGJmMzgzOGM1NGFkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgyOCw2ICsxODI4
LDcgQEAgd2Via2l0Lm9yZy9iLzEwNjc0MyBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy5o
dG1sIFsgRmFpbHVyZSBdCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWZvcm1hdHRlci5o
dG1sCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXdvcmQtanVtcHMuaHRtbAogaW5zcGVj
dG9yL2VkaXRvci90ZXh0LWVkaXRvci1ob21lLWJ1dHRvbi5odG1sCitpbnNwZWN0b3IvZWRpdG9y
L3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCiAKICMgUmVtb3ZlIGZyb20gbGlzdCBhZnRl
ciBlbmFibGluZyBDQU5WQVNfUEFUSAogd2Via2l0Lm9yZy9iLzEwODUwOCBmYXN0L2NhbnZhcy9j
YW52YXMtcGF0aC1jb25zdHJ1Y3RvcnMuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3NDhmZTA5M2JhYTFkMDNiYjA4NDExNmM5
ZDQ0Y2U5NDk1MGY5MTE2Li5lZjU3MGJlYTA4MTdhOTc4Yjc4ZWRkNDFkZjhjYzNhZjUwNTJkNTMx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjU1LDYg
KzI1NSw3IEBAIGFuaW1hdGlvbnMvcGxheS1zdGF0ZS5odG1sCiBpbnNwZWN0b3IvZWRpdG9yL3Rl
eHQtZWRpdG9yLWZvcm1hdHRlci5odG1sIFsgU2tpcCBdCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQt
ZWRpdG9yLXdvcmQtanVtcHMuaHRtbCBbIFNraXAgXQogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVk
aXRvci1ob21lLWJ1dHRvbi5odG1sIFsgU2tpcCBdCitpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRp
dG9yLXNtYXJ0LWJyYWNlcy5odG1sIFsgU2tpcCBdCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMTIwCiBpbnNwZWN0b3IvZGVidWdnZXIvc2VsZWN0ZWQtY2Fs
bC1mcmFtZS1hZnRlci1mb3JtYXR0aW5nLXNvdXJjZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyMTc4ZTU5Y2VjZWJiZmM5YTdkNWE0YmIyNjIwZDJi
YzYxMmIyZmVhLi41MjZjZGVkNTYzYzU0ZGNjOWZiYjQxMDVkMDcxN2U5NGIxYWUzNWM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI2MDUsNiArMjYwNSw3
IEBAIHdlYmtpdC5vcmcvYi8zOTcyNSBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3Jv
bGwuaHRtbCBbIFNraXAgXQogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1mb3JtYXR0ZXIu
aHRtbAogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci13b3JkLWp1bXBzLmh0bWwKIGluc3Bl
Y3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaG9tZS1idXR0b24uaHRtbAoraW5zcGVjdG9yL2VkaXRv
ci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbAogCiAjIFtRdF0gUkVHUkVTU0lPTihyMTQx
NjM0KSB0ZXN0IGZhaWxpbmcKIHdlYmtpdC5vcmcvYi8xMDg4MTMgY29tcG9zaXRpbmcvdmlzaWJp
bGl0eS92aXNpYmlsaXR5LWltYWdlLWxheWVycy1keW5hbWljLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187819</attachid>
            <date>2013-02-12 02:52:34 -0800</date>
            <delta_ts>2013-02-14 06:21:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109200-20130212144904.patch</filename>
            <type>text/plain</type>
            <size>16100</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0ZjFkYzE3YTk5OGJj
NTU0OTRkMmE5YjkzYmM3OWJjMzM5N2UxNy4uYzExZTkxNTZmOTY1YTgxNjhjZDRhNDhjMWRlY2E4
ZmMxOGFhYTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAyLTEyICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0OiBpbnNwZWN0b3Iv
ZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sCisKKyAgICAgICAgLSBJbXBsZW1l
bnQgdGV4dElucHV0SW50ZXJjZXB0b3JzIHdoaWNoIHdpbGwgaW50ZXJjZXB0IHVzZXIgaW5wdXQK
KyAgICAgICAgYW5kIG92ZXJyaWRlIGl0IHdpdGggYXBwcm9wcmlhdGUgYWN0aW9ucy4KKyAgICAg
ICAgLSBBZGQgYSBzaG9ydGN1dCBmb3IgQmFja3NwYWNlIGtleSB0byBkZWxldGUgYnJhY2UgcGFp
cnMgaW4gY2VydGFpbiBjYXNlcy4KKyAgICAgICAgLSBDcmVhdGUgYW4gZXhwZXJpbWVudCB0byBn
dWFyZCB0aGUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUuX3JlZ2lzdGVyVGV4dElucHV0SW50ZXJjZXB0b3JzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlQnJh
Y2VQYWlySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBh
bmVsLnByb3RvdHlwZS5faGFuZGxlQ2xvc2luZ0JyYWNlT3ZlcnJpZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9yZWdpc3RlclNob3J0Y3V0
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUu
X2hhbmRsZUJhY2tzcGFjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUuX2hhbmRsZVRleHRJbnB1dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1Nl
dHRpbmdzKToKKwogMjAxMy0wMi0xMiAgWm9sdGFuIEFydmFpICA8emFydmFpQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggIUVOQUJMRShJTlNQRUNUT1IpIGJ1aWxk
cyBhZnRlciByMTQyNTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwppbmRleCAyMmZmMDhkMmU2NGUwZWI0ODIwMzll
ODlhYzdmZDQwNmYyNjA2NjJjLi4yMWZkMmU2OTY5ZDk0Zjc5NGRkMGY1MWVmNGZiNmFjNmMwNDQw
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1
bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTEzNzcsNiArMTM3Nyw3IEBAIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdhdGUsIHRleHRNb2RlbCwgdXJsLCBz
eW5jU2Nyb2xsCiAgICAgdGhpcy5fZnJlZUNhY2hlZEVsZW1lbnRzKCk7CiAgICAgdGhpcy5idWls
ZENodW5rcygpOwogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CisgICAgdGhpcy5fcmVn
aXN0ZXJUZXh0SW5wdXRJbnRlcmNlcHRvcnMoKTsKIH0KIAogV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwuX0NvbnNlY3V0aXZlV2hpdGVzcGFjZUNoYXJzID0gewpAQCAtMTM4OCw2ICsx
Mzg5LDY1IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLl9Db25zZWN1dGl2ZVdo
aXRlc3BhY2VDaGFycyA9IHsKIH07CiAKIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVs
LnByb3RvdHlwZSA9IHsKKworICAgIF9yZWdpc3RlclRleHRJbnB1dEludGVyY2VwdG9yczogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGV4dElucHV0SW50ZXJjZXB0b3JzID0ge307
CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnRleHRFZGl0
b3JTbWFydEJyYWNlcy5pc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgdGhpcy5fdGV4dElucHV0
SW50ZXJjZXB0b3JzWyIoIl0gPSB0aGlzLl9oYW5kbGVCcmFjZVBhaXJJbnNlcnRpb24uYmluZCh0
aGlzLCAiKCkiKTsKKyAgICAgICAgICAgIHRoaXMuX3RleHRJbnB1dEludGVyY2VwdG9yc1sieyJd
ID0gdGhpcy5faGFuZGxlQnJhY2VQYWlySW5zZXJ0aW9uLmJpbmQodGhpcywgInt9Iik7CisgICAg
ICAgICAgICB0aGlzLl90ZXh0SW5wdXRJbnRlcmNlcHRvcnNbIikiXSA9IHRoaXMuX2hhbmRsZUNs
b3NpbmdCcmFjZU92ZXJyaWRlLmJpbmQodGhpcywgIikiKTsKKyAgICAgICAgICAgIHRoaXMuX3Rl
eHRJbnB1dEludGVyY2VwdG9yc1sifSJdID0gdGhpcy5faGFuZGxlQ2xvc2luZ0JyYWNlT3ZlcnJp
ZGUuYmluZCh0aGlzLCAifSIpOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBicmFjZVBhaXIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAg
ICAqLworICAgIF9oYW5kbGVCcmFjZVBhaXJJbnNlcnRpb246IGZ1bmN0aW9uKGJyYWNlUGFpcikK
KyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLl9sYXN0U2VsZWN0aW9uLm5vcm1h
bGl6ZSgpOworICAgICAgICBpZiAoc2VsZWN0aW9uLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
dmFyIGxpbmVOdW1iZXIgPSBzZWxlY3Rpb24uc3RhcnRMaW5lOworICAgICAgICAgICAgdmFyIGNv
bHVtbiA9IHNlbGVjdGlvbi5zdGFydENvbHVtbjsKKyAgICAgICAgICAgIHZhciBsaW5lID0gdGhp
cy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisgICAgICAgICAgICBpZiAoY29sdW1uIDwg
bGluZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hhciA9IGxpbmUuY2hhckF0KGNv
bHVtbik7CisgICAgICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5UZXh0VXRpbHMuaXNXb3Jk
Q2hhcihjaGFyKSB8fCAoIVdlYkluc3BlY3Rvci5UZXh0VXRpbHMuaXNCcmFjZUNoYXIoY2hhcikg
JiYgV2ViSW5zcGVjdG9yLlRleHRVdGlscy5pc1N0b3BDaGFyKGNoYXIpKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2Uoc2VsZWN0aW9uLCBicmFjZVBhaXIpOworICAgICAg
ICB0aGlzLl9yZXN0b3JlU2VsZWN0aW9uKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UuY3JlYXRlRnJv
bUxvY2F0aW9uKHNlbGVjdGlvbi5zdGFydExpbmUsIHNlbGVjdGlvbi5zdGFydENvbHVtbiArIDEp
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBicmFjZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAg
X2hhbmRsZUNsb3NpbmdCcmFjZU92ZXJyaWRlOiBmdW5jdGlvbihicmFjZSkKKyAgICB7CisgICAg
ICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLl9sYXN0U2VsZWN0aW9uLm5vcm1hbGl6ZSgpOworICAg
ICAgICBpZiAoIXNlbGVjdGlvbiB8fCAhc2VsZWN0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgbGluZU51bWJlciA9IHNlbGVjdGlvbi5zdGFy
dExpbmU7CisgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rpb24uc3RhcnRDb2x1bW47CisgICAg
ICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisgICAgICAg
IGlmIChsaW5lLmNoYXJBdChjb2x1bW4pICE9PSBicmFjZSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICB2YXIgYnJhY2VzID0gdGhpcy5fYnJhY2VNYXRjaGVyLmVuY2xvc2lu
Z0JyYWNlcyhsaW5lTnVtYmVyLCBjb2x1bW4pOworICAgICAgICBpZiAoYnJhY2VzICYmIGJyYWNl
cy5yaWdodEJyYWNlLmxpbmVOdW1iZXIgPT09IGxpbmVOdW1iZXIgJiYgYnJhY2VzLnJpZ2h0QnJh
Y2UuY29sdW1uID09PSBjb2x1bW4pIHsKKyAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rp
b24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24obGluZU51bWJlciwg
Y29sdW1uICsgMSkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKICAgICBfcmVnaXN0ZXJTaG9ydGN1
dHM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBrZXlzID0gV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5czsKQEAgLTE0MTIsNiArMTQ3Miw3IEBAIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGhvbWVNb2RpZmll
ciA9IFdlYkluc3BlY3Rvci5pc01hYygpID8gbW9kaWZpZXJzLk1ldGEgOiBtb2RpZmllcnMuTm9u
ZTsKICAgICAgICAgdGhpcy5fc2hvcnRjdXRzW1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lm1ha2VLZXkoaG9tZUtleS5jb2RlLCBob21lTW9kaWZpZXIpXSA9IHRoaXMuX2hhbmRsZUhvbWVL
ZXkuYmluZCh0aGlzLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGhvbWVLZXkuY29kZSwgaG9tZU1vZGlmaWVyIHwg
bW9kaWZpZXJzLlNoaWZ0KV0gPSB0aGlzLl9oYW5kbGVIb21lS2V5LmJpbmQodGhpcywgdHJ1ZSk7
CisgICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5t
YWtlS2V5KGtleXMuQmFja3NwYWNlLmNvZGUsIG1vZGlmaWVycy5Ob25lKV0gPSB0aGlzLl9oYW5k
bGVCYWNrc3BhY2UuYmluZCh0aGlzKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xNDQwLDYgKzE1
MDEsMzMgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCisgICAgX2hhbmRsZUJhY2tzcGFjZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0
aW5ncy50ZXh0RWRpdG9yU21hcnRCcmFjZXMuaXNFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2xhc3RTZWxlY3Rpb247
CisgICAgICAgIGlmICghc2VsZWN0aW9uIHx8ICFzZWxlY3Rpb24uaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rpb24uc3Rh
cnRDb2x1bW47CisgICAgICAgIGlmIChjb2x1bW4gPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICB2YXIgbGluZU51bWJlciA9IHNlbGVjdGlvbi5zdGFydExpbmU7Cisg
ICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisgICAg
ICAgIGlmIChjb2x1bW4gPT09IGxpbmUubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHZhciBwYWlyID0gbGluZS5zdWJzdHIoY29sdW1uIC0gMSwgMik7CisgICAg
ICAgIGlmIChwYWlyID09PSAiKCkiIHx8IHBhaXIgPT09ICJ7fSIpIHsKKyAgICAgICAgICAgIHRo
aXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UobGluZU51
bWJlciwgY29sdW1uIC0gMSwgbGluZU51bWJlciwgY29sdW1uICsgMSksICIiKTsKKyAgICAgICAg
ICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVG
cm9tTG9jYXRpb24obGluZU51bWJlciwgY29sdW1uIC0gMSkpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0s
CisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnZXgKICAgICAgKiBAcGFyYW0g
e3N0cmluZ30gY3NzQ2xhc3MKQEAgLTI3MzgsNiArMjgyNiwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2hhbmRsZVRleHRJ
bnB1dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSB0
aGlzLl90ZXh0SW5wdXRJbnRlcmNlcHRvcnNbZXZlbnQuZGF0YV07CisgICAgICAgIGlmIChpbnRl
cmNlcHRvciAmJiBpbnRlcmNlcHRvcigpKSB7CisgICAgICAgICAgICBldmVudC5jb25zdW1lKHRy
dWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHRoaXMuX3RleHRJ
bnB1dERhdGEgPSBldmVudC5kYXRhOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDI3ZDhjMmY5Yjk2ZmQwZTQzZjIxZmZl
NWIxYWZhYmZjYzQxZWNhMjQuLjYyZDQ3N2MwOWE0NzZlMDUwODJmYWFmMjEzMjI3ODBlMGQzZDM3
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
cwpAQCAtMjE4LDYgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1NldHRpbmdzID0g
ZnVuY3Rpb24oKQogICAgIHRoaXMuZmlsZVN5c3RlbVByb2plY3QgPSB0aGlzLl9jcmVhdGVFeHBl
cmltZW50KCJmaWxlU3lzdGVtUHJvamVjdCIsICJGaWxlIHN5c3RlbSBmb2xkZXJzIGluIFNvdXJj
ZXMgUGFuZWwiKTsKICAgICB0aGlzLmhvcml6b250YWxQYW5lbFNwbGl0ID0gdGhpcy5fY3JlYXRl
RXhwZXJpbWVudCgiaG9yaXpvbnRhbFBhbmVsU3BsaXQiLCAiQWxsb3cgaG9yaXpvbnRhbCBzcGxp
dCBpbiBFbGVtZW50cyBhbmQgU291cmNlcyBwYW5lbHMiKTsKICAgICB0aGlzLnNob3dXaGl0ZXNw
YWNlSW5FZGl0b3IgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJzaG93V2hpdGVzcGFjZUluRWRp
dG9yIiwgIlNob3cgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIGVkaXRvciIpOworICAgIHRoaXMu
dGV4dEVkaXRvclNtYXJ0QnJhY2VzID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgidGV4dEVkaXRv
clNtYXJ0QnJhY2VzIiwgIkVuYWJsZSBzbWFydCBicmFjZXMgaW4gdGV4dCBlZGl0b3IiKTsKIAog
ICAgIHRoaXMuX2NsZWFuVXBTZXR0aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGY3Y2NhM2I4MjI1NmM5MjEy
OTA3NmE3YjFlMGM2NmZmOTA4NGI5Ny4uYjQ4MDIyOGQxMzgzYzE1YjNhOTQwYzY2OTJhYzY5NTIw
OWVlZjcyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDEzLTAyLTEyICBBbmRyZXkgTHVzaG5p
a292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBp
bXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRoYXQgdmVyaWZp
ZXMgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkgYW5kCisgICAgICAgIHNraXAgdGhpcyB0ZXN0
IG9uIHRob3NlIHBvcnRzIHdoaWNoIGRvIG5vdCBoYXZlIGtleSBlbWl0dGVycyBhbmQKKyAgICAg
ICAgdGV4dElucHV0IGV2ZW50IGVtdWxhdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9lZGl0
b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4
cGVjdGF0aW9uczoKKworMjAxMy0wMi0xMiAgQW5kcmV5IEx1c2huaWtvdiAgPGx1c2huaWtvdkBj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBzaG93V2hpdGVzcGFj
ZSBvcHRpb24gaW50byBleHBlcmltZW50cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTUyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMGNkYWMzNDcyYWFiZjhkMDg4OWQ1NTgwZjExZjVmMGNkNzg3NDNm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVk
aXRvci1zbWFydC1icmFjZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTMgQEAKK1RoaXMgdGVz
dCBjaGVja3MgdGV4dCBlZGl0b3Igc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkuCisKKworUnVu
bmluZzogdGVzdFJvdW5kQnJhY2VJbnNlcnRpb24KK2Z1bmN0aW9uIHRlc3QofCkKKworUnVubmlu
ZzogdGVzdFJvdW5kQnJhY2VPdmVycmlkZQorZnVuY3Rpb24gdGVzdChhLCBiKXwKKworUnVubmlu
ZzogdGVzdEN1cmx5QnJhY2VJbnNlcnRpb24KK2Z1bmN0aW9uIHRlc3QoYSwgYil7fH0KKworUnVu
bmluZzogdGVzdE5ld0xpbmVDaGFyYWN0ZXIKK2Z1bmN0aW9uIHRlc3QoYSwgYil7CisgICAgfAor
fQorCitSdW5uaW5nOiB0ZXN0TmVzdGVkQnJhY2VJbnNlcnRpb24KK2Z1bmN0aW9uIHRlc3QoYSwg
Yil7CisgICAgaWYgKHsofCl9KQorfQorCitSdW5uaW5nOiB0ZXN0Um91bmRCcmFjZVJlbW92YWwK
K2Z1bmN0aW9uIHRlc3QoYSwgYil7CisgICAgaWYgKHt8fSkKK30KKworUnVubmluZzogdGVzdEN1
cmx5QnJhY2VSZW1vdmFsCitmdW5jdGlvbiB0ZXN0KGEsIGIpeworICAgIGlmICh8KQorfQorCitS
dW5uaW5nOiByZWxvY2F0ZUJlZm9yZUN1cmx5QnJhY2UKK2Z1bmN0aW9uIHRlc3QoYSwgYil7Cisg
ICAgaWYgKCkKK3x9CisKK1J1bm5pbmc6IHRlc3RDdXJseUJyYWNlT3ZlcnJpZGUKK2Z1bmN0aW9u
IHRlc3QoYSwgYil7CisgICAgaWYgKCkKK318CisKK1J1bm5pbmc6IHRlc3RTaW5nbGVCcmFjZUlu
c2VydGlvbkJlZm9yZVRleHQKK3xmdW5jdGlvbiB0ZXN0KGEsIGIpeworICAgIGlmICgpCit9Ciso
fGZ1bmN0aW9uIHRlc3QoYSwgYil7CisgICAgaWYgKCkKK30KKyh7fGZ1bmN0aW9uIHRlc3QoYSwg
Yil7CisgICAgaWYgKCkKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vk
aXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc1YjZj
OTMyZmE5Mzk4MzVlMDdlN2RkZmU0OWQ4NmU0MGY5MTJhZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwK
QEAgLTAsMCArMSwxNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9ImVkaXRvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnRleHRFZGl0b3JTbWFy
dEJyYWNlcy5lbmFibGVGb3JUZXN0KCk7CisKKyAgICB2YXIgdGV4dEVkaXRvciA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlVGVzdEVkaXRvcigpOworICAgIHRleHRFZGl0b3Iub3ZlcnJpZGVWaWV3cG9y
dEZvclRlc3QoMCwgdW5kZWZpbmVkLCAzKTsKKyAgICB0ZXh0RWRpdG9yLm1pbWVUeXBlID0gInRl
eHQvamF2YXNjcmlwdCI7CisgICAgdGV4dEVkaXRvci5zZXRSZWFkT25seShmYWxzZSk7CisgICAg
dGV4dEVkaXRvci5lbGVtZW50LmZvY3VzKCk7CisKKyAgICB0ZXh0RWRpdG9yLnNldFRleHQoIiIp
OworICAgIHRleHRFZGl0b3Iuc2V0U2VsZWN0aW9uKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UuY3Jl
YXRlRnJvbUxvY2F0aW9uKDAsIDApKTsKKworICAgIGZ1bmN0aW9uIGR1bXBUZXh0V2l0aFNlbGVj
dGlvbigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChJbnNwZWN0b3JU
ZXN0LnRleHRXaXRoU2VsZWN0aW9uKHRleHRFZGl0b3IudGV4dCgpLCB0ZXh0RWRpdG9yLnNlbGVj
dGlvbigpKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gd2FpdEFuZER1bXAobmV4dCkKKyAgICB7
CisgICAgICAgIHNldFRpbWVvdXQoc3RlcCk7CisgICAgICAgIGZ1bmN0aW9uIHN0ZXAoKQorICAg
ICAgICB7CisgICAgICAgICAgICBkdW1wVGV4dFdpdGhTZWxlY3Rpb24oKTsKKyAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHR5cGVJbih0ZXh0LCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCh0
ZXh0KTsKKyAgICAgICAgc2V0VGltZW91dChjYWxsYmFjayk7CisgICAgfQorCisgICAgSW5zcGVj
dG9yVGVzdC5ydW5UZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0Um91bmRCcmFjZUlu
c2VydGlvbihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0eXBlSW4oImZ1bmN0aW9uIHRl
c3QiLCBzdGVwKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgiKCIpOworICAg
ICAgICAgICAgICAgIHdhaXRBbmREdW1wKG5leHQpOworICAgICAgICAgICAgfQorICAgICAgICB9
LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RSb3VuZEJyYWNlT3ZlcnJpZGUobmV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdHlwZUluKCJhLCBiIiwgc3RlcCk7CisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0SW5wdXRDb250
cm9sbGVyLmluc2VydFRleHQoIikiKTsKKyAgICAgICAgICAgICAgICB3YWl0QW5kRHVtcChuZXh0
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Q3Vy
bHlCcmFjZUluc2VydGlvbihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLmluc2VydFRleHQoInsiKTsKKyAgICAgICAgICAgIHdhaXRBbmREdW1wKG5leHQp
OworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3ROZXdMaW5lQ2hhcmFjdGVyKG5l
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIlxuIiwgW10p
OworICAgICAgICAgICAgd2FpdEFuZER1bXAobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdE5lc3RlZEJyYWNlSW5zZXJ0aW9uKG5leHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHR5cGVJbigiaWYgIiwgc3RlcDEpOworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHR5cGVJbigiKCIsIHN0ZXAyKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHR5cGVJbigieyIsIHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHR5cGVJbigiKCIsIHdhaXRBbmREdW1wLmJpbmQodGhpcywgbmV4dCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RSb3VuZEJyYWNlUmVtb3Zh
bChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcYiIs
IFtdKTsKKyAgICAgICAgICAgIHdhaXRBbmREdW1wKG5leHQpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3RDdXJseUJyYWNlUmVtb3ZhbChuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcYiIsIFtdKTsKKyAgICAgICAgICAgIHdhaXRB
bmREdW1wKG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHJlbG9jYXRlQmVm
b3JlQ3VybHlCcmFjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLnNl
dFNlbGVjdGlvbihXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlvbigyLCAw
KSk7CisgICAgICAgICAgICBkdW1wVGV4dFdpdGhTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Q3VybHlCcmFjZU92ZXJy
aWRlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVJbigifSIsIHdhaXRBbmREdW1w
LmJpbmQodGhpcywgbmV4dCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RT
aW5nbGVCcmFjZUluc2VydGlvbkJlZm9yZVRleHQobmV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdGV4dEVkaXRvci5zZXRTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVG
cm9tTG9jYXRpb24oMCwgMCkpOworICAgICAgICAgICAgZHVtcFRleHRXaXRoU2VsZWN0aW9uKCk7
CisgICAgICAgICAgICB0eXBlSW4oIigiLCBzdGVwMSk7CisgICAgICAgICAgICBmdW5jdGlvbiBz
dGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZHVtcFRleHRXaXRoU2VsZWN0
aW9uKCk7CisgICAgICAgICAgICAgICAgdHlwZUluKCJ7Iiwgc3RlcDIpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZHVtcFRleHRXaXRoU2VsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgbmV4dCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHA+CitUaGlzIHRlc3QgY2hlY2tz
IHRleHQgZWRpdG9yIHNtYXJ0IGJyYWNlcyBmdW5jdGlvbmFsaXR5LgorPC9wPgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDc5MmUxYjBlZjJmMGM4NThlNTRhMjQ4OWRjZmIxNGM0ZDU3MjM1MTQuLmZkMTU1MDY2MWQ0YjAz
ZTY3ZDE3MWVjMGU1YmU4YmYzODM4YzU0YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xODI4LDYgKzE4MjgsNyBAQCB3ZWJraXQub3JnL2IvMTA2NzQz
IG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLmh0bWwgWyBGYWlsdXJlIF0KIGluc3BlY3Rv
ci9lZGl0b3IvdGV4dC1lZGl0b3ItZm9ybWF0dGVyLmh0bWwKIGluc3BlY3Rvci9lZGl0b3IvdGV4
dC1lZGl0b3Itd29yZC1qdW1wcy5odG1sCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhv
bWUtYnV0dG9uLmh0bWwKK2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2Vz
Lmh0bWwKIAogIyBSZW1vdmUgZnJvbSBsaXN0IGFmdGVyIGVuYWJsaW5nIENBTlZBU19QQVRICiB3
ZWJraXQub3JnL2IvMTA4NTA4IGZhc3QvY2FudmFzL2NhbnZhcy1wYXRoLWNvbnN0cnVjdG9ycy5o
dG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDc0OGZlMDkzYmFhMWQwM2JiMDg0MTE2YzlkNDRjZTk0OTUwZjkxMTYuLmVmNTcwYmVh
MDgxN2E5NzhiNzhlZGQ0MWRmOGNjM2FmNTA1MmQ1MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNTUsNiArMjU1LDcgQEAgYW5pbWF0aW9ucy9wbGF5
LXN0YXRlLmh0bWwKIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItZm9ybWF0dGVyLmh0bWwg
WyBTa2lwIF0KIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itd29yZC1qdW1wcy5odG1sIFsg
U2tpcCBdCiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhvbWUtYnV0dG9uLmh0bWwgWyBT
a2lwIF0KK2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwgWyBT
a2lwIF0KIAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjAK
IGluc3BlY3Rvci9kZWJ1Z2dlci9zZWxlY3RlZC1jYWxsLWZyYW1lLWFmdGVyLWZvcm1hdHRpbmct
c291cmNlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDIxNzhlNTljZWNlYmJmYzlhN2Q1YTRiYjI2MjBkMmJjNjEyYjJmZWEuLjUyNmNkZWQ1NjNjNTRk
Y2M5ZmJiNDEwNWQwNzE3ZTk0YjFhZTM1YzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMjYwNSw2ICsyNjA1LDcgQEAgd2Via2l0Lm9yZy9iLzM5NzI1IGZh
c3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5odG1sIFsgU2tpcCBdCiBpbnNwZWN0
b3IvZWRpdG9yL3RleHQtZWRpdG9yLWZvcm1hdHRlci5odG1sCiBpbnNwZWN0b3IvZWRpdG9yL3Rl
eHQtZWRpdG9yLXdvcmQtanVtcHMuaHRtbAogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1o
b21lLWJ1dHRvbi5odG1sCitpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNl
cy5odG1sCiAKICMgW1F0XSBSRUdSRVNTSU9OKHIxNDE2MzQpIHRlc3QgZmFpbGluZwogd2Via2l0
Lm9yZy9iLzEwODgxMyBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktaW1hZ2UtbGF5
ZXJzLWR5bmFtaWMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188329</attachid>
            <date>2013-02-14 05:37:15 -0800</date>
            <delta_ts>2013-02-15 04:32:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109200-20130214173342.patch</filename>
            <type>text/plain</type>
            <size>19096</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgwOTk3ZDNlMzY4ZmY3
NWUzZjE5Njk4MTYwZTdlOGZhMTZmMTM3Ni4uZTcxOGU2NzM2M2JiMTNiMWNhOGE0MTFkOTYzMTQ5
OGM1ZGE3ZGI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTE0ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gaW1wbGVtZW50IFNtYXJ0QnJh
Y2VDb250cm9sbGVyIHdoaWNoIHdpbGwgaGFuZGxlIGNoYXJhY3RlciBpbnNlcnRpb25zCisgICAg
ICAgIGFuZCBvdmVycmlkZSB0aGVtIGlmIGJyYWNlIGNoYXJhY3RlciB3YXMgaW5zZXJ0ZWQuIEFk
ZGl0aW9uYWxseSBpdAorICAgICAgICBzaG91bGQgaGFuZGxlIEJhY2tzcGFjZSBrZXkgYW5kIG92
ZXJyaWRlIGl0IGlmIGEgY3Vyc29yIGlzIGxvY2F0ZWQKKyAgICAgICAgaW5zaWRlIG9mIGEgYnJh
Y2tldCBwYWlyLgorICAgICAgICAtIGd1YXJkIHNtYXJ0IGJyYWNlIGZ1bmN0aW9uYWxpdHkgdmlh
IGV4cGVyaW1lbnQgY2hlY2tib3guCisKKyAgICAgICAgTmV3IHRlc3Q6IGluc3BlY3Rvci9lZGl0
b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUuX3JlZ2lzdGVyU2hvcnRjdXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlS2V5UHJlc3MpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuU21hcnRCcmFjZUNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuU21hcnRCcmFjZUNv
bnRyb2xsZXIucHJvdG90eXBlLnJlZ2lzdGVyU2hvcnRjdXRzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLlNtYXJ0QnJhY2VDb250cm9sbGVyLnByb3RvdHlwZS5y
ZWdpc3RlckNoYXJPdmVycmlkZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwuU21hcnRCcmFjZUNvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVCYWNrc3BhY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuU21hcnRCcmFjZUNv
bnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVCcmFjZVBhaXJJbnNlcnRpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuU21hcnRCcmFjZUNvbnRyb2xsZXIucHJv
dG90eXBlLl9oYW5kbGVDbG9zaW5nQnJhY2VPdmVycmlkZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBlcmltZW50
c1NldHRpbmdzKToKKwogMjAxMy0wMi0xNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgdXJpRm9yRmlsZSBhbmQg
ZmlsZUZvclVSSSBtZXRob2RzIGZyb20gRmlsZVN5c3RlbU1hcHBpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpp
bmRleCAxOWU4ZTQwOGEwZTI1NTE0NmUxN2E2N2IzNDBhM2Y2YjY3MmQyYzBkLi41NDZmM2ZjMTA4
ODI2ZjAwOTViYWRkNWQzMzQxNzZiYjBhZWI4OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTEzNjMs
NiArMTM2Myw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24o
ZGVsZWdhdGUsIHRleHRNb2RlbCwgdXJsLCBzeW5jU2Nyb2xsCiAgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5faGFuZGxlRWxlbWVudEZvY3VzLmJpbmQodGhp
cyksIGZhbHNlKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidGV4dElucHV0
IiwgdGhpcy5faGFuZGxlVGV4dElucHV0LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY3V0IiwgdGhpcy5faGFuZGxlQ3V0LmJpbmQodGhpcyks
IGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5cHJlc3MiLCB0
aGlzLl9oYW5kbGVLZXlQcmVzcy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKICAgICB0aGlzLl9zaG93
V2hpdGVzcGFjZSA9IFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNob3dXaGl0ZXNw
YWNlSW5FZGl0b3IuaXNFbmFibGVkKCk7CiAKQEAgLTEzNzMsNiArMTM3NCw3IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdhdGUsIHRleHRNb2RlbCwg
dXJsLCBzeW5jU2Nyb2xsCiAgICAgdGhpcy5fdG9rZW5IaWdobGlnaHRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5Ub2tlbkhpZ2hsaWdodGVyKHRoaXMsIHRleHRNb2Rl
bCk7CiAgICAgdGhpcy5fYnJhY2VNYXRjaGVyID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TW9kZWwuQnJhY2VNYXRjaGVyKHRleHRNb2RlbCk7CiAgICAgdGhpcy5fYnJhY2VIaWdobGlnaHRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5CcmFjZUhpZ2hsaWdodENv
bnRyb2xsZXIodGhpcywgdGV4dE1vZGVsLCB0aGlzLl9icmFjZU1hdGNoZXIpOworICAgIHRoaXMu
X3NtYXJ0QnJhY2VDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBh
bmVsLlNtYXJ0QnJhY2VDb250cm9sbGVyKHRoaXMsIHRleHRNb2RlbCwgdGhpcy5fYnJhY2VNYXRj
aGVyKTsKIAogICAgIHRoaXMuX2ZyZWVDYWNoZWRFbGVtZW50cygpOwogICAgIHRoaXMuYnVpbGRD
aHVua3MoKTsKQEAgLTE0MTIsNiArMTQxNCwyMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBob21lTW9kaWZpZXIgPSBXZWJJbnNw
ZWN0b3IuaXNNYWMoKSA/IG1vZGlmaWVycy5NZXRhIDogbW9kaWZpZXJzLk5vbmU7CiAgICAgICAg
IHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGhv
bWVLZXkuY29kZSwgaG9tZU1vZGlmaWVyKV0gPSB0aGlzLl9oYW5kbGVIb21lS2V5LmJpbmQodGhp
cywgZmFsc2UpOwogICAgICAgICB0aGlzLl9zaG9ydGN1dHNbV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQubWFrZUtleShob21lS2V5LmNvZGUsIGhvbWVNb2RpZmllciB8IG1vZGlmaWVycy5T
aGlmdCldID0gdGhpcy5faGFuZGxlSG9tZUtleS5iaW5kKHRoaXMsIHRydWUpOworCisgICAgICAg
IHRoaXMuX2NoYXJPdmVycmlkZXMgPSB7fTsKKworICAgICAgICB0aGlzLl9zbWFydEJyYWNlQ29u
dHJvbGxlci5yZWdpc3RlclNob3J0Y3V0cyh0aGlzLl9zaG9ydGN1dHMpOworICAgICAgICB0aGlz
Ll9zbWFydEJyYWNlQ29udHJvbGxlci5yZWdpc3RlckNoYXJPdmVycmlkZXModGhpcy5fY2hhck92
ZXJyaWRlcyk7CisgICAgfSwKKworICAgIF9oYW5kbGVLZXlQcmVzczogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICB2YXIgY2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQud2hp
Y2gpOworICAgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuX2NoYXJPdmVycmlkZXNbY2hhcl07Cisg
ICAgICAgIGlmIChoYW5kbGVyICYmIGhhbmRsZXIoKSkgeworICAgICAgICAgICAgZXZlbnQuY29u
c3VtZSh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlz
Ll9rZXlEb3duQ29kZSA9IGV2ZW50LmtleUNvZGU7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMzQ2
Nyw0ICszNDg1LDExNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5CcmFjZUhp
Z2hsaWdodENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIH0KIH0KIAorLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWx9IG1h
aW5QYW5lbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsfSB0ZXh0TW9k
ZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5CcmFjZU1hdGNoZXJ9
IGJyYWNlTWF0Y2hlcgorICovCitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5TbWFy
dEJyYWNlQ29udHJvbGxlciA9IGZ1bmN0aW9uKG1haW5QYW5lbCwgdGV4dE1vZGVsLCBicmFjZU1h
dGNoZXIpCit7CisgICAgdGhpcy5fbWFpblBhbmVsID0gbWFpblBhbmVsOworICAgIHRoaXMuX3Rl
eHRNb2RlbCA9IHRleHRNb2RlbDsKKyAgICB0aGlzLl9icmFjZU1hdGNoZXIgPSBicmFjZU1hdGNo
ZXIKK30KKworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwuU21hcnRCcmFjZUNvbnRy
b2xsZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7T2JqZWN0LjxudW1i
ZXIsIGZ1bmN0aW9uKCk+fSBzaG9ydGN1dHMKKyAgICAgKi8KKyAgICByZWdpc3RlclNob3J0Y3V0
czogZnVuY3Rpb24oc2hvcnRjdXRzKQorICAgIHsKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3Iu
ZXhwZXJpbWVudHNTZXR0aW5ncy50ZXh0RWRpdG9yU21hcnRCcmFjZXMuaXNFbmFibGVkKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGtleXMgPSBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXlzOworICAgICAgICB2YXIgbW9kaWZpZXJzID0gV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzOworCisgICAgICAgIHNob3J0Y3V0c1tXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGtleXMuQmFja3NwYWNlLmNvZGUsIG1vZGlm
aWVycy5Ob25lKV0gPSB0aGlzLl9oYW5kbGVCYWNrc3BhY2UuYmluZCh0aGlzKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywgZnVuY3Rpb24oKT59IGNo
YXJPdmVycmlkZXMKKyAgICAgKi8KKyAgICByZWdpc3RlckNoYXJPdmVycmlkZXM6IGZ1bmN0aW9u
KGNoYXJPdmVycmlkZXMpCisgICAgeworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5leHBlcmlt
ZW50c1NldHRpbmdzLnRleHRFZGl0b3JTbWFydEJyYWNlcy5pc0VuYWJsZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2hhck92ZXJyaWRlc1siKCJdID0gdGhpcy5faGFuZGxlQnJh
Y2VQYWlySW5zZXJ0aW9uLmJpbmQodGhpcywgIigpIik7CisgICAgICAgIGNoYXJPdmVycmlkZXNb
IikiXSA9IHRoaXMuX2hhbmRsZUNsb3NpbmdCcmFjZU92ZXJyaWRlLmJpbmQodGhpcywgIikiKTsK
KyAgICAgICAgY2hhck92ZXJyaWRlc1sieyJdID0gdGhpcy5faGFuZGxlQnJhY2VQYWlySW5zZXJ0
aW9uLmJpbmQodGhpcywgInt9Iik7CisgICAgICAgIGNoYXJPdmVycmlkZXNbIn0iXSA9IHRoaXMu
X2hhbmRsZUNsb3NpbmdCcmFjZU92ZXJyaWRlLmJpbmQodGhpcywgIn0iKTsKKyAgICB9LAorCisg
ICAgX2hhbmRsZUJhY2tzcGFjZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVj
dGlvbiA9IHRoaXMuX21haW5QYW5lbC5sYXN0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmICghc2Vs
ZWN0aW9uIHx8ICFzZWxlY3Rpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rpb24uc3RhcnRDb2x1bW47CisgICAgICAg
IGlmIChjb2x1bW4gPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2
YXIgbGluZU51bWJlciA9IHNlbGVjdGlvbi5zdGFydExpbmU7CisgICAgICAgIHZhciBsaW5lID0g
dGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisgICAgICAgIGlmIChjb2x1bW4gPT09
IGxpbmUubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBw
YWlyID0gbGluZS5zdWJzdHIoY29sdW1uIC0gMSwgMik7CisgICAgICAgIGlmIChwYWlyID09PSAi
KCkiIHx8IHBhaXIgPT09ICJ7fSIpIHsKKyAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5lZGl0
UmFuZ2UobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UobGluZU51bWJlciwgY29sdW1uIC0gMSwg
bGluZU51bWJlciwgY29sdW1uICsgMSksICIiKTsKKyAgICAgICAgICAgIHRoaXMuX21haW5QYW5l
bC5zZXRTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24o
bGluZU51bWJlciwgY29sdW1uIC0gMSkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYnJhY2VQYWlyCisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICBfaGFuZGxlQnJhY2VQYWlySW5zZXJ0aW9uOiBmdW5jdGlvbihicmFj
ZVBhaXIpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fbWFpblBhbmVsLmxh
c3RTZWxlY3Rpb24oKS5ub3JtYWxpemUoKTsKKyAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gc2VsZWN0aW9uLnN0YXJ0TGluZTsK
KyAgICAgICAgICAgIHZhciBjb2x1bW4gPSBzZWxlY3Rpb24uc3RhcnRDb2x1bW47CisgICAgICAg
ICAgICB2YXIgbGluZSA9IHRoaXMuX3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIpOworICAgICAg
ICAgICAgaWYgKGNvbHVtbiA8IGxpbmUubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNo
YXIgPSBsaW5lLmNoYXJBdChjb2x1bW4pOworICAgICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuVGV4dFV0aWxzLmlzV29yZENoYXIoY2hhcikgfHwgKCFXZWJJbnNwZWN0b3IuVGV4dFV0aWxz
LmlzQnJhY2VDaGFyKGNoYXIpICYmIFdlYkluc3BlY3Rvci5UZXh0VXRpbHMuaXNTdG9wQ2hhcihj
aGFyKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKHNlbGVjdGlvbiwg
YnJhY2VQYWlyKTsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLnNldFNlbGVjdGlvbihXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlvbihzZWxlY3Rpb24uc3RhcnRMaW5lLCBz
ZWxlY3Rpb24uc3RhcnRDb2x1bW4gKyAxKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYnJhY2UKKyAgICAgKiBAcmV0dXJu
IHtib29sZWFufQorICAgICAqLworICAgIF9oYW5kbGVDbG9zaW5nQnJhY2VPdmVycmlkZTogZnVu
Y3Rpb24oYnJhY2UpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fbWFpblBh
bmVsLmxhc3RTZWxlY3Rpb24oKS5ub3JtYWxpemUoKTsKKyAgICAgICAgaWYgKCFzZWxlY3Rpb24g
fHwgIXNlbGVjdGlvbi5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzZWxlY3Rpb24uc3RhcnRMaW5lOworICAgICAgICB2YXIg
Y29sdW1uID0gc2VsZWN0aW9uLnN0YXJ0Q29sdW1uOworICAgICAgICB2YXIgbGluZSA9IHRoaXMu
X3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIpOworICAgICAgICBpZiAobGluZS5jaGFyQXQoY29s
dW1uKSAhPT0gYnJhY2UpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFy
IGJyYWNlcyA9IHRoaXMuX2JyYWNlTWF0Y2hlci5lbmNsb3NpbmdCcmFjZXMobGluZU51bWJlciwg
Y29sdW1uKTsKKyAgICAgICAgaWYgKGJyYWNlcyAmJiBicmFjZXMucmlnaHRCcmFjZS5saW5lTnVt
YmVyID09PSBsaW5lTnVtYmVyICYmIGJyYWNlcy5yaWdodEJyYWNlLmNvbHVtbiA9PT0gY29sdW1u
KSB7CisgICAgICAgICAgICB0aGlzLl9tYWluUGFuZWwuc2V0U2VsZWN0aW9uKFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbiArIDEpKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9LAorfQorCiBXZWJJbnNwZWN0b3IuZGVidWdEZWZhdWx0VGV4dEVk
aXRvciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMKaW5kZXggNjcwM2ViZTQ3NmYwMmNiZmVkMmEyOTI0NzdlZGJkODFiZDQzMTk2Yy4u
OWZkYmJkMzFhOWZmYTZhMjJkODg4MGM4N2I0OGU0ZmRmODUxZWU1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC0yMTQsNiArMjE0LDcg
QEAgV2ViSW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy5maWxlU3lzdGVtUHJvamVjdCA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoImZpbGVTeXN0ZW1Q
cm9qZWN0IiwgIkZpbGUgc3lzdGVtIGZvbGRlcnMgaW4gU291cmNlcyBQYW5lbCIpOwogICAgIHRo
aXMuaG9yaXpvbnRhbFBhbmVsU3BsaXQgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJob3Jpem9u
dGFsUGFuZWxTcGxpdCIsICJBbGxvdyBob3Jpem9udGFsIHNwbGl0IGluIEVsZW1lbnRzIGFuZCBT
b3VyY2VzIHBhbmVscyIpOwogICAgIHRoaXMuc2hvd1doaXRlc3BhY2VJbkVkaXRvciA9IHRoaXMu
X2NyZWF0ZUV4cGVyaW1lbnQoInNob3dXaGl0ZXNwYWNlSW5FZGl0b3IiLCAiU2hvdyB3aGl0ZXNw
YWNlIGNoYXJhY3RlcnMgaW4gZWRpdG9yIik7CisgICAgdGhpcy50ZXh0RWRpdG9yU21hcnRCcmFj
ZXMgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJ0ZXh0RWRpdG9yU21hcnRCcmFjZXMiLCAiRW5h
YmxlIHNtYXJ0IGJyYWNlcyBpbiB0ZXh0IGVkaXRvciIpOwogCiAgICAgdGhpcy5fY2xlYW5VcFNl
dHRpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAwNzM0ZDRkNDBhNzVlYjFjNjg3Mzc3NmE5MTdmZDFkNjI0NTY5OGEzLi45YjBmMDU2
M2U3ZjlhMTdhZjczZWFkNjQ4NmI3ZjZhYmJlN2FjMGU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDItMTQg
IEFuZHJleSBMdXNobmlrb3YgIDxsdXNobmlrb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGltcGxlbWVudCBzbWFydCBicmFjZXMgZnVuY3Rpb25hbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MjAwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGV2ZW50U2VuZGVy
LmtleURvd24gaW1wbGVtZW50YXRpb24gdG8gY29ycmVjdGx5IHByb2Nlc3Mgb3BlbmluZworICAg
ICAgICByb3VuZCBicmFjZSBzeW1ib2wuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjprZXlEb3duKToKKwog
MjAxMy0wMi0xNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0Mjg0MS4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmNwcAppbmRleCAzODRlY2I5YTVhZjlkNjI0ZjFlNTFmMWUyNjNkNjYwYTIyNWQ1NmYzLi4w
MDhhMDEwYzNmMTA5MzQzOWJhYzIzODJhYjJmYjM5NGVkNWMxYjlmIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuY3BwCkBAIC02MTQsNiArNjE0LDExIEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24o
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAg
ICAgICAgICAgICAgICBjb2RlIC09ICdhJyAtICdBJzsKICAgICAgICAgICAgIGdlbmVyYXRlQ2hh
ciA9IHRydWU7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoIigiID09IGNvZGVTdHIpIHsKKyAg
ICAgICAgICAgIGNvZGUgPSAnOSc7CisgICAgICAgICAgICBuZWVkc1NoaWZ0S2V5TW9kaWZpZXIg
PSB0cnVlOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRm9yIG9uZSBnZW5lcmF0ZWQga2V5
Ym9hcmQgZXZlbnQsIHdlIG5lZWQgdG8gZ2VuZXJhdGUgYSBrZXlEb3duL2tleVVwCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ODU5ZWM0ODI0OTBmYzZlMmI1Njg2NDI1MTk1NTdlZTZlZjRhNzM3OS4uZWExNmM0YjdlNWY5ODAw
NTc0YWFiMDI3MGE1ODczZjcxN2I1ZGI3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAy
LTE0ICBBbmRyZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTIwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9y
L2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNlcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAyLTE0ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSB1cmlGb3JGaWxl
IGFuZCBmaWxlRm9yVVJJIG1ldGhvZHMgZnJvbSBGaWxlU3lzdGVtTWFwcGluZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2Vz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3It
c21hcnQtYnJhY2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWNjMzdlODcxODQ0ZjIwOTQ0
OWM1YTY1YTY3ZDNkMmYzOWM2OWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNjMgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGV4dCBlZGl0b3Igc21hcnQgYnJhY2VzIGZ1
bmN0aW9uYWxpdHkuCisKKworUnVubmluZzogdHlwZUZ1bmN0aW9uTmFtZQorZnVuY3Rpb24gbXlN
YXh8CisKK1J1bm5pbmc6IHR5cGVPcGVuaW5nUm91bmRCcmFjZQorZnVuY3Rpb24gbXlNYXgofCkK
KworUnVubmluZzogdHlwZUZ1bmN0aW9uQXJndW1lbnRzCitmdW5jdGlvbiBteU1heChhLCBifCkK
KworUnVubmluZzogdHlwZUNsb3NpbmdCcmFjZQorZnVuY3Rpb24gbXlNYXgoYSwgYil8CisKK1J1
bm5pbmc6IHR5cGVPcGVuaW5nQ3VybHlCcmFjZQorZnVuY3Rpb24gbXlNYXgoYSwgYil7fH0KKwor
UnVubmluZzogdHlwZUVudGVyCitmdW5jdGlvbiBteU1heChhLCBiKXsKKyAgICB8Cit9CisKK1J1
bm5pbmc6IHR5cGVSZXR1cm5TdGF0ZW1lbnQKK2Z1bmN0aW9uIG15TWF4KGEsIGIpeworICAgIHJl
dHVybiB8Cit9CisKK1J1bm5pbmc6IHR5cGVOZXN0ZWRCcmFjZXMKK2Z1bmN0aW9uIG15TWF4KGEs
IGIpeworICAgIHJldHVybiAoeyh8KX0pCit9CisKK1J1bm5pbmc6IGhpdEJhY2tzcGFjZVRyaXBw
bGVUaW1lcworZnVuY3Rpb24gbXlNYXgoYSwgYil7CisgICAgcmV0dXJuIHwKK30KKworUnVubmlu
ZzogdHlwZU1hdGhNYXgKK2Z1bmN0aW9uIG15TWF4KGEsIGIpeworICAgIHJldHVybiBNYXRoLm1h
eChhLCBiKTt8Cit9CisKK1J1bm5pbmc6IHNldEN1cnNvckJlZm9yZUNsb3NpbmdDdXJseUJyYWNl
CitmdW5jdGlvbiBteU1heChhLCBiKXsKKyAgICByZXR1cm4gTWF0aC5tYXgoYSwgYik7Cit8fQor
CitSdW5uaW5nOiB0eXBlSW5DbG9zaW5nQ3VybHlCcmFjZQorZnVuY3Rpb24gbXlNYXgoYSwgYil7
CisgICAgcmV0dXJuIE1hdGgubWF4KGEsIGIpOworfXwKKworUnVubmluZzogZ290b1ZlcnlCZWdp
bm5pbmcKK3xmdW5jdGlvbiBteU1heChhLCBiKXsKKyAgICByZXR1cm4gTWF0aC5tYXgoYSwgYik7
Cit9CisKK1J1bm5pbmc6IHR5cGVPcGVuaW5nUm91bmRBbmRDdXJseUJyYWNlcworKHt8ZnVuY3Rp
b24gbXlNYXgoYSwgYil7CisgICAgcmV0dXJuIE1hdGgubWF4KGEsIGIpOworfQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLXNtYXJ0LWJyYWNl
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1i
cmFjZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWE1MDFkMjFmODY0YzY3MDAyNGJkYTFlYmFhMjlkMDA3
NjU4OWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90
ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbApAQCAtMCwwICsxLDEzOSBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZWRpdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLmV4cGVy
aW1lbnRzU2V0dGluZ3MudGV4dEVkaXRvclNtYXJ0QnJhY2VzLmVuYWJsZUZvclRlc3QoKTsKKwor
ICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVUZXN0RWRpdG9yKCk7Cisg
ICAgdGV4dEVkaXRvci5vdmVycmlkZVZpZXdwb3J0Rm9yVGVzdCgwLCB1bmRlZmluZWQsIDMpOwor
ICAgIHRleHRFZGl0b3IubWltZVR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsKKyAgICB0ZXh0RWRp
dG9yLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAgICB0ZXh0RWRpdG9yLmVsZW1lbnQuZm9jdXMoKTsK
KworICAgIHRleHRFZGl0b3Iuc2V0VGV4dCgiIik7CisgICAgdGV4dEVkaXRvci5zZXRTZWxlY3Rp
b24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24oMCwgMCkpOworCisg
ICAgZnVuY3Rpb24gZHVtcChuZXh0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoSW5zcGVjdG9yVGVzdC50ZXh0V2l0aFNlbGVjdGlvbih0ZXh0RWRpdG9yLnRleHQoKSwg
dGV4dEVkaXRvci5zZWxlY3Rpb24oKSkpOworICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gd2FpdEFuZER1bXAobmV4dCkKKyAgICB7CisgICAgICAgIHNldFRpbWVvdXQoZHVt
cC5iaW5kKHRoaXMsIG5leHQpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBrZXlEb3duKGNoYXJh
Y3RlcikKKyAgICB7CisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oY2hhcmFjdGVyLCBbXSk7
CisgICAgfQorCisgICAgdmFyIGluc2VydFRleHQgPSB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2Vy
dFRleHQuYmluZCh0ZXh0SW5wdXRDb250cm9sbGVyKTsKKworICAgIEluc3BlY3RvclRlc3QucnVu
VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdHlwZUZ1bmN0aW9uTmFtZShuZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBpbnNlcnRUZXh0KCJmdW5jdGlvbiBteU1heCIpOworICAgICAg
ICAgICAgd2FpdEFuZER1bXAobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24g
dHlwZU9wZW5pbmdSb3VuZEJyYWNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGtleURv
d24oIigiKTsKKyAgICAgICAgICAgIGR1bXAobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAg
ZnVuY3Rpb24gdHlwZUZ1bmN0aW9uQXJndW1lbnRzKG5leHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGluc2VydFRleHQoImEsIGIiKTsKKyAgICAgICAgICAgIHdhaXRBbmREdW1wKG5leHQpOwor
ICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHR5cGVDbG9zaW5nQnJhY2UobmV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAga2V5RG93bigiKSIpOworICAgICAgICAgICAgZHVtcChuZXh0
KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0eXBlT3BlbmluZ0N1cmx5QnJhY2Uo
bmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAga2V5RG93bigieyIpOworICAgICAgICAgICAg
ZHVtcChuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0eXBlRW50ZXIobmV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAga2V5RG93bigiXG4iKTsKKyAgICAgICAgICAgIGR1
bXAobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdHlwZVJldHVyblN0YXRl
bWVudChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpbnNlcnRUZXh0KCJyZXR1cm4gIik7
CisgICAgICAgICAgICB3YWl0QW5kRHVtcChuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBm
dW5jdGlvbiB0eXBlTmVzdGVkQnJhY2VzKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGtl
eURvd24oIigiKTsKKyAgICAgICAgICAgIGtleURvd24oInsiKTsKKyAgICAgICAgICAgIGtleURv
d24oIigiKTsKKyAgICAgICAgICAgIGR1bXAobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAg
ZnVuY3Rpb24gaGl0QmFja3NwYWNlVHJpcHBsZVRpbWVzKG5leHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGtleURvd24oIlxiIik7CisgICAgICAgICAgICBrZXlEb3duKCJcYiIpOworICAgICAg
ICAgICAga2V5RG93bigiXGIiKTsKKyAgICAgICAgICAgIGR1bXAobmV4dCk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24gdHlwZU1hdGhNYXgobmV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaW5zZXJ0VGV4dCgiTWF0aC5tYXgoYSwgYik7Iik7CisgICAgICAgICAgICB3YWl0QW5k
RHVtcChuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBzZXRDdXJzb3JCZWZv
cmVDbG9zaW5nQ3VybHlCcmFjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0RWRp
dG9yLnNldFNlbGVjdGlvbihXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0ZUZyb21Mb2NhdGlv
bigyLCAwKSk7CisgICAgICAgICAgICBkdW1wKG5leHQpOworICAgICAgICB9LAorCisgICAgICAg
IGZ1bmN0aW9uIHR5cGVJbkNsb3NpbmdDdXJseUJyYWNlKG5leHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGtleURvd24oIn0iKTsKKyAgICAgICAgICAgIGR1bXAobmV4dCk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24gZ290b1ZlcnlCZWdpbm5pbmcobmV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdGV4dEVkaXRvci5zZXRTZWxlY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZS5jcmVhdGVGcm9tTG9jYXRpb24oMCwgMCkpOworICAgICAgICAgICAgZHVtcChuZXh0KTsKKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0eXBlT3BlbmluZ1JvdW5kQW5kQ3VybHlCcmFj
ZXMobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAga2V5RG93bigiKCIpOworICAgICAgICAg
ICAga2V5RG93bigieyIpOworICAgICAgICAgICAgd2FpdEFuZER1bXAobmV4dCk7CisgICAgICAg
IH0KKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpOyI+Cis8cD4KK1RoaXMgdGVzdCBjaGVja3MgdGV4dCBlZGl0b3Igc21hcnQgYnJhY2Vz
IGZ1bmN0aW9uYWxpdHkuCis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmNmMzU3NmIwZTI0NzcyOTNkOWY1NTA3
NDBhYjRiMmE5MmE5MzJkMS4uNmIzMzVhZDMyYTRhYzg5NDcxZDkzNzZkNWE4OWQzNGMyYjY5Zjli
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4MzIs
NiArMTgzMiw3IEBAIHdlYmtpdC5vcmcvYi8xMDY3NDMgbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMuaHRtbCBbIEZhaWx1cmUgXQogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1mb3Jt
YXR0ZXIuaHRtbAogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci13b3JkLWp1bXBzLmh0bWwK
IGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaG9tZS1idXR0b24uaHRtbAoraW5zcGVjdG9y
L2VkaXRvci90ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbAogCiAjIFJlbW92ZSBmcm9tIGxp
c3QgYWZ0ZXIgZW5hYmxpbmcgQ0FOVkFTX1BBVEgKIHdlYmtpdC5vcmcvYi8xMDg1MDggZmFzdC9j
YW52YXMvY2FudmFzLXBhdGgtY29uc3RydWN0b3JzLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGY0MzU5MmFhYjk4ZWEzNWM2
N2Q2MWU1OWQxYWY5YTRkNDQ0Y2NjMy4uMzgyYmYyY2I5OWQ3NDczZTA2OTk0NmFhMDA3NWQ0MTI4
NDNlM2Q4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTI1OCw2ICsyNTgsNyBAQCBhbmltYXRpb25zL3BsYXktc3RhdGUuaHRtbAogaW5zcGVjdG9yL2Vk
aXRvci90ZXh0LWVkaXRvci1mb3JtYXR0ZXIuaHRtbCBbIFNraXAgXQogaW5zcGVjdG9yL2VkaXRv
ci90ZXh0LWVkaXRvci13b3JkLWp1bXBzLmh0bWwgWyBTa2lwIF0KIGluc3BlY3Rvci9lZGl0b3Iv
dGV4dC1lZGl0b3ItaG9tZS1idXR0b24uaHRtbCBbIFNraXAgXQoraW5zcGVjdG9yL2VkaXRvci90
ZXh0LWVkaXRvci1zbWFydC1icmFjZXMuaHRtbCBbIFNraXAgXQogCiAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyMAogaW5zcGVjdG9yL2RlYnVnZ2VyL3NlbGVj
dGVkLWNhbGwtZnJhbWUtYWZ0ZXItZm9ybWF0dGluZy1zb3VyY2UuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTY5NjFhMjY2MjQyMGUwYTQ3MGYzZTk2
MmY5ZWI3M2JmNmM4NDM4My4uNTYwOGU4Yzk2ODM3M2ExOGY3MGIwY2ZmNzVmOTMwY2IyM2JhYTc2
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNjExLDYg
KzI2MTEsNyBAQCB3ZWJraXQub3JnL2IvMzk3MjUgZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1h
dXRvc2Nyb2xsLmh0bWwgWyBTa2lwIF0KIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItZm9y
bWF0dGVyLmh0bWwKIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3Itd29yZC1qdW1wcy5odG1s
CiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhvbWUtYnV0dG9uLmh0bWwKK2luc3BlY3Rv
ci9lZGl0b3IvdGV4dC1lZGl0b3Itc21hcnQtYnJhY2VzLmh0bWwKIAogIyBbUXRdIFJFR1JFU1NJ
T04ocjE0MTYzNCkgdGVzdCBmYWlsaW5nCiB3ZWJraXQub3JnL2IvMTA4ODEzIGNvbXBvc2l0aW5n
L3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1pbWFnZS1sYXllcnMtZHluYW1pYy5odG1sIFsgU2tpcCBd
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>